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

本文介绍了一个使用51单片机和HC-SR04超声波传感器构建的测距仪项目,测距范围2cm-400cm,采用定时器中断提高测量精度。超声波传感器在智能小车、避障和盲人拐杖等领域有广泛应用,项目代码遵循传感器的工作原理,避免使用延迟函数,而是利用定时器0中断控制测距频率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 该项目是基于HC-SR04超声波传感器的测距仪,使用数码管显示距离。测距范围为2cm-400cm,使用定时器0中断设定传感器测量频率,每200ms刷新一次数据。
 HC-SR04是常见的超声波传感器,常用于智能小车的测距,避障,盲人拐杖等领域;该模块直接集成了超声波发射器、接收器与控制电路,直接插上就可以直接工作,不需要再接入驱动电路。
 HC-SR04基本工作原理:

1、使用单片机的一个引脚发送一个至少10us高电平的TTL脉冲信号到模块的Trig引脚,用于触发模块工作(代码中体现为开始测距函数)。

2、模块检测到触发信号之后,会自动发送8个40khz的方波,然后自动切换至监测模式,监测是否有信号返回。

3、如果有信号返回,通过模块的Echo引脚会输出一个高电平, 高电平持续的时间就是超声波从发射到返回的时间(代码中体现为获取距离函数)。

 本次设计没有使用简单的延迟函数,而是使用定时器中断来控制测距的频率,这样可以保证传感器有足够时间接收数据、处理数据。

 系统的仿真图如下:
在这里插入图片描述
 依旧是绘制了PCB版图,本次绘制的是直插器件的PCB,以后会加入贴片器件版本,这样可以做成小型测距仪。
在这里插入图片描述
在这里插入图片描述
 部分代码如下所示,代码按照HC-SR04的指令要求编写

int getdistance(void)
{
	start();
	while(!ECHO);
	TR1=1;
	while(ECHO);
	TR1=0;
	
	time=TH1*256+TL1;
	TH1=0;
	TL1=0;
	
	s=(time*1.7)/100+1;         //测得cm
	if(flag==1||(s>700))
	{
		flag=0;
		s=0;
		return s;
	}
	return s;
}

void main()
{
	init();
	while(1)
	{
		display(distance);
	}
}

**资源包括:keilC语言代码+Proteus仿真原理图+ad原理图PCB+产品说明书**
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值