基于51单片机的超声波测距带语音播报

一.硬件方案

硬件部分为利用超声波测距模块,将声波信号通过发射头发射出去,当声波信号遇到障碍物后反射回来给接收头,单片机通过计算发射和接收的时间间隔,并结合声波的传播速度,便可计算出障碍物的距离。最后,单片机将距离结果转化为语音模块指令,将距离以音频的形式播放出来。
主要由51单片机+最小系统+LCD1602液晶显示模块+超声波测距模块+语音播放模块+蜂鸣器模块+温度传感器+按键模块;如图:
在这里插入图片描述

二.设计功能

(1)LCD1602液晶显示测量的距离和温度;
(2)带有温度补偿功能(DS18B20传感器);
(3)测量范围0.02m~4m,精度为0.01m;
(4)带实时语音播报功能;
(5)按键功能:按键2:加报警值按键3:减报警值按键1:设置按键(只有在按下设置的时候才可以加减报警值),在未按下按键1时,按下按键3播报测量距离。

三.设计原理图

原理图主要采用AD软件进行设计,如图:
在这里插入图片描述

四.软件设计

主程序源码

//主函数
void main()
{
	UART_init();
	Init_ultrasonic_wave();
	//屏幕初始化
	Init1602();
	//温度初始化
	tmpchange(); 
	t_=tmp();
	tmpchange();
	t_=tmp();
	tmpchange();
	t_=tmp();

	//循环显示
	while(1)
	{
		Key();
		if(yuyin_flag==1)
		{
		   yuyin_flag=0;

		   ONE4[4]=L_/100;
		   ONE5[4]=L_/10%10;
		   ONE6[4]=L_%10;
		   if(ONE4[4]==0)ONE4[4]=0x0A;
		   if(ONE5[4]==0)ONE5[4]=0x0A;
		   if(ONE6[4]==0)ONE6[4]=0x0A;
		  
		   UART_send_string(ONE1,6);
		   delayms(1);
		   UART_send_string(ONE4,6);
		   delayms(1);
		   UART_send_string(ONE3,6);
		   delayms(1);
		   UART_send_string(ONE5,6);
		   delayms(1);
		   UART_send_string(ONE6,6);
		   delayms(1);
		   UART_send_string(ONE2,6);
		   delayms(1);
		}
		//正常显示
		if(mode==0)
		{
			StartModule();//启动超声波
			while(!RX);	  //当RX为零时等待
			TR0=1;		  //开启计数
			while(RX);	  //当RX为1计数并等待
			TR0=0;		  //关闭计数
	
			delayms(20);  //20MS
			tmpchange();  //温度转换
			t_=tmp();     //度温度
			Conut(t_/10); //计算距离
			if(L_>Max||L_<Min)
			{
				Feng_Start();
			}
			else
			{
				if(FW!=1)
				Feng_Stop();
			}
			Display_1602(t_/10,L_);
		}
		//调整显示
		else if(mode!=0)
		{
			//最大最小值
			Init_MaxMin();
			while(mode!=0)
			{
				
				Key();
				if(k==1&&mode==1)
				{
					Init_MaxMin();	
   				write_com(0x8d);//设置位置					
				}
				else if(k==1&&mode==2)
				{
					Init_MaxMin();	
   				write_com(0x8d+0x40);//设置位置	
				}
				k=0;
			}
			//界面初始化
			Init1602();
		}
	}
}

链接:https://pan.baidu.com/s/1GhaJNjxNWKv_AuzevLmkoA?pwd=c6dp
提取码:c6dp

  • 1
    点赞
  • 54
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值