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

本文总字数:1508,阅读预计需要:4分钟

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 @   北极星!  阅读(12551)  评论(2编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· AI Agent开发,如何调用三方的API Function,是通过提示词来发起调用的吗
点击右上角即可分享
微信分享提示