51單片機----超聲波模塊51單片機程序

最近在造小車 須要用到超聲波模塊 現將調試時用到的代碼分享出來。spa

所用超聲波模塊爲HC-SR04 單片機開發板是吳鑑鷹的3d

先理解超聲波模塊的原理,它有四個接口 Vcc Trig Echo Gnd 。
Vcc接正極 Gnd接地
Trig和Echo隨便接兩個IO口
而後給Trig口高電平10us以上,超聲波模塊會自動發出8個40khz的方波,並檢測是否有信號返回,有信號返回時就在Echo口輸出高電平,持續的時間就是發出信號到接受信號所用的時間。因此計算從發出到接收信號所用的時間,就能夠得知聲音傳播一個來回所花費的時間,在結合聲速就能夠算出距離了。(這裏只是簡單的估算,聲速還和溫度等因素有關)
而後開始寫程序。
這裏我爲了能更好的看到超聲波模塊是否起做用,加入了單片機上的蜂鳴器,並設置了一個報警距離。調試

 1 #include<reg52.h>
 2 #include<stdio.h>
 3 #include<intrins.h>
 4 sbit Trig=P2^5;        //控制端 
 5 sbit Echo=P2^4;      //接收端
 6 sbit Beep=P3^4;      //單片機開發板上的蜂鳴器
 7 unsigned char T0RH=0;  8 unsigned char T0RL=0;  9 void Start_Buzz(unsigned int frequ) 10 { 11     unsigned int reload; 12     reload = 65536 - (11059200/12)/(frequ*2); 13     T0RH = (unsigned char)(reload >>8);      //蜂鳴器定時用 產生方波
14     T0RL = (unsigned char)reload;          //蜂鳴器定時用 產生方波
15 
16     TH1 = 0xFF;//蜂鳴器定時器
17     TL1 = 0xFE;//蜂鳴器定時器
18 
19     ET1 = 1; 20     TR1 = 1; 21 } //啓動蜂鳴器 並設置音高
22 void Stop_Buzz() 23 { 24     Beep= 1; 25     ET1 = 0; 26     TR1 = 0; 27 } //關閉蜂鳴器
28 void InterruptTimer0() interrupt 3
29 { 30     TH1 = T0RH; 31     TL1 = T0RL; 32     Beep = ~Beep; 33 } //蜂鳴器中斷程序
34 void time_init() 35 { 36     EA=1; 37     TMOD=0x11; 38     TH0 = 0; 39     TL0 = 0; 40 } //初始化定時器
41 void Delay_us(unsigned char t) 42 { 43     while(--t); 44 }     //大約延時t*2+5us 超聲波模塊用
45 
46 
47 void timer0()interrupt 1
48 { 49 TH0 = 0; 50 TL0 = 0; 51 } //中斷程序 初始化賦值 從新計數 超聲波模塊用 計算時間
52  void main() 53  { 54      unsigned int time,distance; 55     Trig=0; 56     Echo=0; 57  time_init(); 58      while(1) 59  { 60         Trig=1; 61         Delay_us(5); 62         Trig=0; 63         while(Echo==0); 64         TR0=1; 65         while(Echo); 66         TR0=0; 67         time=TH0*256+TL0; 68         distance=(int)(time*0.017);               //計算路程 單位爲cm
69         TH0=0; 70         TL0=0; 71         if(distance<30)                    //若是距離小於30cm 蜂鳴器響
72  { 73             Start_Buzz(4000);             //用於控制蜂鳴器的音高
74  } 75         else 
76  { 77  Stop_Buzz(); 78  } 79  } 80  }

才學疏淺 若有不妥歡迎指教 謝謝!code

相關文章
相關標籤/搜索