加入星計劃,您可以享受以下權(quán)益:

  • 創(chuàng)作內(nèi)容快速變現(xiàn)
  • 行業(yè)影響力擴散
  • 作品版權(quán)保護
  • 300W+ 專業(yè)用戶
  • 1.5W+ 優(yōu)質(zhì)創(chuàng)作者
  • 5000+ 長期合作伙伴
立即加入

51單片機超聲波測距帶語音播報(源程序+原理圖+原理圖講解)

07/08 09:34
1803
服務(wù)支持:
技術(shù)交流群

完成交易后在“購買成功”頁面掃碼入群,即可與技術(shù)大咖們分享疑惑和經(jīng)驗、收獲成長和認同、領(lǐng)取優(yōu)惠和紅包等。

虛擬商品不可退

當(dāng)前內(nèi)容為數(shù)字版權(quán)作品,購買后不支持退換且無法轉(zhuǎn)移使用。

加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點資訊討論
放大
實物圖
相關(guān)方案
  • 方案介紹
  • 相關(guān)文件
  • 推薦器件
  • 相關(guān)推薦
  • 電子產(chǎn)業(yè)圖譜
申請入駐 產(chǎn)業(yè)圖譜

本設(shè)計
51單片機超聲波測距帶語音播報(源程序+原理圖+原理圖講解)
原理圖:Altium Designer
程序編譯器:keil 4
編程語言:C語言
編號S0004

功能說明:
1.本設(shè)計采用STC89C51/52(與AT89S51/52、AT89C51/52通用,可任選)單片機作為主控制器;
2.LCD1602液晶顯示測量的距離和溫度;
3.帶有溫度補償功能(DS18B20傳感器);
4.測量范圍0.02m~4m,精度為0.01m;
5.帶實時語音播報功能;
6.按鍵功能:按鍵2:加報警值按鍵3:減報警值按鍵1:設(shè)置按鍵(只有在按下設(shè)置的時候才可以加減報警值),在未按下按鍵1時,按下按鍵3播報測量距離。

使用方法:
開機即可測試,前面的障礙物盡量不要太亂,盡量平整(如墻壁)。只有在設(shè)置的時候才可以加減報警值始計時
在這里插入圖片描述

原理圖:
在這里插入圖片描述

程序:

復(fù)制到瀏覽器https://docs.qq.com/sheet/DS0xIa0llTmtNakRW
//宏定義
#define uchar unsigned char 
#define uint unsigned int
#define ULint unsigned long int 
//溫度零上與零下的標(biāo)志位
char flag=0;
//超聲波
char flags=0;
//超聲波距離
char flag1s=0;
//計算定時間
uint time=0;
//計算距離
ULint L_=0;
//溫度
uint t_=0;
//顯示模式  0正常  1最大值調(diào)整  2最小值調(diào)整
uchar mode=0;

uint Max=490;
uint Min=10;
//按鍵標(biāo)志
uchar k=0;
//數(shù)值有誤
uchar FW=0;
//頭函數(shù)
#include <reg52.h>
#include <intrins.h>
#include "BJ_Key.h"	   	 //報警按鍵
#include "display.h"			 //顯示頭函數(shù)
#include "ultrasonic_wave.h"http://超聲波頭函數(shù)
#include "DS18B20.h"	   	 //溫度傳感器頭函數(shù)

uchar ONE1[6]={0x7E,0x04,0x03,0x00,0X0D,0xEF};//現(xiàn)在距離為
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;         //設(shè)置波特率為9600
    TR1 = 1;
}

/*
 * UART 發(fā)送一字節(jié)
 入口參數(shù)uint8的數(shù)據(jù)類型 即要發(fā)送的數(shù)據(jù)
*/
void UART_send_byte(uchar dat)
{
	SBUF = dat;
	while (TI == 0);
	TI = 0;
}

/*
 * UART 發(fā)送字符串 
  第一個參數(shù)要發(fā)送字符串或數(shù)據(jù)的首地址
  第二個參數(shù)是要發(fā)送的數(shù)據(jù)或字符串的長度
*/
void UART_send_string(uchar *buf,uchar len)
{  
    uchar i;
	for(i=0;i<len;i++)
	UART_send_byte(*buf++);
}



//主函數(shù)
void main()
{
	UART_init();
	Init_ultrasonic_wave();
	//屏幕初始化
	Init1602();
	//溫度初始化
	tmpchange(); 
	t_=tmp();
	tmpchange();
	t_=tmp();
	tmpchange();
	t_=tmp();

	//循環(huán)顯示
	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);	  //當(dāng)RX為零時等待
			TR0=1;		  //開啟計數(shù)
			while(RX);	  //當(dāng)RX為1計數(shù)并等待
			TR0=0;		  //關(guān)閉計數(shù)
	
			delayms(20);  //20MS
			tmpchange();  //溫度轉(zhuǎn)換
			t_=tmp();     //度溫度
			Conut(t_/10); //計算距離
			if(L_>Max||L_<Min)
			{
				Feng_Start();
			}
			else
			{
				if(FW!=1)
				Feng_Stop();
			}
			Display_1602(t_/10,L_);
		}
		//調(diào)整顯示
		else if(mode!=0)
		{
			//最大最小值
			Init_MaxMin();
			while(mode!=0)
			{
				
				Key();
				if(k==1&&mode==1)
				{
					Init_MaxMin();	
   				write_com(0x8d);//設(shè)置位置					
				}
				else if(k==1&&mode==2)
				{
					Init_MaxMin();	
   				write_com(0x8d+0x40);//設(shè)置位置	
				}
				k=0;
			}
			//界面初始化
			Init1602();
		}
	}
}


//T0中斷用來計數(shù)器溢出,超過測距范圍
void CJ_T0() interrupt 1
{
    flags=1;							 //中斷溢出標(biāo)志
}        

百度云分享下載鏈接:

  • 設(shè)計資料獲取聯(lián)系方式.doc

推薦器件

更多器件
器件型號 數(shù)量 器件廠商 器件描述 數(shù)據(jù)手冊 ECAD模型 風(fēng)險等級 參考價格 更多信息
FT232RQ-TRAY 1 FTDI Chip USB Bus Controller, CMOS, 5 X 5 MM, GREEN, QFN-32

ECAD模型

下載ECAD模型
$4.5 查看
ATXMEGA32E5-MU 1 Atmel Corporation RISC Microcontroller, 16-Bit, FLASH, AVR RISC CPU, 32MHz, CMOS, 5 X 5 MM, 0.50 MM PITCH, GREEN, PLASTIC, MO-220VHHD-2, VQFN-44

ECAD模型

下載ECAD模型
$3 查看
STM32F401VET6 1 STMicroelectronics High-performance access line, Arm Cortex-M4 core with DSP and FPU, 512 Kbytes of Flash memory, 84 MHz CPU, ART Accelerator

ECAD模型

下載ECAD模型
$10.53 查看

相關(guān)推薦

電子產(chǎn)業(yè)圖譜