超聲波測距儀單片機課設實驗報告_第1頁
超聲波測距儀單片機課設實驗報告_第2頁
超聲波測距儀單片機課設實驗報告_第3頁
超聲波測距儀單片機課設實驗報告_第4頁
超聲波測距儀單片機課設實驗報告_第5頁
已閱讀5頁,還剩6頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

1、單片機原理及系統課程設計報告微機原理與單片機系統課程設計評語:考勤10分守紀10分過程30分設計報告30分答辯20分總成績(100分)專 業: 軌道交通信號與控制 班 級: 交控1305 姓 名: 賀云鵬 學 號: 201310104 指導教師: 李建國 蘭州交通大學自動化與電氣工程學院2015 年 12 月 30 日超聲波測距儀設計1 設計說明1.1 設計目的超聲波測距的原理是利用超聲波在空氣中的傳播速度為已知,測量聲波在發射后遇到障礙物反射回來的時間,根據發射和接收的時間差計算出發射點到障礙物的實際距離。超聲波測距主要應用于倒車提醒、建筑工地、工業現場等的距離測量。超聲波在氣體、液體及固體

2、中以不同速度傳播,定向性好、能量集中、傳輸過程中衰減較小、反射能力較強。超聲波能以一定速度定向傳播、遇障礙物后形成反射,利用這一特性,通過測定超聲波往返所用時間就可計算出實際距離,從而實現無接觸測量物體距離。超聲波測距迅速、方便,且不受光線等因素影響,廣泛應用于水文液位測量、建筑施工工地的測量、現場的位置監控、振動儀車輛倒車障礙物的檢測、移動機器入探測定位等領域。1.2 設計方法本課題包括數據測距模塊、顯示模塊。測距模塊包括一個HC-SR04超聲波測距模塊和一片AT89C51單片機,該設計選用HC-SR04超聲波測距模塊,通過HC-SR04發射和接受超聲波,使用AT89C51單片機對超聲波進行

3、計時并根據超聲波在空氣中速度為340米每秒的特性計算出距離。顯示模塊包括一個4位共陽極LED數碼管和AT89C51單片機,由AT89C51單片機控制數碼管動態顯示距離。1.3 設計要求采用單片機為核心部件,選用超聲波模組,實現對距離的測量,測量距離能夠通過顯示輸出(LED,LCD)。2 設計方案及原理2.1超聲波測距模塊設計HC-SR04超聲波測距模塊可提供2cm-400cm的非接觸式距離感測功能,測距精度可達高到3mm。模塊包括超聲波發射器、接收器與控制電路。當提供一個10uS以上正脈沖觸發信號,該模塊內部將發出8個40kHz 周期電平并檢測回波。一旦檢測到有回波信號則輸出回響信號。回響信號

4、的脈沖寬度與所測的距離成正比。由此通過發射信號到收到的回響信號時間間隔可以計算得到距離由以上信息,在設計時選用兩個定時器,定時器1用來定時800ms,當產生中斷時,啟動HC-SR04超聲波測距模塊,即給其TRIG(發射)口送一個持續20ms的正脈沖,定時器0用來對超聲波傳遞時間進行計時,即當ECHO(回波)口為高電平時啟動計時,當ECHO口變為低電平時關閉計時。再根據超聲波在空氣中的傳播速度為340米每秒,通過AT89C51計算出距離,當距離超過400cm時,顯示8888,表示超出工作距離。2.2 LED顯示模塊設計將算得的距離通過一個4位LED數碼管采用動態掃描進行顯示。 2.3 其他功能的

5、設計考慮到實際的需求,本設計還應增加以下功能:1、增加一個指示燈。當ECHO(回波)口為高電平時,即超聲波信號在空氣中傳播時,指示燈點亮。當數碼管不能正常點亮時,若指示燈正常指示,則說明LED顯示模塊發生故障;若指示燈不能正常點亮,則說明超聲波測距模塊發生故障。2、 增加一個鎖存按鈕。由于設計時我們設計的為每800ms超聲波測距模塊啟動一次,由于定時器會產生誤差,造成測得距離不斷變化,增加一個鎖存按鈕,當確定顯示結果穩定時,按下按鈕時,關閉超聲波測距模塊,可以使結果清楚顯示。3、增加一個待機按鈕。當按下鎖存按鈕后,再按下待機按鈕,這時關閉LED顯示,若再打開待機按鈕,這時LED啟動工作,顯示的

6、數值為上一次被測距離。2.4 設計成本及定價成本:1、HC-SR04超聲波測距模塊1個3.3元 2、AT89C51單片機1個2.5元 3、四位LED數碼管1個1.5元 4、晶振1個0.17元 5、電路板1個0.57元 6、其他開關、電阻及電容總計0.5元總計:8.54元市場平均價格:12元預計定價:10元利潤:1.46元3 硬件設計此系統的硬件設計主要包括HC-SR04超聲波測距模塊、AT89C51單片機、4位LED顯示模塊,并連入指示燈、待機開關和鎖存開關。仿真時,將HC-SR04超聲波測距模塊用一個555延時電路來代替即可,其中調節改變滑動變阻器的阻值可以模擬被測物體距離的變化。實驗仿真電

7、路圖如圖1所示。圖1 設計硬件電路圖4 軟件設計此系統的軟件設計主要包括超聲波測距模塊設計、LED顯示模塊設計、和其他拓展模塊。采用定時器1每800ms發射一個脈沖信號啟動超聲波測距模塊,采用定時器0計算超聲波傳播時間,并通過一個計算函數算得距離,然后送LED顯示屏進行動態掃描并顯示結果。4.1 程序流程圖主程序流程圖如圖2所示。 圖2 程序流程圖4.2程序基于AT89C51單片機的超聲波測距源程序見附錄一。5 系統仿真及調試結果基于AT89C51單片機的超聲波測距仿真結果見附錄二。基于AT89C51單片機的超聲波測距調試結果如圖3所示。圖3 系統程序調試結果6 總結本設計通過對超聲波測距的研

8、究,與單片機結合,實現了超聲波測距的目標,并增加了數據鎖存、指示燈和待機的功能。仿真時由于軟件中沒有HC-SR04模塊,因此用555延時電路來代替。通過這次課程設計,我加深了對單片機的理解,也為以后更好的運用打下了基礎。最后要感謝李老師的指導,在李老師的耐心解答下,我受益匪淺。參考文獻1 李積英.數字電子技術.中國電力出版社,20112 深圳市捷什科技有限公司.HC-SR04超聲波測距模塊說明書.3 彭江.單片機原理及接口技術的開發J.軟件導刊,2011,12(8):66-70.4 王思明.張金敏.茍軍年.張鑫.楊喬禮.單片機原理及應用系統設計.科學出版社.2012附錄一:實驗源程序 #inc

9、lude<reg51.h>#define uchar unsigned char#define uint unsigned int #define LED_port P0 /用于LED段選#define LED_pos P1 /用于LED位選sbit qq=P26; /待機按鈕sbit suocun=P21; /鎖存結果sbit RX=P14; /回波sbit TX=P15; /送波sbit D1=P37; /接收指示燈uint time=0; /定時器0時間uint timer=0; /定時器1時間unsigned long S=0; /用于顯示最后計算得到的距離unsigned

10、 long W2=0,0; /用于比較兩次測算距離大小 bit flag =0; /定時器0中斷溢出標志位uchar value4; uchar code LED_seg10=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90; /數碼管段選 uchar code pos4=0x01,0x02,0x04,0x08; /數碼管位選/*/ void Delay(uchar t) /延時函數 uchar i,j,k; for(i=0;i<t;i+) for(j=0;j<20;j+) for(k=0;k<20;k+);/*/void v

11、alue_shift(uchar value) /將距離值的每一位放到數組中 value0=S/1000; value1=S/100%10; value2=S/10%10; value3=S%10;/*/void Display(uchar value) /數碼管顯示 uchar i; for(i=0;i<4;i+) LED_pos=posi; LED_port=LED_segvaluei; Delay(1); /*/void zd3() interrupt 3 /T1中斷用來掃描數碼管和計800MS啟動模塊 /這是計時器1中斷 TH1=0xf8; /賦初值,2msTL1=0x30;ti

12、mer+;if(timer>=400) timer=0; TX=0; /800MS 啟動一次模塊 /Delay(30); /一次超聲波信號時長30ms,仿真時只需加負脈沖,故屏蔽此句 TX=1; /*/void zd0() interrupt 1 /T0中斷用來計數器溢出 flag=1; /中斷溢出標志/*/void Count(void) /計算程序time=TH0*256+TL0; /這是最后算到的時間,往返時間,但應該再乘以12/11.0593M是一個機器周期,時間應該是time*12/11.059TH0=0; /定時器0的初始值為0TL0=0; S=(time*1.845)/10

13、; /算出來是mm,time*12*170/(11.0592*1000)mm=time*(1845/10000) mmW0=S; if(W0-W1)2)<=100) /進行校正,若兩次結果相差小于10mm,則采用前一次結果 S=W1;else W1=S;if (S>=4000) /最大距離4m,即4000mmS=8888;if (flag=1) /判斷是否溢出 S=8888;flag=0;TH0=0;TL0=0; /*/ void main( void ) TMOD=0x11; /設T0為方式1,T1為方式1TH0=0; /中斷0初始化 TL0=0; /中斷1初始化TH1=0XF8;TL1=0X30; ET0=1; /允許T0中斷ET1=1;TR1=1;qq=1;suocun=0;EA=1; while(1) while(!RX); /當RX為零時等待,即echo為低電平 TX=1; TR0=1; D1=1; /開啟計數 while(RX); /當RX為1計數并等待 TR0=0; /關閉計數 D1=0; /關指示

溫馨提示

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

評論

0/150

提交評論