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 }