使用超声波模块+HC-SR04模块的超声波测距

电子说

1.3w人已加入

描述

目录

一、前言

二、超声波模块介绍

   1、超声波模块

   2、HC-SR04模块

三、硬件连接

四、软件代码

五、效果展示

六、代码链接

一、前言

超声波模块是通过声音的传播进行测距,声音传播的速度与所用时间通过运算得出距离,精度相对较高,可用于近距离的测量与感应。

二、超声波模块介绍

1、超声波模块

       超声波测距模块是用来测量距离的一种产品,通过发送和收超声波,利用时间差和声音传播速度,计算出模块到前方障碍物的距离。 超声波测距模块有好多种类型,比较常用的有URM37超声波传感器默认是232接口,可以调为TTL接口,URM05大功率超声波传感器测试距离能到10米,算是测试距离比较远的一款了,另外还有比较常用的国外的几款SRF系列的超声波模块,超声波模块精度能到1cm 。

2、HC-SR04模块

       本模块性能稳定,测度距离精确,模块高精度,盲区小。 产品应用领域: 机器人避障 物体测距 液位检测 公共安防 停车场检测 。 测试距离大概在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显示”获得代码。若有错误欢迎指正。

 

  审核编辑:汤梓红

 

 

 

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分