万年历设计.docx
- 文档编号:4385552
- 上传时间:2022-12-01
- 格式:DOCX
- 页数:67
- 大小:308.60KB
万年历设计.docx
《万年历设计.docx》由会员分享,可在线阅读,更多相关《万年历设计.docx(67页珍藏版)》请在冰豆网上搜索。
万年历设计
引言
电子万年历是一种非常广泛日常计时工具,对现代社会越来越流行。
它可以对年、月、日、周、时、分、秒进行计时,还具有闰年补偿等多种功能。
电子万年历设计是基于单片机进行的,可以显示年、月、日、时、分、秒、周,具有可调整日期和时间功能。
设计包含89C51单片机模块、LED数码管模块、键盘模块、DS1302模块。
89C51单片机作为核心,功耗小,能在3V的低压工作,电压可选用3~5V电压供电。
LED数码管动态扫描,对于显示数字最合适,价格适中,而且采用动态扫描法与单片机连接时,占用的单片机口线少。
DS1302的使用寿命长,误差小。
对于数字电子万年历采用直观的数字显示,可以同时显示年、月、日、周日、时、分、秒等信息,还具有时间校准等功能。
一.方案选择与确定
1.1 设计要求
1具有年、月、日、星期、时、分、秒等功能;
2时间与阴、阳历能够自动关联;
3具备年、月、日、星期、时、分、秒校准功能;
1.2系统基本方案选择和论证
1.2.1单片机芯片
PIC单片机
是MICROCHIP公司的产品,其突出的特点是体积小,功耗低,精简指令集,抗干扰性好,可靠性高,有较强的模拟接口,代码保密性好,大部分芯片有其兼容的FLASH程序存储器的芯片。
EMC单片机
是台湾义隆公司的产品,有很大一部分与PIC8位单片机兼容,且相兼容产品的资源相对比PIC的多,价格便宜,有很多系列可选,但抗干扰较差。
ATMEL单片机
ATMEl公司的8位单片机有AT89、AT90两个系列,AT89系列是8位Flash单片机,与8051系列单片机相兼容,静态时钟模式;AT90系列单片机是增强RISC结构、全静态工作方式、内载在线可编程Flash的单片机,也叫AVR单片机。
PHLIPIS51PLC系列单片机
PHILIPS公司的单片机是基于80C51内核的单片机,嵌入了掉电检测、模拟以及片内RC振荡器等功能,这使51LPC在高集成度、低成本、低功耗的应用设计中可以满足多方面的性能要求。
HOLTEK单片机
台湾盛扬半导体的单片机,价格便宜,种类较多,但抗干扰较差,适用于消费类产品。
TI公司单片机
德州仪器提供了TMS370和MSP430两大系列通用单片机.TMS370系列单片机是8位CMOS单片机,具有多种存储模式、多种外围接口模式,适用于复杂的实时控制场合;MSP430系列单片机是一种超低功耗、功能集成度较高的16位低功耗单片机,特别适用于要求功耗低的场合。
方案一
采用89C51芯片作为硬件核心,采用FlashROM,内部具有4KBROM存储空间,能于3V的超低压工作,而且与MCS-51系列单片机完全兼容,但是运用于电路设计中时由于不具备ISP在线编程技术,当在对电路进行调试时,由于程序的错误修改或对程序的新增功能需要烧入程序时,对芯片的多次拔插会对芯片造成一定的损坏。
方案二
采用AT89S52,片内ROM全都采用FlashROM;能以3V的超底压工作;同时也与MCS-51系列单片机完全该芯片内部存储器为8KBROM存储空间,同样具有89C51的功能,且具有在线编程可擦除技术,当在对电路进行调试时,由于程序的错误修改或对程序的新增功能需要烧入程序时,不需要对芯片多次拔插,所以不会对芯片造成损坏。
所以选择采用AT89S52作为主控制系统。
1.2.2显示模块
方案一
采用LED液晶显示屏,液晶显示屏的显示功能强大,可显示大量文字,图形,显示多样,清晰可见,但是价格昂贵,需要的接口线多,所以在此设计中不采用LED液晶显示屏。
方案二
采用点阵式数码管显示,点阵式数码管是由八行八列的发光二极管组成,对于显示文字比较适合,如采用在显示数字显得太浪费,且价格也相对较高,所以也不用此种作为显示。
方案三
采用LED数码管动态扫描,LED数码管价格适中,对于显示数字最合适,而且采用动态扫描法与单片机连接时,占用的单片机口线少。
所以采用了LED数码管作为显示。
1.2.3时钟芯片
方案一
直接采用单片机定时计数器提供秒信号,使用程序实现年、月、日、星期、时、分、秒计数。
采用此种方案虽然减少芯片的使用,节约成本,但是,实现的时间误差较大。
所以不采用此方案。
方案二
采用DS1302时钟芯片实现时钟,DS1302芯片是一种高性能的时钟芯片,可自动对秒、分、时、日、周、月、年以及闰年补偿的年进行计数,而且精度高,位的RAM做为数据暂存区,工作电压2.5V~5.5V范围内,2.5V时耗电小于300nA。
所以采用DS1302时钟芯片实现时钟。
1.3电路设计最终方案决定
综上各方案所述,对此次作品的方案选定:
采用89C51作为主控制系统;DS1302提供时钟;LED数码管动态扫描作为显示。
二.硬件电路构成
2.1电子万年历系统设计
2.1.1系统设计框图
AT89S52
主控制模块
图2-1系统设计框图
2.1.2系统硬件概述
本电路是由AT89S52单片机为控制核心,具有在线编程功能,低功耗,能在3V超低压工作;时钟电路由DS1302提供,它是一种高性能、低功耗、带RAM的实时时钟电路,它可以对年、月、日、周日、时、分、秒进行计时,具有闰年补偿功能,工作电压为2.5V~5.5V。
采用三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM数据。
DS1302内部有一个31*8的用于临时性存放数据的RAM寄存器。
可产生年、月、日、周日、时、分、秒,具有使用寿命长,精度高和低功耗等特点,同时具有掉电自动保存功能;温度的采集由DS18B20构成;显示部份由21个数码管,74ls138、74ls47译码器构成。
使用动态扫描显示方式对数字的显示。
2.2系统硬件各模块设计
2.2.1单片机主控制模块
主要性能
与MCS-51单片机产品兼容、8K字节在系统可编程Flash存储器、1000次擦写周期、全静态操作:
0Hz~33Hz、三级加密程序存储器、32个可编程I/O口线、三个16位定时器/计数器八个中断源、全双工UART串行通道、低功耗空闲和掉电模式、掉电后中断可唤醒、看门狗定时器、双数据指针、掉电标识符。
单片机的最小系统如下图所示,18引脚和19引脚接时钟电路,XTAL1接外部晶振和微调电容的一端,在片内它是振荡器倒相放大器的输入,XTAL2接外部晶振和微调电容的另一端,在片内它是振荡器倒相放大器的输出.第9引脚为复位输入端,接上电容,电阻及开关后够上电复位电路,20引脚为接地端,40引脚为电源端,如图2-2所示。
图2-2主控制系统
2.2.2时钟电路模块
DS1302是美国DALLAS公司推出的一种高性能、低功耗、带RAM的实时时钟电路,它可以对年、月、日、周日、时、分、秒进行计时,具有闰年补偿功能,工作电压为2.5V~5.5V。
采用三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM数据。
DS1302内部有一个31×8的用于临时性存放数据的RAM寄存器。
DS1302是DS1202的升级产品,与DS1202兼容,但增加了主电源/后背电源双电源引脚,同时提供了对后背电源进行涓细电流充电的能力。
(1)DS1302的控制字节
DS1302的控制字如表2-1所示。
控制字节的高有效位(位7)必须是逻辑1,如果它为0,则不能把数据写入DS1302中,位6如果0,则表示存取日历时钟数据,为1表示存取RAM数据;位5至位1指示操作单元的地址;最低有效位(位0)如为0表示要进行写操作,为1表示进行读操作,控制字节总是从最低位开始输出
表2-1DS1302的控制字格式
RAMRD
1A4A3A2A1A0
/CK/WR
(2)数据输入输出(I/O)
在控制指令字输入后的下一个SCLK时钟的上升沿时,数据被写入DS1302,数据输入从低位即位0开始。
同样,在紧跟8位的控制指令字后的下一个SCLK脉冲的下降沿读出DS1302的数据,读出数据时从低位0位到高位7。
如下图2-2所示
图2-2DS1302读/写时序图
(3)DS1302的寄存器
DS1302有12个寄存器,其中有7个寄存器与日历、时钟相关,存放的数据位为BCD码形式,其日历、时间寄存器及其控制字见表2-2。
表2-2DS1302的日历、时间寄存器
此外,DS1302还有年份寄存器、控制寄存器、充电寄存器、时钟突发寄存器及与RAM相关的寄存器等。
时钟突发寄存器可一次性顺序读写除充电寄存器外的所有寄存器内容。
DS1302与RAM相关的寄存器分为两类:
一类是单个RAM单元,共31个,每个单元组态为一个8位的字节,其命令控制字为C0H~FDH,其中奇数为读操作,偶数为写操作;另一类为突发方式下的RAM寄存器,此方式下可一次性读写所有的RAM的31个字节,命令控制字为FEH(写)、FFH(读)。
图2-4示出DS1302的引脚排列,其中Vcc1为后备电源,Vcc2为主电源。
在主电源关闭的情况下,也能保持时钟的连续运行。
DS1302由Vcc1或Vcc2两者中的较大者供电。
当Vcc2大于Vcc1+0.2V时,Vcc2给DS1302供电。
当Vcc2小于Vcc1时,DS1302由Vcc1供电。
X1和X2是振荡源,外接32.768KHz晶振。
RST是复位/片选线,通过把RST输入驱动置高电平来启动所有的数据传送。
RST输入有两种功能:
首先,RST接通控制逻辑,允许地址/命令序列送入移位寄存器;其次,RST提供终止单字节或多字节数据的传送手段。
当RST为高电平时,所有的数据传送被初始化,允许对DS1302进行操作。
如果在传送过程中RSTS置为低电平,则会终止此次数据传送,I/O引脚变为高阻态。
上电动行时,在Vcc大于等于2.5V之前,RST必须保持低电平。
中有在SCLK为低电平时,才能将RST置为高电平,I/O为串行数据输入端(双向)。
SCLK始终是输入端。
图2-4DS1302的引脚图
2.2.4显示模块
数码管是一类价格便宜使用简单,通过对其不同的管脚输入相对的电流,使其发亮,从而显示出数字能够显示时间、日期、温度等所有可用数字表示的参数的器件。
七段数码管的显示有两种,分别是直流驱动和动态显示驱动。
直流驱动。
是指每个数码管的每一个段码都由一个高,缺点是占用I/O端口多。
动态显示驱动,是将所有数码管通过分时轮流控制各个数码管的的COM端,就使各个数码管轮流受控显示。
将所有数码管的8个显示笔划"a,b,c,d,e,f,g,dp"的同名端连在一起,另外为每个数码管的公共极COM增加位选通控制电路,位选通由各自独立的I/O线控制,当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是那个数码管会显示出字形,取决于单片机对位选通COM端电路的控制,所以我们只要将需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮
采用动态扫描显示,由19个数码管,3个74LS164并口输出数码管显示。
P2口接1K限流电阻,再接8550三极管接到共阳数码管的CoM端作为选通位码,每位选择相应的列。
如图2-5所示。
图2-5显示部分
2.3电子万年历电路设计
2.3.1系统电路图
将各个模块组合起来就得到了系统电路图,如图2-6所示
图2-6系统电路图
2.3.2电路图分析
本电路是由89C51单片机为控制核心,具有在线编程功能,低功耗,能在3V超低压工作;时钟电路由DS1302提供,它是一种高性能、低功耗、带RAM的实时时钟电路,它可以对年、月、日、周日、时、分、秒进行计时,具有闰年补偿功能,工作电压为2.5V~5.5V。
采用三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM数据。
DS1302内部有一个31*8的用于临时性存放数据的RAM寄存器。
可产生年、月、日、周日、时、分、秒,具有使用寿命长,精度高和低功耗等特点,同时具有掉电自动保存功能;温度的采集由DS18B20构成;显示部份由19个数码管,74LS164等构成。
三.电子万年历软件设计
3.1程序流程框图
3.1.1总流程图
图3-1总程序流程图
3.1.2阳历程序流程图
图3-2计算阳历程序流程图
3.1.3阴历程序流程图
图3-3阴历程序流程图
3.1.4时间调整程序流程图
图3-4时间调整程序流程图
四仿真结果
图4-1仿真结果
五.结束语
通过此次毕业设计,我不仅把知识融会贯通,而且丰富了大脑,同时在查找资料的过程中也了解了许多课外知识,开拓了视野,认识了将来电子的发展方向,使自己在专业知识方面和动手能力方面有了质的飞跃。
毕业设计是我作为一名学生即将完成学业的最后一次作业,他既是对学校所学知识的全面总结和综合应用,又为今后走向社会的实际操作应用铸就了一个良好开端,毕业设计是我对所学知识理论的检验与总结,能够培养和提高设计者独立分析和解决问题的能力;是我在校期间向学校所交的最后一份综和性作业,从老师的角度来说,指导做毕业设计是老师对学生所做的最后一次执手训练。
其次,毕业设计的指导是老师检验其教学效果,改进教学方法,提高教学质量的绝好机会。
毕业的时间一天一天的临近,毕业设计也接近了尾声。
在不断的努力下我的毕业设计终于完成了。
在没有做毕业设计以前觉得毕业设计只是对这几年来所学知识的大概总结,但是真的面对毕业设计时发现自己的想法基本是错误的。
毕业设计不仅是对前面所学知识的一种检验,而且也是对自己能力的一种提高。
通过这次毕业设计使我明白了自己原来知识太理论化了,面对单独的课题的是感觉很茫然。
自己要学习的东西还太多,以前老是觉得自己什么东西都会,什么东西都懂,有点眼高手低。
通过这次毕业设计,我才明白学习是一个长期积累的过程,在以后的工作、生活中都应该不断的学习,努力提高自己知识和综合素质。
总之,不管学会的还是学不会的的确觉得困难比较多,真是万事开头难,不知道如何入手。
最后终于做完了有种如释重负的感觉。
此外,还得出一个结论:
知识必须通过应用才能实现其价值!
有些东西以为学会了,但真正到用的时候才发现是两回事,所以我认为只有到真正会用的时候才是真的学会了。
在此要感谢我们的指导老师韩老师对我悉心的指导,感谢老师们给我的帮助。
在设计过程中,我通过查阅大量有关资料,与同学交流经验和自学,并向老师请教等方式,使自己学到了不少知识,也经历了不少艰辛,但收获同样巨大。
在整个设计中我懂得了许多东西,也培养了我独立工作的能力,树立了对自己工作能力的信心,相信会对今后的学习工作生活有非常重要的影响。
而且大大提高了动手的能力,使我充分体会到了在创造过程中探索的艰难和成功时的喜悦。
虽然这个设计做的也不太好,但是在设计过程中所学到的东西是这次毕业设计的最大收获和财富,使我终身受益。
参考文献
【1】彭为等.单片机典型系统设计实例精讲[M]北京:
电子工业出版社,2006
【2】陈景初,单片机应用系统设计与实践[M],北京:
北京航空航天大学出版社。
【3】 李建忠.《单片机原理及应用》.西安电子科技大学出版, 2006.02
【4】 张俊谟.《单片机中级教程》.北京航空航天大学出版, 2006.03
【5】 余发山.《单片机原理及及应用技术》.中国矿业大学出版社, 2003.12
【6】 杨凌霄.《微型计算机原理及应用》.中国矿业大学出版社, 2004.08
【7】 李飞光.《单片机课程设计实例指导》.北京航空航天大学出版社,2004
【8】李群芳.单片机原理接口及应用[M].北京:
清华大学出版社,2005
附录:
系统程序清单
SCLKEQUP3.2
IOEQUP3.3
RSTEQUP3.4
YEARDATA66H
MONTHDATA65H
WEEKDATA64H
DAYDATA63H
HOURDATA62H
MINTUEDATA61H
SECONDDATA60H
DS1302_ADDRDATA32H
DS1302_DATADATA31H
ORG0000H
AJMPSTART
ORG0003H
RETI
ORG000BH
RETI
ORG0013H
RETI
ORG001BH
LJMPINTT1
ORG0023H
RETI
ORG002BH
RETI
;************************************
;*主程序*
;************************************
START:
SETBEA
MOVSCON,#00H;串行输出,方式0
MOVTMOD,#10H;计数器1,方式1
MOVTL1,#00H
MOVTH1,#00H
MOVDS1302_ADDR,#8EH
MOVDS1302_DATA,#00H;允许写1302
LCALLWRITE
MOVDS1302_ADDR,#90H
MOVDS1302_DATA,#0A6H;1302充电,充电电流1.1mA
LCALLWRITE
MAIN1:
MOVDS1302_ADDR,#8DH;READOUTYEAR
LCALLREAD
MOVYEAR,DS1302_DATA
MOVDS1302_ADDR,#8BH;READOUTWEEK
LCALLREAD
MOVWEEK,DS1302_DATA
MOVDS1302_ADDR,#89H;READOUTMONTH
LCALLREAD
MOVMONTH,DS1302_DATA
MOVDS1302_ADDR,#87H;READOUTDAY
LCALLREAD
MOVDAY,DS1302_DATA
MOVDS1302_ADDR,#85H;READOUTHOUR
LCALLREAD
MOVHOUR,DS1302_DATA
MOVDS1302_ADDR,#83H;READOUTMINTUE
LCALLREAD
MOVMINTUE,DS1302_DATA
MOVDS1302_ADDR,#81H;READOUTSECOND
LCALLREAD
MOVSECOND,DS1302_DATA
MOVR0,YEAR;年分离,送显示缓存
LCALLDIVIDE
MOV7BH,R1
MOV4BH,R1
MOV7CH,R2
MOV4CH,R2
MOV78H,WEEK
MOV48H,WEEK
MOVR0,MONTH;月分离,送显示缓存
LCALLDIVIDE
MOV79H,R1
MOV49H,R1
MOV7AH,R2
MOV4AH,R2
MOVR0,DAY;日分离,送显示缓存
LCALLDIVIDE
MOV76H,R1
MOV46H,R1
MOV77H,R2
MOV47H,R2
MOVR0,HOUR;小时分离,送显示缓存
LCALLDIVIDE
MOV74H,R1
MOV44H,R1
MOV75H,R2
MOV45H,R2
MOVR0,MINTUE;分分离,送显示缓存
LCALLDIVIDE
MOV72H,R1
MOV42H,R1
MOV73H,R2
MOV43H,R2
MOVR0,SECOND;秒分离,送显示缓存
LCALLDIVIDE
MOV70H,R1
MOV40H,R1
MOV71H,R2
MOV41H,R2
LCALLDISPLAY
LCALLGENGXIN;更新农历程序
JNBP1.1,SETG
JNBF0,SSS
CLRP1.3;闰月,则p1.3清0,指示灯亮
LJMPMAIN1
SSS:
SETBP1.3;非闰月,则p1.3置位,指示灯灭
LJMPMAIN1
;*******************************
;*公历设置程序*
;*******************************
SETG:
SETBTR1
SETBET1
CLR08H
CLR09H
CLR0AH
CLR0BH
CLR0CH
CLR0DH
CLR0EH
CLR0FH
MOVDS1302_ADDR,#8EH
MOVDS1302_DATA,#00H;允许写1302
LCALLWRITE
MOVDS1302_ADDR,#80H
MOVDS1302_DATA,#80H;1302停止振荡
LCALLWRITE
GWAIT:
LCALLDISPLAY
JNBP1.1,GWAIT
SETG1:
LCALLDISPLAY
JNBP1.1,SETG2
JNBP1.2,GADDYEAR
AJMPSETG1
GADDYEAR:
MOVR7,66H;年加1
LCALLADD1
MOV66H,A
CJNEA,#51H,GADDYEAR1
MOV66H,#01H
GADDYEAR1:
MOVDS1302_ADDR,#8CH;年值送1302
MOVDS1302_DATA,66H
LCALLWRITE
MOVR0,66H
LCALLDIVIDE;年分离送显示缓冲
MOV4BH,R1
MOV7BH,R1
MOV4CH,R2
MOV7CH,R2
WAITT1:
LCALLDISPLAY
JNBP1.2,WAITT1
AJMPSETG1
SETG2:
SETB0AH;调月时闪标志
GWAIT2:
LCALLDISPLAY
JNBP1.1,GWAIT2
SETG3:
LCALLDISPLAY
JNBP1.1,SETG4
JNBP1.2,GADDMONTH
AJMPSETG3
GADDMONTH:
MOVR7,65H;月加1
LCALLADD1
MOV65H,A
CJNEA,#13H,GADDMONTH1
MOV65H,#01H
GADDMONTH1:
MOVDS1302_ADDR,#88H;月值送1302
MOVDS1302_DATA,65H
LCALLWRITE
MOVR0,65H
LCALLDIVIDE;月分离送显示缓冲
MOV79H,R1
MOV49H,R1
MOV7AH,R2
MOV4AH,R2
WAITT2:
LCALLDISPLAY
JNBP1.2,WAITT2
AJMPSETG3
SETG4:
SETB0BH;调日时闪标志
GWAIT4:
LCALLDISPLAY
JNBP1.1,GWAIT4
SETG5:
LCALLDISPLAY
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 万年历 设计