資料 基于單片機(jī)的超聲波測(cè)距系統(tǒng)_第1頁(yè)
資料 基于單片機(jī)的超聲波測(cè)距系統(tǒng)_第2頁(yè)
資料 基于單片機(jī)的超聲波測(cè)距系統(tǒng)_第3頁(yè)
資料 基于單片機(jī)的超聲波測(cè)距系統(tǒng)_第4頁(yè)
資料 基于單片機(jī)的超聲波測(cè)距系統(tǒng)_第5頁(yè)
已閱讀5頁(yè),還剩2頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、基于單片機(jī)的超聲波測(cè)距1 超聲波測(cè)距原理:超聲波測(cè)距原理是通過(guò)超聲波發(fā)射器向某一方向發(fā)射超聲波,在發(fā)射時(shí)刻的同時(shí)開(kāi)始計(jì)時(shí),超聲波在空氣中傳播時(shí)碰到障礙物就立即返回來(lái),超聲波接收器收到反射波就立即停止計(jì)時(shí)。超聲波在空氣中的傳播速度為v ,而根據(jù)計(jì)時(shí)器記錄的測(cè)出發(fā)射和接收回波的時(shí)間差t ,就可以計(jì)算出發(fā)射點(diǎn)距障礙物的距離S ,即: S = v·t /2 由于超聲波也是一種聲波, 其聲速C與溫度有關(guān),表1列出了幾種不同溫度下的聲速。在使用時(shí),如果溫度變化不大, 則可認(rèn)為聲速是基本不變的。常溫下超聲波的傳播速度是334 米/秒,但其傳播速度V 易受空氣中溫度、濕度、壓強(qiáng)等因素的影響,其中受溫

2、度的影響較大,如溫度每升高1 , 聲速增加約0. 6 米/ 秒。如果測(cè)距精度要求很高, 則應(yīng)通過(guò)溫度補(bǔ)償?shù)姆椒右孕Uū鞠到y(tǒng)正是采用了溫度補(bǔ)償?shù)姆椒ǎ?。已知現(xiàn)場(chǎng)環(huán)境溫度T 時(shí), 超聲波傳播速度V 的計(jì)算公式為:V = 331.45 + 0.607T, 聲速確定后, 只要測(cè)得超聲波往返的時(shí)間,即可求得距離。2 硬件系統(tǒng) 圖1 超聲波測(cè)距儀系統(tǒng)框圖基于單片機(jī)的超聲波測(cè)距系統(tǒng)構(gòu)成如圖1所示。該系統(tǒng)由單片機(jī)定時(shí)器產(chǎn)生40KHZ的頻率信號(hào)、超聲波傳感器、接收處理電路和顯示電路等構(gòu)成。單片機(jī)是整個(gè)系統(tǒng)的核心部件,它協(xié)調(diào)和控制各部分電路的工作。工作過(guò)程:開(kāi)機(jī),單片機(jī)復(fù)位,然后控制程序使單片機(jī)輸出載波為40

3、kHz的10個(gè)脈沖信號(hào)加到超聲波傳感器上,使超聲波發(fā)射器發(fā)射超聲波。當(dāng)?shù)谝粋€(gè)超聲波脈沖群發(fā)射結(jié)束后,單片機(jī)片內(nèi)計(jì)數(shù)器開(kāi)始計(jì)數(shù),在檢測(cè)到第一個(gè)回波脈沖的瞬間,計(jì)數(shù)器停止計(jì)數(shù),這樣就得到了從發(fā)射到接收的時(shí)間差t;根據(jù)公式S = v·t /2、V = 331.45 + 0.607T計(jì)算出被測(cè)距離,由顯示裝置顯示出來(lái)。3 軟件程序設(shè)計(jì)程序采用模塊化設(shè)計(jì),由主程序、發(fā)射子程序、接收子程序、定時(shí)子程序、顯示子程序等模塊組成,圖2為程序流程圖。該系統(tǒng)的主程序處于鍵控循環(huán)工作方式,當(dāng)按下測(cè)量鍵時(shí),主程序開(kāi)始調(diào)用發(fā)射子程序、查詢接收子程序、定時(shí)子程序,并把測(cè)量結(jié)果用顯示子程序在數(shù)碼顯示器上顯示出來(lái)。

4、圖2 測(cè)距流程圖圖3 定時(shí)器中斷子程序 圖4 外部中斷服務(wù)子程序4 參考程序#include<reg51.h> #include<math.h> /*定義數(shù)據(jù)類型*/ #define uint unsigned int #define uchar unsigned char /*定義系統(tǒng)常數(shù)*/ long int time; /* 時(shí)間 */ bit CLflag; /* 測(cè)量標(biāo)志 */ char cshu; /* 串?dāng)?shù) */ #define T12us (256-12) /*定時(shí)器設(shè)初值 T=(256-T12us)*12/12MHZ */ /*定義功能位,串口用于顯示

5、 */ sbit VOLCK=P1.0; /* 發(fā)射 */sbit MING=P3.2; /* 外部中斷0檢測(cè)接收信號(hào) */ char idata disp9; /* 顯示數(shù)據(jù) */ char idata number9; /* 顯示數(shù)據(jù) */ char code table =0x03,0x9f,0x25,0x0d,0x99,0x49,0x41,0x1f,0x01,0x09; /* 碼表 0,1,2,3,4,5,6,7,8,9 */ void dispfb() /* 顯示5位數(shù)據(jù) */ char i; for(i=0;i<5;i+) dispi=tablenumberi; disp3=

6、disp3+1; /* 置小數(shù)點(diǎn) */ for(i=0;i<6;i+) SBUF=dispi; while(TI=0); TI=0; /* 通用延時(shí)子程序 */ void delay( int j ) int i; for(i=0;i<j;) i+; /* 初始化定時(shí)器,CTC0、CTC1用于定時(shí) */ void init_CTC(void ) TMOD = 0x21; /* 設(shè)CTC1工作于模式2 */ ET0 = 0; /* 不允許CTC0中斷 */ void init_INT( ) /* 外部中斷初始化為高優(yōu)先級(jí),并開(kāi)中斷 */ IP=0x01; /* 置外部中斷INT0優(yōu)先

7、級(jí)為高 */ TCON=0; /* 設(shè)置外部中斷0的中斷方式為電平觸發(fā) */ void serve_INT0( ) interrupt 0 /* 外部中斷0,用于檢測(cè)接收信號(hào) */ TR0=0; /* 關(guān)閉定時(shí)器0 */ EX0=0; /* 關(guān)中斷 */ time=(long)TL0; time+=(long)TH0*256; CLflag=1; /* CTC1中斷服務(wù)程序,12.5us 中斷一次,用于發(fā)射 */ void CTC1_INT ( ) interrupt 3 VOLCK=VOLCK; cshu+; void CTC0_INT ( ) interrupt 1 TR0=0; ET0=

8、0; void Timetojuli( ) /* 將測(cè)量的時(shí)間轉(zhuǎn)換為距離 */ long i; i=(long)time; i=i*340; i=i/2; number4=i/10000000; /* 十米 */ i=i-number4*10000000; number3=i/1000000; /* 米 */ i=i-number3*1000000; number2=i/100000; /* 分米 */ i=i-number2*100000; number1=i/10000; /* 厘米 */ i=i-(long)number1*10000; number0=i/1000; /* 毫米 */

9、uchar getkey( ); /* 讀鍵盤 */ /*主程序*/ void main() int i, key; init_CTC( ); /* 初始化定時(shí)器 */ init_INT( ); /* 初始化外部中斷 */ CLflag=1; /* 測(cè)量標(biāo)志 */ for(i=6;i>4;i-) dispi=0xff; cshu=0; /* 傳數(shù) */ delay(200); /*延時(shí)*/; IE=0x80; /* 開(kāi)中斷 */ ET1=0; ET0=0; TR1=0; TR0=0; TL1=T12us; TH1=T12us; while(1) key=getkey( ); /* 讀鍵盤

10、 */ if(key=0x0fe && CLflag=1 ) /* 測(cè)量 */ key=0; CLflag=0; cshu=0; TL1=T12us; TH1=T12us; TL0 = 0; TH0 = 0; /* 定時(shí)器0的初始時(shí)間 */ TR0=1; /* 啟動(dòng)定時(shí)器0,開(kāi)始記時(shí) */ TR1=1; /* 啟動(dòng)定時(shí)器1,發(fā)送信號(hào) */ ET1=1; while(cshu<12) ; ET1=0; /* 發(fā)十個(gè)脈沖串 */ TR1=0; delay(95); EX0=1; while(!CLflag); if( cshu>=10 && CLflag=1) Timetojuli( ); dispfb(); uchar getkey( ) c

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論