电子万年历的设计制作.doc_第1页
电子万年历的设计制作.doc_第2页
电子万年历的设计制作.doc_第3页
电子万年历的设计制作.doc_第4页
电子万年历的设计制作.doc_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

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

文档简介

电子万年历11 功能要求电子万年历能显示阳历年、月、日、星期、小时、分、秒和阴历月、日、温度、节假日,在显示阴历时间时,能标明是否为闰年。21方案论证按照系统设计功能的要求,初步确定设计系统由主控模块、显示模块、键盘接口模块共4个模块组成。主控芯片使用51系列STC89C52单片机,时钟芯片使用美国DALLAS公司推出的一种高性能、低功耗、带RAM的实时时钟DS1302。采用DS1302作为主要计时芯片,可以做到计时准确。更重要的是,DS1302可以在很小电流的后备电源(2.55.5v电源,在2.5v时耗电小于300nA)下继续计时,并可以编程选择多种充电电流来对后备电源进行慢速充电,可以保证后备电源基本不耗电。图3.1 电子万年历电路系统构成框图显示模块采用12864液晶屏,键输入采用查询法实现调整功能。系统由主控制器STC89C52、时钟芯片DS1302、串口显示电路及键扫描电路组成。2.2 主控制器STC89C52台湾宏晶公司生产的STC89(:52单片机采用高性能的静态80C51设计,由先进工艺制造,并带有非易失性Flash程序存储器。它是一种高性能、低功耗的8位CMOS微处理芯片,市场应用最多。主要性能特点有:8 KB Flash ROM,可以擦除1 000次以上,数据保存10年。256字节内部RAM。电源控制模式 时钟可停止和恢复; 空闲模式; 掉电模式。6个中断源。4个中断优先级。4个8位IO口。全双工增强型UART。 3个16位定时计数器,TO、T1(标准80C51)和增加的T2(捕获和比较)。全静态工作方式:024 MHz。2.3 时钟电路DSl3021DSl302的性能特性实时时钟,可对秒、分、时、日、周、月以及带闰年补偿的年进行计数;用于高速数据暂存的318位RAM;最少引脚的串行IO;2555 V电压工作范围;25 V时耗电小于300 nA;用于时钟或RAM数据读写的单字节或多字节(脉冲方式)数据传送方式;简单的3线接口;可选的慢速充电(至VCC1)的能力。DSl302时钟芯片包括实时时钟日历和31字节的静态RAM。它经过一个简单的串行接口与微处理器通信。实时时钟日历提供秒、分、时、日、周、月和年等信息。对于小于31天的月和月末的日期自动进行调整,还包括闰年校正的功能。时钟的运行可以采用24 h或带AM(上午)PM(下午)的12 h格式。采用三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM数据。Dsl302有主电源后备电源双电源引脚:V CC1在单电源与电池供电的系统中提供低电源,并提供低功率的电池备份;V CC2在双电源系统中提供主电源,在这种运用方式中,V CC1连接到备份电,以便在没有主电源的情况下能保存时间信息以及数据。Dsl302由V CC1或V CC2中较大者供电。当V CC2大于V CC1+02 V时,V CC2给DSl302供电;当V CC2小于V CC1时,DSl302由V CC1供电。 2.4 DSl302数据操作原理 DSl302在任何数据传送时必须先初始化,把RST脚置为高电平,然后把8位地址和命令字装入移位寄存器,数据在SCLK的上升沿被输入。无论是读周期还是写周期,开始8位指定40个寄存器中哪个将被访问到。在开始8个时钟周期,把命令字节装入移位寄存器之后,另外的时钟周期在读操作时输出数据,在写操作时写人数据。时钟脉冲的个数在单字节方式下为8加8,在多字节方式下为8加字节数,最大可达248字节数。 如果在传送过程中置RST脚为低电平,则会终止本次数据传送,并且IO引脚变为高阻态。上电运行时,在V CC25 V之前,RST脚必须保持低电平。只有在SCLK为低电平时,才能将RST置为高电平。DSl302的引脚及内部结构图如图33所示,表31为各引脚的功能。 Dsl302的控制字如图34所示。控制字节的最高有效位(位7)必须是逻辑1;如果它为O,则不能把数据写入到DSl302中。位6如果为0,则表示存取日历时钟数据;为1表示存取RAM数据。位51(A4A0)指示操作单元的地址。最低有效位(位O)如为0,表示要进行写操作;为1表示进行读操作。控制字节总是从最低位开始输入输出。 为了提高对32个地址的寻址能力(地址命令位15=逻辑1),可以把时钟日历或RAM寄存器规定为多字节(burst)方式。位6规定时钟或RAM,而位0规定读或写。在时钟日历寄存器中的地址931或RAM寄存器中的地址31不能存储数据。在多字节方式中,读或写从地址0的位O开始。必须按数据传送的次序写最先的8个寄存器。但是,当以多字节方式写RAM时,为了传送数据不必写所有31字节。不管是否写了全部31字节,所写的每一字节都将传送至RAM。 Dsl302共有12个寄存器,其中有7个寄存器与日历、时钟相关,存放的数据位为BCD码形式。其日历、时间寄存器及其控制字见表32,其中奇数为读操作,偶数为写操作。 时钟暂停:秒寄存器的位7定义位时钟暂停位。当它为1时,DSl302停止振荡,进入低功耗的备份方式。通常在对DSl302进行写操作时(如进入时钟调整程序),停止振荡。当它为0时,时钟将开始启动。AMPM1224小时方式:小时寄存器的位7定义为12或24小时方式选择位。它为高电平时,选择12小时方式。在此方式下,位5是AMPM位,此位是高电平时表示PM,低电平表示AM。在24小时方式下,位5为第二个10小时位(2023 h)3002 DSl302的晶振选用32.768 kHz,电容推荐值为6 pF,因为振荡频率较低,也可以不接电容,对计时精度影响不大。2.5显示电路的设计显示部分采用12864液晶屏,减少了硬件的焊接难度,并且还可以显示其它图案和汉字, 2.6键盘接口的设计 由于按键只有4个,用普通按钮接10 k上拉电阻,用查询法完成读键功能。31 系统程序的设计32 阳历程序设计 因为使用了时钟芯片DSl302,阳历程序只需从DSl302各寄存器中读出年、周、月、日、小时、分、秒等数据,再处理即可。在首次对DSl302进行操作之前,必须对它进行初始化,然后从DSl302中读出数据,再经过处理后,送给显示缓冲单元。阳历程序流程图见图36所示。图3.6 阳历程序流程图33 时间调整程序设计 调整时间用4个调整按键,1个作为控制用,1个作为切换,另外2个作为加和减用,分别定义为控制按键、切换按键,加按键、减按键。在调整时间过程中,要调整的位与别的位应该有区别,所以增加了闪烁功能,即凋整的位一直在闪烁,直到调整下一位。闪烁原理就是,让要调整的一位每隔一定时间熄灭一次,比如说50 ms。利用定时器计时,当达到50 ms溢出时,就送给该位熄灭符,在下一次溢出时,再送正常显示的值,不断交替,直到调整该位结束。此时送正常显示值给该位,再进入下一位调整闪烁程序。 34 阴历程序设计 阴历程序的实现是要靠阳历日期来推算的。要根据阳历来推算阴历日期,首先要设计算法。推算方法是,根据阳历当前日期在一年中的天数来计算阴历日期。阳历一个月不是30天就是31天(2月除外,闰年2月为29天,平年2月为28天)。阴历一年有12个月或13个月(含闰月),一个月为30天或29天。如果把一个只有29天的月称为小月,用I为标志,把30天的月称为大月,用0为标志,那么12位二进制就能表示一年12个月的大小。如果有闰月,则把闰月的月份作为一个字节的高4位,低4位表示闰月大小,大月为0,小月为1,这样一个字节就包含了所有闰月的信息。阴历春节和阳历元旦相差的天数也用一个字节表示。总共用4字节就可以存储一年中任何一天阳历和阴历的对应关系的有关数据,例如2004年的阴历和阳历对应关系如表34所列。表34 2004年的阴历和阳历对应关系表月份123456789101112闰2月大小小大大大小大小大小大小大小天数1000101010101二进制293030302930293029302930十六进制425221 2004年的春节和元旦差21天,这样2004年的信息表示为:21,42H,52H,21H。其中表示12个月大小信息的字节,第4位和第7位不用。第1个字节为十进制,其它的都为十六进制。按此方法,50年的阳历和阴历对应关系表总共使用200字节。有了算法和数据以后,就可设计软件了。先要根据当前阳历的日期,算出阳历为该年中的第几天。图38为计算阳历中任何一天在该年中为第几天的程序流程图。图3.8 计算阳历天数程序流程图 计算出当前阳历日期为该年中的第几天后,再减去阳历该年春节和元旦的日差,如果够减,则相减的结果就是阴历在该年的总第几天了。根据该数据就可以推算出具体的当前阴历日期;如果不够减,则表示当前阴历年为阳历年的前一年。这种情况下,根据实际,当前阴历日期会处于阴历11月或12月,此时春节和元旦的日差减去前面计算出的当前阳历日期在阳历年为第几天的数据,其结果表示当前阴历日期离春节的天数。 在整个转换程序中,这里面的数据不能被覆盖。计算出阳历总天数后,就可以根据它来推算阴历日期。推算方法是,先用总天数减去春节和元旦的日差,如果结果为1,则该天正好是春节(因为春节在元旦之后,在计算春节和元旦的日差时,假设元旦为O天,春节为n天,则日差为n。而前面计算的阳历总天数是该天在该年中的第几天,是以元旦为1而得到的,与计算春节和元旦日差的这种方法相比,其数值少了1,所以要在原来本应该以0作为该天就是春节的依据的基础上加1,所以以1作为该天是春节的标志);如果结果小于1,则阴历应该是阳历的前一年;如果结果大于1,说明阳历和阴历为同一年。再根据查表所得的该年的阴历的闰月和大小月的信息,就可以推算出该天的阴历日期了。图39为由总天数推算出阴历日期的程序流程图。35调试及性能分析5 .1 调试步骤 调试分为硬件调试和软件调试。硬件调试主要是检测硬件电路是否有短路、断路、虚焊等。DSl302的硬件电路很简单,只通过3根线与单片机相连,很容易检测,主要是检查其引脚,如晶振和电源等是否接好

温馨提示

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

评论

0/150

提交评论