历史上的今天
返回首页

历史上的今天

今天是:2025年08月20日(星期三)

正在发生

2020年08月20日 | 51单片机NY3P035语音播报源程序

2020-08-20 来源:51hei

51单片机语音播报模块:
以8位STC89C52单片机为控制核心,利用DHT11、GY-30、MQ-2传感器实时采集温湿度、光照强度、气体浓度等环境参数,用户可以通过LCD1602液晶查看当前环境参数数据。NY3P035芯片控制语音播报,加入蓝牙通信接口电路,手机连接蓝牙模块,下位机和上位机进行通信,手机蓝牙串口界面可以接收当前的环境数据,手机发命令给单片机,可控制语音的播报。
实物图:
 

单片机源程序如下:

#include

#include

#include

#define uchar unsigned char

#define uint unsigned int


uchar write_add[7]={0x8c,0x8a,0x88,0x86,0x84,0x82,0x80};       //数据的地址

uchar read_add[7]={0x8d,0x8b,0x89,0x87,0x85,0x83,0x81};

uchar code table3[]="                ";                         //清屏内容



sbit rs=P1^0;                  //LCD1602

sbit rw=P1^1;                   //LCD1602

sbit e=P2^5;                  //LCD1602


sbit SCL=P1^5;        //IIC时钟引脚定义                  //BH1750fvi光照强度传感器

sbit SDA=P1^6;        //IIC数据引脚定义




sbit cs=P3^6;                                  //TLC2543

sbit clk=P2^7;

sbit sdi=P2^6;

sbit sdo=P2^4;

sbit flag=P3^4;

sbit bit7=B^7;



sbit Data =P1^3;          //DHT11


int temperature;                                                //全局变量 温度

int Count;                                                                   //T0中断次数


sbit KEY1=P3^5;                  //播放语音

//sbit KEY2=P3^6;                  //暂停


sbit BUSY=P2^0;                  //语音芯片

sbit DATA=P2^1;                  //语音芯片

sbit RST=P2^2;                  //语音芯片         



void delay_ms( uint ms);

void delay1();

void ADC_read( uint ch);

void volt_result();

void disp_volt(uint value);


uchar y;

uchar first,second,third,forth;

bit date;

uint adval=0;

uint volt=0;

uchar temppp=0;

uchar flag_table[3]={0};

uchar flagx;

bit SetFlag=0;     //更新时间标志位


uchar shi,ge;

uchar  temp,tempp;                  //八个bit数据位的变量

uchar  comdata;                      //总线接收到的数据

uchar  T_data_H_temp,T_data_L_temp,RH_data_H_temp,RH_data_L_temp,checkdata_temp,temp_data;

uchar  T_data_H,T_data_L,RH_data_H,RH_data_L,checkdata;

void music(uchar k);




uchar uart_wendu_shi,uart_wendu_ge,uart_shidu_shi,uart_shidu_ge;

uchar uart_sun_shi,uart_sun_ge;


#define          SlaveAddress   0x46 //定义器件在IIC总线中的从地址,根据ALT  ADDRESS地址引脚不同修改

                              //ALT  ADDRESS引脚接地时地址为0x46,接电源时地址为0xB8

typedef   unsigned char BYTE;

typedef   unsigned short WORD;


BYTE    BUF[8];                         //接收数据缓存区             

uchar   gee,shii,bai,qian,wan;            //显示变量

int     dis_data;   


void delay_nms(unsigned int k);


void Init_BH1750(void);


void WriteDataLCM(uchar dataW);

void WriteCommandLCM(uchar CMD,uchar Attribc);

void DisplayOneChar(uchar X,uchar Y,uchar DData);

void conversion(uint temp_data);


void  Single_Write_BH1750(uchar REG_Address);      //单个写入数据

uchar Single_Read_BH1750(uchar REG_Address);       //单个读取内部寄存器数据

void  Multiple_Read_BH1750();                      //连续的读取内部寄存器数据

//------------------------------------

void Delay5us();

void Delay5ms();

void BH1750_Start();                    //起始信号

void BH1750_Stop();                     //停止信号

void BH1750_SendACK(bit ack);           //应答ACK

bit  BH1750_RecvACK();                  //读ack

void BH1750_SendByte(BYTE dat);         //IIC单个字节写

BYTE BH1750_RecvByte();                 //IIC单个字节读


/*********************************************************************************************************************/

void delay1(uint z)                                                                   //延时1ms函数

{

        uint x,y;

        for(x=z;x>0;x--)

                for(y=80;y>0;y--);

}


/***********************************

延时 BH1750

************************************/


/**************************************

延时5微秒(STC90C52RC@12M)

不同的工作环境,需要调整此函数,注意时钟过快时需要修改

当改用1T的MCU时,请调整此延时函数

**************************************/

void Delay5us()

{

    _nop_();_nop_();_nop_();_nop_();

    _nop_();_nop_();_nop_();_nop_();

        _nop_();_nop_();_nop_();_nop_();

        _nop_();_nop_();_nop_();_nop_();

}


/**************************************

延时5毫秒(STC90C52RC@12M)

不同的工作环境,需要调整此函数

当改用1T的MCU时,请调整此延时函数

**************************************/

void Delay5ms()

{

    WORD n = 560;


    while (n--);

}


//毫秒延时**************************

void delay_nms(unsigned int k)       

{                                               

unsigned int i,j;                               

for(i=0;i{                       

for(j=0;j<121;j++)                       

{;}}                                               

}


/*******************************/


void write_com(uchar com)                         //写指令函数

{

        rw=0;

        delay1(5);

        rs=0;

        delay1(5);

        e=1;

        delay1(5);

        P0=com;

        delay1(5);

        e=0;

        delay1(5);       

}


void write_date(uchar date)                        //写数据函数

{                                                                       

        rw=0;

        delay1(5);

        rs=1;

        delay1(5);

        e=1;

        delay1(5);

        P0=date;

        delay1(5);

        e=0;

        delay1(5);       

}


void LCDinit()                                                    //初始化函数

{       

        uchar num;

        e=0;                                                    // 时序表e初始为0

        write_com(0x38);                        //设置16*2显示,5*7点阵,8位数据接口

        write_com(0x0c);                                //设置光标

        write_com(0x06);                                //光标自动加1,光标输入方式

        write_com(0x01);                                //清屏

        write_com(0x80);                                //设置初始显示位置

        for(num=0;num<16;num++)

        {

//                write_date(table1[num]);

                delay1(5);

        }

        write_com(0x80+0x40);

        for(num=0;num<16;num++)

        {

//                write_date(table2[num]);

                delay1(5);

        }                                          

推荐阅读

史海拾趣

Crouzet公司的发展小趣事

Crouzet公司,这家以生产自控产品为主的跨国公司,于1921年正式成立。创立之初,Crouzet主要专注于自控产品的研发和生产,凭借其卓越的技术和创新能力,很快在市场中占据了一席之地。公司逐渐扩大生产规模,提升产品质量,赢得了客户的信赖。

CET Technology公司的发展小趣事

CET Technology作为电力行业的领军企业,受邀参加了2023年深圳企业创新发展大会。大会上,CET展示了其在电力系统、工业与能源等领域的最新技术成果,包括电力二次智能终端、电能管理专用工业软件等。这些产品与服务均体现了CET在电力技术领域的深厚实力和创新精神。通过参加此次大会,CET不仅与业界同行进行了深入交流,也进一步提升了公司的品牌影响力和市场竞争力。

B.B. Battery公司的发展小趣事

B.B. Battery公司成立之初,面临着资金短缺、市场竞争激烈等诸多挑战。然而,公司的创始人凭借对电池行业的深刻理解和敏锐的市场洞察力,带领团队不断探索和积累。他们深入调研市场需求,研发出适应市场需求的电池产品,并通过优化生产流程、降低成本等方式,逐步在市场上获得了一席之地。

CoolerMaster公司的发展小趣事

1992年,台北的一间出租屋内,林仁政凭借对电脑硬件的深厚理解与直觉,创立了讯凯国际股份有限公司,即现今广为人知的Cooler Master。初期,公司以生产个人电脑用散热器起家,目标明确——提供业界最好的散热方案。在没有资金、没有支持的情况下,林仁政独自完成了品牌的创建、日常事务的处理以及工作进程的管理。他的坚持与努力,使得Cooler Master逐渐在市场中站稳脚跟,开启了其在散热领域的传奇之旅。

Aydin Corp公司的发展小趣事

品质是Aydin Corp的生命线。公司始终坚持品质至上的原则,从原材料采购到生产流程控制,再到产品出厂检验,每一个环节都严格把控品质。同时,公司还注重品牌建设,通过提升产品形象和服务质量,逐渐树立了良好的品牌形象。这些努力使得Aydin Corp的产品在市场上获得了广泛的认可和好评。

CONEXANT公司的发展小趣事

2017年,电子行业迎来了一场引人瞩目的收购案。新思科技(Synaptics),一家在人机界面交互开发解决方案领域具有领导地位的公司,宣布以3.95亿美元现金和726,666只普通股收购科胜讯系统公司(Conexant Systems)。这一收购行动不仅增强了Synaptics在智能家居领域的语音和音频处理解决方案的能力,也标志着Conexant正式成为Synaptics大家庭的一员。通过此次收购,两家公司实现了技术资源和市场优势的互补,共同开启了新的发展篇章。

问答坊 | AI 解惑

PCB经验浅谈

一些PCB设计的浅显经验,大家共享一下哈!!…

查看全部问答>

开关电源设计第二版张志强般

开关电源设计第二版张志强版,自己收藏的呵呵…

查看全部问答>

关于检测CPLD外部信号上升沿的问题

请哪位大虾指教一下关于如何用CPLD检测外部信号的上升沿(程序最好是用VHDL) 谢谢了!…

查看全部问答>

问个evc连接库的问题

有个lib库和一个头文件,在vc下编译连接过没问题的 在evc下,用emulator模式编译和连接也很正常 但是改用arm4模式来编译就连接出错,好像识别不了lib库的样子。以下是出错信息: ChildWindow.obj : error LNK2019: unresolved external symbol ...…

查看全部问答>

今天再次蛋疼了。。。纠结啊

以前都是用PICKIT3,在线编程。因为最近要烧裸片,就拿了个老古董出来,润飞的编程器。结果烧程序的时候总是提示:插座中芯片偏离正常位置,请往下移。(事实是我插得非常之正,精确无比) 有大虾遇到过类似情况吗?…

查看全部问答>

大家帮我看下为什么CAN2口不能够接收中断

我用STM32F105做can通讯,两个CAN口都要用到。CAN1用FIFO0,CAN2用FIFO1。节收到数据后进入中断处理,但我只能进入CAN1接收中断,CAN2却不能进入接收中断。大家帮我看下是哪里初始化错了。 NVIC初始化程序 void NVIC_Configuration(void) { ...…

查看全部问答>

isd4002找不到思绪

小弟最近搭了个isd4002的电路。将近50天,不能调试成功,不知哪位大侠赐教,呵呵~~。关于程序,查询开关状态,执行录音或放音,只有一个spi接口,应该不是很难啊。就一百多行,都认真分析过,datasheet也仔细读过。工作电压也改过多次(我曾遇到dat ...…

查看全部问答>

485通信的问题,百思不得其解

有没有朋友485通讯比较了解的,求教个问题。 485调试后在收发数据都能实现,但是终端给PC发数据的时候,PC收到的数据会多出64个0xFF,例如:终端发 01 02 03 04,PC能收到:ff ff ff ...(64个) 01 02 03 04,是什么问题呢?…

查看全部问答>

提高临时工工作积极性的5个办法

    临时工无处不在。零售、餐饮等行业更是临时工的用人大户,尤其是在节假日期间。如何激励临时工的积极性?资深专家根据《财富》“最适宜工作的100家公司”的经验总结了5个行之有效的做法。     亲爱的安妮:今年七月中旬 ...…

查看全部问答>