基于單片機的超聲波測距課程設計報告_第1頁
已閱讀1頁,還剩15頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p><b>  課程設計說明書</b></p><p>  題 目:超聲波測距 </p><p>  院 (系):電子工程與自動化 </p><p>  專 業(yè): </p><p>  學生姓名: </p><p>

2、;  學 號: </p><p>  指導教師: </p><p>  2011 年 11 月 7 日</p><p><b>  目錄</b></p><p><b>  一、緒論</b></p><p>  二、對

3、本課程的設計分析</p><p>  2.1 總體設計方案介紹</p><p>  2.1.1 超聲波測距原理 </p><p>  2.1.2 超聲波測距原理框圖</p><p>  2.2 系統(tǒng)硬件設計方案</p><p>  2.2.1 51系列單片機的功能特點及測距原理</p><p>

4、;  2.2.1.1 51系列單片機的功能特點</p><p>  2.2.1.2 單片機實現(xiàn)測距原理 </p><p>  三、主要電路模塊的實現(xiàn)方案比較及選擇</p><p>  3.1 超聲波發(fā)射電路</p><p>  3.2 超聲波檢測接收電路</p><p>  3.3 超聲波測距系統(tǒng)的硬件電路設計<

5、;/p><p>  3.4 系統(tǒng)電路圖及其PCB圖</p><p><b>  四、系統(tǒng)的軟件設計</b></p><p>  4.1 主程序流程圖</p><p>  4.2超聲波發(fā)射子程序和超聲波接收中斷程序</p><p>  五、測試數(shù)據(jù)以及結論</p><p>  六

6、、課程設計過程中遇到的主要問題以及解決辦法</p><p><b>  七、心得體會</b></p><p><b>  緒論</b></p><p>  隨著社會的發(fā)展,人們對距離或長度測量的要求越來越高。超聲波測距由于其能進行非接觸測量和相對較高的精度,越來越受到人們的重視。超聲波測距離的一個最重要的功能就是作用于倒車

7、系統(tǒng)上。要實現(xiàn)倒車系統(tǒng)的準確精度,就得把超聲波和單片機相結合,利用單片機的控制系統(tǒng)和精確的運算使超聲波測距離更加快速和精確。從而,減少事故的發(fā)生。通過該實驗學習利用單片機和超聲波探測元件測試距離的基本方法,進一步熟悉單片機定時器技術、中斷技術在數(shù)據(jù)采集和數(shù)據(jù)處理過程中的綜合運用方法,提高綜合應用程序的編程方法與技巧。</p><p>  發(fā)射器發(fā)出的40KHz超聲波以速度v在空氣中傳播,在到達被測物體時被反射返回

8、,由接收器接收,其往返時間為t,由s=vt/2即可算出被測物體的距離。</p><p>  報告內容包括:單片機控制主程序、中斷子程序、延時子程序和超聲波發(fā)射、接收電路、數(shù)碼管驅動顯示電路以及主電路。</p><p>  二、對本課程設計的分析</p><p>  2.1總體設計方案介紹</p><p>  2.1.1超聲波測距原理</

9、p><p>  發(fā)射器發(fā)出的超聲波以速度v在空氣中傳播,在到達被測物體時被反射返回,由接收器接收,其往返時間為t,由s=vt/2即可算出被測物體的距離。由于超聲波也是一種聲波,其聲速v與溫度有關,下表列出了幾種不同溫度下的聲速。在使用時,如果溫度變化不大,則可認為聲速是基本不變的。</p><p>  表1-1 超聲波波速與溫度的關系表</p><p><b>

10、;  表1-1</b></p><p>  2.1.2超聲波測距儀原理框圖如下圖</p><p>  采用AT89s52單片機,晶振:12MHZ,單片機P1.0口發(fā)出40kHZ的方波信號,通過超聲波發(fā)射器輸出;超聲波接收器將接收到的超聲波信號,利用外部中斷0口監(jiān)測超聲波輸出的返回信號,顯示電路采用簡單的4位LED數(shù)碼管,位碼用8550驅動。</p><p&g

11、t;  圖1-1 超聲波測距原理框圖</p><p>  2.2 系統(tǒng)的硬件結構設計</p><p>  硬件電路的設計主要包括單片機系統(tǒng)及LED顯示電路、超聲波發(fā)射電路和超聲波檢測接收電路三部分。單片機采用AT89S52來實現(xiàn)對CX20106A紅外接收芯片和TCT40-10系列超聲波轉換模塊的控制。采用12MHz高精度的晶振,以獲得較穩(wěn)定時鐘頻率,減小測量誤差。單片機通過P1.0口經(jīng)反相

12、器來控制超聲波的發(fā)送,然后單片機不斷的檢測INT0引腳,當INT0引腳的電平用高電平變?yōu)榈碗娖綍r就認為超聲波已返回。計數(shù)器所記的數(shù)據(jù)就是超聲波所經(jīng)歷的時間,通過換算就可以得到超聲波傳感器與障礙物的距離。</p><p>  2.2.1 51系列單片機的功能特點及測距原理</p><p>  2.2.1.1 51系列單片機的功能特點</p><p>  51系列單

13、片機中典型芯片(AT89S52)采用40引腳雙列直插封裝(DIP)形式,內部由CPU,8kB的ROM,256 B的RAM,3個16b的定時/計數(shù)器TO、T1以及T2,4個8 b的工/O端I:IP0,P1,P2,P3,一個全雙功串行通信口等組成。特別是該系列單片機片內的Flash可編程、可擦除只讀存儲器(E~PROM),使其在實際中有著十分廣泛的用途,在便攜式、省電及特殊信息保存的儀器和系統(tǒng)中更為有用。 </p>

14、<p>  5l系列單片機提供以下功能:8 kB存儲器;256 BRAM;32條工/O線;3個16b定時/計數(shù)器;5個2級中斷源;1個全雙向的串行口以及時鐘電路。</p><p>  空閑方式:CPU停止工作,而讓RAM、定時/計數(shù)器、串行口和中斷系統(tǒng)繼續(xù)工作。</p><p>  掉電方式:保存RAM的內容,振蕩器停振,禁止芯片所有的其他功能直到下一次硬件復位。</p&g

15、t;<p>  5l系列單片機為許多控制提供了高度靈活和低成本的解決辦法。充分利用他的片內資源,即可在較少外圍電路的情況下構成功能完善的超聲波測距系統(tǒng)。</p><p>  2.2.1.2 單片機實現(xiàn)測距原理 </p><p>  單片機發(fā)出超聲波測距是通過不斷檢測超聲波發(fā)射后遇到障礙物所反射的回波,從而測出發(fā)射和接收回波的時間差t,然后求出距離S=Ct/2,式中的C為超聲波

16、波速。</p><p>  限制該系統(tǒng)的最大可測距離存在4個因素:超聲波的幅度、反射的質地、反射和入射聲波之間的夾角以及接收換能器的靈敏度。接收換能器對聲波脈沖的直接接收能力將決定最小的可測距離。由于超聲波屬于聲波范圍,其波速C與溫度有關。</p><p>  主要電路模塊的實現(xiàn)方案比較及選擇</p><p>  3.1 超聲波發(fā)射電路</p><

17、;p>  超聲波發(fā)射電路原理圖如圖3-1所示。發(fā)射電路主要由反相器CD4069和超聲波發(fā)射換能器TX構成,單片機P1.0端口輸出的40kHz的方波信號一路經(jīng)一級反向器后送到超聲波換能器的一個電極,另一路經(jīng)兩級反向器后送到超聲波換能器的另一個電極,用這種推換形式將方波信號加到超聲波換能器的兩端,可以提高超聲波的發(fā)射強度。</p><p>  3.2 超聲波檢測接收電路</p><p>

18、  集成電路CX20106A是一款紅外線檢波接收的專用芯片,常用于電視機紅外遙控接收器??紤]到紅外遙控常用的載波頻率38 kHz與測距的超聲波頻率40 kHz較為接近,可以利用它制作超聲波檢測接收電路(如圖3-2)。實驗證明用CX20106A接收超聲波(無信號時輸出高電平),具有很好的靈敏度和較強的抗干擾能力。</p><p>  圖3-2 超聲波檢測接收電路</p><p>  3.3

19、超聲波測距系統(tǒng)的硬件電路設計</p><p>  本系統(tǒng)的特點是利用單片機控制超聲波的發(fā)射和對超聲波自發(fā)射至接收往返時間的計時,單片機選用AT89S52,經(jīng)濟易用,且片內有8K的ROM,便于編程。單片機系統(tǒng)及顯示電路原理圖如見圖3-3。</p><p>  圖3-3 單片機系統(tǒng)及顯示電路原理圖</p><p>  3.4 系統(tǒng)電路圖及其PCB圖</p>

20、<p>  給出整個系統(tǒng)的電路圖,并加以說明。要詳細說明第3節(jié)中各模塊如何組合在一起來實現(xiàn)系統(tǒng)功能的。</p><p>  當電源接電的時候由AT89S52單片機實現(xiàn)對CX20106A紅外接收芯片的控制。單片機通過P1.0引腳經(jīng)反相器來控制超聲波的發(fā)送,然后單片機不停的檢測INT0引腳,當INT0引腳的電平由高電平變?yōu)榈碗娖綍r就認為超聲波已經(jīng)返回。單片機開啟外部中斷使定時器關閉,定時器所計的數(shù)據(jù)就是超

21、聲波所經(jīng)歷的時間,通過運算就可以得到傳感器與障礙物之間的距離,這時通過BCD碼轉換把十六進制的數(shù)據(jù)轉換成十進制,并通過查表把距離顯示在LED數(shù)碼管顯示器上。</p><p><b>  四、系統(tǒng)的軟件設計</b></p><p>  4.1 主程序流程圖</p><p>  超聲波測距儀的軟件設計主要由主程序、超聲波發(fā)射子程序、超聲波接收中斷程

22、序及顯示子程序等部分組成。</p><p>  主程序首先對系統(tǒng)初始化,設置定時器T0工作模式為16位的定時計數(shù)器模式,置位總中斷允許位EA。然后單片機送出超聲波脈沖,為避免超聲波從發(fā)射器直接傳送到接收器引起的直接波觸發(fā),需延遲一段時間,保持電平20us左右,也就是超聲波頻率大約為40KHZ,連續(xù)發(fā)送8個波形(這也是超聲波測距離會有一個最小可測距離的原因)后,才打開外中斷1接收返回的超聲波信號。由于采用12MHz

23、的晶振,機器周期為1us,當主程序檢測到接收成功的標志位后,將計數(shù)器T0中的數(shù)(即超聲波來回所用的時間)按下式計算即可測得被測物體與測距儀之間的距離,設計時取20℃時的聲速為340m/s則有:</p><p>  d=(T0*344)/2(其中T0為計數(shù)器T0的計數(shù)值)</p><p>  測出距離后結果將以十進制BCD碼方式送到LED顯示管顯示,然后再發(fā)射超聲波脈沖重復測量過程。主程序框

24、圖如下圖5-1所示:</p><p>  圖5-1 超聲波測距離主程序流程圖</p><p>  4.2超聲波發(fā)射子程序和超聲波接收中斷程序</p><p>  超聲波發(fā)射子程序的作用是通過P1.0端口發(fā)送8個超聲波信號,頻率約40KHz的方波,脈沖寬度為20us左右,同時把計數(shù)器T0打開進行計時。超聲波測距離主程序利用外中斷0檢測返回超聲波信號,一旦接收到返回超聲

25、波信號(INT0引腳出現(xiàn)低電平),立即進入中斷程序。進入該中斷后就立即關閉計時器T0停止計時,并將測距成功標志位賦值1.,中斷子程序流程圖如圖5-2所示:</p><p>  圖5-2 定時中斷子程序流程圖 外部中斷子程序流程圖</p><p>  五、測試數(shù)據(jù)以及結論</p><p>  在溫度為25度左右環(huán)境下測試:</p

26、><p>  超聲波測距儀的制作和調試都比較簡單,其中超聲波發(fā)射和接收采用Φ15的超聲波換能器TCT40-10F1(T發(fā)射)和TCT40-10S1(R接收),中心頻率為40kHz,安裝時應保持兩換能器中心軸線平行并相距4~8cm,其余元件無特殊要求。若能將超聲波接收電路用金屬殼屏蔽起來,則可提高抗干擾能力。 </p><p>  硬件電路制作完成并調試好后,便可將程序編譯好下載到單片

27、機試運行。根據(jù)實際情況可以修改超聲波發(fā)生子程序每次發(fā)送的脈沖寬度和兩次測量的間隔時間,以適應不同距離的測量需要。根據(jù)所設計的電路參數(shù)和程序,測距儀能測的范圍為0.06~1m,測距儀最大誤差不超過1mm。系統(tǒng)調試完后應對測量誤差和重復一致性進行多次實驗分析,不斷優(yōu)化系統(tǒng)使其達到實際使用的測量要求。</p><p>  改裝:由于技術水平所限暫時不能給該設計加入語音程序,如果能加入語音程序的話,就能使超聲波測距離在倒

28、車系統(tǒng)和其他領域中得到最完美的體現(xiàn)。</p><p>  超聲波測距離在生活中的應用越來越廣泛,且也使汽車在倒車的時候能最大可能的減少事故的發(fā)生。其有很高的開發(fā)的價值和十分廣泛的應用領域,為提高生活和科學技術水平提供了選擇。</p><p>  六、課程設計過程中遇到的主要問題以及解決辦法</p><p>  問題一:該實驗不能在Protues上進行仿真</p

29、><p>  由于不能在Protues上仿真出超聲波信號的發(fā)射和接收所以進行不了仿真,這時候我只能通過查資料直接在Protel上畫出該實驗的整個電路圖,直接做出硬件來進行調試。</p><p>  問題二:接受超聲波電路的電容用錯 </p><p>  電解電容用了瓷片電容,而且電容的大小用小了</p><p><b>  七、心得體會

30、</b></p><p>  超聲波測距離讓我想到雷達探測,因為其利用的就是超聲波原理。由于暑假電賽培訓時候已經(jīng)做過了其電路板,只是當時程序下載到板子上時候沒有成功。所以我把上次遺留下來的問題,一并的在這次課設中考慮進去了,可以說是帶著很疑問去做課設的。板子很快就做好了,而程序的編寫都是自己通過網(wǎng)上查找資料以及詢問高年級學長才一步一個坎,一步一個腳印,最終編程成功,達到了我所想要的結果。過程不算很難,

31、同時看著自己所做出來的成果,感覺挺開心的。</p><p>  通過該實驗,我們認識的到了單片機在控制領域中的強大作用,也使我加深了所學的單片機知識,為我們以后的就業(yè)和學習提供了很多的基礎。</p><p><b>  附錄</b></p><p><b>  超聲波測距離程序</b></p><p&g

32、t;  #include <reg52.h> </p><p>  #define uchar unsigned char </p><p>  #define uint unsigned int</p><p>  #define ulong unsigned long</p><p>  sbit Tx = P1^0;

33、 //產(chǎn)生脈沖引腳</p><p>  sbit Rx = P3^2; //回波引腳</p><p>  uchar code SEG7[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; </p><p>  uint distance[4]; //測距接收緩沖區(qū)</p><p&

34、gt;  uchar ge,shi,bai,temp,flag,outcomeH,outcomeL,i; </p><p>  bit succeed_flag; //測量成功標志</p><p>  void conversion(uint temp_data);</p><p>  void delay_20us();</p><p>

35、;  void csb_init();</p><p>  void main() // 主程序</p><p><b>  { </b></p><p>  uint distance_data,a,b;</p><p>  uchar CONT_1; </p><p><b&g

36、t;  i=0;</b></p><p><b>  flag=0;</b></p><p>  csb_init();</p><p>  while(1) </p><p><b>  {</b></p><p><b>  EA=

37、0;</b></p><p><b>  Tx=1;</b></p><p>  delay_20us();</p><p>  Tx=0; //產(chǎn)生一個20us的脈沖,在Tx引腳 </p><p>  while(Rx==0); //等待Rx回波引腳變高電平</p>

38、<p>  succeed_flag=0; //清測量成功標志</p><p>  EX0=1; //打開外部中斷</p><p>  TH1=0; </p><p>  TL1=0; </p><p>  TF1=0; </p><p>

39、;  TR1=1; //啟動定時器1</p><p><b>  EA=1;</b></p><p>  while(TH1 < 30); //等待測量的結果,周期65.535毫秒(可用中斷實現(xiàn)) </p><p>  TR1=0; //關閉定時器1</p><p>  EX

40、0=0; //關閉外部中斷</p><p>  if(succeed_flag==1)</p><p><b>  { </b></p><p>  distance_data=outcomeH; //測量結果的高8位</p><p>  distance_data<<=8;

41、 //放入16位的高8位</p><p>  distance_data=distance_data|outcomeL;//與低8位合并成為16位結果數(shù)據(jù)</p><p>  distance_data*=12; //因為定時器默認為12分頻</p><p>  distance_data/=58; //微秒的單位除以58等于厘米</p&g

42、t;<p>  } // X秒=( 2*Y米)/344 X秒=0.0058*Y米 </p><p>  if(succeed_flag==0)</p><p><b>  {</b></p><p>  distance_data=0; //沒有回波則清零</p

43、><p><b>  }</b></p><p>  distance[i]=distance_data; //將測量結果的數(shù)據(jù)放入緩沖區(qū)</p><p><b>  i++;</b></p><p><b>  if(i==3)</b></p><p>&

44、lt;b>  {</b></p><p>  distance_data=(distance[0]+distance[1]+distance[2]+distance[3])/4;</p><p>  a=distance_data;</p><p>  if(b==a) CONT_1=0;</p><p>  if(b!=a

45、) CONT_1++;</p><p>  if(CONT_1>=3)</p><p><b>  {</b></p><p><b>  CONT_1=0;</b></p><p><b>  b=a;</b></p><p>  convers

46、ion(b);</p><p><b>  } </b></p><p><b>  i=0;</b></p><p><b>  } </b></p><p><b>  }</b></p><p><

47、b>  }</b></p><p>  //外部中斷0,用做判斷回波電平</p><p>  INTO_() interrupt 0 // 外部中斷是0號</p><p><b>  { </b></p><p>  outcomeH =TH1; </p><p&g

48、t;  outcomeL =TL1; </p><p>  succeed_flag=1; </p><p>  EX0=0; //關閉外部中斷</p><p><b>  }</b></p><p>  //定時器0中斷,用做顯示</p><p>  time

49、r0() interrupt 1 // 定時器0中斷是1號</p><p><b>  {</b></p><p>  TH0=0xfd; //寫入定時器0初始值</p><p>  TL0=0x77; </p><p>  switch(flag) </p><p>&l

50、t;b>  {</b></p><p>  case 0x00:P2=ge; P0=0xfe;flag++;break;</p><p>  case 0x01:P2=shi;P0=0xfd;flag++;break;</p><p>  case 0x02:P2=bai;P0=0xfb;flag=0;break;</p><p

51、><b>  }</b></p><p><b>  }</b></p><p>  //顯示數(shù)據(jù)轉換程序</p><p>  void conversion(uint temp_data) </p><p><b>  { </b></p><p

52、>  uchar ge_data,shi_data,bai_data ;</p><p>  bai_data=temp_data/100 ;</p><p>  temp_data=temp_data%100; //取余運算</p><p>  shi_data=temp_data/10 ;</p><p>  temp_data

53、=temp_data%10; //取余運算</p><p>  ge_data=temp_data;</p><p>  bai_data=SEG7[bai_data];</p><p>  shi_data=SEG7[shi_data];</p><p>  ge_data =SEG7[ge_data];</p><

54、p>  bai = bai_data;</p><p>  shi = shi_data;</p><p>  ge = ge_data ; </p><p><b>  }</b></p><p>  void delay_20us()</p><p>  { uchar bt ;<

55、;/p><p>  for(bt=0;bt<20;bt++); }</p><p>  void csb_init()</p><p><b>  {</b></p><p>  Tx=0; //首先拉低脈沖輸入引腳</p><p>  TMOD=0x11; //定時器0,定

56、時器1,16位工作方式</p><p>  TR0=1; //啟動定時器0</p><p>  IT0=0; //由高電平變低電平,觸發(fā)外部中斷</p><p>  ET0=1; //打開定時器0中斷</p><p>  EX0=0; //關閉外部中斷</p><p&

溫馨提示

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

評論

0/150

提交評論