1. 基本参数
工作电压 | DC5V | 工作电流 | 15mA | 工作频率 | 40Khz | 最远射程 | 4m | 最近射程 | 2cm | 测量角度 | 15° | 输入触发角度 | 10uS的TTL脉冲 | 输出回响信号 | 输出TTL信号 | 规格尺寸 | 45*20*15mm |
2. 基本原理
1) 单片机IO口发送≥10us的持续高电平信号,作为起始信号。
2)模块自动发送8个40Khz的方波,单片机自动检测Ehco引脚是否有信号返回;
3)若有信号返回,开启定时器计时,当检测到Echo引脚为低电平则关闭定时器,此时的时间为发射超声到接收回波的时间,因为物体的距离=(定时器时间*340)/2。
4)若无信号返回,则继续等待信号返回。
3. 时序图
4. 程序范例
单片机选型为STC15W204S。
#ifndef __HCSR04_H__
#define __HCSR04_H__
sbit TRIG=P5^5;
sbit ECHO=P3^2;
bit flag=0;?????????
bit succed_flag=0;?? //测距中断完成标志位
bit single_flag=0;?? //单总线标志位
float distance=0;
u16 temp=0;
void tim0_init()
{
????//AUXR = 0x80;??????????????? //定时器1为1T模式
??? TMOD = 0x00;??????????????? //定时器1为模式2(8位自动重载)
????TL0 = 0xCD;?????????????? ???//设置定时初始值
????TH0 = 0xD4;????????????? ????//设置定时初始值
??? TR0 = 0;??????????????????? //定时器1开始启动
}
//hc-sr04起始信号
void hcsr04_start_single()
{
?????TRIG=1;
?????Delay20us();
?????TRIG=0;
}
//hc-sr04测距转换函数
u8 hcsr04_covert()
{
?? temp=TH0*256+TL0;???????????????????????????
?????TH0=0;
?????TL0=0;
?????distance=(temp*1.87)/10000;
?????return distance;
}
#endif
|