基于51单片机的超声波测距

本文硬件采用51单片机作为控制器,HC-SR04超声波模块测量距离,LCD1602显示所测量的距离。

1.超声波模块HC-SR04简介

1.1-超声波测距

超声波指向性强,能量消耗缓慢,在介质中传播的距离较远,因而超声波经常用于距离的测量,如测距仪和物位测量仪等都可以通过超声波来实现。利用超声波检测往往比较迅速、方便、计算简单、易于做到实时控制,并且在测量精度方面能达到工业实用的要求,因此在移动机器人研制上也得到了广泛的应用。

1.2-HC-SR04

HC-SR04超声波测距模块可提供2cm到400cm的非接触式距离感测功能。HC-SR04模块共有四个引脚,分别是VCC(+5V电源)、Trig(触发引脚)、Echo(接收引脚)、GND(地线),如下图所示:
在这里插入图片描述

2.工作原理

2.1-原理简介

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

2.2-程序实现

float Count(void)
{
	u16 time;
	float s;
	time=TH0*256+TL0;
	TH0=0;
	TL0=0;
	//s=time*0.1715;
	s=(time/58.0/100)*1000;//距离单位转换成 mm
	return s;
}
void LCD1602_DisDistance(void)
{
	u16 s;
	s=(u16)Count();
	if(s<200||s>4000||flag==1)
	{
		flag=0;
		LCD1602_DisString(0,9," error  ");
	}
	else
	{
		LCD1602_DisData(0,10,s);
		LCD1602_DisString(0,14,"mm");
	}
}

3.工程结构

在这里插入图片描述

4.仿真电路

在这里插入图片描述

5.实物测量结果展示

5.1-测量21cm结果

在这里插入图片描述

5.2-测量25cm结果

在这里插入图片描述

6.资料分享

51单片机+HC-SR04+LCD1602

  • 10
    点赞
  • 53
    收藏
    觉得还不错? 一键收藏
  • 8
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值