万年电子日历_第1页
万年电子日历_第2页
万年电子日历_第3页
万年电子日历_第4页
万年电子日历_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

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

文档简介

1、电子技术课程设计-万年电子日历设计专业年级:09级电子信息工程专业姓 名:贺厅学 号: 20094054075指导教师:曾水玲日 期: 2011年12月21日万年电子日历设计一、选题依据随着电子技术的迅速发展,特别是随大规模集成电路出现,给人类生活带来 了根本性的改变。由其是单片机技术的应用产品已经走进了千家万户。电子万年 历的出现给人们的生活带来的诸多方便。本文首先描述系统硬件工作原理,并附以系统结构框图加以说明,着重介绍了本 系统所应用的各硬件接口技术和各个接口模块的功能及工作过程,其次,详细阐 述了程序的各个模块和实现过程。本设计以数字集成电路技术为基础,单片机技 术为核心。本文编写的主

2、导思想是软硬件相结合,以硬件为基础,来进行各功能 模块的编写。二、设计要求及技术指标设计要求: 显示准确的北京时间(时、分、秒),可用24小时制式;随时可以调校时间。技术指标: 增加公历日期显示功能(年、月、日),年号只显示最后两位;随时可以调校年、月、日;允许通过转换功能键转换显示时间或日期。三、电路及结构及其工作原理电路的结构框图返回+J图1电子时钟计算框图2.电路的原理图图2设计电路原理图电路工作原理只使用第一组工作寄存器,功能分布如下:“时钟”基准时间由单片机内部定时中断来提供,定时时间应该 乘以一个整数得到“秒”,且不宜太长或太短,最长不能超过16位定时 器的最长定时时间,最短不能少

3、于定时中断服务程序的执行时间。一般 来说,基准时间越短,越有利于提高时钟运行的精确度。本实验定时5mS。 乘以一个整数200得到“1秒”. 用一个计数器(R4)对定时中断的次数进行计数,从而可以实现 “秒”定时,同理可以实现“分”定时和“时”定时,甚至于“日”、“月”、 “年”定时。 显示器采用动态驱动时要注意到:LED的“启辉时间”和“余 辉时间”。驱动信号的维持时间必须大于启辉时间;而驱动信号的间歇时 间必须小于余辉时间。“启辉时间”和“余辉时间”与驱动电流的大小 有关,驱动电流越大,启辉时间越短,而余辉时间越长。但是,驱动电 流的大小受到驱动电路的驱动能力和LED极限功耗的限制。本实验采

4、用 了 74ls244和品体管8550驱动,并进行适当的延时3ms解决上述问题。LED的余辉时间使动态驱动显示得到保证,但也要注意到它在更 新显示内容时,可能造成显示字符的混乱模糊。为此,在把“更新显示 内容”写入显示器之前,必须把所有的LED熄灭,即要把一个“熄灭驱 动信号”先写入显示器。对于按键的处理,采用中断。产生中断后先判有无按键被按下, 还要考虑到“去抖动影响”问题,可采用软件延迟法解决这个问题,延 迟时间至少10mS。而单纯进行软件延时的话会令到显示管产生断续的情 况,故调用显示程序作为延时时间。这样就合理地处理好这两者的矛盾 了。把键盘的按键分两种情况来处理,操作简单。 调整时间

5、时,先按下KA键,(KA键为选择调整位置的键,如选 调整秒或分),而此时的KB键只是用来加一操作。在调整时间状态下, 若在十秒内检测到没有任何按键按下,则返回正常显示时钟状态。 而不调整时间,即不按下KA键,KB的键只用来切换显示日期 和时钟。对于自动识别“月大、月小”和“平年、闰年”的问题,主要考 虑:月大、月小:17月:逢单月为31天;逢双月为30天,其中2月另行处理。812月:逢单月为30天;逢双月为31天。平年、闰年:仅仅处理2月份的天数:平年的2月份天数为28天,闰年的2 月份天数为29天。4.程序编写如下:ORG 0000HLJMP STARTORG 0003HLJMP PROIN

6、T0;int0用来切换时钟调整位置ORG 0013HLJMP PROINT1;用来调整时间,只加不减ORG 001BHLJMP PROTIME;5ms的延迟,计数200次则为1秒ORG 0030H;主程序TABLE: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H;0 1 2 3 4 5 6 7 8 9ORG 0050HSTART: MOV TCON,#05H;中断初始化MOV IE ,#8DHMOV TMOD,#10HMOV TH1,#0eCHMOV TL1,#78H;定时器初始化MOV 31H,#0AH;10秒MOV 32H,#1EH;30分

7、MOV 33H,#09H;9点MOV 34H,#0AH;10号MOV 35H,#06H;6 月MOV 36H,#05H;2005 年MOV 37H,#14H ;R7 存放切换标志 0 NORMAL , 1 HOUR ,2 MINUTE ,3 SECOND ,4 YEAR,5 MONTH,6 DAYMOV R1,#00HMOV R7,#00HMOV 40H,#00HMOV 41H,#00HMOV R6,#00HMOV R4,#00H mov r3,#00h;确定在调时不按键的最长时间,10秒后返回normal状态 ;切换标志;十六进制转换BCD的高位;十六进制转换BCD的低位;调时的位闪烁的时间

8、间隔;用来计数5ms的中断次数,200次则一秒SETB TR1;开始计时AGAIN:ACALL PROSHOW;显示AJMP AGAINPROSHOW:CJNE R3,#00H,SHOWDATE;如果r3等于1就显示日期,等于0就显示时钟CJNE R7,#04H,DATE1;显示程序AJMP SHOWDATE;showdate 显示年月日DATE1: CJNE R7,#05H,DATE2AJMP SHOWDATEDATE2: CJNE R7,#06H,SHOWCLOCKAJMP SHOWDATEshowCLOCK:MOV R0,33H ACALL PROHTOD CJNE R7,#01H,CL

9、K1 INC R6CJNE R6,#03H,CLK2 MOV R6 ,#00HCLK1: clr P2.4 mov a,41H MOV P0, a ACALL DELAY3MSCLK2: SETB P2.4CLR P2.5 mov a,40H MOV P0,aACALL DELAY3MSSETB P2.5;showclock显示时分秒,先显示时;若处于调时状态,则该位闪烁;显示时的低位;显示时的高位MOV R0,32H ACALLPROHTOD CJNE R7,#02H,CLK3 INC R6CJNE R6,#03H,CLK4 MOV R6,#00HCLK3: CLR P2.2 mov a,4

10、1H MOV P0, a ACALL DELAY3MSCLK4: SETB P2.2CLR P2.3 mov a,40h MOV P0,a ACALL DELAY3MSSETB P2.3MOV R0,31H ACALL PROHTOD CJNE R7,#03H,CLK5 INC R6CJNE R6,#03H,CLK6 MOV R6,#00HCLK5: CLR P2.0 mov a,41H MOV P0, a ACALL DELAY3MSCLK6: SETB P2.0CLR P2.1 mov a,40h MOV P0,a ACALL DELAY3MSSETB P2.1RETSHOWDATE:MO

11、V R0,36H ACALL PROHTOD CJNE R7,#04H,DAY1 INC R6CJNE R6,#03H,DAY2 MOV R6,#00HDAY1: CLR P2.4;若处于调时状态,则该位闪烁;显示分的低位;显示分的高位;显示秒;若处于调时状态,则该位闪烁;显示秒的低位;显示秒的高位;显示年;若处于调时状态,则该位闪烁MOV P0,41HACALL DELAY3MS;显示年的低位DAY2: SETB P2.4CLR P2.5MOV P0,40HACALL DELAY3MSSETB P2.5MOV R0,35HACALL PROHTODCJNE R7,#05H,MONTH1INC

12、 R6CJNE R6,#03H,MONTH2MOV R6,#00HMONTH1:CLR P2.2MOV P0,41HACALL DELAY3MSMONTH2:SETB P2.2CLR P2.3MOV P0,40HACALL DELAY3MSSETB P2.3MOV R0,34HACALL PROHTODCJNE R7,#06H,YEAR1INC R6CJNE R6,#03H,YEAR2MOV R6,#00HYEAR1: CLR P2.0;显示年的高位;显示月;若处于调时状态,则该位闪烁;显示月的低位;显示月的高位;显示日;若处于调时状态,则该位闪烁MOV P0,41HACALL DELAY3M

13、SYEAR2: SETB P2.0CLR P2.1MOV P0,40HACALL DELAY3MSSETB P2.1RETPROHTOD:PUSH ACCMOV A,R0;十六进制数转换成bcd码,且可以直接输出p0 口MOV B,#0AHDIV ABMOV DPTR,#O030HMOVC A,A+DPTRMOV 40H,AMOV A,BMOVC A,A+DPTRMOV 41H,APOP ACCRETDELAY3MS:;DELAY3MSMOV 45H,#08HDELAY1: MOV 46H,#0FFHDELAY2: DJNZ 46H,DELAY2DJNZ 45H,DELAY1RETPROINT

14、0:CLR EX0;切换键中断程序MOV R3,#00HACALL PROSHOWMOV C,P3.2JC IEXIT0MOV R1,#00HINC R7CJNE R7,#07H,IEXIT0MOV R7,#00HINT01: MOV C,P3.2JC INT02ACALL PROSHOWAJMP INT01INT02: ACALL PROSHOWIEXIT0: SETB EX0RETIPROINT1:CLR EX1ACALL PROSHOWMOV C,P3.3JC IEXIT1LCALL ISYEAR;判断平年闰年LCALL ISMONTH;判断月份,确定最大日数MOV R1,#00HCJN

15、E R7,#00H,NEXT1;若不是调时状态,按此键就是切换显示日期、时钟INC R3CJNE R3,#02H,IEXIT1MOV R3,#00HAJMP IEXIT1NEXT1: mov r3,#00hCJNE R7,#03H,NEXT2;修改秒位INC 31HMOV A,31HCJNE A,#3CH,INT11;遇 60 变 0MOV 31H,#00HAJMP IEXIT1NEXT2: CJNE R7,#02H,NEXT3;修改分位INC 32HMOV A,31HCJNE A,#3CH,INT11;遇 60 变 0MOV 31H,#00HAJMP IEXIT1NEXT3: CJNE R7

16、,#01H,NEXT4;修改时位INC 33HMOV A,33HCJNE A,#18H,INT11;遇 24 变 0MOV 33H,#00HAJMP IEXIT1NEXT4: CJNE R7,#06H,NEXT5;修改日INC 34HMOV A,34HCJNE A,49H,INT11倒月底就返回月初MOV 34H,#01HAJMP IEXIT1NEXT5: CJNE R7,#05H,NEXT6;修改月INC 35HMOV A,35HCJNE A,#0DH,INT11;十二月过后就跳回1月MOV 35H,#01HAJMP IEXIT1NEXT6: CJNE R7,#04H,INT11;修改年IN

17、C 36HCJNE A,#64H,INT11MOV 36H,#00HINT11: MOV C,P33JC INT12ACALL PROSHOWAJMP INT11INT12: ACALL PROSHOWIEXIT1: setb EX1RETIPROTIME:MOV TMOD,#10HMOV TH1,#3CHMOV TL1,#60H setb tr1;定时器初始化INC R4CJNE R4,#0c8H,EXITMOV R4,#00HCJNE R7,#00H,DIAOSHIAJMP NORMALDIAOSHI:INC R1;计满1秒则清零;调时不按键的最长时间为10秒,在此期间又键按下重新计时CJ

18、NE R1,#0AH,EXITMOV R7,#00HMOV R1,#00HAJMP EXIT;到10秒则返回正常显示状态NORMAL:ACALL ISYEAR;判断平闰年,返回标志48h,0为平年,1为闰年ACALL ISMONTH;判断哪个月,返回该月的最大日数,存放在49hINC 31HMOV A,31H;秒加一CJNE A,#3CH,EXITMOV 31H,#00HINC 32H;分加一MOV A,32HCJNE A,#3CH,EXITMOV 32H,#00HINC 33H;时加一MOV A,33HCJNE A,#18H,EXITMOV 33H,#00HINC 34H;日加一MOV A,

19、34HCJNE A,49H,EXITMOV 34H,#01HINC 35H;月加一MOV A,35HCJNE A,#0DH,EXITMOV 35H,#01HINC 36H;年加一MOV A,36HCJNE A,#64H,EXITMOV 36H,#00HEXIT:RETIISYEAR: MOV A,36H ;判断平闰年MOV B,#04HDIV ABMOV A,BCJNE A,#00H,EXITYEAR1MOV 48H,#01H;闰年SJMP EXITYEAREXITYEAR1:MOV 48H,#00H;平年EXITYEAR:RETIISMONTH:;开始检查月份;判断二月;平年为28天,赋29

20、给49h;闰年为29天,赋30天给49hMOV A,35HCJNE A,#02H,NEXTMON1MOV R2,48HCJNE R2,#00H,RUNNIANMOV 49H,#1DHAJMP EXITMONTH RUNNIAN:MOV 49H,#1EHAJMP EXITMONTHNEXTMON1:CJNE A,#04H,NEXTMON2AJMP XIAOYUENEXTMON2:CJNE A,#06H,NEXTMON3AJMP XIAOYUENEXTMON3:CJNE A,#09H,NEXTMON4AJMP XIAOYUENEXTMON4:CJNE A,#0BH,DAYUEXIAOYUE: MOV 49H,#1FH;四,六,九,十一月是小月,30天,但应该赋31天给比较值49h,淇他月份为大月,31天,赋32天给49hAJMP EXITMONTH DAYUE: MOV 49H,#20H EXITMONTH:RETIEND四、电路主要元件简介 89C51IC座(40脚)3个(其中1个用于接插89C51、2个用于接插LED段数码管)。 74LS2441个(用于驱动6个共阳的LED段数码管)。IC座(20脚) 1个(用于接插

温馨提示

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

评论

0/150

提交评论