超声波模块HC-SR04简介以及编程

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 }

 

posted @ 2020-03-16 20:58  北极星!  阅读(12290)  评论(2编辑  收藏  举报