版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
目錄一、摘要………………3二、正文………………31、引言……………32、系統(tǒng)設(shè)計方案…………………42.1超聲波測距的原理………42.2設(shè)計框圖…………………42.3US-100超聲波收發(fā)模塊…………………42.4單片機電路………………62.5蜂鳴器報警電路…………82.6顯示電路…………………92.7供電及程序下載電路……103軟件編程………103.1軟件流程圖………………103.2主程序……………………114、下載調(diào)試………195、實物圖…………196元件選擇………20三、總結(jié)………………20四、參考文獻…………20摘要超聲波具有指向性強,能量消耗緩慢,傳播距離較遠等優(yōu)點,所以,在利用傳感器技術(shù)和自動控制技術(shù)相結(jié)合的測距方案中,超聲波測距是目前應用最普遍的一種,它廣泛應用于防盜、倒車雷達、水位測量、建筑施工工地以及一些工業(yè)現(xiàn)場。本設(shè)計詳細介紹了超聲波傳感器的原理和特性,分析了超聲波測距的原理的基礎(chǔ)上,指出了設(shè)計測距系統(tǒng)的思路和所需考慮的問題,給出了以STC89c52單片機為核心的低成本、高精度、微型化數(shù)字顯示超聲波測距儀的硬件電路和軟件設(shè)計方法。該系統(tǒng)電路設(shè)計合理、工作穩(wěn)定、性能良好、檢測速度快、計算簡單、易于做到實時控制,并且在測量精度方面能達到工業(yè)實用的要求。關(guān)鍵詞:超聲波單片機測距STC89c52AbstractUltrasonicwavehasstrongpointingtonature,slowlyenergyconsumption,propagatingdistancefarther,so,inutilizingtheschemeofdistancefindingthatsensortechnologyandautomaticcontroltechnologycombinetogether,ultrasonicwavefindsrangetousethemostgeneraloneatpresent,itappliestoguardagainsttheft,movebackwardtheradar,waterlevelmeasuring,buildingconstructionsiteandsomeindustrialscenesextensively。Thissubjecthasintroducedprincipleandcharacteristicoftheultrasonicsensorindetail,onthebasisofanalyzingprinciplethatultrasonicwavefindsrange,thesystematicthinkingandquestionsneededtoconsiderthathavepointedoutthatdesignsandfindsrange,providelowcost,thehardwarecircuitofhighaccuracy,ultrasonicrangefinderofminiaturedigitaldisplayandsoftwaredesignmethodtakingSTC89c52asthecore,thiscircuitofsystemisreasonableindesign,workingstability,performancegoodmeasuringspeedingsoon,calculatingsimple,apttoaccomplishreal-timecontrol,andcanreachindustry'spracticaldemandinmeasuringtheprecision。KeyWords:Ultrasonicwave;One-chipcomputer;Rangefinding;STC89c52正文1、引言:測量距離的方法有很多種,短距離的可以用米尺,遠距離的有激光測距等,超聲波測距適用于高精度的中長距離測量。因為超聲波在標準空氣中的傳播速度為331.45米/秒,由單片機負責計時,系統(tǒng)的測量精度理論上可以達到毫米級。2、系統(tǒng)設(shè)計方案2.1超聲波測距的原理超聲波測距的原理一般采用渡越時間法TOF(timeofflight),也可以稱為回波探測法,如圖所示。超聲波發(fā)射器向某一方向發(fā)射超聲波,在發(fā)射時刻的同時開始計時,超聲波在介質(zhì)中傳播,途中碰到障礙物就立即返回來,超聲波接收器收到反射波就立即停止計時。根據(jù)傳聲介質(zhì)的不同,可分為液介式、氣介式和固介式三種。根據(jù)所用探頭的工作方式,又可分為自發(fā)自收單探頭方式和一發(fā)一收雙探頭方式。而倒車雷達一般是裝在車尾,超聲波在空氣中傳播,超聲波在空氣中(20℃)的傳播速度為340m/s(實際速度為344m/s這里取整數(shù)),根據(jù)計時器記錄的時間就可以計算出發(fā)射點距障礙物的距離,公式S340*t/2。圖1超聲波測距原理由于超聲波也是一種聲波,其聲速c與溫度有關(guān),表1列出了幾種不同溫度下的聲速。在使用時,如果溫度變化不大,則可認為聲速是基本不變的。如果測距精度要求很高,則應通過溫度補償?shù)姆椒右孕U?。?聲速與溫度的關(guān)系2.2設(shè)計框圖本研究設(shè)計的超聲波測距儀框圖如圖所示。超聲波測距儀方框圖2.3US-100超聲波收發(fā)模塊該超聲波收發(fā)模塊可自己產(chǎn)生40kHz的方波,并經(jīng)放大電路驅(qū)動超聲波發(fā)射探頭發(fā)射超聲波,發(fā)射出去的超聲波經(jīng)障礙物反射后由超聲波接收探頭接收。經(jīng)接收電路的檢波放大,積分整形,在ECHO引腳上產(chǎn)生方波脈沖,該脈沖寬度與被測距離成線性關(guān)系。具體過程如圖3所示。US-100超聲波收發(fā)模塊工作時序圖上圖表明:只需要在Trig/TX管腳輸入一個10us以上的高電平,系統(tǒng)便可發(fā)出8個40KHZ的超聲波脈沖,然后檢測回波信號,當檢測到回波信號后,模塊還要進行溫度值的測量,然后根據(jù)當前溫度對測距結(jié)果進行校正,將校正后的結(jié)果通過Echo/RX管腳輸出。在此模式下,模塊將距離值轉(zhuǎn)化為340m/s時的時間值的2倍,通過Echo端輸出一個高電平,可根據(jù)此高電平的持續(xù)時間來計算距離值。即距離值為:(高電平時間*340m/s)/2注:因為距離值已經(jīng)經(jīng)過溫度校正,此時無需再根據(jù)環(huán)境溫度對超聲波聲速進行校正,也就是不管溫度多少,聲速選擇340m/s即可。使用US-100超聲波收發(fā)模塊進行距離測量測量時,單片機只需要輸出觸發(fā)信號,并監(jiān)視回響引腳,通過定時器計算回響信號寬度,并換算成距離即可。該模塊簡化了發(fā)送和接收的模擬電路,工作穩(wěn)定可靠,其參數(shù)指標如表2所示。表2US-100模塊電氣參數(shù)應注意測量周期必須在60毫秒以上,防止發(fā)射信號對回響信號的影響。US-100超聲波模塊外形圖2.4單片機電路本設(shè)計選用單片機STC89C52,其管腳如圖所示。STC89C52單片機管腳圖該芯片為52內(nèi)核8位單片機,兼容Intel等52內(nèi)核單片機,支持ISP下載,適用于常用檢測控制電路。由STC89C52組成的單片機系統(tǒng)原理圖如圖6所示。圖中TRIG引腳為單片機發(fā)送觸發(fā)信號的引腳,ECHO引腳為US-100模塊送回回響信號的引腳,接至單片機外部中斷P3.2腳上,可以利用外部中斷測量回響信號寬度。當測量距離小于閾值20cm時,單片機通過管腳P3.6發(fā)出燈光報警信號,觸發(fā)LED報警燈亮,同時通過管腳P3.7發(fā)出聲音報警信號beep,該信號用以觸發(fā)蜂鳴器鳴響報警。圖6單片機系統(tǒng)及超聲波模塊接口原理圖2.5蜂鳴器報警電路圖7所示為蜂鳴器報警電路。由于單片機管腳的灌電流比拉電流容量大,因此電路設(shè)計為低電平輸出時蜂鳴器響,高電平關(guān)閉。當P3.7腳輸出低電平時,PNP型三極管8550導通,有集電極電流通過,蜂鳴器鳴響。當P3.7腳輸出高電平時,三極管截止,蜂鳴器關(guān)閉。圖7蜂鳴器報警電路2.6顯示電路顯示部分采用SMC1602液晶屏進行數(shù)據(jù)顯示,其主要技術(shù)參數(shù)為:表3液晶屏技術(shù)指標接口信號說明如表4所示。表4液晶屏接口信號說明與單片機接口電路如圖8所示。圖8LCD與單片機接口電路2.7供電及程序下載電路本設(shè)計采用USB接口供電,電源電壓5V。同時,USB接口通過內(nèi)含PL2303芯片的轉(zhuǎn)換電路對單片機進行程序編寫。其電路原理如圖9所示。圖9供電及程序下載電路3軟件編程3.1軟件流程圖本設(shè)計軟件主程序流程圖如圖10所示,(a)為主程序流程圖,(b)為定時中斷子程序流程圖,(c)為外部中斷子程序流程圖。(a)主程序流程圖(b)外部中斷流程圖圖10程序流程圖3.2主程序(1)頭文件和一些宏定義/*******************************************************************//*******************超聲波測距儀************************************//*******************(液晶屏顯示)************************************//*******************晶振11.0592MHz********************************/#include<reg52.h>#include"1602.h"typedefunsignedcharU8;/*definedforunsigned8-bitsintegervariable無符號8位整型*/typedefsignedcharS8;/*definedforsigned8-bitsintegervariable有符號8位整型*/typedefunsignedintU16;/*definedforunsigned16-bitsintegervariable無符號16位整型*/typedefsignedintS16;/*definedforsigned16-bitsintegervariable有符號16位整型*/typedefunsignedlongU32;/*definedforunsigned32-bitsintegervariable無符號32位整型*/typedefsignedlongS32;/*definedforsigned32-bitsintegervariable有符號32位整型*/typedeffloatF32;/*singleprecisionfloatingpointvariable(32bits)單精度浮點數(shù)32位長度*/typedefdoubleF64;/*doubleprecisionfloatingpointvariable(64bits)雙精度浮點數(shù)64位*///定時器0的定時值為1mS,即11059/12=922個時鐘脈沖,其補為65536-922=64614#defineSYSTEMCLK921600//11059200/12#defineT0CLK921600//11059200/12#defineT1CLK921600//11059200/12#defineT1PERIOD1000000/921600//T1周期時間,以微秒為單位,約為1.085uS#defineTIMER0H0xFC//64614/256=252#defineTIMER0L0x66//54447%256=102(2)管腳、常量、變量定義和函數(shù)聲明//管腳定義sbitTrig=P1^3;sbitEcho=P3^2;//回波必須接在外部中斷引腳上sbitLedAlarm=P3^6;//報警燈,低電平亮sbitBeep=P3^7;//報警蜂鳴器//定義標志volatilebitFlagSucceed=0;//測量成功標志volatilebitFlagDisplay=0;//顯示標志//定義全局變量U16DisplayCount=0;U16time=0;U32distance=0;//函數(shù)聲明voiddelay_20us();voidStart_Module();voidINT0_Init(void);voidData_Init();voidTimer0_Init();voidTimer1_Init();(3)各子程序//20us延時程序,不一定很準voiddelay_20us(){U16bt;for(bt=0;bt<100;bt++);//8M晶振是100}//數(shù)據(jù)初始化voidData_Init(){}//外部中斷初始化函數(shù)voidINT0_Init(void){IT0=0;//負邊沿觸發(fā)中斷EX0=0;//關(guān)閉外部中斷}//外部中斷處理用做判斷回波電平voidINT0_ISR(void)interrupt0{time=TH1*256+TL1;//取出定時器的值FlagSucceed=1;//置成功測量的標志EX0=0;//關(guān)閉外部中斷}//定時器0初始化,16位定時模式,初始化為1ms中斷一次。voidTimer0_Init(){TMOD=0x11;//定時器0和1工作在16位方式TH0=TIMER0H;TL0=TIMER0L;TR0=1;//啟動定時器ET0=1;//允許定時器0中斷Trig=0;distance=0;DisplayCount=0;}//定時器0中斷,用做顯示計時voidTimer0_ISR(void)interrupt1//定時器0中斷是1號{TH0=TIMER0H;TL0=TIMER0L;DisplayCount++;if(DisplayCount>=1000)//1秒鐘顯示一次{FlagDisplay=1;DisplayCount=0;}}//定時器1初始化,16位計數(shù)模式,時鐘為11059200/12=921600Hz//60ms計數(shù)為55296,即0xD800voidTimer1_Init(){TMOD=0x11;//定時器0和1工作在16位方式}TH1=0;TL1=0;ET1=1;//啟動模塊,Trig管腳20us正脈沖voidStart_Module(){Trig=1;Trig=0;}/*********************************************************************名稱:Main()*功能:主函數(shù)***********************************************************************/voidmain(){U16i,j;EA=0;INT0_Init();Timer0_Init();//定時器0初始化Timer1_Init();//定時器1初始化Data_Init();EA=1;L1602_init();L1602_string(1,1,"Welcometomy");L1602_string(2,1,"distancemeter!");//延時for(i=0;i<1000;i++)//啟動模塊//啟動一次模塊delay_20us();for(j=0;j<1000;j++){;}while(1){EA=0;//以下為一次檢測過程:先發(fā)出Trig電平,打開外部中斷,清零T1,//最后在外部中斷下降沿觸發(fā)時取出T1當前值,計算出Trig脈沖寬度。Start_Module();while(Echo==0);//等待Echo回波引腳變高電平FlagSucceed=0;EX0=1;TH1=0;TL1=0;TF1=0;TR1=1;//啟動定時器1開始計數(shù)EA=1;while(TH1<80);//盲區(qū)TR1=0;//關(guān)閉定時器1EX0=0;//關(guān)閉外部中斷if(FlagSucceed==1)//一次測試成功,則計算距離,單位為厘米{distance=time*1.085;//計算得到脈沖時間(以微秒為單位)//將微秒時間轉(zhuǎn)變成厘米距離的算法:Y米=(X秒*344)/2//X秒=(2*Y米)/344==》X秒=0.0058*Y米==》厘米=微秒/58distance/=58;//如果距離小于20cm,則聲光報警if((FlagSucceed==1)&&(distance<20)){LedAlarm=0;Beep=0;}else{LedAlarm=1;Beep=1;}}if(FlagDisplay==1)//1秒顯示時間到{if(FlagSucceed==0){//LCD提示無回波L1602_string(1,1,"OutOfRange(0-4m)");L1602_string(2,1,"");}else{//LCD顯示數(shù)據(jù)L1602_string(1,1,"DistanceResult:");L1602_string(2,1,"cm");}}L1602_int(2,5,distance);}FlagDisplay=0;}3.3顯示程序/*********************************************************************文件名:液晶1602顯示.c*描述:該程序?qū)崿F(xiàn)了對液晶1602的控制。***********************************************************************/#include"1602.h"#include"math.h"/*********************************************************************名稱:delay()*功能:延時,延時時間大概為140US。*輸入:無*輸出:無***********************************************************************/voiddelay(){;inti,j;for(i=0;i<=10;i++)for(j=0;j<=2;j++)}/*********************************************************************名稱:Convert(ucharIn_Date)*功能:因為電路設(shè)計時,P0.0--P0.7接法剛好與資料中的相反,所以設(shè)計該函數(shù)。*輸入:1602資料上的值*輸出:送到1602的值***********************************************************************/ucharConvert(ucharIn_Date){/*uchari,Out_Date=0,temp=0;for(i=0;i<8;i++){temp=(In_Date>>i)&0x01;Out_Date|=(temp<<(7-i));}returnOut_Date;*/returnIn_Date;}/*********************************************************************名稱:enable(uchardel)*功能:1602命令函數(shù)*輸入:輸入的命令值*輸出:無***********************************************************************/voidenable(uchardel){}/*********************************************************************名稱:write(uchardel)*功能:1602寫數(shù)據(jù)函數(shù)*輸入:需要寫入1602的數(shù)據(jù)*輸出:無***********************************************************************/voidwrite(uchardel){P0=Convert(del);P0=Convert(del);RS=0;RW=0;E=0;delay();E=1;delay();}RS=1;RW=0;E=0;delay();E=1;delay();/*********************************************************************名稱:L1602_init()*功能:1602初始化*輸入:無*輸出:無***********************************************************************/voidL1602_init(void){enable(0x01);enable(0x38);enable(0x0c);enable(0x06);enable(0xd0);}/*********************************************************************名稱:L1602_char(ucharhang,ucharlie,charsign)*功能:改變液晶中某位的值,如果要讓第一行,第五個字符顯示"b",調(diào)用該函數(shù)如下L1602_char(1,5,'b')*輸入:行,列,需要輸入1602的數(shù)據(jù)*輸出:無***********************************************************************/voidL1602_char(ucharhang,ucharlie,charsign){}/*********************************************************************名稱:L1602_string(ucharhang,ucharlie,uchar*p)*功能:改變液晶中某位的值,如果要讓第一行,第五個字符開始顯示"abcdef",調(diào)用該函數(shù)如下uchara;if(hang==1)a=0x80;if(hang==2)a=0xc0;a=a+lie-1;enable(a);write(sign);L1602_string(1,5,"abcdef;")*輸入:行,列,需要輸入1602的數(shù)據(jù)*輸出:無***********************************************************************/voidL1602_string(ucharhang,ucharlie,uchar*p){uchara;if(hang==1)a=0x80;if(hang==2)a=0xc0;a=a+lie-1;enable(a);while(1){if(*p=='\0')break;write(*p);p++;}}//顯示整型的溫濕度數(shù)據(jù)用,共占用4位,其中一位符號位voidL1602_int(ucharhang,ucharlie,intnum){uinttemp;uintgewei,shiwei,baiwei,sign;if(num>=0){sign=0;}else{sign=1;}temp=abs(num);baiwei=temp/100;temp=temp-baiwei*100;shiwei=temp/10;gewei=temp-shiwei*10;num=a
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- GB/T 45088-2024林木采伐技術(shù)規(guī)程
- 2024年物流園區(qū)入駐服務合同范本參考3篇
- 酒吧KTV音響系統(tǒng)設(shè)備合約
- 醫(yī)療衛(wèi)生研究專項資金管理辦法
- 商業(yè)綜合體裝修合同樣本
- 機場周邊房產(chǎn)買賣附加協(xié)議
- 藥品處方濫用防控措施
- 2025版綠色環(huán)保市場攤位租賃服務協(xié)議3篇
- 水利工程招投標流程詳解
- 金融區(qū)車輛通行辦法
- 湖南2025年湖南機電職業(yè)技術(shù)學院合同制教師招聘31人歷年參考題庫(頻考版)含答案解析
- 2024年電子交易:電腦買賣合同
- 中國文化概論知識試題與答案版
- 【MOOC】數(shù)字邏輯設(shè)計及應用-電子科技大學 中國大學慕課MOOC答案
- 鑄牢中華民族共同體意識-形考任務3-國開(NMG)-參考資料
- 學術(shù)交流英語(學術(shù)寫作)智慧樹知到期末考試答案章節(jié)答案2024年哈爾濱工程大學
- TSEESA 010-2022 零碳園區(qū)創(chuàng)建與評價技術(shù)規(guī)范
- 無形資產(chǎn)評估習題與實訓參考答案
- 江蘇省城市設(shè)計編制導則
- 糖尿病隨訪表(模板)
- 注塑車間工作開展計劃書
評論
0/150
提交評論