51单片机小车——HC-SR04超声波避障

本文详细介绍了HC-SR04超声波测距模块的工作原理、电气参数、接线方法以及使用定时器进行精确测距的程序示例,适合机器人和电子项目开发者参考。

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

一、HC-SR04超声波测距模块原理


1.模块简介


HC-SR04超声波模块常用于机器人避障、物体测距、液位检测、公共安防、停车场检测等场所。HC-SR04超声波模块主要是由两个通用的压电陶瓷超声传感器,并加外围信号处理电路构成的。

两个压电陶瓷超声传感器,一个用于发出超声波信号,一个用于接收反射回来的超声波信号。由于发出信号和接收信号都比较微弱,所以需要通过外围信号放大器提高发出信号的功率,和将反射回来信号进行放大,以能更稳定地将信号传输给单片机。


2.模块电气参数


工作电压:DC—5V
工作电流:15mA
工作频率:40Hz
电平输出:高5V
电平输出:底0V
感应角度:不大于15度
射程范围:2cm-400cm
高精度 可达0.3cm

3.模块工作原理


(1)采用 IO 口 TRIG 触发测距,给最少 10us 的高电平信呈。
(2)模块自动发送 8 个 40khz 的方波,自动检测是否有信号返回;
(3)有信号返回, 通过 IO 口 ECHO 输出一个高电平, 高电平持续的时间就是超
波从发射到返回的时间。 

4.HC-SR04超声波模块原理图

5.接线方法

超声波模块有4个引脚,接线方法如下:
VCC--5V
GND--GND
Trig--板子上的输出引脚(用来发射超声波信号)
Echo--板子上的输入引脚(用来接收返回的超声波信号)

二、程序编写

#include <reg52.h>
#include <intrins.h>
#include "chaosheng.h"

sbit fs = P2^7;
sbit js = P2^6;

unsigned int jg;
unsigned int jl = 20;

void Delay50ms()	//@11.0592MHz
{
	unsigned char data i, j;

	i = 90;
	j = 163;
	do
	{
		while (--j);
	} while (--i);
}

void Delay10us(void)	//@11.0592MHz
{
	unsigned char data i;

	i = 2;
	while (--i);
}

void Timer1_Init()
{	
	TMOD = 0x10;		//设置定时器模式
	TL1 = 0x00;		//设置定时初值
	TH1 = 0x00;		//设置定时初值
	TR1 = 0;
}

void	chaosheng () 		//超声波测距程序	
{
	fs	= 1;
	Delay10us	();
	fs	= 0;

	while(js==0);
	TR1 = 1;
	while(js==1);
	TR1 = 0;

	jg = ((TH1*256+TL1)*1.7)/100;
	TL1 = 0x00;		//设置定时初值
	TH1 = 0x00;		//设置定时初值

	if(jl > jg)
	{
		car_stop ();
		Delay50ms ();
}

}

评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值