超声波测距OLED显示

一、前言

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

二、超声波模块介绍

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控制函数可以观看上一节内容。

五、效果展示

OLED显示距离

六、代码链接

关注公众号回复“超声波测距OLED显示”获得代码。若有错误欢迎指正。

  • 4
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 11
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值