历史上的今天
返回首页

历史上的今天

今天是:2024年12月18日(星期三)

正在发生

2020年12月18日 | 基于51单片机超声波测距带语音播报JQ6500

2020-12-18 来源:51hei

功能说明:

1.本设计采用STC89C52单片机作为主控制器;

2.LCD1602液晶显示测量的距离和温度;

3.带有温度补偿功能(DS18B20传感器);

4.测量范围0.02m~4m,精度为0.01m;

5.带实时语音播报功能;

6.按键功能:按键2:加报警值按键3:减报警值按键1:设置按键(只有在按下设置的时候才可以加减报警值),在未按下按键1时,按下按键3播报测量距离。

实物制作图:

a7ae39578d2e506adcb00194439b33a.jpg?imageView2/2/w/550

原理图:

663[~KYON8K0Q3F%~0PRAK1.png?imageView2/2/w/550


4556666.png?imageView2/2/w/550

单片机源程序如下:

//宏定义

#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

#include

#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        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_                        {

                                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;

                        }

推荐阅读

史海拾趣

HEIMANN公司的发展小趣事

在电子行业中,HEC Inc(以下简称HEC)作为一家知名的科技公司,其发展历程充满了挑战与机遇。以下是五个关于HEC发展起来的相关故事,每个故事均基于事实描述:

1. 技术创新引领市场突破

HEC自成立之初便致力于技术创新,在通信设备领域取得了显著成就。公司研发的高效路由器和交换机产品,凭借其卓越的性能和稳定性,迅速在市场中占据一席之地。特别是在5G技术兴起的背景下,HEC提前布局,成功推出了多款支持5G网络的通信设备,满足了市场对高速、低延迟网络连接的迫切需求。这些技术创新不仅巩固了HEC在通信行业的领先地位,也为其后续的市场拓展奠定了坚实基础。

2. 环保理念推动可持续发展

随着全球对环保问题的日益重视,HEC积极响应号召,将绿色技术融入产品研发和生产过程中。公司推出的多款电子产品,如智能手机和平板电脑,均采用了环保材料和节能设计,有效降低了产品生命周期中的碳排放。此外,HEC还建立了完善的电子废弃物回收体系,实现了资源的循环利用。这些环保举措不仅提升了公司的品牌形象,也为其赢得了更多消费者的青睐和市场的认可。

3. 跨界合作拓展业务领域

为了进一步扩大市场份额,HEC积极寻求跨界合作机会。公司与多家知名汽车制造商合作,将先进的通信技术应用于车载智能系统中,提升了驾驶体验和行车安全。同时,HEC还与智能家居厂商合作,推出了多款智能家电产品,实现了家居设备的互联互通和远程控制。这些跨界合作不仅丰富了HEC的产品线,也为其带来了新的增长点。

4. 全球化战略布局

为了应对日益激烈的国际竞争,HEC制定了全球化发展战略。公司在全球范围内设立了多个研发中心和销售网络,以更好地了解当地市场需求并快速响应。通过整合全球资源,HEC成功推出了多款符合不同国家和地区消费者需求的产品。此外,公司还积极参与国际展会和交流活动,提升了品牌知名度和国际影响力。

5. 应对挑战实现转型升级

面对行业内的激烈竞争和技术变革,HEC始终保持着敏锐的洞察力和强大的适应能力。公司不断调整产品结构,加大研发投入,推动产品向高端化、智能化方向发展。同时,HEC还积极拥抱数字化转型,通过大数据、云计算等先进技术优化生产流程和管理模式,提高了生产效率和产品质量。这些努力使HEC在挑战中实现了转型升级,保持了持续稳健的发展态势。

ATO SOLUTION公司的发展小趣事

面对日益激烈的市场竞争,ATO SOLUTION公司不断创新营销策略,提升品牌知名度和影响力。公司利用互联网和社交媒体等新媒体平台,开展线上宣传和推广活动;同时,还积极参加各类行业展会和论坛,与业界同行和潜在客户进行深入交流和合作。这些创新的营销策略有效地提升了公司的市场影响力,为公司的业务拓展提供了有力支持。

ADI(亚德诺半导体)公司的发展小趣事

面对日益激烈的市场竞争,ATO SOLUTION公司不断创新营销策略,提升品牌知名度和影响力。公司利用互联网和社交媒体等新媒体平台,开展线上宣传和推广活动;同时,还积极参加各类行业展会和论坛,与业界同行和潜在客户进行深入交流和合作。这些创新的营销策略有效地提升了公司的市场影响力,为公司的业务拓展提供了有力支持。

乾坤(Cyntec)公司的发展小趣事

随着国内市场的逐渐饱和,乾坤公司开始将目光投向国际市场。为了打开海外市场,公司积极参加国际电子展会,与海外客户进行面对面的交流与合作。同时,乾坤也加强了与国际知名企业的战略合作,通过技术授权、联合开发等方式,不断拓展其产品的国际影响力。经过几年的努力,乾坤的电子元器件已经成功打入欧美、东南亚等多个国家和地区,公司的国际化进程取得了显著的成果。

DLG Hanbit公司的发展小趣事

为了保证产品的品质,DLG Hanbit公司建立了严格的质量管理体系,并引进了国际先进的质量检测设备。公司还积极参与国际标准制定,与全球知名电子企业建立了合作关系。通过不断提升产品品质和服务水平,DLG Hanbit公司的产品在国际市场上获得了认可,公司也逐渐实现了国际化战略。

Gulf Semiconductor公司的发展小趣事

随着技术的不断进步和市场需求的增长,DLG Hanbit公司意识到技术创新是保持竞争力的关键。公司加大了对研发的投入,引进了一批高端人才,并建立了完善的研发体系。经过几年的努力,公司成功开发出了一系列具有自主知识产权的半导体产品,如高性能的处理器、存储器等。这些产品凭借卓越的性能和稳定的品质,在市场上赢得了良好的口碑,公司也逐渐拓展了市场份额。

问答坊 | AI 解惑

谁有 ACD资料

谁有ACD 资料啊…

查看全部问答>

IGBT短路失效机理

IGBT负载短路下的几种后果 (1) 超过热极限:半导体的本征温度极限为250℃,当结温超过本征温度,器件将丧失阻断能力,IGBT负载短路时,由于短路电流时结温升高,一旦超过其热极限时,门级保护也相应失效. (2) 电流擎住效应:正常工作电流下,IGBT由于薄 ...…

查看全部问答>

无线信号 高手进

我在这招了半天也莫有找到我要的答案,发个帖看看有没有高手给我支支招。 关于无线信号如何检测的问题,方法越具体越多越好。。。用示波器的话说明具体的用法。我琢磨很久了,奈何能力有限。。。…

查看全部问答>

proteus 的键盘在哪

单个的键(不是开关) 和 矩阵键盘…

查看全部问答>

条码手持终端应用程序开发!!!

条码手持终端应用程序开发!!! 本人在条码行业有多年的工作经验,一直从事条码手持终端应用程序的开发 开发过多种设备: CASIO DT900,DT300,DTX10; Cipher 711 ; SYMBOL MC50,MC1000,PPT8800; Intermec 700系列 有需要的请联系本人 QQ:6 ...…

查看全部问答>

急!!!如何在PC机上实现对单片机的控制(用VC++6.0编程)

小弟正在想弄一个在PC机上实现对单片机的控制,但不知道从哪个方面入手? 希望各位达人给予小弟一些指点.发个程序给小弟参考参考(用C语言编写的)…

查看全部问答>

正式入手STM8S103K3

经历了很多推销的宣传,今天买了10片样品,准备把以前ATMEL8的东西都移植过来. 有几个问题,一直没搞明白: 1. STM8S103K3会不会象ATMEL那样,1000元就能把代码都读出来?STM8S103K3的     解密难度有多大? 2. 以前一直用ICC和KEIL开 ...…

查看全部问答>

2812程序烧到片内flash中运行,能否用CCS和仿真器观察内部变量

2812程序烧到片内flash中运行,能否用CCS和仿真器观察内部变量, 调试电机程序,使用仿真器容易跑飞,希望能烧到flash中运行,同时也希望能像在ccs里仿真一样观察几个关键变量,听有的工程师说是能实现的,希望有能得到指点?…

查看全部问答>

用io口控制k9k8G08U0A写不进去数(急)

这是个试验程序,就是把整页写入同一个数据,,另外ID什么都可以读出来,,个人感觉数据是可以读出来的,,但读出来的全是FF,2112个FF后是64个0x15,我把读命令改错的话,读出来的是那个输入的数据,说明内部没把数据读出来,这是不是说明FF读出来 ...…

查看全部问答>

有源电力滤波器的控制技术的实现

在整个APF中基准电流的产生方法是核心环节,只有产生正确的基准电流信号才能很好的补偿谐波和无功电流。当只是补偿谐波电流时只需获取负载电流中的谐波分量即可,当补偿谐波及无功时除了要获取谐波电流信号外还需获取基波电流中的无功分量。基准电 ...…

查看全部问答>