工具
1.Proteus 8 仿真器
2.keil 5 编辑器
原理图
讲解
简介
HC-SR04超声波模块是一种常用的测距模块,通过不断检测超声波发射后遇到障碍物所反射的回波,从而测出发射和接收回波的时间差,并据此求出距离。它主要由两个压电陶瓷超声传感器和一个外围信号处理电路构成,其中一个传感器用于发出超声波信号,另一个用于接收反射回来的超声波信号。
在工作时,该模块通过IO口触发测距,发送一个40kHz的脉冲信号,此信号通过传输介质(通常为空气)传播出去。当超声波信号遇到障碍物时,会被反射回来,并被接收传感器捕获。通过计算超声波发出后到达障碍物再反射回传感器的时间差,并结合已知的超声波传播速度(通常为340m/s,但易受温度、湿度、压强等因素影响),就可以得出障碍物与传感器的距离。
HC-SR04超声波模块测距范围在2cm到400cm之间,测距精度可达3mm,工作电压为DC 5V,工作电流为15mA。因其成本低、精度高、使用简便等特点,被广泛应用于各种场景,如避障机器人、智能家居等。在避障机器人中,HC-SR04超声波模块可以用于检测障碍物与机器人的距离,实现避障控制;在智能家居中,它可以用于人体检测和距离测量,如检测人的接近并触发开门动作或用于室内的距离测量和触发自动照明等。
参数
工作电压 | DC 5V |
工作电流 | 15mA |
工作频率 | 40kHz |
最远射程 | 4m |
最近射程 | 2cm |
测量角度 | 15度 |
输入触发信号 | 10us的TTl脉冲 |
输出回响信号 | 输出TTl电平信号,与射程成正比 |
规格尺寸 | 45*20*15mm |
引脚
VCC | 5V |
Trig | 发射信号 |
Echo | 接收信号 |
GND | 地 |
时序
计算
测试距离=(高电平时间*声速(340M/S))/2
注意
建议测量周期>60ms,以防止发射信号对回响信号的影响。
代码
#include <reg52.h>
#include "Delay.H"
#include "LCD1602.H"sbit button =P1^7; //按钮
sbit TRIG=P2^6; //发射信号
sbit ECHO=P2^7; //接收信号
unsigned int INT_num=0; //中断次数
unsigned int distance_A=0; //距离 整数部分
unsigned int distance_B=0; //距离 小数部分
void timer0Init() //定时器0初始化
{TMOD=0x01; //设置T0的工作方式为方式1、定时TH0=(65536-50000)/256; //设置定时器初值TL0=(65536-50000)%256;ET0=1; //开中断EA=1; //开总中断TR0=0; //关闭定时器
}
void timer0() interrupt 1
{//中断程序TR0=0;//重新赋值INT_num++;TH0=(65536-50000)/256; //设置定时器初值TL0=(65536-50000)%256;TR0=1;
}main(void)
{ timer0Init() ;LCD_Init(); //初始化液晶LCD_ShowString(1,1,"Old_man");LCD_ShowString(2,1,"000.00CM");while(1){//按钮按下if(!button){delay_ms(20);while(!button);TH0=(65536-50000)/256; //设置定时器初值TL0=(65536-50000)%256;TRIG=0;TRIG=1;delay_10us(1);TRIG=0;TRIG=1;while(!ECHO);TR0=1;while(ECHO);TR0=0;//获取定时器计数值//整数部分distance_A = ((50000*INT_num+((TH0<<8|TL0)-(65536-50000))) * 34000) / 2 / 1000000; // 除以2是因为声波需要往返,除以1000000是将微秒转换为秒 //小数部分distance_B = ((50000*INT_num+((TH0<<8|TL0)-(65536-50000))) * 34000) % (2*1000000)/10000; //保留两位LCD_ShowNum(2, 1, distance_A, 3);LCD_ShowString(2,4,".");LCD_ShowNum(2, 5, distance_B, 2);LCD_ShowString(2,7,"CM");}}
}
实现
🚀本欧也处于学习阶段,所学所识将以笔记发布。
笔记会根据相关知识的接触而随时更新!
如果文章对你有帮助,请留下你宝贵的点赞吧👍
V:Werluo 本欧也很喜欢交朋友的哦!