本篇文章論述的是基于AT89C51單片機的16×16點陣LED顯示器字符滾動顯示設計的詳情介紹,如果對您有幫助的話,還請關注一下哦,如果有資源方面的需要可以聯系我。
目錄
設計任務與要求
原理圖
仿真圖
代碼
系統論文
資源下載
設計任務與要求
設計一超聲波測距儀,任務:
- 了解超聲波測距原理。
- 根據超聲波測距原理,設計超聲波測距器的硬件結構電路。
設計一超聲波測距儀,要求:
- 設計出超聲波測距儀的硬件結構電路。
- 對設計的電路進行分析能夠產生超聲波,實現超聲波的發送與接收,從而實現利用超聲波方法測量物體間的距離。
- 對設計的電路進行分析。
- 以數字的形式顯示測量距離。
原理圖
仿真圖
代碼(部分)
#include <REG2051.H>
#define k1 P3_4
#define csbout??? P3_5????????????????? //超聲波發送
#define csbint??? P3_7????????????????? //超聲波接收
#define csbc=0.034
#define bg? P3_3
unsigned char csbds,opto,digit,buffer[3],xm1,xm2,xm0,key,jpjs;//顯示標識
unsigned char convert[10]={0x3F,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//0~9段碼
unsigned int s,t,i, xx,j,sj1,sj2,sj3,mqs,sx1;
bit cl;????? void csbcj();
void delay(j);????????????????????????????? //延時函數
void scanLED();????????????????????????????? //顯示函數
void timeToBuffer();????????????????? //顯示轉換函數
void keyscan();
void k1cl();
void k2cl();
void k3cl();
void k4cl();
void offmsd();void main()????????????????????????????? //主函數
{EA=1;??????????????????????????????? //開中斷TMOD=0x11;?????????????????? //設定時器0為計數,設定時器1定時ET0=1;????????????????????????????? //定時器0中斷允許 ET1=1;????????????????????????????? //定時器1中斷允許 TH0=0x00;TL0=0x00;TH1=0x9E;TL1=0x57;csbds=0;csbint=1;csbout=1;cl=0;ōpto=0xff;jpjs=0;sj1=45;sj2=200;sj3=400;k4cl();TR1=1;??????????????????????? while(1){keyscan();if(jpjs<1){csbcj();if(s>sj3){buffer[2]=0x76;????? buffer[1]=0x76;????? buffer[0]=0x76;????? }else if(s<sj1){buffer[2]=0x40;?????buffer[1]=0x40;????? buffer[0]=0x40;}else timeToBuffer();????? }else timeToBuffer();??????????? //將值轉換成LED段碼offmsd();scanLED();????????????????? //顯示函數if(s<sj2)bg=0;bg=1;}
}void scanLED()?????????????????????? //顯示功能模塊
{
digit=0x04;for( i=0; i<3; i++)??????? //3位數顯示{P3=~digit&opto;??????? //依次顯示各位數P1=~buffer;??????? //顯示數據送P1口delay(20);????????????? //延時處理P1=0xff;???????????? //P1口置高電平(關閉)if((P3&0x10)==0)????? //判斷3位是否顯示完key=0;digit>>=1;???????????? //循環右移1位}
}
void timeToBuffer()??????????????? //轉換段碼功能模塊
{xm0=s/100;????? xm1=(s-100*xm0)/10;xm2=s-100*xm0-10*xm1;buffer[2]=convert[xm2];????? buffer[1]=convert[xm1];buffer[0]=convert[xm0];
}
void delay(i)?????????????????????????????
{
while(--i);
}
void timer1int (void)? interrupt 3? using 2
{TH1=0x9E;TL1=0x57;csbds++;if(csbds>=40){csbds=0;cl=1;}???????????
}
void csbcj()
{if(cl==1){TR1=0;TH0=0x00;TL0=0x00;i=10;while(i--){csbout=!csbout;}TR0=1;?????????????????i=mqs;????????????????????????????? //盲區while(i--){}i=0;while(csbint){i++;if(i>=2450)????????????????? //上限值csbint=0;}TR0=0;TH1=0x9E;TL1=0x57;t=TH0;t=t*256+TL0;s=t*csbc/2;TR1=1;cl=0;}
}
void keyscan()??????????????????????? //健盤處理函數
{xx=0;if(k1!=1)????????????????????????????? // 判斷開關是否按下{delay(400);??????????????????????? //延時去抖動if(k1!=1)????????????????????????????? // 判斷開關是否按下?????{??????????? while(!k1){delay(30);????xx++;}if(xx>2000)???????????{jpjs++;if(jpjs>4)jpjs=0;}xx=0;switch(jpjs){case 1: k1cl();break;?????????case 2: k2cl();break;case 3: k3cl();break;case 4: k4cl();break;}}}
}
系統論文
摘 ?要
隨著科技的發展,人們生活水平的提高,城市發展建設加快,城市給排水系統也有較大發展,其狀況不斷改善。但是,由于歷史原因合成時間住的許多不可預見因素,城市給排水系統,特別是排水系統往往落后于城市建設。因此,經常出現開挖已經建設好的建筑設施來改造排水系統的現象。城市污水給人們帶來了困擾,因此箱涵的排污疏通對大城市給排水系統污水處理,人們生活舒適顯得非常重要。而設計研制箱涵排水疏通移動機器人的自動控制系統,保證機器人在箱涵中自由排污疏通,是箱涵排污疏通機器人的設計研制的核心部分。控制系統核心部分就是超聲波測距儀的研制。因此,設計好的超聲波測距儀就顯得非常重要了。
本設計采用以AT89C51單片機為核心的低成本、高精度、微型化數字顯示超聲波測距儀的硬件電路和軟件設計方法。整個電路采用模塊化設計,由主程序、預置子程序、發射子程序、接收子程序、顯示子程序等模塊組成。各探頭的信號經單片機綜合分析處理,實現超聲波測距儀的各種功能。在此基礎上設計了系統的總體方案,最后通過硬件和軟件實現了各個功能模塊。相關部分附有硬件電路圖、程序流程圖。
經實驗證明,這套系統軟硬件設計合理、抗干擾能力強、實時性良好,經過系統擴展和升級,可以有效地解決汽車倒車、建筑施工工地以及一些工業現場的位置監控。
關鍵詞:AT89c51;?超聲波;測距
Abstract
With the development of science and technology, the improvement of people's standard of living, speeding up the development and construction of the city. urban drainage system have greatly developed their situation is constantly improving. However, due to historical reasons many unpredictable factors in the synthesis of her time, the city drainage system. In particular drainage system often lags behind urban construction. Therefore, there are often good building excavation has been building facilities to upgrade the drainage system phenomenon. It brought to the city sewage, and it is clear to the city sewage and drainage culvert in the sewage treatment system. comfort is very important to people's lives. Mobile robots designed to clear the drainage culvert and the automatic control system Free sewage culvert clear guarantee robot, the robot is designed to clear the culvert sewage to the core. Control System is the core component of the development of ultrasonic range finder. Therefore, it is very important to design a good ultrasonic range finder. ??
At the core of the design using AT89C51 low-cost, high accuracy, Micro figures show that the ultrasonic range finder hardware and software design methods. Modular design of the whole circuit from the main program, pre subroutine fired subroutine receive subroutine. display subroutine modules form. SCM comprehensive analysis of the probe signal processing, and the ultrasonic range finder function. On the basis of the overall system design, hardware and software by the end of each module.?
The research has led to the discovery that?the?software?and?hardware?designing?is?justified, the?anti-disturbance competence is powerful and the real-time capability is satisfactory?and by?extension and upgrade, this system can resolve the problem of the car availably, building construction the position of the workplace and some industries spot supervision.
Key words:AT89S52; Silent Wave;Measure Distance?
3 ?系統軟件的設計
超聲波測距儀的軟件設計主要由主程序、超聲波發生子程序、超聲波接收中斷程序及顯示子程序組成。我們知道C語言程序有利于實現較復雜的算法,匯編語言程序則具有較高的效率且容易精細計算程序運行的時間,而超聲波測距儀的程序既有較復雜的計算(計算距離時),又要求精細計算程序運行時間(超聲波測距時),所以控制程序可采用C語言和匯編語言混合編程。?
3.1 超聲波測距儀的算法設計?[10]
??????超聲波測距的原理為超聲波發生器T在某一時刻發出一個超聲波信號,當這個超聲波遇到被測物體后反射回來,就被超聲波接收器R所接收到。這樣只要計算出從發出超聲波信號到接收到返回信號所用的時間,就可算出超聲波發生器與反射物體的距離。距離的計算公式為:?
?d=s/2=(c×t)/2?????????????????????????????????????????????????????(1)??
其中,d為被測物與測距儀的距離,s為聲波的來回的路程,c為聲速,t為聲波來回所用的時間。?在啟動發射電路的同時啟動單片機內部的定時器T0,利用定時器的計數功能記錄超聲波發射的時間和收到反射波的時間。當收到超聲波反射波時,接收電路輸出端產生一個負跳變,在INT0或INT1端產生一個中斷請求信號,單片機響應外部中斷請求,執行外部中斷服務子程序,讀取時間差,計算距離。其部分源程序如下:
RECEIVE0:PUSH PSW
PUSH ACC
CLR EX0 ;關外部中斷0
? MOV R7, TH0 ;讀取時間值?
MOV R6, TL0?
CLR C
MOV A, R6
SUBB A, #0BBH;計算時間差?
MOV 31H, A ;存儲結果?
MOV A, R7
SUBB A, #3CH
MOV 30H, A?
SETB EX0 ;開外部中斷0
POP ACC?
POP PSW
RETI
3.2 主程序流程圖
軟件分為兩部分,主程序和中斷服務程序,如圖3-1(a)(b)?(c) 所示。主程序完成初始化工作、各路超聲波發射和接收順序的控制。
定時中斷服務子程序完成三方向超聲波的輪流發射,外部中斷服務子程序主要完成時間值的讀取、距離計算、結果的輸出等工作。
主程序首先是對系統環境初始化,設置定時器T0工作模式為16位定時計數器模式。置位總中斷允許位EA并給顯示端口P0和P1清0。然后調用超聲波發生子程序送出一個超聲波脈沖,為了避免超聲波從發射器直接傳送到接收器引起的直射波觸發,需要延時約0.1 ms(這也就是超聲波測距儀會有一個最小可測距離的原因)后,才打開外中斷0接收返回的超聲波信號。由于采用的是12 MHz的晶 振,計數器每計一個數就是1μs,當主程序檢測到接收成功的標志位后,將計數器T0中的數(即超聲波來回所用的時間)按式(2)計算,即可得被測物體與測距儀之間的距離,設計時取20℃時的聲速為344 m/s則有:d=(c×t)/2=172T0/10000cm(2)?其中,T0為計數器T0的計算值。測出距離后結果將以十進制BCD碼方式送往LED顯示約0.5s,然后再發超聲波脈沖重復測量過程。為了有利于程序結構化和容易計算出距離,主程序采用C語言編寫。???????????????????????????? ?
3.3超聲波發生子程序和超聲波接收中斷程序 ?
?
超聲波發生子程序的作用是通過P1.0端口發送2個左右超聲波脈沖信號(頻率約40kHz的方波),脈沖寬度為12μs左右,同時把計數器T0打開進行計時。超聲波發生子程序較簡單,但要求程序運行準確,所以采用匯編語言編程。?
???? ?超聲波測距儀主程序利用外中斷0檢測返回超聲波信號,一旦接收到返回超聲波信號(即INT0引腳出現低電平),立即進入中斷程序。進入中斷后就立即關閉計時器T0停止計時,并將測距成功標志字賦值1。如果當計時器溢出時還未檢測到超聲波返回信號,則定時器T0溢出中斷將外中斷0關閉,并將測距成功標志字賦值2以表示此次測距不成功。?前方測距電路的輸出端接單片機INT0端口,中斷優先級最高,左、右測距電路的輸出通過與門IC3A的輸出接單片機INT1端口,同時單片機P1.3和P1.4接到IC3A的輸入端,中斷源的識別由程序查詢來處理,中斷優先級為先右后左。部分源程序如下:
receive1:push psw
push acc
clr ex1 ;關外部中斷1
jnb p1.1, right ;P1.1引腳為0,轉至右測距電路中斷服務程序
jnb p1.2, left ;P1.2引腳為0,轉至左測距電路中斷服務程序
return:SETB EX1;開外部中斷1
pop? acc
pop? psw
reti
right: ...? ;右測距電路中斷服務程序入口
? ajmp? return
left:... ;左測距電路中斷服務程序入口
? ajmp? return
3.4 系統的軟硬件的調試[11]
超聲波測距儀的制作和調試都比較簡單,其中超聲波發射和接收采用Φ15的超聲波換能器TCT40-10F1(T發射)和TCT40-10S1(R接收),中心頻率為40kHz,安裝時應保持兩換能器中心軸線平行并相距4~8cm,其余元件無特殊要求。若能將超聲波接收電路用金屬殼屏蔽起來,則可提高抗干擾能力。根據測量范圍要求不同,可適當調整與接收換能器并接的濾波電容C0的大小,以獲得合適的接收靈敏度和抗干擾能力。?
???? ???硬件電路制作完成并調試好后,便可將程序編譯好下載到單片機試運行。根據實際情況可以修改超聲波發生子程序每次發送的脈沖寬度和兩次測量的間隔時間,以適應不同距離的測量需要。根據所設計的電路參數和程序,測距儀能測的范圍為0.07~5.5m,測距儀最大誤差不超過1cm。系統調試完后應對測量誤差和重復一致性進行多次實驗分析,不斷優化系統使其達到實際使用的測量要求。
資源下載
如果有需要這個系統的源碼、仿真、論文等資源的可以私信我。感謝你的閱讀~