加入星计划,您可以享受以下权益:

  • 创作内容快速变现
  • 行业影响力扩散
  • 作品版权保护
  • 300W+ 专业用户
  • 1.5W+ 优质创作者
  • 5000+ 长期合作伙伴
立即加入

51单片机超声波测距带语音播报(源程序+原理图+原理图讲解)

07/08 09:34
1757
服务支持:
技术交流群

完成交易后在“购买成功”页面扫码入群,即可与技术大咖们分享疑惑和经验、收获成长和认同、领取优惠和红包等。

虚拟商品不可退

当前内容为数字版权作品,购买后不支持退换且无法转移使用。

加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论
放大
实物图
相关方案
  • 方案介绍
  • 相关文件
  • 推荐器件
  • 相关推荐
  • 电子产业图谱
申请入驻 产业图谱

本设计
51单片机超声波测距带语音播报(源程序+原理图+原理图讲解)
原理图:Altium Designer
程序编译器:keil 4
编程语言:C语言
编号S0004

功能说明:
1.本设计采用STC89C51/52(与AT89S51/52、AT89C51/52通用,可任选)单片机作为主控制器
2.LCD1602液晶显示测量的距离和温度;
3.带有温度补偿功能(DS18B20传感器);
4.测量范围0.02m~4m,精度为0.01m;
5.带实时语音播报功能;
6.按键功能:按键2:加报警值按键3:减报警值按键1:设置按键(只有在按下设置的时候才可以加减报警值),在未按下按键1时,按下按键3播报测量距离。

使用方法:
开机即可测试,前面的障碍物尽量不要太乱,尽量平整(如墙壁)。只有在设置的时候才可以加减报警值始计时
在这里插入图片描述

原理图:
在这里插入图片描述

程序:

复制到浏览器https://docs.qq.com/sheet/DS0xIa0llTmtNakRW
//宏定义
#define uchar unsigned char 
#define uint unsigned int
#define ULint unsigned long int 
//温度零上与零下的标志位
char flag=0;
//超声波
char flags=0;
//超声波距离
char flag1s=0;
//计算定时间
uint time=0;
//计算距离
ULint L_=0;
//温度
uint t_=0;
//显示模式  0正常  1最大值调整  2最小值调整
uchar mode=0;

uint Max=490;
uint Min=10;
//按键标志
uchar k=0;
//数值有误
uchar FW=0;
//头函数
#include <reg52.h>
#include <intrins.h>
#include "BJ_Key.h"	   	 //报警按键
#include "display.h"			 //显示头函数
#include "ultrasonic_wave.h"//超声波头函数
#include "DS18B20.h"	   	 //温度传感器头函数

uchar ONE1[6]={0x7E,0x04,0x03,0x00,0X0D,0xEF};//现在距离为
uchar ONE2[6]={0x7E,0x04,0x03,0x00,0X0C,0xEF};//米
uchar ONE3[6]={0x7E,0x04,0x03,0x00,0X0B,0xEF};//点
uchar ONE4[6]={0x7E,0x04,0x03,0x00,0X00,0xEF};//百位
uchar ONE5[6]={0x7E,0x04,0x03,0x00,0X00,0xEF};//十位
uchar ONE6[6]={0x7E,0x04,0x03,0x00,0X00,0xEF};//个位

void delayms(uint ms)
{
	uchar i=100,j;
	for(;ms;ms--)
	{
		while(--i)
		{
			j=10;
			while(--j);
		}
	}
}

/******** UART初始化 波特率:9600 ******/
void UART_init(void)
{
    SCON = 0x50;        // 10位uart,允许串行接受
    TMOD = 0x20;       // 定时器1工作在方式2(自动重装)
    TH1 = 0xFD;
    TL1 = 0xFD;         //设置波特率为9600
    TR1 = 1;
}

/*
 * UART 发送一字节
 入口参数uint8的数据类型 即要发送的数据
*/
void UART_send_byte(uchar dat)
{
	SBUF = dat;
	while (TI == 0);
	TI = 0;
}

/*
 * UART 发送字符串 
  第一个参数要发送字符串或数据的首地址
  第二个参数是要发送的数据或字符串的长度
*/
void UART_send_string(uchar *buf,uchar len)
{  
    uchar i;
	for(i=0;i<len;i++)
	UART_send_byte(*buf++);
}



//主函数
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();
		}
	}
}


//T0中断用来计数器溢出,超过测距范围
void CJ_T0() interrupt 1
{
    flags=1;							 //中断溢出标志
}        

百度云分享下载链接:

  • 设计资料获取联系方式.doc

推荐器件

更多器件
器件型号 数量 器件厂商 器件描述 数据手册 ECAD模型 风险等级 参考价格 更多信息
FS32K146HAT0MLLT 1 NXP Semiconductors RISC Microcontroller

ECAD模型

下载ECAD模型
$11.53 查看
AT89C51CC01UA-RLTUM 1 Atmel Corporation Microcontroller, 8-Bit, FLASH, 8051 CPU, 40MHz, CMOS, PQFP44, GREEN, VQFP-44

ECAD模型

下载ECAD模型
$7.76 查看
MK70FN1M0VMJ12 1 NXP Semiconductors FLASH, 120MHz, RISC MICROCONTROLLER, PBGA256

ECAD模型

下载ECAD模型
$15.43 查看

相关推荐

电子产业图谱