电子说
目录
一、前言
二、超声波模块介绍
1、超声波模块
2、HC-SR04模块
三、硬件连接
四、软件代码
五、效果展示
六、代码链接
超声波模块是通过声音的传播进行测距,声音传播的速度与所用时间通过运算得出距离,精度相对较高,可用于近距离的测量与感应。
超声波测距模块是用来测量距离的一种产品,通过发送和收超声波,利用时间差和声音传播速度,计算出模块到前方障碍物的距离。 超声波测距模块有好多种类型,比较常用的有URM37超声波传感器默认是232接口,可以调为TTL接口,URM05大功率超声波传感器测试距离能到10米,算是测试距离比较远的一款了,另外还有比较常用的国外的几款SRF系列的超声波模块,超声波模块精度能到1cm 。
本模块性能稳定,测度距离精确,模块高精度,盲区小。 产品应用领域: 机器人避障 物体测距 液位检测 公共安防 停车场检测 。 测试距离大概在5M。
基本工作原理:
(1)采用IO口TRIG触发测距,给至少10us的高电平信号;
(2)模块自动发送8个40khz的方波,自动检测是否有信号返回;
(3)有信号返回,通过IO口ECHO输出一个高电平,高电平持续的时间就是超声波从发射到返回的时间。测试距离=(高电平时间*声速(340M/S))/2;
超声波硬件连接
VCC:接5V
GND:接地
Trig:控制端(我接的P1^0)
Echo:接收端(我接的p1^1)
OLED连接方式与上一节相同。
main主函数
void main()
{
float S; //距离变量
TIM0init(); //初始化定时器0
OLED_Init(); //初始化
OLED_ColorTurn(0); //0正常显示,1反色显示
OLED_DisplayTurn(0);//0正常显示,1屏幕反转显示
while(1)
{
TRIG=1; //触发信号是高电平脉冲,宽度大于10us
DelayUs2x(10);
TRIG=0;
while(!ECHO); //等待高电平
TR0=1;
while(ECHO); //等待低电平
TR0=0;
S=TH0*256+TL0;//取出定时器值高8位和低8位合并
S=S/58; //为什么除以58等于厘米, Y米=(X秒*344)/2
// X秒=( 2*Y米)/344 -> X秒=0.0058*Y米 -> 厘米=微秒/58
TH0=0;
TL0=0; //清除定时器0寄存器中的值
//delay_ms(50);
S=S*10;
OLED_DrawBMP(0,1,48,48,BMP1); //生成图像
OLED_ShowChinese(48,0,0,16); //文字 距离
OLED_ShowChinese(64,0,1,16);
OLED_ShowString(80,0,":",16); //显示字符串
OLED_ShowString(110,2,"mm",16);
OLED_ShowNum(80,2,S,3,16); //显示数字
DelayMs(250);
}
}
OLED控制函数可以观看上一节内容。
实物演示 https://live.csdn.net/v/211270
关注公众号“小小创客者”回复“超声波测距OLED显示”获得代码。若有错误欢迎指正。
审核编辑:汤梓红
全部0条评论
快来发表一下你的评论吧 !