多功能语音报时数字钟的设计.doc_第1页
多功能语音报时数字钟的设计.doc_第2页
多功能语音报时数字钟的设计.doc_第3页
多功能语音报时数字钟的设计.doc_第4页
多功能语音报时数字钟的设计.doc_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

多功能语音报时数字钟的设计摘要:自进入21世纪以来,电子产业飞速发展,各种新兴的电子产品布满了电子专柜,电子产品几乎走进了家家户户,走进了社会的各个行业,有力的推动了社会生产力的发展和电子信息化、电子智能化的提高。数字钟也在发生着各种各样的变化,由体积较大、功能少、运行不精确的机械钟变为在液晶显示屏上显示数字的数字钟,再到多种功能于一钟的语音报时数字钟等等。本设计是实现一款可正常显示当前时间,测量当前温度,带有语音报时的多功能数字钟。本设计是采用AT89C51单片机控制的多功能语音报时数字钟,可以显示年、月、日、时、分、秒、星期、温度。具有年、月、日、时、分校准功能,自动提取温度并显示功能,语音报时功能,调整时间按下相应键会发出嘟嘟提示声功能。采用DS1302时钟芯片进行时钟控制,DS18B20传感器实现温度采集功能,LCD12864作为液晶显示模块,ISD1420语音芯片实现语音播报时间功能。关键词:数字钟 单片机 温度 液晶显示 语音报时一、绪论时间对于我们每个人都很重要,包括老人和小孩,通过眼睛看时间,当然可以看到当前时间,但是对于视力不好老人和不认识钟表的小孩来说,语音报时数字钟就给他们带来了很大的帮助,只需要按下相应键就可以自动播报获得时间。电子钟是采用电子电路及相应程序完成的时间计时,它被广泛应用于车站,码头,机场等地方,成为我们日常生活不可缺少的东西,没有时间,我们就不知道下一分钟我们该做什么,我们什么时候该吃饭,什么时候该睡觉,什么时候该上班。可以说,没有时间的提醒我们几乎无法生活甚至生存。钟表的多功能化、智能化给我们生活带来了很大的改善。比如定时报警、备忘提醒、电气设备的自动断电、自动开启关闭等功能。(一)课题研究背景自古以来人类的生活就离不开时间,也就离不开时钟。从开始的沙漏计时到普通的机械时钟再到现如今的数字时钟。为了能准确的计时,人类一直在探索新颖的计时工具。用单片机控制的数字钟在数字钟中占有很大的地位,它用途广泛,体型小巧,功能强大,走时精确,价格低廉,操作简单,因此深受消费者的喜爱。随着科技的日新月异,人类对数字钟的要求也越来越高,在很多应用中它还要满足人类不同的需求,实现不同的功能。数字时钟已经不单单是一种显示时间的工具,多功能化的发展趋势已经成为主导。电子技术的应用在我们生活中无处不在,它正在改变着我们的生活质量、品味。数字钟给人类带来了方便,目前普通的数字钟已经不能满足所有的人群,许多人对数字钟提出了更新颖、更高档次的需求。多功能数字钟已经在质量和性能上都有了很大的提高。电子闹钟、语音报时、备忘提醒、秒表显示等已经集很多功能于一钟。(二)课题研究意义基于51单片机的数字钟具有走时精确、价格低廉、性能稳定等特点。51系列单片机是最早的单片机,目前的各个系列、各个厂家的单片机内部多数也是在51单片机发展的。通过对数字钟的研究,在数字钟的基础上扩展功能年、月、日、时、分、秒、星期、温度、语音报时、闹钟等。传统的电路设计都是用分立元器件来设计,这样电路既复杂又容易出错,使设计者的工作量加大,而且最终结果调试也不容易实现功能。本设计采用分立模块设计,然后对各个模块进行功能实现,采用市面上现有常用的芯片及其它器件。操作简单,功能稳定,调试方便。因此多功能语音报时数字钟的研究对我们的日常生活有着息息相关的联系,推广数字钟的智能化、多功能化有很大的应用价值。(三)本设计的主要内容本设计是采用AT89C51单片机控制的DS1302时钟芯片,利用DS18B20进行温度采集,利用ISD1420语音芯片进行语音报时的录放功能。本多功能语音报时数字钟的功能:124小时计时;2具有年、月、日、星期显示;3具有时、分、秒显示;4具有温度采集、显示;5语音报时功能。二、设计方案的选择(一)主控芯片的选择目前在单片机系统中,应用比较广泛的微处理器芯片主要为8XC5X系列单片机。该系列单片机均采用标准MCS-51内核,硬件资源相互兼容,品类齐全,功能完善,性能稳定,体积小,价格低廉,货源充足,调试和编程方便,所以应用极为广泛。例如比较常用的AT89C2051单片机,带有2KB Flash可编程、可擦除只读存储器(E2PROM)的低压、高性能8位CMOS微型计算机。拥有15条可编程I/O引脚,2个16位定时器/计数器,6个中断源,可编程串行UART通道,并能直接驱动LED输出。仅仅是为了完成时钟设计或者是环境温度采集设计,应用AT89C2051单片机完全可以实现。但是将两种功能结合在一片单片机上,就需要更多的I/O引脚,故本设计采用具有32根I/O引脚的AT89C51单片机。AT89C51单片机是一款低功耗,低电压,高性能CMOS单片机,片内含4KB(可经受1000次擦写周期)的FLASH可编程可反复擦写的只读程序存储器,其输出引脚和指令系统都与MCS-51兼容。因此,AT89C51具有很强的功能,灵活性高且低廉价格的单片机,可在各个控制领域方便地应用。AT89C51具有以下主要性能:1可改编程序存储器有4KB;2全静态工作:024Hz;3内部随机存储器:1288字节;432个外部双向输入/输出(I/O)口;56个中断优先级; 2个16位可编程定时计数器; 6可编程串行通道;图1 AR89C51单片机的引脚图AT89C51为适应不同的产品需求,采用PDIP、TQFP、PLCC三种封装形式,本系统采用双列直插封装形式。(二)时钟芯片的选择选择一:直接利用单片机内部定时器计数器实现对年月日时分秒的计数,虽然本方案可以实现计时计数功能,但是设计出来的数字钟走时精度较差,且程序繁琐。所以不采取本方案。选择二:采用DS1320芯片作为时钟芯片实现时钟走时。DS1302是美国DALLAS公司的一种高性能、低功耗的时钟芯片,实时时钟可提供年、月、日、时、分、秒、星期,每个月小于31天时可以自动调整,而且具有闰年补偿功能。DS1302需要使用32.768KHz的晶振。故本设计采用DS1320芯片实现时钟计时。(三)温度传感器的选择选择一:使用模拟温度传感器,如热敏电阻,随环境温度的变化,它的阻值会发生相应变化,用单片机采集电阻两端的电压,然后根据公式计算当前的温度。本方案很明显的就是不能直观地看到当前温度,而且计算过程复杂、易出错。选择二:采用DS18B20温度传感器,它具有微型化、低功耗、高性能、抗干扰等特点,可以直接将温度转化成串行数字信号供处理器处理。故本设计采用DS13B20温度传感器实现测温模块。(四)显示模块的选择选择一:采用数码管显示,数码管显示单一的数字、功能少,不能显示汉字,且显示数字时还要用到38译码器,完成时间显示需要多个数码管及译码器,工作繁琐。选择二:采用LCD液晶显示,可以显示多行文字,由于本数字钟显示文字数字较多,故采用LCD12864实现显示模块。(五)语音芯片的选择选择一:采用现成的语音芯片,进行播报设置,闹铃设置,价格便宜,但个性化差。选择二:利用录放芯片,自己进行录制,价格较高,能够进行个性化设置。由于大多说人喜欢个性化,且价格差别并不是太多,因此选择语音录放芯片ISD1420。三、系统的硬件电路设计(一)总体设计多功能语音报时数字钟主要显示年、月、日、时、分、秒、温度等模块。硬件电路的设计主要包括单片机最小应用系统及显示电路、按键电路、DS1302时钟电路,ISD1420语音电路。采用AT89C51或其兼容系列。采用12MHz高精度的晶振以获得较稳定时钟频率减小测量误差。时钟电路是以DS1302作为主控芯片、报时电路用ISD1420作为主控芯片、显示部分用LCD12864进行显示。 总体设计流程图如下:89C51主控模块按键模块时钟模块温度模块显示模块语音报时模块图2 总体设计图(二)各模块电路设计1时钟电路单片机内部的各种操作所需时间的基准时钟信号即为时钟信号。用内外部振荡形式实现。XTAL1和XTAL2两个端口是51单片机的反向放大器的输入和输出端,两个引脚构成振荡器。通过这种方式得到的时钟信号比较稳定,在实际应用中经常会用此方式。图3 时钟电路图2.复位电路 为了能够使单片机内部数据初始化常采用复位电路。复位后可使CPU及系统各部件处于确定的初始状态并从初始状态开始正常工作。单片机的复位通过外围电路实现功能。复位后系统将输入/输出(I/0)端口寄存器置为FFH,堆栈指针SP置为07H, SBUF内置为不定值,其余的寄存器全部清0,内部RAM的状态不受复位的影响,在系统上电时RAM的内容是不定的。复位分为上电复位和手动复位两种情况。本系统采用手动复位方式。图4 复位电路图3.DS1302时钟模块设计 DS1302在每次进行读、写程序前都必须初始化,先把SCLK端置 “0”、接着把RST端置“1”、最后才给予SCLK脉冲读/写时序。对于DS1302的控制字,此控制字的位7必须置1,若为0则不能把对DS1302进行读写数据。对于位6若对程序进行读/写时RAM=1,对时间进行读/写时CK=0。位1至位5指操作单元的地址。位0是读/写操作位,进行读操作时该位为1,该位为0则表示进行的是写操作。控制字节总是从最低位开始输入/输出的。对于DS1302的日历、时间寄存器内容“CH”是暂停时钟标志位,当该位为1时时钟振荡器停止,DS1302处于功耗低的状态,当该位为0时,时钟开始按命令运行。“WP”是写保护位在任何操作时钟和RAM命令之前,WP一定要为“0”。当“WP”为“1”时,写保护位阻止对任意寄存器的写操作。 DS1302的引脚排列其中后备电源是1脚、主电源为8脚。当主电源关闭时DS1302也能保持时钟的正常运行。振荡源是2脚和3脚,接32.768KHz的晶振。5脚是复位/片选线,通过把5脚输入驱动置高电平来启动所有的数据传送。当5脚为高电平的情况下所有的数据被初始化允许对DS1302时钟芯片进行操作。如果在传送过程中5脚置为低电平则会终止此次数据传送6引脚变为高阻态。上电动行时在主电源大于等于2.5V之前5脚必须保持低电平。中有在7脚为低电平时才能将5脚置为高电平6脚为串行数据输入端双向。7脚始终是输入端。 图5 时钟电路图4. LCD显示电路 LCD1602最佳工作电压是在5V左右,有数据位8个:接电源端、接地端、数据读写端、数据命令选择端。在本次设计中,数据端D0-D7是和单片机的P2口连接。基本操作时序是1.在读数据状态时输入RS=L,RW=H,E=H,写数据时输入RS=H,RW=L。同时在与单片机连接运行过程中要进行上电保护对其进行初始化。 图6 LCD显示电路图5.按键电路 在本次设计中为了能更好的调整时间日期,在总电路中加入了按键电路。主要是用来控制液晶显示上的时间日期一次完整的按键过程包含以下5个阶段: (1) 等待阶段,此时按键无操作;(2) 前沿闭合抖动阶段,当按键刚按下时,此信号还在抖动状态,这个时间一般为5-20ms。为了保证按键操作不发生错误,此时应该延时消抖;(3) 键的稳定阶段,结束抖动,按键命令产生。单片机会在此时或等释放按键结束后执行相应命令;(4) 后沿释放抖动阶段,一般在此阶段应继续延时消抖一次,若在前沿阶段有延时消抖部分,可在此阶段不做延时消抖;(5) 释放按键阶段,此阶段会执行相应按键命令。 图7 按键电路6.语音电路ISD1420语音芯片录放时间8-20秒,音质好,内部有振荡器、前置话筒放大、平滑滤波器、自动增益控制、防混淆滤波器、扬声器驱动及EEPROM阵列。录放命令结束后,ISD1420进入自动省电模式。该芯片操作模式为: ISD1420系列内置了若干操作模式,可用最少的外围器件实现最多的劝能。操作模式也由地址端控制;当A7和A6都为1时,其它地址端置高就选择某个(或某几个)模式。因为操作模式和直接寻址互相排斥。 图8 语音电路说明:(1)所有的操作都是从0地址开始,也就是开始于存储空间的起始端。后续操作根据所选用的模式可从其它的地址开始。此外,A4模式中,当电路由录转为放时地址计数器复位为0,而由放转为录则不复位。(2)使控制信号(PLAYL、PLAYE或REC)的电平为低,而且A6、A7为高电平时,执行操作模式。这种模式一直有效,直到控制信号再次变为低电平,芯片重新将目前的地址/模式端电平锁存,然后进行相应命令的执行。7.多功能语音报时数字钟的硬件电路设计 本系统的特点是利用单片机控制DS1302的多功能语音报时数字钟的设计,单片机选用AT89C51经济易用,编程方便。 硬件系统电路主要由单片机系统及DS1302时钟模块电路组成。采用AT89C51来实现对DS1302时钟芯片模块的控制。电路原理图如下图。 图9 电路原理图四、系统软件的设计(一)主程序流程图 由于本电路中需要实现的功能比较多,必须进行模块化的程序编写。因而主程序中主要是对各种子程序的初始化操作,以及对各种子程序功能的调用操作。主程序实现的具体功能与实现方式见下图。图10 软件设计主流程图(二)时钟电路流程图本设计运用了DS1302时钟芯片,因此不必再用编写单片机时钟程序,只需对DS1302进行一定的初始化,读取时间,以及有时需要的调整即可。开始读取温度读字节写字节图11 DS18B20子流程图(三)语音电路子程序语音电路主要用于当按键按下时,输出所录制好的报时与温度语音。开始读取公共模块程序判断当前时间温度读取对应语音程序对应键按下?结束 否是图12 语音电路程序流图(四)按键电路子程序按键主要用于人机界面的输入,按键子程序主要用于按键的检测。由于综合考虑按键硬件去抖动成本要比软件去抖动成本高很多。因此电路采用软件去抖。其过程为:扫描按键,去抖延时,再检测,执行对应程序。开始扫描键值延时消抖提取键值调用按键子程序有键按下有键按下结束 是 否 否 是 图13 按键流程图(五)温度检测电路DS18B20的工作流程是,初始化ROM操作指令存储器操作指令数据传输。其工作时序包括:初始化时序、写时序和读时序。开始DS18B20初始化读字节写字节DS18B20初始化读取温度图14 DS18B20子流程图(六)显示电路子程序LCD液晶显示程序分为液晶初始化、读忙、写指令和写数据操作,液晶显示器是一块慢器件,所以在执行每条指令之前必须确定模块忙标志为低电平(不忙),否则此指令无效。 LCD初始化LCD是否忙?单片机向LCD写命令单片机向LCD写数据显示数据结束开始 是 否 图15 LCD显示程序流程图 五、本设计的功能仿真(一)整体仿真图 图16 加载程序后仿真效果图按下“模式”键可以对年、月、日、时、分、星期进行选择,并且所选的这一项会闪动提醒,按下“加”“减”键可以实现对所选项数值的加或减。而且,在按下“模式”键后,在没有任何操作的长时间无键按下,所选项会自动停止闪动,进入走时状态。(二)显示时分秒仿真图图17 只显示时分秒仿真效果图(三)显示年月日星期的仿真图图18 显示年月日星期仿真效果图(四)显示温度的仿真图图19 只显示温度仿真效果图参考文献:1赵德安. 单片机原理与应用M.机械工业出版社,2005.2朱定华.单片机原理及接口技术实验M.北京:北方交通大学出版社,2003.3赵秀珍,单永磊. 单片微型计算机原理及其应用M.中国水利水电出版社,2001.4刘连号 单片机原理与嵌入式应用系统设计M.武汉大学出版社,2007.5吴金戌.液晶显示器的原理与应用M.清华大学出版社,2002.6付家才.单片机控制工程实践技术M.北京:化学工业出版社,2004.3.7周惠潮. 常用电子器件及典型应用M.电子工业出版社,2007.8孟贵华. 电子器件选用入门M.机械工业出版社,2004.9基于汇编语言的单片机的设计(简易电子钟设计)C.2007.6.26.10刘文涛.基于C51语言编程的MCS-51单片机实用教程M.原子能出版社,2004.9.附录1.主程序#include #include include/typedef.h#include include/cfg.h #include include/main.h#include include/task_key.h#include include/task_ds1302.h#include include/task_ds18b20.h#include include/task_lcd12864.h uint8 dis_buff17;uint8 key_operate=0;void sys_init(void)uint8 i;for(i=0;i17;i+)if(i=14)dis_buffi=0;else dis_buffi=10;task_key_init();task_ds1302_init();task_ds18b20_init();task_lcd12864_init();main()sys_init();OS_Init_Timer0();EA = 1;while(1)if(OS_Delay0=0)task_key();OS_Delay0=10;/按键扫100Hz周期10msif(OS_Delay1=0)task_ds18b20();OS_Delay1=100;/温度测量,周期100msif(OS_Delay2=0)task_lcd12864();OS_Delay2=300;/12864液晶扫描,周期300msif(OS_Delay3=0)task_ds1302();OS_Delay3=200;/实时时钟,读取周期200ms2.温度模块程序#ifndef _TASK_DS18B20_H_#define _TASK_DS18B20_H_extern void task_ds18b20(void);extern void task_ds18b20_init(void);#include #include typedef.h#include main.h#include ds18b20.h#include task_ds18b20.h uint32 temp;uint8 a=0;uint8 b=0;void task_ds18b20_init(void)/任务2void task_ds18b20(void) static uint8 i=0; i+; if(i=1) EA = 0; ds18b20_init(); WriteOneChar(0xCC); / 跳过读序号列号的操作 WriteOneChar(0x44); / 启动温度转换 EA = 1; else if(i8) EA = 0; ds18b20_init(); WriteOneChar(0xCC); /跳过读序号列号的操作 WriteOneChar(0xBE); /读取温度寄存器等(共可读9个寄存器) 前两个就是温度 a=ReadOneChar();b=ReadOneChar(); temp = (b*256+a)4; dis_buff15=temp/10%10; dis_buff16=temp%10; i = 0; EA = 1; #endif3.时钟控制模块程序#ifndef _TASK_DS1302_H_#define _TASK_DS1302_H_extern void task_ds1302(void);extern void task_ds1302_init(void);#include #include typedef.h#include main.h#include ds1302.h#include task_ds1302.hRTC_TIME RTC=0,30,9,5,6,5,11,20;extern unsigned char xs_flag;/任务3void task_ds1302_init(void) ds1302_init();/ DS1302_Set_Time(&RTC);void task_ds1302(void) static uint8 i=0; if(key_operate=0) DS1302_Get_Time(&RTC); else DS1302_Set_Time(&RTC); Clock_To_Buff(&RTC); if(+i3 & xs_flag=1)/这里的5和后面的3控制闪烁时间比 if(i5) i=0; switch (key_operate) case 1: dis_buff10 = 10; dis_buff11 = 10; break; case 2: dis_buff8 = 10; dis_buff9 = 10; break; case 3: dis_buff14 = 0;break; case 4: dis_buff6 = 10; dis_buff7 = 10; break; case 5: dis_buff4 = 10; dis_buff5 = 10; break; case 6: dis_buff2 = 10; dis_buff3 = 10; break; default: break; #endif4.按键设置#ifndef _TASKKEY_H_#define _TASKKEY_H_extern void task_key(void);extern void task_key_init(void); #include #include main.h#include task_key.hextern RTC_TIME RTC;unsigned char xs_flag=0;/*按键定义*/sbit KEY0 = P25;sbit KEY1 = P26;sbit KEY2 = P27;sbit FM = P34;void task_key_init(void) FM = 1;void task_key(void) static bit key_flag = 0; static bit key_flag0 = 0; static unsigned char counter=0; static unsigned char del_counter=0; static unsigned int cd_counter=0; static unsigned char fm_counter=0; static unsigned int timer=0; if(!KEY0)|(!KEY1)|(!KEY2)&(key_flag=0) if(+del_counter1)/延时消抖 timer=0;/清除不按键计数器 if(!KEY0)/Modle键,进入调时模式 if(key_operate=0) key_flag = 0;/允许按键长按 if(counter+20) /Modle键要长按生效 xs_flag = 1; if(fm_counter+5)FM = 0; else FM = 1; key_operate = 1; key_flag = 1;/不允许按键长按 else xs_flag = 1; if(fm_counter+5) FM = 0; if(key_flag0 = 0) key_operate = (key_operate+1) % 7;key_flag0 = 1; else FM = 1; key_flag = 1; else if(!KEY1)&(key_operate!=0)/加1调整 if(fm_counter+50)&(cd_counter-50)%10=0)|(cd_counter = 1) if(cd_counter=1)xs_flag=1; else xs_flag = 0; switch (key_operate) case 1:/分钟 if(+RTC.Minute59) RTC.Minute=0; break; case 2:/小时 if(+RTC.Hour23) RTC.Hour=0; break; case 3:/星期 if(+RTC.Week7) RTC.Week=1; break; case 4:/日期 if(+RTC.Day31) RTC.Day=1; break; case 5:/月份 if(+RTC.Month12) RTC.Month=1; break; case 6:/年份 if(+RTC.Year99) RTC.Year=0; break; default: break; else if(!KEY2)&(key_operate!=0)/减1调整 if(fm_counter+50)&(cd_counter-50)%10=0)|(cd_counter = 1) if(cd_counter=1)xs_flag=1; else xs_flag = 0; switch (key_operate) case 1:/分钟 if(RTC.Minute- =0) RTC.Minute = 59; break; case 2:/小时 if(RTC.Hour- =0) RTC.Hour = 23; break; case 3:/星期 if(RTC.Week- =1) RTC.Week = 7; break; case 4:/日期 if(RTC.Day- =1) RTC.Day = 31; break; case 5:/月份 if(RTC.Month- =1) RTC.Month = 12; break; case 6:/年份 if(RTC.Year- =0) RTC.Year = 99; break; default: break; else FM = 1; key_flag0 = 0; fm_counter = 0; counter=0; del_counter=0; cd_counter=0; if(key_operate=0)xs_flag=0; else xs_flag = 1; if(timer+200)/长期不按键,自动回到走钟状态 timer=0; key_operate=0; if(KEY0)&(KEY1)&(KEY2) key_flag = 0; #endif5.LCD12864x显示模块程序#ifndef _TASK_LCD12864_H_#define _TASK_LCD12864_H_extern void task_lcd12864(void);extern void task_lcd12864_init(void);#include #include #include typedef.h#include main.h#include zimo.h#include lcd12864.h#include task_lcd12864.hvoid task_lcd12864_init(void) lcd_init(); lcd_clr();void task_lcd12864(void)lcd_disptime();lcd_dispdate();lcd_dispwendu();#endif6.语音模块程序uchar code voice_add=0x00,0x04,0x08,0x0c,0x10,0x14,0x18,0x1c,0x20,0x24,0x28,0x2c,0x30,0x34,0x38,0x40,0x4c,0x6c;bit VOICE_Flog=0; /语音播报标示位void VOICE_Delay(unsigned char xms)unsigned char i;for(i=xms;i0;i-)display();Read_18B20_Temperature();sbit PLAYEN=P30;void voice()if(VOICE_Flog)VOICE_Flog=0;P1=voice_add15;/现在时刻PLAYEN=0;Delay_1ms(3);PLAYEN=1;VOICE_Delay(2);if(shi/10=2)P1=voice_add2; /2PLAYEN=0;Delay_1ms(3);PLAYEN=1;VOICE_Delay(1);P1=voice_add10; /十PLAYEN=0;Delay_1ms(3);PLAYEN=1;VOICE_Delay(1);if(shi/10=1)P1=voice_add10; /十PLAYEN=0;Delay_1ms(3);PLAYEN=1;VOICE_Delay(1);if(shi%100) P1=voice_addshi%10; PLAYEN=0;Delay_1ms(3);PLAYEN=1;VOICE_Delay(1);P1=voice_add11; /点PLAYEN=0;Delay_1ms(3);PLAYEN=1;VOICE_Delay(1);if(fen=0)P1=voice_add12; /整PLAYEN=0;Delay_1ms(3);PLAYEN=1;VOICE_Delay(1);elseif(fen/101) P1=voice_addfen/10; PLAYEN=0;Delay_1ms(3);PLAYEN=1;VOICE_Delay(1);P1=voice_add10; /十PLAYEN=0;Delay_1ms(3);PLAYEN=1;VOICE_Delay(1);if(fen/10=1)P1=voice_add10; /十PLAYEN=0;Delay_1ms(3);PLAYEN=1;VOICE_Delay(1);if(fen/10=0)P1=voice_add0; /零PLAYEN=0;Delay_1ms(3);PLAYEN=1;VOICE_Delay(1);if(fen%100)P1=voice_addfen%10; PLAYEN=0;Delay_1ms(3);PLAYEN=1;VOICE_Delay(1);P1=voice_add13; /温度PLAYEN=0;Delay_1ms(3);PLAYEN=1;VOICE_Delay(2);if(dispbuf21)P1=voice_adddispbuf2; /PLAYEN=0;Delay_1ms(3);PLAYEN=1;VOICE_Delay(1);if(dispbuf20)P1=voice_add10; / 十PLAYEN=0;Delay_1ms(3);PLAYEN=1;VOICE_Delay(1);P1=voice_adddispbuf1; /PLAYEN=0;Delay_1ms(3);PLAYEN=1;VOICE_Delay(1);P1=voice_add11; /点PLAYEN=0;Delay_1ms(3);PLAYEN=1;VOICE_Delay(1);P1=voice_adddispbuf0; /PLAYEN=0;Delay_1ms(3);PLAYEN=1;VOICE_Delay(1);P1=voice_add14; /摄氏度PLAYEN=0;Delay_1ms(3);PLAYEN=1;VOICE_Delay(2);袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃虿羆艿薃袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇袄芈蒇袇螀芇蕿蚀聿芆艿蒃肅芅蒁螈羁芄薃薁袆芃芃螆螂芃莅蕿肁节蒈螅羇莁薀薈袃莀艿螃蝿荿莂薆膈莈薄袁肄莇蚆蚄羀莇莆袀袆羃蒈蚂螂羂薁袈肀肁芀蚁羆肁莃袆袂肀薅虿袈聿蚇蒂膇肈莇螇肃肇葿薀罿肆薂螆袅肅芁薈螁膅莃螄聿膄蒆薇羅膃蚈螂羁膂莈蚅袇膁蒀袀螃膀薂蚃肂腿节衿羈腿莄蚂袄芈蒇袇螀芇蕿蚀聿芆艿蒃肅芅蒁螈羁芄薃薁袆芃芃螆螂芃莅蕿肁节蒈螅羇莁薀薈袃莀艿螃蝿荿莂薆膈莈薄袁肄莇蚆蚄羀莇莆袀袆羃蒈蚂螂羂薁袈肀肁芀蚁羆肁莃袆袂肀薅虿袈聿蚇蒂膇肈莇螇肃肇葿薀罿肆薂螆袅肅芁薈螁膅莃螄聿膄蒆薇羅膃蚈螂羁膂莈蚅袇膁蒀袀螃膀薂蚃肂腿节衿羈腿莄蚂袄芈蒇袇螀芇蕿蚀聿芆艿蒃肅芅蒁螈羁芄薃薁袆芃芃螆螂芃莅蕿肁节蒈螅羇莁薀薈袃莀艿螃蝿荿莂薆膈莈薄袁肄莇蚆蚄羀莇莆袀袆羃蒈蚂螂羂薁袈肀肁芀蚁羆肁莃袆袂肀薅虿袈聿蚇蒂膇肈莇螇肃肇葿薀罿肆薂螆袅肅芁薈螁膅莃螄聿膄蒆薇羅膃蚈螂羁膂莈蚅袇膁蒀袀螃膀薂蚃肂腿节衿羈腿莄蚂袄芈蒇袇螀芇蕿蚀聿芆艿蒃肅芅蒁螈羁芄薃薁袆芃芃螆螂芃莅蕿肁节蒈螅羇莁薀薈袃莀艿螃蝿荿莂薆膈莈薄袁肄莇蚆蚄羀莇莆袀袆羃蒈蚂螂羂薁袈肀肁芀蚁羆肁莃袆袂肀薅虿袈聿蚇蒂膇肈莇螇肃肇葿薀罿肆薂螆袅肅芁薈螁膅莃螄聿膄蒆薇羅膃蚈螂羁膂莈蚅袇膁蒀袀螃膀薂蚃肂腿节衿羈腿莄蚂袄芈蒇袇螀芇蕿蚀聿芆艿蒃肅芅蒁螈羁芄薃薁袆芃芃螆螂芃莅蕿肁节蒈螅羇莁薀薈袃莀艿螃蝿荿莂薆膈莈薄袁肄莇蚆蚄羀莇莆袀袆羃蒈蚂螂羂薁袈肀肁芀蚁羆肁莃袆袂肀薅虿袈聿蚇蒂膇肈莇螇肃肇葿薀罿肆薂螆袅肅芁薈螁膅莃螄聿膄蒆薇

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论