超声波测距模块(51单片机)
超声波测距模块(51单片机)
- 硬件介绍
- 1.使用场景
- 2. 工作原理
- 讲解代码
- 重点
- 1、定义引脚
- 2、定义时间
- 3、获取时间和距离
- 4、主函数
- 5、延时函数
- 结尾
硬件介绍
1.使用场景
超声波测距模块在平时做电子产品、机器人、智能设备中的应用里还是非常常用的,使用非常简单,但是代码的编写和理解其实并不容易,在这里想和大家交流一下。有不同的意见和建议可以给我留言或者私信我。
2. 工作原理
超声波测距模块是用来测量距离的一种产品,通过发送和就接收超声波,利用时间差和声音传播速度,计算出模块到前方障碍物的距离。
HC-SR04这个模块是2线制的(不包含电源线),Echo与Trig,Trig负责接收10us以上的触发信号,Echo则是输出距离信号;下面是时序图:
(1)采用 IO 触发测距,给至少 10us 的高电平信号;
(2)模块自动发送 8 个 40khz 的方波,自动检测是否有信号返回;
(3)有信号返回,通过 IO 输出一高电平
(4)超声波从发射到返回的时间.测试距离=(高电平时间*声速(340M/S))/2;
总的来说就是:
控制口发一个 10US 以上的高电平,就可以在接收口等待高电平输出.一有输出就可以开定时器计时,当此口变为低电平时就可以读定时器的值,此时就为此次测距的时间,方可算出距离.如此不断的周期测,就可以达到你移动测量的值了。
接口定义:
Vcc、 Trig(控制端)、 Echo(接收端)、 Gnd调节最大距离
上图标志电阻即 R3,可以调节最大探测距离。R3 电阻为 392,探测距离最大 4.5M 左右,探测角度小于 15 度;
R3 电阻为 472,探测距离最大 7M 左右,探测角度小于 30 度;出厂默认 392,即最大探测距离 4.5M 左右。
R3 电阻大,接收部分增益高,检测距离大,但检测角
度会相应变大,容易检测到前方旁边的物体。当然,客户在不要求很高的测试距离的条件下,可以改小 R3 来减小探测角度,这时最大测距会减小。应用注意事项:
1:此模块不宜带电连接,如果要带电连接,则先让模块的 Gnd 端先连接。否则会影响
模块工作。
2:测距时,被测物体的面积不少于 0.5 平方米且要尽量平整。否则会影响测试结果。
讲解代码
重点
代码的核心在于中断。这点很重要,超声波测距模块的重点就是在于中断,
定时器/计数器这部分需要有一定的理解。
初始化的同时打开了定时器,同时内部中断打开并开始计数操作,
待超声波的输入端接收到返回波之后关闭内部中断,
停止计数,接下来通过记到的时间计算被测物的距离(s=time*340/2m)
1、定义引脚
#include<reg52.h>
sbit Trig = P2^0;
sbit Echo = P2^1;
2、定义时间
void Delay10us()
{TMOD |= 0x1;TH0 = 0xFF;TL0 = 0xF6;TR0 = 1;while(!TF0);TF0 = 0;
}
void Rstart()
{Trig=0;Trig=1;Delay10us();Trig=0;
}
3、获取时间和距离
int gettime()
{unsigned int time = 0;time = TH0*256+TL0// TH0<<8 | TL0;return time;
}
float Getdis(unsigned int time)
{float distance;distance = (float)time * 0.0017;TH0=0;TL0=0;·return distance;
}
void star()
{TH0 = 0;TL0 = 0;TR0 = 1;
}
void end()
{TR0 = 0;
}
void GetOnce()
{Rstart();while(!Echo);star();while(Echo);end();
}
4、主函数
void main()
{unsigned int time = 0;float dis;
while(1){ GetOnce();time = gettime();dis = Getdis(time);
}}
5、延时函数
void delay()
{int i;int j;for(i=0;i<100;i++)for(j = 0;j<2000;j++);
}
结尾
这就是超声波模块的介绍和代码分析了。
如果想进行更深的使用和了解。可以在我们项目实战专栏里查看更多内容。在哪里有更多的代码注释可以帮助理解,还有项目工程源码可供提取。
我把利用串口打印超声波距离、LCD1602显示屏显示超声波距离等项目实战都放在了那里。
超声波测距模块(51单片机)相关推荐
- 红外测距模块 51单片机_[51单片机] HC-SR04超声波测距仪
1.HC-SR04超声波模块工作原理 (1)采用IO口触发测距,给至少10us高电平脉冲: (2)模块自动发送八个40khz方波,并自主检测是否有电波返回: (3)当有信号返回时,通过IO口输出一个高 ...
- 超声波测距模块HC-SR04详解(基于51单片机)
本篇文章是个人整理的包含超声波测距模块HC-SR04的基本介绍与基本工作原理以及分别通过LCD1602.数码管和串口显示距离的实例讲解与代码的笔记,部分内容来自<HC-SR04超声波测距模块说明 ...
- 利用51单片机+HC-SR04+51单片机制造超声波测距模块
利用HC-SR04和51单片机制造超声波测距模块 完整的项目链接: https://github.com/linxinloningg/51_chip_core.git 硬件电路分析: 1.HC-SR0 ...
- 51单片机:HCSR04超声波测距模块及1602显示—C51程序(超详细)
测试完成于STC89C516单片机,晶振12MHZ.超声波模块Echo=P1^0.Trig=P1^1,1602液晶8位数据口=P0.E=P2^7.RS=P2^6.RW=P2^5.. 程序文件分为4部分 ...
- 51单片机项目设计:基于超声波的 车库停车系统、车位检测系统设计(8个超声波测距模块)keil+protues仿真
基于51单片机的车库停车系统 代码仿真资料链接https://download.csdn.net/download/mbs520/12742296 一.设计要求: 毕业设计原题: 本设计主要用于室内停 ...
- 51单片机 普中V2 超声波测距 报警 显示 基于MCS51单片机的超声波测距模块的开发
基于MCS51单片机的超声波测距模块的开发 采用C51程序设计语言,完成下列功能要求. l 必选功能: (1) 超声波模块和单片机的接口设计,画出完整的电路原理图.(15分) (2) 开发板上电时,显 ...
- 基于51单片机的超声波测距模块
实现功能 通过超声波模块进行测距显示在LCD1602上并通过设在程序上设置上下限进行进行超出上下限的报警蜂鸣器 模块 1.89c51 2.lcd1602 3.超声波测距模块 4,蜂鸣器 作者用的是51 ...
- STM32单片机基于HAL库开发HC-SR04 超声波测距模块(终极版)
参考: 某宝HC-SR04 超声波测距模块商品详情页 STM32L051C8T6 HAL库 输入捕获进行超声波测距 案例 STM32CubeMX学习笔记3--TIM2输入捕获(SR-04测距) cub ...
- 基于52单片机的超声波测距模块(hc-sr04超声波测距模块+1602液晶显示器)
二年级课设做了超声波测障仪,用的是hc-sr04超声波测距模块+1602液晶显示器和52单片机. 由于自己之前的学习很是不牢固,在课设的时候没少走弯路,最后在第二个周的星期五做了出来,浪费了很多的时间 ...
最新文章
- C++中 何时用. 何时用-」
- apache 网站跳转至同一页面(可用于当网站在备案时显示告示)
- iOS应用性能调优的25个建议和技巧【转】
- NLP-基础知识-006(机器学习)
- loc和iloc的用法汇总(完成)
- $.ajax防止多次点击重复提交的方法
- 央视曝光:全国第九大电商平台倒了!创始人卷走260亿,1200万人被骗
- android 接收SDCcard插拔的广播
- 【MyBatis笔记】09-一对多关系建表
- svn 中的url路径修改和 清除 svn用户名和密码
- linux内核装载vfs过程
- 想听懂用户的声音,至少得先学会数据分析吧
- Python实现遗传算法解决TSP问题
- AI行业“四小龙”里,谁最有巨头相?
- Android 集成百度地图服务和驾车导航jar包冲突、驾车导航引入armeabi-v7a平台
- struggle in SVS Caffe environment
- 学院开展计算机基础知识比赛,信阳师范学院顺利举办第七届计算机基础知识决赛...
- 服务器老被攻击?如何避免服务器被恶意攻击?
- Power BI 参数解决源文件路径问题
- tkinter绘制组件(18)——菜单