HC-SR04
一、主要參數
1:使用電壓:DC—5V
2:靜態電流:小於2mA
3:電平輸出:高5V
4:電平輸出:底0V
5:感應角度:不大於15度
6:探測距離:2cm-450cm
7:高精度 可達0.2cm
二、工作原理
1.采用IO口TRIG觸發測距,給至少10us的高電平信號來啟動模塊。
2.模塊自動發送8個40khz的方波,自動檢測是否有信號返回。
3.如果有信號返回,通過IO口ECHO輸出一個高電平,高電平持續的時間就是超聲波從發射到返回的時間。通過公式計算測試距離=(高電平時間*聲速(340M/S))/2。
三、運用超聲波模塊測距
1 sbit RX=P2^0; 2 sbit TX=P2^1; 3 void delay() //精確延時21us
4 { 5 _nop_(); 6 _nop_(); 7 _nop_(); 8 _nop_(); 9 _nop_(); 10 _nop_(); 11 _nop_(); 12 _nop_(); 13 _nop_(); 14 _nop_(); 15 _nop_(); 16 _nop_(); 17 _nop_(); 18 _nop_(); 19 _nop_(); 20 _nop_(); 21 _nop_(); 22 _nop_(); 23 _nop_(); 24 _nop_(); 25 _nop_(); 26 } 27
28 viod init() //對計數器初始化
29 { 30 TMOD=0x11; //設T0為方式1,GATE=1;
31 TH0=0; 32 TL0=0; 33 // 只是單純計數可以不用寫后兩句在不會溢出的情況下
34 ET0=1; //允許T0中斷
35 EA=1; //開啟總中斷
36 } 37
38 void Conut(void) //計算到障礙物的距離
39 { 40 time=TH0*256+TL0; 41 TH0=0; 42 TL0=0; 43 S= (long)(time*0.017); //算出來是CM
44 } 45
46 void main() 47 { 48 while(1) 49 { 50 TX=1; 51 delay(); 52 TX=0; 53 while(!RX); //當RX為零時等待
54 TR0=1; //開啟計數
55 while(RX); //當RX為1計數並等待
56 TR0=0; //關閉計數
57 Conut(); //計算
58 } 59 }