基于單片機的超聲波測距儀設計說明_第1頁
基于單片機的超聲波測距儀設計說明_第2頁
基于單片機的超聲波測距儀設計說明_第3頁
基于單片機的超聲波測距儀設計說明_第4頁
基于單片機的超聲波測距儀設計說明_第5頁
已閱讀5頁,還剩10頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、 基于單片機的超聲波測距儀設計目錄1目的12本設計的主要研究容22.1超聲波測距的原理22.2設計的主要容23超聲波測距硬件電路設計33.1超聲波測距系統(tǒng)電路總體設計方案34超聲波測距系統(tǒng)電路各部分模塊的設計44.1超聲波發(fā)射接收電路的設計44.1.1超聲波發(fā)射部分44.1.2超聲波接收部分44.1.3LCD顯示部分54.1.4報警部分65系統(tǒng)軟件設計75.1程序代碼:76系統(tǒng)誤差分析146.1溫度對實驗的影響1414 / 151 目的1.1 選擇超聲波測距的原因超聲波測距是近十幾年來隨著集成電路技術迅速發(fā)展才開始應用的,相對于其它諸多測距方法而言,超聲波測距的優(yōu)點突出。運用到現(xiàn)代距離測量的新

2、要求的現(xiàn)代裝置中,相對于智能小車、紅外感應太陽能路燈控制系統(tǒng)和液晶顯示,我認為我們的優(yōu)勢十分明顯。智能小車他們工序過于繁瑣,雖然可利用程度最高,但很難在短時間完成這樣一個高質量的任務。紅外感應太陽能路燈控制系統(tǒng),雖然能完成,但以后的發(fā)展空間不大,在現(xiàn)在幾乎已經(jīng)非常普與了。液晶顯示,雖然前衛(wèi),但發(fā)展空間已不大。2 本設計的主要研究容2.1 超聲波測距的原理超聲波測距是通過不斷檢測超聲波發(fā)射后遇到障礙物所反射的回波, 從而測出發(fā)射和接收回波的時間差t,然后求出距離 (1-1)式(1-1)中的c為超聲波在空氣中傳播的速度。2.2 設計的主要容單片機控制超聲波模塊發(fā)射與檢波接收,其系統(tǒng)原理框圖如圖1所

3、示。 圖1 超聲波測距系統(tǒng)框圖通過P1.0發(fā)一個40KHz的方波脈沖信號,遇被測物反射后回波被超聲波接收換能器接收。進行相關處理后,輸入單片機的INT0(P3.2)腳產(chǎn)生中斷,計算中間經(jīng)歷的時間,然后根據(jù)公式(1-1)算出距離。3 超聲波測距硬件電路設計3.1 超聲波測距系統(tǒng)電路總體設計方案由單片機STC89s52編程產(chǎn)生40KHz的方波脈沖,由P1.0口輸出,就可以在接收口P3.2(Echo引腳)等待高電平輸出。一旦有高電平出處,即在模塊中經(jīng)過放大電路,驅動超聲波發(fā)射探頭發(fā)射超聲波。發(fā)射出去的超聲波經(jīng)障礙物反射回來后,由超聲波接收頭接收到信號,通過接收電路的檢波放大、積分整形與一系列處理,接

4、收口P3.2口即變?yōu)榈碗娖?,讀取單片機中定時器的值。單片機利用聲波的傳播速度和發(fā)射脈沖到接收反射脈沖的時間間隔計算出障礙物的距離,并由液晶顯示出來。該測距裝置是由超聲波模塊、單片機和LCD顯示電路組成。傳感器輸入端與發(fā)射接收電路組成超聲波測距模塊,模塊的輸出輸入端與單片機相連接,單片機的輸出端與顯示電路輸入端相連接。其時序圖如圖3-1所示。圖2 時序圖超聲波測距模塊的發(fā)射端在T0時刻發(fā)射方波,同時啟動定時器開始計時,當收到回波后,產(chǎn)生一負跳變到單片機中斷口,單片機響應中斷程序,定時器停止計數(shù)。計算時間差,即可得到超聲波在媒介中傳播的時間t,由此便可計算出距離。4 超聲波測距系統(tǒng)電路各部分模塊的

5、設計4.1 超聲波發(fā)射接收電路的設計4.1.1 超聲波發(fā)射部分超聲波發(fā)射部分是為了讓超聲波發(fā)射換能器TCT4016T能向外界發(fā)出40 kHz左右的方波脈沖信號.編程由單片機P1.0端口輸出40 kHz左右的方波脈沖信號,由于單片機端口輸出功率不夠,40 kHz方波脈沖信號分成兩路,送給一個由74HC04組成的推挽式電路進行功率放大以便使發(fā)射距離足夠遠,滿足測量距離要求,最后送給超聲波發(fā)射換能器TCT4016T以聲波形式發(fā)射到空氣中。發(fā)射部分的電路,如圖2所示。圖中輸出端上拉電阻R31,R32,一方面可以提高反向器74HC04輸出高電平的驅動能力,另一方面可以增加超聲換能器的阻尼效果,縮短其自由

6、振蕩的時間。4.1.2 超聲波接收部分上述TCT4016T發(fā)射的在空氣中傳播,遇到障礙物就會返回,超聲波接收部分是為了將反射波(回波)順利接收到超聲波接收換能器TCT4016R進行轉換變成電信號,并對此電信號進行放大、濾波、整形等處理后,這里用索尼公司生產(chǎn)的集成芯片CX20106,得到一個負脈沖送給單片機的P3.2(INT0)引腳,以產(chǎn)生一個中斷。接收部分的電路,如圖3所示。4.1.3 LCD顯示部分本設計顯示部分采用字符型TC1602液晶顯示所測距離值。TC1602顯示的容量為2行16個字。液晶顯示屏有微功耗、體積小、顯示容豐富、超薄輕巧、使用方便等諸多優(yōu)點,與數(shù)碼管相比,顯得更專業(yè)、美觀。

7、使用時,可將P0與LCD的數(shù)據(jù)線相連,P2口與LCD的控制線相。連如5圖LCD仿真圖5 LCD PROTRUS仿真其中,TC1602第4腳RS為寄存器選擇,第5腳RW為讀寫信號線,第6腳E為使能端。第714腳:D0D7為8位雙向數(shù)據(jù)線。這里要注意的是,為了布線方便,單片機端的D0D7是接到LCD602的D1D0,正好相反,因此在編寫軟件時需要做處理,使讀取正確。4.1.4 報警部分采用一個蜂鳴器,由P1.2輸出一定頻率的信號,在連接到蜂鳴器之前,經(jīng)過一個三極管9 012的放大。報警部分的連線,如圖6所示。圖6 蜂鳴器PROTEUS仿真圖5 系統(tǒng)軟件設計軟件方面:軟件分為兩部分,主程序和中斷服務

8、程序,如圖4-1所示。主程序完成初始化工作、超聲波發(fā)射和接收,距離計算、結果的輸出。外部中斷服務子程序主要完成時間值的讀取。圖表 1主程序流程圖5.1 程序代碼:#include <reg52.h> #include <intrins.h> #define uchar unsigned char#define uint unsigned int#define ulong unsigned longsbit Trig =P10; /發(fā)射40KHZ波 sbit Echo =P32; /中斷入口sbit beep=P12; /蜂鳴器端口sbit rs= P24;sbit rw

9、 = P25;sbit ep = P26;bit succeed_flag;uint flag,timeH,timeL,time,distance;unsigned char code dis1 = "the juli is:"unsigned char code dis2 = "0123456789"unsigned char code dis3 = "mm"void delay(unsigned char ms)/LCD延時子程序unsigned char i;while(ms-)for(i = 0; i< 250; i+)

10、_nop_();_nop_();_nop_();_nop_();void delay_20us() /延時20us uchar bt ; for(bt=0;bt<100;bt+); bit lcd_bz() /測試LCD忙碌狀態(tài)bit result;rs = 0;rw = 1;ep = 1;_nop_();_nop_();_nop_();_nop_();result = (bit)(P0 & 0x80);ep = 0;return result;void lcd_wcmd(unsigned char cmd) /寫指令數(shù)據(jù)到LCD子程序while(lcd_bz();/判斷LCD是

11、否忙碌rs = 0;rw = 0;ep = 0;_nop_();_nop_();P0 = cmd;_nop_();_nop_();_nop_();_nop_();ep = 1;_nop_();_nop_();_nop_();_nop_();ep = 0;void lcd_pos(unsigned char pos) /設定顯示位置子程序lcd_wcmd(pos | 0x80);void lcd_wdat(unsigned char dat) /寫入顯示數(shù)據(jù)到LCD子程序while(lcd_bz();/判斷LCD是否忙碌rs = 1;rw = 0;ep = 0;P0 = dat;_nop_();

12、_nop_();_nop_();_nop_();ep = 1;_nop_();_nop_();_nop_();_nop_();ep = 0;void lcd_init() /LCD初始化子程序lcd_wcmd(0x38);delay(1);lcd_wcmd(0x0c);delay(1);lcd_wcmd(0x06);delay(1);lcd_wcmd(0x01);delay(1);void main() unsigned char i;lcd_init(); /初始化LCDdelay(10);lcd_pos(0x01);/設置顯示位置i = 0;while(dis1i != '0

13、9;)lcd_wdat(dis1i);/顯示字符i+;beep=1;Trig=0; /首先拉低脈沖輸入引腳 EA=1;/打開總中斷0TMOD=0x10; /定時器1,16位工作方式 while(1) EA=0; /關總中斷Trig=1; /超聲波輸入端delay_20us(); /延時20us Trig=0; /產(chǎn)生一個20us的脈沖while(Echo=0); /等待Echo回波引腳變高電平 succeed_flag=0; /清測量成功標志 EA=1;EX0=1; /打開外部中斷0 TH1=0; /定時器1清零TL1=0; /定時器1清零TF1=0; /計數(shù)溢出標志TR1=1; /啟動定時器

14、1delay(20); /等待測量的結果TR1=0; /關閉定時器1 EX0=0; /關閉外部中斷0if(succeed_flag=1) time=timeH*256+timeL;distance=time*0.172; /0.344/2=0.172mmlcd_pos(0x42); /設置顯示位置lcd_wdat(dis2distance/100);/百位lcd_wdat(dis2(distance%100)/10);/十位lcd_wdat(dis2distance%10);/個位lcd_wdat(dis30);delay(10);lcd_wdat(dis31);if(succeed_flag=0)distance=0; /沒有回波則清零beep=!beep; /測試蜂鳴器變化 /外部中斷0,用做判斷回波電平void exter() interrupt 0 / 外部中斷0是0號 timeH =TH1; /取出定時器的值 timeL =TL1; /

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論