一、模块介绍

1.1 模块图示

模块共有四个引脚,分别是Vcc(供5V电源)、Trig(控制端,下文简称Tr)、Echo(接收端,下文简称Ec)、Gnd(地线)

2.2 产品参数

二、 工作原理(时序)

在初始状态时,Tr引脚电平由单片机拉高,Ec引脚电平由传感器拉低。工作时,首先由单片机将Tr引脚拉低后再给一个高电平脉冲(持续时间至少为10us),传感器收到该脉冲信号后开始向外发射8个40KHz的方波即用来测距的超声波。该测距超声波以声速(340m/s)向前传播,在遇到障碍物时,该超声波被反弹向回传播,因此最终能够被传感器接收到,传感器会记录从发射超声波到接收到超声波的所经历的时间t。传感器在收到返回的信号后,由Ec引脚输出一个与t相同时间的高电平脉冲。此时,我们只需要通过单片机内部定时/计数器记录Ec引脚高电平脉冲时间即可得超声波的传播时间t。因此可算出传感器到障碍物间的距离=340*(t/2)   (因为t是超声波一来一回经历的时间,所以单程时间要除以2)。

三、例程(例程均为自己编写且仿真通过)

单片机为AT89C52,工作频率为12Mhz,最终结果通过八段数码管显示。

#include<reg52.h>
#include<intrins.h>typedef unsigned char uchar;
typedef unsigned int  uint;sbit Tr=P1^0;//触发信号
sbit Ec=P1^1;//回响信号void Delay10us(void);//10us延时函数
void Delay1ms(void);//1ms延时函数
uint Read_value(void);//读值函数
void InitTimer0(void);//定时器0初始化
void show(uint Out);//显示函数void main()
{uint distance;Tr=0;//出发引脚首先拉低InitTimer0();//初始化定时器0distance=Read_value();//读值show(distance);//显示距离
}/********************读值函数***********************/
uint Read_value()
{float temp;uint result;Tr=1;//触发引脚发出11us的触发信号(至少10us)Delay10us();_nop_();Tr=0;while(!Ec);//度过回响信号的低电平TR0=1;//开启定时器0while(Ec);//度过回响信号高电平TR0=0;//关闭定时器0temp=TH0*256+TL0;//最终us时间temp/=1000.0;//最终ms时间temp*=17.0;//距离(cm) (17=光速34cm/ms 除2)result=temp;//四舍五入if(temp-result>=0.5){result+=1;}return result;}
/***********************10us延时函数*****************************/
void Delay10us()
{uchar i;i=2;while(--i);}
/***********************1ms延时函数*****************************/
void Delay1ms()   //误差 0us
{unsigned char a,b,c;for(c=1;c>0;c--)for(b=142;b>0;b--)for(a=2;a>0;a--);
}
/************************定时器0初始化*****************************/
void InitTimer0(void)
{TMOD = 0x01;TH0 = 0x00;TL0 = 0x00;TR0 = 0;//先关闭定时器0
}/**********************显示函数*************************************/
void Show(uint Out)
{char duan[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//段码while(1){P2=0x01;//第四位(个位)Delay10us();P3=duan[Out%10];Delay1ms();P3=0xff;P2=0x02;//第三位(十位)Delay10us();P3=duan[(Out/10)%10];Delay1ms();P3=0xff;P2=0x04;//第二位(百位)Delay10us();P3=duan[(Out/100)%10];Delay1ms();P3=0xff;P2=0x08;//第一位(千位)Delay10us();P3=duan[(Out/1000)%10];Delay1ms();P3=0xff;}
}

注意:因为12MHz的单片机的机器周期为1us,即计数值就等于以us为单位的时间值,因此计算公式 可以写为  时间=TH0*256+TL0;但如果使用的单片机工作频率为11.0592MHz,其机器周期为1.085us,因此时间计算公式需写为    时间=(TH0*256+TL0)*1.085

四、仿真电路

左肩理想右肩担当,君子不怨永远不会停下脚步!

HC-SRF04超声波测距传感器+Proteus仿真(附源码与仿真电路)相关推荐

  1. 基于Simulink融合IMU传感器数据(附源码)

    目录 1.惯性测量单元 2.姿态航向和参考系统 3.同步系统 4.输入和配置 5.真北 vs 磁北 6.模拟 7.估计方向 8.陀螺仪偏置 9.程序 此示例说明如何使用 Simulink生成和融合 I ...

  2. Arduino的光敏传感器和超声波测距传感器测试代码

    光敏传感器测试代码 使用的是一个未知名4pin模块, 4pin依次为Vcc, Gnd, DO, AO, 板载一个可调电阻以及一个LED, 调节电阻大小, 可以控制LED亮灭和DO输出变化对光亮的灵敏度 ...

  3. 超声波测距传感器认知

    目录 一.超声波测距传感器认知 二.从零编程实现超声波测距 三.项目--感应开关盖垃圾桶 1.开发步骤 2.感应开关盖垃圾桶代码测试 一.超声波测距传感器认知 超声波测距模块是用来测量距离的一种产品, ...

  4. 超声波测距传感器模块在畜牧业的应用

    我国现代养殖是一种"高投入.高产出.高效益"的产业.资本密集型和劳动集约化是其基本特征.这种集约化的产业耗费了大量的人力和自然资源,并在某种程度上对环境造成负面影响.如今物联网应用 ...

  5. 【HaaS Python硬件积木】HCSR04超声波测距传感器

    来这里发现更多拿来即用的传感器 HaaS开发框架HaaS积木方案,赋能生态开发者,让您快速找到自己需要的解决方案,硬件主板与外设,以及各种应用组件.https://haas.iot.aliyun.co ...

  6. 基于STM32和超声波测距传感器的测距功能设计

    基于STM32和超声波测距传感器的测距功能设计(使用陌生传感器的流程介绍) 引言 项目设计 项目简介 开发工具 硬件设计 软件设计 开发流程 阅读手册 配置并测试传感器相关设置 软件开发 总结 后续 ...

  7. Arduino与Processing交互-超声波测距传感器的读取与显示

    公众号:STCode 1-超声波测距传感器简介 超声波测距传感器是利用频率高于20kHz的声波在空气中传播,遇到障碍物反射回来,通过计算发射和接收时间差,可以计算出发射点与障碍物间的距离. 超声波测距 ...

  8. 【STM32】标准库与HAL库对照学习教程外设篇--超声波测距传感器

    [STM32]标准库与HAL库对照学习教程外设篇--超声波测距传感器 一.前言 二.准备工作 三.超声波测距传感器 1.原理说明 2.使用说明 四.标准库使用传感器 1.实验程序 2.实验效果 五.H ...

  9. 超声波测距传感器模HG-C40U工作程序图文详解

    超声波测距模块是用来测量距离的一种产品,通过发送和收超声波,利用时间差和声音传播速度,计算出模块到前方障碍物的距离. 超声波测距模块有好多种类型,目前比较常用的有URM37超声波传感器默认是232接口 ...

  10. [博创智联]创新创客智能硬件平台——超声波测距传感器

    [博创智联]创新创客智能硬件平台--超声波测距传感器 准备工作 测试环节 编译驱动和测试代码 加载驱动并执行代码 准备工作 烧录原版系统,供电.连接串口线,配置网络,挂载NFS共享,拷贝超声波测距传感 ...

最新文章

  1. LeetCode1117. Building H2O --Java解法--多线程保证执行顺序--AtomicInteger
  2. Servlet与JSP学习笔记(五) JSP核心(下)
  3. HDU - 1255 覆盖的面积(线段树求矩形面积交 扫描线+离散化)
  4. QT中个数据类型的转换
  5. html万年历闹钟怎么取消,万年历如何取消整点报时,他上面有四个键,分...
  6. iOS中MVC设计模式
  7. 深入分析Flex [Bindable] 【转】
  8. webservice的css哪里添加,jQuery_XML+XSLT+CSS+JQuery+WebService组建Asp.Net网(2), 3.       更 - phpStudy...
  9. 一个基于ngrx的计数器例子 单步调试搞清楚原理
  10. TextView does not support text selection. Selection cancelled. 。TextViews复制文本失效解决方法
  11. wins宝塔安装提示已经有php,centOS安装宝塔提示报错
  12. Page.RegisterClientScriptBlock和Page.RegisterStartupScript有何区别
  13. STM32工作笔记0072---UCOSIII在STM32F103上的移植
  14. flex4 日期类型字符串转日期类型(string转Date)
  15. js 获取页面高度和宽度(兼容 ie firefox chrome),获取鼠标点击位置
  16. Redis 中文入库成功,读取数据写入文件乱码问题
  17. AndroidStudio是最难用的IDE,没有之一
  18. JSP自定义select标签 字典表数据
  19. TQIMX6ULL测试----存储设备
  20. 你不得不知道的通信行业基础介绍

热门文章

  1. php 重写url 控制器方法,怎么设置php开源程序伪静态(URL 重写)设置通用方法
  2. html加密文件怎么解密,加密文件如何解密?原理是什么?
  3. springboot项目启动遇到问题:AopAutoConfiguration matched: - @ConditionalOnProperty (spring.aop.auto=true)
  4. ERDAS IMAGINE 2013裁剪影像方法
  5. web前端学习135-144(盒子模型---网页布局,盒子模型组成,边框,表格细线边框,盒子实际大小,内边距)
  6. 12306html布局,12306更新验证码
  7. 超级详细讲解根文件系统rootfs的制作
  8. 软件项目量化管理(CMMI高成熟度)实践经验谈——之项目管理过程策划篇
  9. 国内物联网平台初探(八):中移物联网开放平台OneNet
  10. 单片机继电器控制实验程序C语言,继电器控制实验