基于单片机的多功能电子万年历设计_第1页
基于单片机的多功能电子万年历设计_第2页
基于单片机的多功能电子万年历设计_第3页
基于单片机的多功能电子万年历设计_第4页
基于单片机的多功能电子万年历设计_第5页
已阅读5页,还剩49页未读 继续免费阅读

下载本文档

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

文档简介

i摘要在当代人的生活中,时间与我们息息相关,因此产生了钟表和万年历。本文介绍了以STC89C52单片机为核心,将本设计分为6个模块:时钟模块、温度测量模块、语音模块、显示模块、按键模块和闹钟模块。本设计采用的时钟芯片为DS1302,它用来记录日期和时间,不仅可以对年、月、日、时、分、秒进行计时,还具有闰年补偿等多种功能,然后进行农历转换。用DS18B20芯片采集实时温度,在LCD1602液晶显示屏上同时显示时间、星期、温度等这些数据,而且具有时间校准的功能。同时,系统还附带整点报时,以及在任何时候可以通过按键来语音报时。也可用作闹钟,当时钟芯片的时间与单片机所设定的时间相同时,蜂鸣器用音乐来提示。另外,本设计还具有秒表计时的功能。在整个系统中,用按键来切换功能、调整和设置时间。关键字:STC89C52,温度传感器,语音报时,LCD,蜂鸣器iiAbstractIncontemporarylife,timeiscloselyrelatedtous,resultinginawatchandcalendar.ThispaperintroducestheSTC89C52microcontrollerasthecore,thisdesignisdividedintosixmodules:clockmodule,temperaturemeasurementmodule,voicemodule,displaymodule,keymoduleandalarmmodule.ThisdesignusestheclockchipDS1302,whichisusedtorecordthedateandtime,notonlyfortheyear,month,day,hour,minute,secondschronograph,butalsohasaleapyearcompensationandotherfunctions,andthentheLunarconversion.DS18B20chipacquisitionwithreal-timetemperature,showtime,week,temperatureandotherdataontheLCD1602atthesametime,butwithatimecalibrationfunction.Meanwhile,thesystemalsocomeswiththewholepointoftime,andcanbevoicebroadcastthroughthekeyatanytime.Alsobeusedasalarmclock,theclocktimeandthemicrocontrollerchipsetforthesametime,usingmusictopromptthebuzzer.Inaddition,thisdesignalsohasastopwatchfunction.Throughoutthesystem,withabuttontoswitchthefunctiontoadjustandsetthetime.Keywords:STC89C52;temperaturesensor;voicebroadcast;LCD;buzzeriii目录摘要.1Abstract.2前言.3第一章绪论.41.1课题研究的背景.41.2课题的研究目的与意义.41.3课题解决的主要内容.5第二章系统的总体方案设计.62.1系统的基本要求.62.2硬件方案设计.62.3软件方案设计.6第三章系统硬件的设计.83.1STC89C52单片机.83.2DS1302时钟芯片设计与分析.103.3DS18B20温度传感器设计与分析.133.4LCD显示设计与分析.153.5语音芯片WT588D设计与分析.163.6闹钟模块设计与分析.183.7按键模块设计与分析.18第四章系统的软件设计.204.1程序结构.204.2功能的程序设计.20第五章系统测试.265.1硬件调试.265.2软件调试.265.3调试故障及分析.285.4调试结果及分析.28第六章总结.32参考文献致谢附录0前言时代在飞速的发展,人们的生活水平在逐渐提高,生活节奏也越来越快,时间就显得尤为珍贵,我们要抓住宝贵的时间做有意义的事。因此人们慢慢注重时间的管理,所以就有了钟表的出现,随着不断的更新换代和需求的演变逐渐发展成为电子万年历,而时间的越来越高效地被利用起来也加速了人类的认知世界改变世界进程和速度。当今社会,电子万年历可以说是在人们日常生活中用的最多的计时物品。在古代到近现代,人们都用钟表来计算时间,随着科技水平在不断发展进步,由钟表到如今的电子万年历,融汇了多少代人的努力和心血。以前单个个数码管显示的时间已经演变成由液晶显示屏显示,当然功能也得到了不断地拓展,但是趋势是明显的,功能越来越强大,外形越来越小巧,设计越来越人性化个性化,计时更加精准,针对不同的用途可以相应有改变。万年历的发展已经进入了一个新的时代,使得市场对此的需求变得越来越强,推动了电子技术的极速发展,由此产品更新换代的节奏也越来越快。如今的万年历精度高、性能稳定、携带方便等优点,基本的功能有时间显示、报时等。市场也有出售一些现成的电子集成电路芯片,价格便宜,使用方便、灵活。使用者可以根据不同的使用场合附加一些自己需要的功能,实现一定的个性化。经济发展迅速,国民对使用的电子产品的需求很高,更多的智能数字的概念慢慢进入到大家的生活里,但是电子产品的人性化,个性化,时尚感,国内的自主品牌做到的不多,从大学生的角度,我们希望尽自己的能力表达一些主张,从自己的实践出发带来一些不同的声音。大学里学习的基础电子知识里单片机相对不那么复杂,可实现的功能却多种多样,下面是从设计和应用出发的观点。单片机凭借集成度高、控制功能强、微型化、低功耗,体积小、使用灵活方便等优势广泛应用于我们生活的各个领域,无处不在。以微小的体积和极低的成本应用在玩具、机器人、汽车电子系统、工业控制、舰船以及通信产品中,成为电子系统中最重要的智能化工具,其丰富的内部资源可以给我们提供各种扩展。与软件程序设计相结合,通过检测、调试就可以完成相要的其功能。设计生产也开始走向系统化程序化,大大提高了效率。本设计以单片机STC89C52为核心,与时钟芯片DS1302,温度传感器DS18B20,语音芯片WT588D,LCD1602液晶显示和按键模块等组成。全文共分为五章,第一章绪论,第二章系统的方案设计,第三章系统的硬件设计,第四章系统的软件设计,第五章系统测试。1第一章绪论1.1课题研究的背景电子万年历已经成为人们生活中不可缺少的东西,被广泛应用于家庭、医院、办公室、工厂、车站等各种公共场所中,给人们的生活、学习、工作、娱乐带来了很大的方便。由于电子技术的飞速发展,人们已经不再满足电子钟原有的基本功能,希望能够出现一些新的功能的融合。所以就需要对电子时钟进行其功能的扩展和功能的完善。电子万年历基础的计时功能之上我们还能做的是什么,这也是电子产品行业的关注点之一,大家努力的方向,当然具体特定行业对时间的精确度的要求也是大家不能丢弃的部分,国产品牌的这方面在国际上排名不靠前,这也是我们电子人想努力的部分。然后,功能的扩展上,适合中国人使用的添加农历计时,顺应消费者的需求也反向促进使用群体对传统节气节日的关注,当然这只是一部分。当今时代,智能化的家居理念已经深入人心,但是观察整个市场,电子万年历都是千篇一律,没有什么创新的特色。所以我们研究的方向应该往智能化方面发展,使功能更加多样化以及人性化,让我们的日常生活变得更加简便。创新的意义会带给电子日历更多可能,同时针对使用者实现个性化这也是后期的方向。需要从使用群体出发,开发新的功能,给市场带来新鲜血液和新的竞争动力。数字化智能化时尚在良性的市场竞争前提下发展一定是迅速而惊人的,从技术上的创新革新带来的影响自身就会很有意义。1.2课题的研究目的与意义现代化的今天,讲究数字化。人们对时间的精确度要求越来越高,所以万年历的精确度也在不断提高。钟表的数字化给人们带来了多大的变化,其影响大家都知道。不仅仅是工作和生活,还有很多我们看不见的地方或者还有待发现。数字化发展扩展了钟表原先的报时功能,例如自动开启关闭路灯、定时自动报警、定时广播等,所有这些都是以数字化为基础的。在高速发展的今天,大家追求高效,追求更精准,追求多功能。因此,万年历的深入研究以及其扩展应用,有着极其重要的意义。消费市场的需求和提供的电子日历功能间的比量对比还有不完善的可以改善的地方,功能的具体化实现,针对不同消费者进行不同的个性化设计是趋势,实现市场的分化管理。充分利用资源和更好地让消费者使用电子日历产品是这次实验的概念之一,为了设计的完整性并没有分开实现,但是后期具体应用可以很好地分化较多提供的功能,实验还是把功能多样性放在首位。整点报时和秒表计时使得单片机功能充分利用,对消费者来说功能更具体贴合实际2生活需要。实现农历的转换满足了中国人的实际需求,同时也可以唤起大家对农历节气的关注。闹钟功能给上班族和学生带来便利,单片机可以轻松地实现,手动可以简单地实现时间的调节,年、月、日、时、分、秒、星期都可以进行调节,规避一些不可抗失误。本设计不仅可以很好地利用单片机的特性对万年历作出一些功能的扩展,也让人们的生活变得更加方便,让科技很好地融入了人们的现代生活中,设计出功能多样,带给甚少创新的电子日历的设计更多时尚科技的概念。使用方便的万年历,应用于更加广泛的场所中,这正是我们努力的方向。1.3课题解决的主要内容本课题所研究的电子万年历是以单片机STC89C52为中心展开研究,其研究内容包括以下几个方面:(1)显示基本的时间功能,年、月、日、时、分、秒、星期,可以手动调整时间;(2)农历转换;(3)显示实时温度;(4)整点语音报时,任何时候按键报时;(5)闹钟功能;(6)秒表计时功能。3第二章系统的总体方案设计2.1系统的基本要求本设计完成的是基于单片机的多功能电子万年历设计,可以分为硬件设计和软件设计。按照系统设计的要求,初步确定系统由时钟模块、语音模块、显示模块、按键模块、温度测量模块、和闹钟模块共6个模块组成。2.2硬件方案设计本设计以单片机STC89C52为核心,时钟芯片DS1302读取当前时间,进行农历转换DS18B20采集实时温度,通过LCD1206液晶显示屏显示时间、温度。用语音芯片WT588D进行语音整点报时,把蜂鸣器用作闹钟提示,同时利用单片机的定时和中断来进行计时功能。硬件电路结构框图如图2-1所示:单片机(89C52)时钟芯片闹钟按键控制液晶显示语音报时温度采集图2-1硬件电路结构框图2.3软件方案设计软件设计就是系统的程序设计。本设计可以分模块来进行编程,具体包括以下几点:(1)时钟芯片DS1302的程序设计;(2)农历转换的程序设计;(3)温度采集DS18B20的程序设计;(4)LCD显示的程序设计;(5)语音报时的程序设计;(6)蜂鸣器闹钟提示的程序设计;(7)秒表计时的程序设计;(8)按键的程序设计4程序运行后对系统进行初始化,然后温度测量程序传读取当前温度,时钟芯片读取当前时间,农历转换程序进行计算相对应的农历时间,在LCD上显示当前的时间、星期、温度。通过按键程序来切换功能,设置和修改时间。每个模块都有自己的主程序以及子程序,程序编写完成后,就可以对其进行组合,通过Keil软件编译,在Protues上仿真,调试检查是否满足功能。5第三章系统硬件的设计硬件设计包括了单片机的最小系统介绍,时钟芯片、温度传感器、液晶显示屏和语音芯片的介绍和电路分析,以及闹钟和按键电路的分析。3.1STC89C52单片机STC89C52单片机是STC公司生产的新一代单片机,具有强抗干扰能力、功耗低、功能强大、高速等多个优点。是在MCS-51的基础上改进而来,不仅兼具了51单片机的功能,还新添加了一些新功能。如图3-1为单片机的引脚图:图3-1STC89C52引脚图3.1.1单片机最小系统STC89C52单片机的最小系统由复位电路和时钟电路组成。(1)复位电路单片机的复位就是把电路初始化,恢复到一个确定的状态,就像电脑的重启部分。当RST引脚上有两个机器周期以上的高电平,单片机就会复位。复位操作有两种:上电复位和按键复位。上电复位是单片机系统接通电源后自动复位,按键复位是在单片机在运行期间,通过按下按钮使系统复位。本设计采用按键复位,按键复位电路如图3-2所示。电容与电阻串联,再在电容上并联一个开关。按下开关的时候,电容开始放电,RST脚变为高电平,当RST脚持续10ms以上高电平时,复位有效。在本电路中,电容值为10uF,电阻值为10K,计算出从电容充电到电源电压所需时间为100ms,所以在开机100ms以内,单片机自动复位。6图3-2按键复位电路(2)时钟电路时钟电路分为:外部振荡和内部振荡外部振荡是把外部时钟信号输入单片机中。内部振荡是STC89C52单片机内部含有一个高增益反向放大器来构成振荡器,它有输入端(引脚XTAL1)和输出端(引脚XTAL2)。这两个引脚分别连接两个20pF的电容和一个石英晶振,构成一个自激振荡电路,便能产生一个稳定的自激振荡,促使单片机能够有条理、稳定地工作。电容的大小对振荡器频率的高低、稳定性和速度产生影响。内部振荡电路如图3-3所示:图3-3内部振荡电路3.1.2中断STC89C52包含六个中断源:2个外部中断(INT0和INT1);三个定时器/计数器中断(定时器/计数器0、定时器/计数器1、定时器/计数器2)和一个串行口中断。IE可以控制每个中断源的打开与关闭,它有总控制位和分控制位,总控制位是EA,分控制位是各个中断源的中断允许位。如果EA处于禁止状态时,不论分控制位是允许还是禁止,整个中断系统都会处于禁止状态。当EA允许时,分控制位才能设置各中断的允许或禁止。3.1.3定时器/计数器在STC89C52中有两个16位可编程的定时器/计数器,分别为定时器0和定时器1,用T0和T1表示,由TH0、TL0和TH1、TL1两个8位计数器组成。同时也是程序可以访问的寄存器。每个定时器/计数器都有定时和计数这两个工作模式和四种工作方7式。TMOD称为工作模式控制寄存器,用于控制和确定定时器/计数器T0和T1的工作模式。表3-1为TMOD的格式。表3-1TMOD的格式D7D6D5D4D3D2D1D0GATEC/TM1M0GATEC/TM1M0TMOD被分为两个部分,低4位用于定时器/计数器0的方式控制字段,高4位用于定时器/计数器1的方式控制字段。其中GATE和C/T来控制计数信号的输入,定时器的四种方式由M1、M0的状态确定。表3-2为定时器/计数器的工作方式选择:表3-2定时器/计数器的工作方式选择工作方式M1M0功能计数范围00013位二进制加法计数213-初值10116位二进制加法计数216-初值210可重置初值的8位二进制加法计数28-初值3112个独立的8位二进制加法计数28-初值C/T=0位定时器方式,采用晶振频率的1/12作为计数器的计数脉冲,即对机器周期进行计数。C/T=1位计数器方式,计数脉冲是由外部引脚(T0为P3.4,T1为P3.5)的输入脉冲产生,当T0或T1的输入发生由高到低的负跳变时,计数器就会加1,其最高计数频率为晶振频率的1/24。所以可以利用利用单片机的可编程定时/计数器、中断系统来实现计数。本设计选择定时器T0和定时器T1,都是用工作方式1来实现。(1)定时时间为t,晶振频率fosc=12MHz。则初值X满足216-(tfosc)/12MHz,计算得出X。(2)采用中断方式进行溢出次数累计,如计满10次为秒计时(1秒)。(3)从秒到分、从分到时的计时是通过累加和数值比较实现。3.2DS1302时钟芯片设计与分析3.2.1DS1302性能介绍DS1302是一种实时时钟芯片,由Dallas公司最新生产的。DS1302的引脚排列图如图3-4所示。该时钟芯片可以提供秒、分、时、星期、年、月、日等实时信息,并可对每月的天数和闰年天数进行自动调整;它与单片机之间通过SPI同步串行方式进行数据传送,只用到了复位RST、数据线I/O和同步串行时钟SCLK这3根信号线。其8工作过程可以简单概括为:先将RST置为高电平,只有RST是高电平时,数据传输才会被初始化;然后在时钟脉冲的作用下,DS1302才会进行操作,通过I/O向芯片内输入字节,当时钟脉冲到来时,数据字节从I/O口读出。因此,该芯片的工作过程是十分容易的。DS1302是由DS1202改进而来的,增加了双电源引脚,分别是主电源Vcc2和备份电源Vcc1,保证了即使在主电源被关闭的情况下,时钟也能连续运行,正常工作。图3-4DS1302引脚图表3-3为对引脚的功能作具体说明:表3-3DS1302引脚功能3.2.2DS1302SPI接口读/写操作DS1302进行数据读/写操作时,须由命令字进行初始化。它的命令字格式见表3-4:表3-4DS1302的命令字格式D7D6D5D4D3D2D1D01RAM/CKA4A3A2A1A0RD/WRDS1302的命令字中:(1)D7位必须是逻辑1,不能为0,只有为1的时候DS1302才能进行读/写操作;(2)D6为0的时候是对时钟/日历数据进行读/写操作,为1的时候是对RAM进行数据读/写操作;(3)D5D1是A4A1的地址,指定进行输入或输出的特定寄存器;(4)D0为0的时候进行写操作,为1的时候进行读操作。DS1302每次进行读、写程序前都必须经过初始化,先把SCLK置“0”,然后把RST置“1”,最后输出SCLK脉冲。DS1302单字节数据读/写操作时序图如图3-名称功能X1、X2晶振引脚VCC2主电源输入引脚VCC1电池备份电源输入引脚SCLK同步串行时钟输入引脚I/O数据输入/输出引脚RST复位输入引脚GND信号地95所示。由时序图可知,无论读或写DS1302,都要首先写入地址,而且在写入地址字节时,数据由低位到高位逐位写入,读取数据也是由低位到高位逐位读入。图3-5DS1302单字节数据读/写操作时序图3.2.3DS1302内部寄存器的读/写通过对DS1302的单字节读/写操作或多字节连续读/写操作,可对其内部的时钟/日历寄存器、控制寄存器和RAM存储器进行访问,数据是以BCD码格式存放。DS1302的时钟/日历寄存器、控制寄存器共有10个,表3-5为DS1302的时钟/日历寄存器、控制寄存器读/写命令地址和内容:表3-5DS1302的时钟/日历寄存器、控制寄存器读/写命令地址和内容命令字节寄存器内容寄存器名称写读取值范围D7D6D5D4D3D2D1D0秒80H81H0059CH10SECSEC分82H83H0059010MINMIN10时84H85H0023或011212/240A/PHRHR日86H87H01282930310010DATADATA月88H89H011200010MMONTH星期8AH8BH010700000DAY年8CH8DH009910YEARYEAR写保护控制8EH8FHWP0000000涓流充电控制90H91HTCSTCSTCSTCSDSDSRSRS时钟突发访问BEHBFH秒寄存器的D7即“CH”定义为时钟暂停标志位。当D7=1时,时钟振荡器会停止工作,使DS1302处于低功耗状态;当D7=0时,时钟运行。小时寄存器的D7定义为12或24小时方式选择位。当D7=1时,选择12小时方式;当D7=0时,选择24小时方式。在12小时方式下,D5用于AM/PM指示,10D5=1指示PM;D5=0指示AM。在24小时方式下,D5则是第二小时位。写保护寄存器的D7即“WP”是写保护位,其余低7位设置为0。对时钟或内部RAM单元进行写操作前,WP必须为0,当WP=1时,写保护位禁止对任一寄存器进行写操作。DS1302除了包含上述的时钟/日历控制寄存器外,还包括31个字节的RAM存储单元。对RAM存储单元的访问既可以采用单字节读写方式,也可采用突发多字节连续读写方式。DS1302与RAM有关的寄存器有两类:一类是共有31个的单个RAM单元,一个8位的字节构成了每个单元的组态,命令控制字是C0HFDH,写操作是偶数,读操作是奇数;还有一类是突发方式下的RAM寄存器,该方式可一次性读写所有RAM的31个字节,命令控制字为FEH(写)和FFH(读)2。3.2.4DS1302接口电路设计时钟芯片DS1302的连接电路及工作原理:图3-6DS1302与MCU接口电路图3-6为DS1302的接口电路,其中主电源Vcc2与系统电源Vcc相连接。备用电源Vcc1与3V可充电池相连接用于掉电保护。DS1302的SCLK、I/O、RST分别与单片机的P1.3P1.5引脚相连。X1、X2外接一个晶振,晶振频率选用一般选用32.768kHz。数据输入时必须是在时钟上升沿的时候,输出必须是在下降沿的时候。通过比较Vcc1和Vcc2两者的电压,供电电压由其中的较大者提供。当Vcc2小于Vcc1时,Vcc1给电路供电;当Vcc2大于Vcc1+0.2V时,电路由Vcc2供电。3.3DS18B20温度传感器设计与分析3.3.1DS18B20性能介绍DS18B20是一种可以直接读取被测物体温度的新型智能传感器。只需要一条数据线就可以进行数据传输,直接与单片机相连,大大降低了降低硬件的成本,简化了系统电11路。其性能特点可归纳如下:(1)单线接口,只要一个端口就可以进行双向通信;(2)抗干扰性强;(3)工作电压:35V;(4)测温范围:-55125,精确度高;(5)使用了3根线与单片机相连,不需要任何外围器件,(6)所测的结果以9位数字方式串行传送;(7)可选择寄生工作方式;(8)对超过程序设定的温度可以进行搜索并报警报;(9)零待机功耗。3.3.2DS18B20工作原理测温原理如图3-5所示。图中低温度系数晶振的振荡频率受温度影响很小,用于产生固定频率的脉冲信号送给计数器1。高温度系数晶振随温度变化其振荡率明显改变,所产生的信号作为计数器2的脉冲输入。计数器1和温度寄存器被预置在55所对应的一个基数值。计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当计数器1的预置值减到0时,温度寄存器的值将加1,计数器1的预置将重新被装入,计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到计数器2计数到0时,停止温度寄存器值的累加,此时温度寄存器中的数值即为所测温度。图3-7中的斜率累加器用于补偿和修正测温过程中的非线性,其输出用于修正计数器1的预置值。LSB位置/清除增加计数器1斜率累加器计数比较器温度寄存器减到0预置计数器2减到0停止预置低温度系数晶振高温度系数晶振图3-7DS18B20测温原理3.3.3DS18B20接口电路设计如图3-8为DS18B20的接口电路,DS18B20与单片机的连接方式有两种:寄生12电源连接方式和外部电源连接方式。在本设计中采用的是外部电源连接方式。连接方法即DS18B20的1脚接地,2脚与单片机的I/O口线连接(P3.2脚),3脚接电源+5V。由于DS18B20无法输出高电平,所以要在+5V电压和单片机端口之间连接一个10K的上拉电阻,以保证数据采集的正常进行。图3-8温度传感器DS18B20接口电路3.4LCD显示设计与分析3.4.1LCD1602性能介绍LCD1602可以显示两行字符,每行16个字符,显示容量为162个字符;只能显示ASCII码字符,如数字、大小写字母、各种字符等;并带有背光源,采用时分割驱动形式,并行接口,可与单片机I/O端口直接相连。如图3-9为引脚图:图3-9LCD引脚图(1)LCD1602的接口信号说明如表3-7:表3-7LCD1602的接口信号引脚符号功能说明引脚符号功能说明VSS电源D2DATAI/OVDD电源正极D3DATAI/OVL液晶显示偏压信号D4DATAI/ORS数据/命令选择端(H/L)D5DATAI/OR/W读/写选择端(H/L)D6DATAI/OE使能信号D7DATAI/OD0DATAI/OBLA背光正极D1DATAI/OBLK背光负极(2)基本操作时序如下:1)读状态:RS=L,RW=H,E=H2)写指令:RS=L,RW=L,D0D7=指令码,E=高脉冲133)读数据:RS=H,RW=H,E=H4)写数据:RS=H,RW=L,D0D7=数据,E=高脉冲3.4.2LCD1602电路分析图3-10LCD1602与单片机的接口电路图3-10为LCD的连接电路图,LCD的3引脚为显示对比度调节,连接串联一个2K电阻来调节液晶显示屏的亮度;单片机的P0口分别连接LCD的D0D7,作为数据线,由于P0内部没有上拉电阻,所以要连接10K的上拉电阻;LCD的4、5、6引脚分别与单片机的P1.0、P1.1、P1.2相连。15、16引脚是背光电源。3.5语音芯片WT588D设计与分析3.5.1WT588D性能简介WT588D语音芯片是一个功能强大并且可以重复擦除烧写和编程的芯片。拥有多种控制模式,几乎可以用在有的语音场所,如闹钟、电子玩具、语音报时、公交车报站等等。软件操作简单,易于理解,匹配的声音相结合的技术,大大减少了语音编辑的时间,提高了工作料率。完全支持在线下载,即使是在WT588D通电的情况下,也一样可以给关联的SPI-Flash下载信息,然后复位一下WT588D语音芯片电路,就能更新到刚下载进来的控制模式。本设计采用了WT588D语音单片机的16PIN芯片。图3-11为WT588D引脚图:14图3-11WT588D引脚图WT588D引脚功能以下作具体介绍:VCC(14脚):存储器电源输入脚;GND(8脚):地线脚;RSET(1脚):复位脚,低电平保持5ms有效;DAC(2脚):DAC音频输出脚,需要从软件设置DAC输出才生效;PWM+(3脚):PWM+音频输出脚,需要从软件设置PWM输出才生效;PWM-(4脚):PWM-音频输出脚,需要从软件设置PWM输出才生效;P14(5脚):SPI-FLASH数据输入脚;P13(6脚):SPI-FLASH数据输出脚;P16(7脚):SPI-FLASH时钟脚;P15(9脚):SPI-FLASH片选脚;P03(10脚):按键/三线时钟/一线数据输入脚;P02(11脚):按键/三线片选输入脚;P01(12脚):按键/三线数据输入脚;NC(13脚):按键输入脚;BUSY(15脚):语音播放忙信号输出脚;3.5.2语音芯片电路分析图3-12WT588D与单片机连接图15WT588D有多种控制模式,本设计采用了三线串口控制模式,此时P01端口是数据DATA,P02是片选CS,P03是时钟CLK。其工作原理为:在复位信号RST拉低拉高之后,一直保持高电平。然后片选信号CS拉低,此时语音芯片开始工作。在时钟信号CLK的上升沿到来时从低位开始接收数据,随后语音播放忙信号BUSY作出响应,仍然是从低位到高位发送数据。由图3-12可知,单片机和WT588D之间的连接较少,其中单片机P2.0接BUSY引脚,P2.1接芯片的数据引脚DATA,从该引脚读入放音的地址。P2.2节芯片的片选引脚,P2.3接芯片的时钟引脚CLK。P2.4接WT588D的片选引脚RSET,控制WT588D的选通与否。工作时,可以整点报时,也可以手动报时,提示当前的时间以及温度。3.6闹钟模块设计与分析本设计还带有闹钟功能,用户可以通过按键设定好闹钟,当前时间跟闹钟时间一致的时候,单片机就可以驱动蜂鸣器发声,播放音乐。蜂鸣器模块的电路图如图3-13所示。由于蜂鸣器的工作电流一般较大,以致于单片机的I/O口是无法直接驱动的,所以要利用三极管开关电路来驱动。本处选用的是8550三极管,它是一个PNP型的三极管,三极管的基极与单片机引脚P3.7之间连接一个电阻。当基极是低电平的时候三极管导通,这时候蜂鸣器播放音乐;高电平的时候,三极管关闭,蜂鸣器不响。图3-13蜂鸣器模块的电路图3.7按键模块设计与分析本设计用到了5个按键,其中S1是手动复位按键,S2、S3、S4、S5独立按键,这种按键电路配置灵活,不仅软件结构简单,程序编写也容易,为CPU资源节省了不少,按键电路如图3-14所示,4个独立按键分别与单片机的P3.3P3.6口相连。16图3-14按键电路简单对4个按键作说明:S5功能设置键;S4移位选择键/计时开始;S3加键/农历转换/闹钟开启/计时暂停;S2减键/语音/闹钟关闭/计时复位清零;在本电路中,按键采用低电平有效。当按下按键时,P3端口通过按键与地相连,变为低电平。按键在按下和松开的瞬间有可能接触不稳定,会产生抖动。抖动会影响系统对一次按键进行多次处理,出现错误,所以就要消除抖动,在后面的软件程序设计中就对按键抖动作了相应的处理。17第四章系统的软件设计本设计不仅完成了初步确定的几个功能,还通过程序设计增加了两个功能。所以本系统的功能的功能包括:显示时间和温度、农历转换、语音报时、闹钟、计时。4.1程序结构电子万年历的功能是结合硬件与软件实现的。硬件设计已经完成,然后就是软件设计。本设计的程序是根据功能模块来编写的,每个模块都有自己的初始化程序、主程序等。每个模块的程序编写完以后,将其组合就可完成。其流程图如图4-1所示:开始DS1302、DS18B20LCD1602初始化第1次按下S5液晶屏显示结束液晶屏显示时间、温度、日期、星期正常按键S2,S3,S4设置时间和日期第2次按下S5第3次按下S5第4次按下S5按键S2,S3,S4设置闹钟按键S2,S3,S4设置秒表按下S1,电路复位按下S2,语音报时整点报时退出设置功能设置按下S3,农历转换图4-1主程序流程图4.2功能的程序设计4.2.1农历转换程序设计在本设计中采用了时钟芯片DS1302,所以农历转换程序可以从它的各个寄存器中读取年月日时分秒等这些数据就可以了。公历年对应的农历数据,每年三字节:18第一字节BIT7-4位为闰月月份,值为0表示非闰月,BIT3-0对应农历第1-4月的大小;第二字节BIT7-0对应农历第5-12月大小;第三字节BIT7-7表示农历第13个月大小,BIT6-5表示春节的公历月份,BIT4-0表示春节的公历日期。月份对应的位为1表示本农历月大(30天),为0表示小(29天)。根据计算得到春节的公历日期,用X表示公历日与春节的天数差,用Y天数表示当月农历的天数,F0为闰月标志。图4-2为农历转换流程图:开始判断公历日是否在春节之后农历年=公历年,取农历日月信息农历年=公历年-1,数据表地址减3,定位到前一年,取农历信息农历月为1取农历月天数Y农历月加1F0=1?F0取反农历月=闰月?X=X-YX=Y农历日=X+1农历月=12取农历月天数Y农历月=闰月?农历月减1F0=1?X=X-YXY?农历日=Y-X+1F0取反农历年、月、日数据标准化结束是否是否是否是否是否否否是是图4-2农历转换流程图4.2.2时间、温度显示程序设计本设计的时间读取主要来源于单片机对DS1302的操作,温度由DS18B20采集,最后通过LCD1206显示。时钟芯片工作时,要先进行初始化,然后读取相应的时间送入LCD即可。温度采集时,DS18B20首先进行初始化,读取当前的温度后作温度转换,计算得到实际温度值送入LCD。LCD工作时当然也要先进行初始化,然后是读写指令、数据操作。最后显示时间、温度等。19图4-3为时间、温度工作流程图:开始DS1302、DS18B20、LCD1602初始化DS1302读取时间DS18B20采集温度液晶屏显示时间、温度结束DS1302读取时间农历转换图4-3时间、温度工作流程图4.2.3语音报时程序设计语音报时模块采用的是WT588D语音芯片,当时间为整点的时候,就会自动报时,提示当前的时间、周几以及温度。该设计不仅可以整点报时,也可以手动按键报时,以下图4-4为语音报时工作流程图:开始判断是否为整点YN自动报时结束手动报时图4-3语音报时工作流程图204.2.4闹钟程序设计闹钟功能可以进行开启和关闭选择,当闹钟功能开启时,设置闹钟时间,时间一到,蜂鸣器就会响;当闹钟功能关闭时,即使设置了闹钟时间,蜂鸣器也不会响,本设计采用音乐来作为闹钟提示。图4-5为蜂鸣器工作流程图:音乐播放是由单片机的引脚来实现的,通过P3.7引脚输出一定频率的方波,改变频率的时候即可改变音调,此时就可以播放音乐了。开始初始化闹钟功能是否开启设置闹钟时间Y判断设定的时间是否到蜂鸣器响结束YN设置闹钟时间判断设定的时间是否到蜂鸣器不响结束YNN图4-5蜂鸣器工作流程图214.2.5秒表计时程序设计在本设计中,秒表计时的实现是通过单片机的定时器/计时器和中断来完成的。同时按键可以进行对计时开始、暂停、复位清零的工作。其流程图如图4-6:开始初始化1S是否到时秒加160秒是否到时秒清零,分加160分是否到时分清零,时加124小时是否到时清零时间显示按下按键。暂停或复位结束图4-6计时程序流程图224.2.6按键程序设计按键程序解决了前面提到的抖动问题,其工作过程具体是先进行扫描,当有按键按下时,先延时,等抖动消失后再进行一次检测,当端口仍是低电平时就是按键还处于闭合状态,此时执行按键所对应的操作。图4-7为工作流程图:开始扫描键值是否有按键按下延时去抖动是否有按键按下提取按键值执行其相应操作结束否否是是图4-7按键工作流程图23第五章系统测试5.1硬件调试万年历系统的电路较大,涉及的模块比较多,其中包含温度检测模块、时钟模块、语音模块、蜂鸣器模块、单片机最小模块和液晶显示模块,因此在焊接方面要小心,电路系只要有一处的错误,就会对检测造成很大的不便,在制作硬件电路之前,先根据实际需要的功能划分硬件模块,并且画好原理图在PROTUES里仿真无误后再开始焊接。焊完电路板之后有相应的测试,过程中要注意以下细节:(1)通电前,把桌面清理干净,电路板下不允许有杂物。(2)电路调试时采取分块调试的原则,方便检查哪个模块出了问题。(3)调试结束或遇到故障,要先断电,然后再进行检查。根据自己所学的知识一步步进行分析,元器件是否安装错误,电路连接是否有问题,然后再进行深层次地检查。5.2软件调试软件调试主要是将单片机开和Keil联调,然后观察液晶显示屏上的数值变化,具体步骤如下:1.在计算机上打开Protues和Keil;2.在keil软件中运行需要进行调试的程序,改变温度,观察液晶显示屏上的数值变化;3.如调试结果正确,则结合硬件调试,进一步优化。24下图5-1、5-2为Protues设计图和仿真图:图5-1Protues设计图图5-2Protues仿真图255.3调试故障及分析(1)接通电源后,电路不工作,显示屏不显示。经过检查,发现板子上接电源的地方虚焊,经过重新焊接后,正常工作。(2)显示屏上没有星期的信息显示,经检查,发现是程序编写错误。修改以后,显示了星期的信息。(3)按键电路部分,按下按键,功能没有进行转换。检查实物焊接,没有发现错误。然后软件测试,发现为程序错误。5.4调试结果及分析首先,接通电源,上电工作,DS1302、DS18B20、LCD1602进行初始化,通过单片机控制液晶屏显示“时分秒”、“温度”、“年月日”、“星期”,如图5-1,并伴随整点报时的功能;进入功能页面后,第一次按下按键S2可以语音报时;第一次按下按键S3可以进行农历转换,如图5-2:图5-1、5-2功能页面和农历转换26第一次按下按键S5可以调整“时分秒”和“年月日”,如图5-3,此时S4、S3和S2分别对应时间和日期“移位选择”、“加”和“减”的功能。图5-3设置时间S2减S3加S4移位选择S527第二次按下按键S5可以设置闹钟的功能,如图5-4,此时S4、S3和S2分别对应时间和日期“移位选择”、“开启”和“关闭”的功能,“Y”为开启闹钟,“N”为关闭闹钟。,当闹钟开启的时候,此时S4、S3和S2分别对应时间和日期“移位选择”、“加”和“减”的功能。图5-4闹钟开启、关闭第三次按下按键S5可以设置秒表的功能,如图5-5,此时S4、S3和S2分别对应时间和日期“开始”、“暂停”和“清零”的功能。S3开启S2关闭28图5-5计时开始、暂停、清零第四次按下按键S5可以退出设置功能由于DS18B20具有温度采集检测的功能,所以液晶屏显示的温度会随着周围环境温度的变化而变化。该万年历加入了记忆芯片,具有自动记忆的功能,掉电再送电后会自动记忆时间和日期等信息。由于单片机有复位的功能,可以设置复位电路,连接一个按键S1可以自动实现复位功能。S4开始S3暂停S2清零29第六章总结毕业设计是综合检测你四年来所学知识的应用,通过这次毕业设计,我学到了很多东西,使我都受益匪浅。不仅温故了大学四年来所学的知识,也了解了很多新的知识点。经过两个月多月的忙碌,毕业设计和论文终于完成,从设计的选题到方案的设计,然后实物的焊接,最终成形,完成了可测温式电子万年历的设计。设计初期,要慎重选择元器件,根据设计所要实现的功能选择合适的硬件,不仅要考虑元件连接电路是否复杂,还要低成本。本设计可以显示时间和温度,精确到年月日时分秒以及星期,还能进行农历转换,同时还具有整点语音报时功能以及任何时候按键语音报时,除此之外,本设计还具有闹钟、计时功能,基本满足设计要求。这期间遇到过很多问题,但都一一解决了。通过查询资料,询问同学,请教老师结合自己的理解,最终得以完成。在软件设计的时候,刚开始觉得有一定的难度,因为C语言是在大一下学期学的,如今已经忘的差不多了,再接触是一头雾水。不过经过摸索,最终仿真成功,实现了所有的功能,还是挺高兴的。当然本设计也有不足的地方,例如蜂鸣器播放音乐时,声音不是太好听;液晶显示屏只能显示字符,不能显示汉字。毕业设计让我深入了解了单片机的性能及应用,将理论与实践相结合才会做出完美的设计,缺了哪一个都不可以。所以不仅要有扎实的理论基础,也要有灵活的动手能力。30参考文献1陈蕾.单片机原理与接口技术M,北京:机械工业出版社,20122吴建平.传感器原理及应用M,北京:机械工业出版社,20123杜会敏,曾荣.采用集成温度传感器的数字温度计设计J.武汉理工大学学报(信息与管理工程版),2010,32(06):904-906.4向文娟.C语言中的运算符和表达式解析J.软件导刊,2012,04:48-50.5左娅.基于单片机智能温度监测和控制系统的研究J.科技创新力,2012,11(04):64-66.6赵月静,陈继荣,张永弟.单片机原理及应用课程创新实践教学改革J.实验技术与管理,2013,30(01):176-179.7张立君,董毅.数码显示电路的研究与设计J.北京印刷学院学报,2009,02:65-67.8殷士勇.Keil和Proteus在单片机实验教学中的应用J.重庆工商大学学报(自然科学版),2009,17(02):567-570.9莫玉华.基于实时钟芯片的万年历设计J.电子世界,2013,14:116-117.10金珍珍.基于ProtelDXP的电路设计技巧J.电脑与电信,2010,02:37-3911张毅刚等.MCS51单片机应用技术.哈尔滨工业大学出版社.2002.1011212赵晓安.MCS-51单片机原理及应用.天津大学出版社.2001.91513张璐璐.单片机温度测量和控制系统的设计与实现D.吉林大学,2014.14马丽丽,高鑫,贺超兴,纪建伟.基于单片机的温度检测系统硬件设计J.现代仪器,2012,03:60-62.15李光飞等.单片机课程设计实例指导.北京航空航天大学出版社.2004.114231致谢经过两个多月的忙碌,在自己的不懈努力下,毕业设计圆满完成,这也意味着我们四年的大学生活即将结束。在这里要感谢学校给我们提供了这么好的平台,让我顺利完成了毕业设计。首先感谢我的指导老师王强老师,没有王强老师对悉心指导,我不能可能顺利完成毕业设计。虽然王强老师是第一次指导我们,期间也有不会的,但

温馨提示

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

评论

0/150

提交评论