超声波测距模块(51单片机)

  • 硬件介绍
    • 1.使用场景
    • 2. 工作原理
  • 讲解代码
    • 重点
    • 1、定义引脚
    • 2、定义时间
    • 3、获取时间和距离
    • 4、主函数
    • 5、延时函数
  • 结尾

硬件介绍

1.使用场景

超声波测距模块在平时做电子产品、机器人、智能设备中的应用里还是非常常用的,使用非常简单,但是代码的编写和理解其实并不容易,在这里想和大家交流一下。有不同的意见和建议可以给我留言或者私信我。

2. 工作原理

  1. 超声波测距模块是用来测量距离的一种产品,通过发送和就接收超声波,利用时间差和声音传播速度,计算出模块到前方障碍物的距离。

  2. HC-SR04这个模块是2线制的(不包含电源线),Echo与Trig,Trig负责接收10us以上的触发信号,Echo则是输出距离信号;下面是时序图:

(1)采用 IO 触发测距,给至少 10us 的高电平信号;
(2)模块自动发送 8 个 40khz 的方波,自动检测是否有信号返回;
(3)有信号返回,通过 IO 输出一高电平
(4)超声波从发射到返回的时间.测试距离=(高电平时间*声速(340M/S))/2;

  1. 总的来说就是:
    控制口发一个 10US 以上的高电平,就可以在接收口等待高电平输出.一有输出就可以开定时器计时,当此口变为低电平时就可以读定时器的值,此时就为此次测距的时间,方可算出距离.如此不断的周期测,就可以达到你移动测量的值了。

  2. 接口定义:
    Vcc、 Trig(控制端)、 Echo(接收端)、 Gnd

  3. 调节最大距离

    上图标志电阻即 R3,可以调节最大探测距离。R3 电阻为 392,探测距离最大 4.5M 左右,探测角度小于 15 度;
    R3 电阻为 472,探测距离最大 7M 左右,探测角度小于 30 度;出厂默认 392,即最大探测距离 4.5M 左右。
    R3 电阻大,接收部分增益高,检测距离大,但检测角
    度会相应变大,容易检测到前方旁边的物体。当然,客户在不要求很高的测试距离的条件下,可以改小 R3 来减小探测角度,这时最大测距会减小。

  4. 应用注意事项:
    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单片机)相关推荐

  1. 红外测距模块 51单片机_[51单片机] HC-SR04超声波测距仪

    1.HC-SR04超声波模块工作原理 (1)采用IO口触发测距,给至少10us高电平脉冲: (2)模块自动发送八个40khz方波,并自主检测是否有电波返回: (3)当有信号返回时,通过IO口输出一个高 ...

  2. 超声波测距模块HC-SR04详解(基于51单片机)

    本篇文章是个人整理的包含超声波测距模块HC-SR04的基本介绍与基本工作原理以及分别通过LCD1602.数码管和串口显示距离的实例讲解与代码的笔记,部分内容来自<HC-SR04超声波测距模块说明 ...

  3. 利用51单片机+HC-SR04+51单片机制造超声波测距模块

    利用HC-SR04和51单片机制造超声波测距模块 完整的项目链接: https://github.com/linxinloningg/51_chip_core.git 硬件电路分析: 1.HC-SR0 ...

  4. 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部分 ...

  5. 51单片机项目设计:基于超声波的 车库停车系统、车位检测系统设计(8个超声波测距模块)keil+protues仿真

    基于51单片机的车库停车系统 代码仿真资料链接https://download.csdn.net/download/mbs520/12742296 一.设计要求: 毕业设计原题: 本设计主要用于室内停 ...

  6. 51单片机 普中V2 超声波测距 报警 显示 基于MCS51单片机的超声波测距模块的开发

    基于MCS51单片机的超声波测距模块的开发 采用C51程序设计语言,完成下列功能要求. l 必选功能: (1) 超声波模块和单片机的接口设计,画出完整的电路原理图.(15分) (2) 开发板上电时,显 ...

  7. 基于51单片机的超声波测距模块

    实现功能 通过超声波模块进行测距显示在LCD1602上并通过设在程序上设置上下限进行进行超出上下限的报警蜂鸣器 模块 1.89c51 2.lcd1602 3.超声波测距模块 4,蜂鸣器 作者用的是51 ...

  8. STM32单片机基于HAL库开发HC-SR04 超声波测距模块(终极版)

    参考: 某宝HC-SR04 超声波测距模块商品详情页 STM32L051C8T6 HAL库 输入捕获进行超声波测距 案例 STM32CubeMX学习笔记3--TIM2输入捕获(SR-04测距) cub ...

  9. 基于52单片机的超声波测距模块(hc-sr04超声波测距模块+1602液晶显示器)

    二年级课设做了超声波测障仪,用的是hc-sr04超声波测距模块+1602液晶显示器和52单片机. 由于自己之前的学习很是不牢固,在课设的时候没少走弯路,最后在第二个周的星期五做了出来,浪费了很多的时间 ...

最新文章

  1. C++中 何时用. 何时用-」
  2. apache 网站跳转至同一页面(可用于当网站在备案时显示告示)
  3. iOS应用性能调优的25个建议和技巧【转】
  4. NLP-基础知识-006(机器学习)
  5. loc和iloc的用法汇总(完成)
  6. $.ajax防止多次点击重复提交的方法
  7. 央视曝光:全国第九大电商平台倒了!创始人卷走260亿,1200万人被骗
  8. android 接收SDCcard插拔的广播
  9. 【MyBatis笔记】09-一对多关系建表
  10. svn 中的url路径修改和 清除 svn用户名和密码
  11. linux内核装载vfs过程
  12. 想听懂用户的声音,至少得先学会数据分析吧
  13. Python实现遗传算法解决TSP问题
  14. AI行业“四小龙”里,谁最有巨头相?
  15. Android 集成百度地图服务和驾车导航jar包冲突、驾车导航引入armeabi-v7a平台
  16. struggle in SVS Caffe environment
  17. 学院开展计算机基础知识比赛,信阳师范学院顺利举办第七届计算机基础知识决赛...
  18. 服务器老被攻击?如何避免服务器被恶意攻击?
  19. Power BI 参数解决源文件路径问题
  20. tkinter绘制组件(18)——菜单

热门文章

  1. 30、python散点图绘制简单操作
  2. 什么是APU(辅助动力装置)?
  3. 卡通风格地图教程来了,全网仅此一个!
  4. 【C语言】库函数标准详细解读和EOF术语
  5. js 一次元素点击响应2个事件函数
  6. SCM管理系统实现汽车零部件行业供应商全流程闭环管理,与供应商建立战略关系
  7. [NLP]如何安装繁简转换工具:opencc
  8. XBOX360更新游戏封皮(FSD自制系统)
  9. 看看,Jetpack Compose是什么新东西
  10. 双线单IP和双线双IP机房的区别