您好,欢迎访问三七文档
电子万历表的设计巾吏厷(树大)摘要:基于单片机的电子万年历以AT89S52单片机为核心控制器,具有显示时问、日期、星期.温度,进行12/24时制转换.整点报时和设王闹铃的功能,具有很强的实用价值。关键词:AT89S52;单片机;时钟芯片随着近代大规模集成电路和单片机技术的成熟,出现了糅合多项先进电子技术及现代经典工艺的电子万年历代表了钟表计时业界跨跃性的进步,也给人们的生活带来了诸多方便。本文设计的基于MCS一51单片机的电子万年历具有读取时间、日期、星期和温度的功能,并能够进行12/24时制转换、整点报时和设置闹铃。1功能和外观本文设计的电子万年历要求能够实现如下功能:显示公历2001~2049年日历,星期自动对应,闰年、大、小月份自动调整;12/24时制转换:自动显示温度:在24小时内任意时刻设定4次定时闹铃,响闹时进行中文语音报时:在8.21点整点时敲整点钟声进行正点报时:亮度显示自动调节,即数码管显示亮度在晚上22点至早上7点降低亮度,使显示柔和不刺眼:时钟精度小于等于正负0.2秒/天:停电保持时钟运行十年以上;同时实现按键和红外遥控双重控制调时。电子万年历的外部面板显示年、月、日、时、分、星期、温度以及12/24时制转换显示灯、走秒显示灯、定闹、整点报时显示灯。并标注生产厂家及其标志。2硬件设计2.1总体方案电子万年历包括硬件电路板、显示元件和产品外壳三个部分。硬件电路板包括核心芯片电路、数码管驱动及显示电路、时钟芯片电路、温度感应、外部按键及语音输出电路几个部分。核心芯片用来接收和处理外部信号及向外发部元器件发送控制命令,温度感应、外部按键和时钟芯片提供显示的时间、日期和温度信息,通过数码管驱动及显示电路放大单片机输出的电流,并送给数码管显示出来。语音输出电路在整点或定点闹铃时刻进行语音报时。电路总体设计框图如图1所示。2.2元器件选用本文选用的单片机AT89S52是一个低功耗,高性能的CMOS8位单片机,兼容标准MCS一51指令系统及80C51引脚结构,芯片内集成(总体设计框图)图1了通用8位中央处理器和8kISPFlash存储单元,可反复擦写1000次,有效地降低开发成本。时钟芯片选择的是DAUAs公司的新型时钟日历芯片DSl2e887,能够自动产生世纪、年、月、日、时、分、秒等时间信息,自带可保存时间信息10年的锂电池。支持12/24时制,并可用二进制数或BCD码表示时间,能够满足设计要求。温度芯片选用的是DALLAs公司的数字化温度传感器DSl8820,具有3引脚TO一92小体积封装形式;温度测量范围为55一+125℃,测温分辨率可达0.0625℃,它具有独特的单线总线接口方式,占用单片机的端口较少,可节省大量的引线和逻辑电路。用户设定的报警温度存储在EEPROM中,掉电后依然保存,性价比非常出色。驱动芯片选用的是CH451,它是一款整合了数码管显示驱动、键盘扫描控制和“P监控的多功能外围芯片,内置RC震荡电路,可以动态驱动8位数码管或64只LED发光管,具有BCD译码、闪烁、移位等功能,还可以进行64键的键盘扫描。CH451通过级联的串行接口与单片机交换数据,并且提供上电复位和看门狗等监控功能。语音芯片选用的是1SDl420,它采用CMOS技术,内含震荡器、话筒前置放大、自动增益控制、防混淆滤波器、平滑滤波器、扬声器驱动及EEPROM阵列。最小的录放系统仅需麦克风、喇叭、两个按钮、电源及少数电阻电容。在录放操作结束后,芯片自动进入低功耗节电模式、功耗仅0.5p,A。根据外观设计要求,本文选用1.2英寸动态数码管,因为数码管的段电流是IOMA,因此电源采用220V交流转5V/lOW的普通电源即可。因为选用的数码管工作电压有3.6V和1.8V两种,电阻的阻值分别是140欧和320欧,因此选用1/8W的电阻。3.Proteus工作基于AT89S52单片机的电子万年历为例,介绍使Proteus是由英国Labcenterelectronics公司开发的用Proteus进行单片机应用系统仿真设计的方法。EDA工具软件,自1989年出现至今已有近二十年的历史,在1Proteus和KeilC51整构建单片机实验仿真环境全球广泛使用。该软件集成了高级原理布图、混合模式Proteus和Keil构建单片机实验仿真环境时,常用的SPICE电路仿真、PCB设计以及自动布线来实现一个完全的方法有如下两种:电子设计系统。它是一种混合电路的仿真工具,能对模拟电(1)KeilC51与Proteus离线联合使用路、数字电路、单片机及其外围电路进行动态仿真。①通过KeilC51编辑、修改、编译源程序并生成HEX等Proteus软件主要由两个模块组成:ARES和ISIS。前者单片机能识别的文件;主要用于PCB自动或人工布线;后者主要绘制电路原理图,⑦运行Proteus,将HEX文件与原理图中的单片机并可进行相应的仿真。作为一款EDA仿真软件,Proteus有(MCU)进行绑定即可。着丰富的元件库。Labcenter公司与相关的第三方软件公司(2)KeilC51与Proteus7.0在线联合仿真调试共同开发了8000多个模拟和数字电路中常用的SPICE模型①在计算机(Pc)上安装好TcP/IP协议;以及各种动态元件(基本元件如电阻、电容、各种二极管、三②下载并安装软件ProteusVSMaGDIDriver(即vd_极管、MOS管、555定时器等;74系列TTL元件和4000系magdi.exe),完成后Keil文件夹下的TOOLS.INI文件中的列CMOS元件;存储芯片包括各种常用的ROM、RAM、EEPROM;【C51J字段的最后两行增加了TDRV2=BIN\VDM51.DLL(用于两还有常见I℃器件等)。此外该软件还支持微处理器的仿真个软件的联接)和BOOKl=HLP\VDhDkGDI.HLP(帮助文档);(支持许多通用的微控制器,如PIC系列、AVR系列、8051系⑦进入KeilC51的开发环境建立一个工程文件,在选列等;同时它还支持ARM、PLD及各种外围芯片的仿真),并能中“Target”的情况下选择Prodect—Optionsfortarget;与常用的编译器,如Keil、IAR、Proton等进行协同调试。整④在“Debug”选项卡中选择左边的。Use”,在下拉框中选个过程与真实的硬件调试极其相似,在动态外设支持下的实“ProteusVSMSimulator”,再点击。Setting”设置通信接时输入和输出为实验者提供了一个最接近现实的调试环境。1:11,在Host后面添上i127.0.0.1”、端口号Port为8000,如果不是同一台电脑,在这里添上另一台电脑的IP地址(另一台电脑安装Proteus);.@打开ProteusISIS,在菜单栏中选择“Debug—Useremotedebugmonitor”,选中该项。注意:一定要把Keil的工程和Proteus的文件放到同一个目录下(这里所说的Keil的工程是指工程目录,即Proteus的工程文件要和Keil的工程文件夹放在同一层目录下)。3具体模块设计2.1综合计时模块综合计时模块分为计秒模块,计分模块,计时模块,计星期模块,计日模块,计月模块,计年模块等7个子模块,这7个子模块都有预置,计数和进位功能,设计思想如下:(1)计秒模块:以秒脉冲作为计秒电路的计数时钟信号,待计数至60瞬间,进位,计分电路加1,而计秒电路则清零并重新计秒。(2)计分模块、计时模块:其设计思想与计秒模块类似。(3)计星期模块:将计时电路产生的进位脉冲信号作为计星期模块的计数时钟信号,待计数至6瞬间,计星期模块返回0重新开始计数。(4)计日模块:将计时模块产生的进位脉冲信号作为计日模块的计数时钟信号,通过系统辨认,确定本月总天数X(包括28、29、30、31四种情况),待计数至X+1瞬间,进位,计月模块加1,而计日模块返回1重新开始计数。(5)计月模块:将计日模块产生的进位脉冲信号作为计月模块的计数时钟信号,待计数至12瞬间,进位,计年模块加1,而计月模块返回1重新开始计数。(6)计年模块:将计月模块产生的进位脉冲信号作为计年模块的计数时钟信号,待计数至100瞬间,计年模块返回0重新开始计数。下面以计日模块为例,对系统进行仿真,仿真图如下图2计日模块仿真图以上是对09年5月份的计日模块仿真,从仿真图中我们可以看到,5月份31天,MAX_DAYS用“11”来表示,送给后面的模块,此时对CLK时钟进行31分频。主要程序代码如下:ifld='1'thenday=data;elsIFCLK'EVENTANDCLK='1'THENcasemax_daysiswhen00=--28天ifday(7downto5)=000thenifday(3downto0)=1001thenday(3downto0)=0000;day(7downto4)=day(7downto4)+1;elseday(3downto0)=day(3downto0)+1;endif;co='0';elsifday(7downto4)=0010thenifday(3downto0)=1000thenday(3downto0)=0001;day(7downto4)=0000;co='1';elseday(3downto0)=day(3downto0)+1;co='0';endif;elsenull;endif;when01=--29天…when10=--30天…whenothers=--31天…Endcase;Endif;2.2数据调整模块对于系统中的数据调整模块,主要是通过模式键和调整键来完成。模式键负责切换正常时间计数模式和时间调整模式,调整模式切换顺序如图3所示。调整键负责在时间调整模式之下,对当前模式的计时结果进行调整。该模块采用状态机来完成。图3调整模式切换顺序2.3数码管显示模块系统一共选用8个数码管来完成显示,对要显示的数据分成两组,年、月、日一组,星期、时、分、秒一组,通过键盘选择控制。模块的接口如下:图4数码管显示模块图将此设计下载到目标芯片EPFLEX10K84-4中,整个系统运行稳定,计时精度高,从综合的报告显示,资源利用率较高。本文的创新点:选用FPGA实现电子万年历,外围电路简单,系统集成化程度高,设计灵活,精度也明显高于普通的电子万年历。3软件设计电子万年历的软件部分主要实现阳历、阴历计算,时间调整,语音报时等功能。采用模块化设计思想,便于程序的调试和维护,最终有C语言编程实现。程序流程图如图2所示。(主程序流程图)图24总结经过测试,本文设计的电子万年历具备显示直观、功能多样、电路简洁、成本低廉等诸多优点,符合电子计时器的发展趋势,具有广阔的市场前景。参考文献:(1)裴彦纯,陈志超.基于单片机系统的红外遥控器应用.现代仪器,2004(3)46—48.(2)高海生,杨文焕.单片机应用技术大全第三版.成都:西南交通大学出版社,2003:200.(3)王为青,邱文勋.51单片机应用开发案例精选.北京·人民邮电出版社.圈2主程序流程圈(4)赵国亮,侯国锐.单片机C语言编程与实例.北京:人民邮电出版社.(5)楼然苗,李光飞.单片机课程设计指导.北京:北京航空航天大学出版社,2005:152~178.(6)苏玉娜,程明等.基于FPGA的单片机外围接口电路设计[J].微计算机信息.2009,5-2:p173-174(7)沈明山.EDA技术及可编程器件应用实训[M].北京出版社:2006:223-224
本文标题:电子万历表的设计
链接地址:https://www.777doc.com/doc-2251787 .html