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 }