1、*摘要:本设计以数字集成电路技术为基础,单片机技术为核心。软件设计采用模块化结构,汇编语言编程。系统通过LED显示数据,可以显示公历日期(年、月、日、时、分、秒)。在内容安排上首先描述系统硬件工作原理,着重介绍了各硬件接口技术和各个接口模块的功能;其次,详细的阐述了程序的各个模块和实现过程。关键词:单片机;万年历Electronic calendarLIU TAOXian aviation technology collegeAbstract: The design is based on digital integrate circuit, microcontroller technolog
2、y is the core of the system. The software design uses module structure and adapts microcontroller assemble language. The system can display calendar date, including year, month, week, hour, minute, second and week. The work principle of the system is discussed in this paper, hardware interface and m
3、odule function are reported primarily in the system.目 录前言 .II第一章 设计要求 .1第二章方案论证与设计 .22.1控制器部分方案论证2.2显示部分的方案论证2.3系统设计第三章各硬件介绍 63.1AT89S51的引脚说明3.274LS164简介第四章系统硬件设计所需的器材.8第五章系统软件总体设计 10第六章主程序流程图及按键功能的介绍 14第七章 闰年、月份计算流程框图15第八章安装制作 .16第九章 程序 .17第十章结束语 22参考资料 23附表1前 言电子万年历是实现对年,月,日,时,分,秒数字显示的计时装置,广泛用于个人家
4、庭,车站, 码头,办公室,银行大厅等场所,成为人们日常生活中的必需品。数字集成电路的发展和石英晶体振荡器的广泛应用,使得数字钟的精度远远超过老式钟表。钟表的数字化给人们生产生活带来了极大的方便,在此基础上完成的万年历精度高,功能易于扩展。可扩展成为诸如定时自动报警、按时自动打铃、时间程序自动控制、定时广播、自动起闭路灯、定时开关烘箱、通断动力设备、甚至各种定时电气的自动启用等电路。所有这些,都是以钟表数字化为基础的。因此,研究数字时钟及扩大其应用有着非常现实的意义。本设计就是数字时钟简单的扩展应用。23第一章设计要求本设计准备实现的功能(1)显示公历日期功能(年、月、日、时、分、秒),并且是双
5、位显示。(2)可随时调校年、月、日或时、分(3)可每次增一进行时间调节。第二章方案论证与设计2.1控制器部分方案论证 方案一:可采用ALTERA公司的FLEX10K系列PLD器件。设计起来结构清晰,各个模块,从硬件上设计起来相对简单,控制与显示的模块间的连接也会比较方便。但是考虑到本设计的特点,EDA在功能扩展上比较受局限,而且EDA占用的资源也相对多一些。从成本上来讲,用可编程逻辑器件来设计也没有什么优势。方案二:凌阳16位单片机有丰富的中断源和时基。它的准确度相当高,并且C语言和汇编兼容的编程环境也很方便来实现一些递归调用。I/O口功能也比较强大,方便使用。用凌阳16位单片机做控制器最有特
6、色的就是它的可编程音频处理,可完成语音的录制播放和识别。这些都方便对设计进行扩展,使设计更加完善。成本也相对低一些。但是,在控制与显示的结合上有些复杂,显示模组资源相对有限,而且单片机的稳定性不是很高,而且就需要完成万年历这个不太复杂的设计可以不必用凌阳16位单片机来完成,采用51单片机既能够实现既定功能,成本也不高。综合考虑最后选择用51单片机来作为中心控制器件。硬件控制电路主要用了AT89S51芯片处理器、LCD显示器等。根据各自芯片的功能互相连接成电子万年历的控制电路。软件控制程序主要有主控程序、电子万年历的时间控制程序、时间显示及星期显示程序等组成。主控程序中对整个程序进行控制,进行了
7、初始化程序及计数器、还有键盘功能程序、以及显示程序等工作,时间控制程序是电子万年历中比较重要的部分。时间控制程序体现了年、月、日、时、分、秒及星期的计算方法。时间控制程序主要是定时器0计时中断程序每隔10ms中断一次当作一个计数,每中断一次则计数加1,当计数100次时,则表示1秒到了,秒变量加1,同理再判断是否1分钟到了,再判断是否1小时到了,再判断是否1天到了,再判断是否1月到了,再判断是否1年到了,若计数到了则相关变量清除0。先给出一般年份的每月天数。如果是闰年,第二个月天数不为28天,而是29天。再用公式sv1 +(y1/4)(y1/100)+(y1/400)+ d计算当前显示日期是星期
8、几,当调节日期时,星期自动的调整过来。闰年的判断规则为,如果该年份是4或100的整数倍或者是400的整数倍,则为闰年;否则为非闰年。在我们的这个设计中由于只涉及100年范围内,所以判断是否闰年就只需要用该年份除4来判断就行了。足条件的情况下,显示器的状态才变化。2.2显示部分的方案论证方案一:采用点阵式数码管显示,点阵式数码管是由八行八列的发光二极管组成,对于显示文字比较适合,如采用在显示数字显得太浪费,且价格也相对较高,所以也不用此种作为显示.方案二:采用LCD液晶显示屏,液晶显示屏的显示功能强大,可显示大量文字,图形,显示多样,清晰可见,对于电子万年历而言,一个1602的液晶屏即可,但LC
9、D液晶显示屏显示出来的不便于观看,所以不采用。方案三:采用LED数码管动态扫描,LED数码管价格虽适中,对于显示数字也最合适,而且采用动态扫描法与单片机连接时,占用的单片机口线少,数码管动态扫描需要借助74LS164移位寄存器进行移位,显示起来比较直观并且显示清楚,所以采用LED数码管显示。 2.3系统设计2.3.1时钟电路内部时钟电路如图所示,在XTAL1和XTAL2引脚上外接定时元件,内部振荡电路就产生自激振荡。定时元件通常石英晶体和电容组成的并联谐振回路,晶体振荡器选择12MHZ,电容采用30PF。2.3.2复位电路 影响单片机系统运行稳定性的因素可大体分为外因和内因两部分: (1)外因
10、 射频干扰,它是以空间电磁场的形式传递在机器内部的导体(引线或零件引脚)感生出相应的干扰,可通过电磁屏蔽和合理的布线/器件布局衰减该类干扰; 电源线或电源内部产生的干扰,它是通过电源线或电源内的部件耦合或直接传导,可通过电源滤波、隔离等措施来衰减该类干扰 。(2)内因 振荡源的稳定性,主要由起振时间频率稳定度和占空比稳定度决定 起振时间可由电路参数整定稳定度受振荡器类型温度和电压等参数影响复位电路的可靠性。2.3.3复位电路的可靠性设计复位是单片机的初始化操作。单片机启运运行时,都需要先复位,其作用是使CPU和系统中其他部件处于一个确定的初始状态,并从这个状态开始工作。因而,复位是一个很重要的
11、操作方式。但单片机本身是不能自动进行复位的,必须配合相应的外部电路才能实现。 复位电路的基本功能是:系统上电时提供复位信号,直至系统电源稳定后,撤销复位信号。为可靠起见,电源稳定后还要经一定的延时才撤销复位信号,以防电源开 关或电源插头分-合过程中引起的抖动而影响复位。2.3.4按键部分本设计总的用了四个按扭开关作为键盘,其中一个是复位键,另三个中的其中两个是调整时间增加、减少的键,第三个是切换年、月、日及时、分、秒的显示状态并在所切换的显示状态下配合加减两个键调整时间。2.3.5根据各模块的功能互相连接成电子万年历的控制电路 第三章各硬件介绍3.1AT89S51的引脚说明AT89S51系列单
12、片机中有PDIP,PLCC,TQFP多种封装形式。本设计采用的是PDIP封装40管脚的单片机,各引脚如图2-2所示。图9 AT89S51的PDIP封装引脚图Fig.9 AT89S5140个引脚中, 4组8位共32个I/O口,正电源和地线两根,外置石英振荡器的时钟线两根,现在对这些引脚的功能加以说明:(1)Pin9:RESET/Vpd复位信号复用脚,当AT89S51通电,时钟电路开始工作,在RESET引脚上出现24个时钟周期以上的高电平,系统开始复位。而RESET由高电平下降为低电平后,系统即从0000H地址单元开始执行程序。(2)Pin29:PESN当访问外部程序存储器时,此脚输出负脉冲选通信
13、号,外部程序存储器则把指令数据放到P0口上,由CPU读入并执行。(3)Pin30:ALE/PROG地址锁存允许信号端。单片机上电后,ALE引脚不断向外输出正脉冲信号, ALE信号可以用作对外输出时钟或定时信号。(4)Pin31:EA/Vpp程序存储器的内外部选通线,89S51单片机,内置有4kB的程序存储器,当EA为高电平并且程序地址小于4kB时,读取内部程序存储器指令数据,而超过4kB地址则读取外部指令数据。如EA为低电平,则不管地址大小,一律读取外部程序存储器指令。3.274LS164简介 74HC164、74HCT164是高速硅门CMOS器件,与低功耗肖特基型TTL (LSTTL) 器件
14、的引脚兼容。74HC164、74HCT164是8位边沿触发式移位寄存器,串行输入数据,然后并行输出。数据通过两个输入端(DSA或DSB)之一串行输入;任一输入端可以用作高电平使能端,控制另一输入端的数据输入。两个输入端或者连接在一起,或者把不用的输入端接高电平,一定不要悬空。时钟 (CP) 每次由低变高时,数据右移一位,输入到Q0, Q0是两个数据输入端(DSA和DSB)的逻辑与,它将上升时钟沿之前保持一个建立时间的长度。主复位 (MR) 输入端上的一个低电平将使其它所有输入端都无效,同时非同步地清除寄存器,强制所有的输出为低电平。第四章系统硬件设计所需的器材5V电源 3V电源AT89S51单
15、片机1个LED共阴极数码管12个74LS164 12个电阻1 K的2个、4.7K的2个4.7欧排阻晶振12M的一个电容(30P的两个)22f电容1个轻触开关5个第五章系统软件总体设计系统的软件设计采用汇编语言,对单片机进行编程实现各项功能。程序在WindowsXP环境下采用KIELC51软件编写。软件控制程序主要有主控程序、显示程序、延时程序、运算程序。主控程序主要是进行一些简单的处理,通过调用子程序来完成年、月、日、时、分、秒的运算。显示程序主要是把计算所得的结果显示出来。显示程序主要是把计算所得的年、月、日、时、分、秒通过串口传送到74LS164并且显示出来。延时程序是用于秒的显示的,因为
16、本设计用的是软件延时,所以需要专门的延时程序进行一秒的延时。运算程序主要是用于闰年,平年和月份天数的计算。计算方法就是让年份除以4看余数是否为零,为零闰年反之为平年,单片机中刚好又除法指令。(1) 显示程序:主要是通过串口传送数据 XS:MOV SCON,#00HMOV DPTR,#TABMOV B,#10DIV ABMOV R5,AMOV A,BMOVC A,A+DPTRMOV SBUF,AJNB TI,$MOV A,R5MOVC A,A+DPTRMOV SBUF,AJNB TI,$RETTAB:DB 3FH,06H,5bh,4FH,66H,6DH,7DH,07H,7FH,6FH(2) 延时
17、程序:采用单片机内部的定时器进行延时DL: MOV R7,#6WW:MOV TMOD,#01H ;50毫秒延时MOV TH0,#3CHMOV TL0,#0B0HSETB TR0JNB TF0,$CLR TF0DJNZ R7,WWRET(3) 月份天数定义程序:把相同天数的月份归类RX11:CJNE R4,#2,L391MOV A,R3CLR CYSUBB A,#30SJMP L231L391:CJNE R4,#1,L341MOV A,R3CLR CYSUBB A,#32SJMP L231L341:CJNE R4,#3,L351MOV A,R3CLR CYSUBB A,#32SJMP L231L
18、351:CJNE R4,#5,L151MOV A,R3CLR CYSUBB A,#32SJMP L231L151:CJNE R4,#7,L161MOV A,R3CLR CYSUBB A,#32SJMP L231L161:CJNE R4,#8,L171MOV A,R3CLR CYSUBB A,#32SJMP L231L171:CJNE R4,#10,L181MOV A,R3CLR CYSUBB A,#32SJMP L231L181:CJNE R4,#12,L191MOV A,R3CLR CYSUBB A,#32SJMP L231L191:CJNE R4,#4,L201MOV A,R3CLR CY
19、SUBB A,#31SJMP L231L201:CJNE R4,#6,L211MOV A,R3CLR CYSUBB A,#31SJMP L231L211:CJNE R4,#9,L221MOV A,R3CLR CYSUBB A,#31SJMP L231L221:CJNE R4,#11,L231MOV A,R3(4) 调时程序:对年、月、日、时、分、秒进行调整TS:MOV R0,#00L565:LCALL XS1INC R1LCALL DLJB P1.0,L1CJNE R1,#60,L565MOV R1,#00HSJMP TSTS1:MOV R0,#00L5651:LCALL XS1INC R2L
20、CALL DLJB P1.1,L1CJNE R2,#24,L5651MOV R2,#00HSJMP TS1TS2:MOV R0,#00L5652:LCALL XS1INC R3LCALL DLJB P1.2,L1CJNE R3,#31,L5652MOV R3,#00HSJMP TS2TS3:MOV R0,#00L5653:LCALL XS1INC R4LCALL DLJB P1.3,L1CJNE R4,#13,L5653MOV R4,#00HSJMP TS3TS4:MOV R0,#00L5654:LCALL XS1INC R6LCALL DLJB P1.4,L1CJNE R6,#99,L565
21、4MOV R6,#00HSJMP TS46按键功能介绍 本设计用了五个按键,分别是年键、月键、日键、时见、分键。各自的主要功能是校时用的。第六章主程序流程图及按键功能的介绍 开始串口初始化调用子程序单片机判断按键单片机处理按键调显示数据结束五个按键,分别是年键、月键、日键、时见、分键。各自的主要功能是校时用的。第七章 闰年、月份计算流程框图第八章安装制作8.1 清理元器件,重点辩别认清电阻器阻值及相应代号,对电阻、电容、等要用万用表一一检测。8.2 焊完元器件后,在覆铜面剪掉多余元器件的引线,工具最好用斜口钳,可防止因剪线而使覆铜皮损坏。8.3 焊接完后,请认真对照电路原理图、安装图检查电路板
22、上有无漏焊、错焊、短路、断路等错误现象,确认无误后才能通电。 第九章 程序/*主程序*/ORG 0000HMOV SCON,#00HMOV A,#3FHMOV SBUF,AJNB TI,$CLR TISJMP L14TS3:MOV R0,#00L5653:LCALL XS1INC R4LCALL DLJB P1.3,L1CJNE R4,#13,L5653MOV R4,#00HSJMP TS3TS4:MOV R0,#00L5654:LCALL XS1INC R6LCALL DLJB P1.4,L1CJNE R6,#99,L5654MOV R6,#00HSJMP TS4L14:MOV R4,#1L
23、13:MOV R3,#1L4:MOV R2,#0L3:MOV R1,#0L2:MOV R0,#0L1:JNB P1.0,TSJNB P1.1,TS1JNB P1.2,TS2JNB P1.3,TS3JNB P1.4,TS4LCALL XS1INC R0LCALL DLLCALL DLCJNE R0,#60,L1INC R1CJNE R1,#60,L2INC R2CJNE R2,#24,L3INC R3MOV B,#4MOV A,R6MOV R7,AJZ L0009DIV ABMOV A,R7MOV R6,AMOV A,BCJNE A,#0,L000L0009:LCALL RX11LJMP L33
24、4L000:LCALL RXSL334:JC L4INC R4 CJNE R4,#13,L13INC R6SJMP L14TS:MOV R0,#00L565:LCALL XS1INC R1LCALL DLJB P1.0,L1CJNE R1,#60,L565MOV R1,#00HSJMP TSTS1:MOV R0,#00L5651:LCALL XS1INC R2LCALL DLJB P1.1,L1CJNE R2,#24,L5651MOV R2,#00HSJMP TS1TS2:MOV R0,#00L5652:LCALL XS1INC R3LCALL DLJB P1.2,L1CJNE R3,#31,
25、L5652MOV R3,#00HSJMP TS2/*显示序*/XS:MOV SCON,#00HMOV DPTR,#TABMOV B,#10DIV ABMOV R5,AMOV A,BMOVC A,A+DPTRMOV SBUF,AJNB TI,$MOV A,R5MOVC A,A+DPTRMOV SBUF,AJNB TI,$RETTAB:DB 3FH,06H,5bh,4FH,66H,6DH,7DH,07H,7FH,6FH/*延时*/DL: MOV R7,#5WW:MOV TMOD,#01H ;50毫秒延时MOV TH0,#3CHMOV TL0,#0B0HSETB TR0JNB TF0,$CLR TF
26、0DJNZ R7,WWRETRX11:CJNE R4,#2,L391MOV A,R3CLR CYSUBB A,#30SJMP L231L391:CJNE R4,#1,L341MOV A,R3CLR CYSUBB A,#32SJMP L231L341:CJNE R4,#3,L351MOV A,R3CLR CYSUBB A,#32SJMP L231L351:CJNE R4,#5,L151MOV A,R3CLR CYSUBB A,#32SJMP L231L151:CJNE R4,#7,L161MOV A,R3CLR CYSUBB A,#32SJMP L231L161:CJNE R4,#8,L171M
27、OV A,R3CLR CYSUBB A,#32SJMP L231L171:CJNE R4,#10,L181MOV A,R3CLR CYSUBB A,#32SJMP L231L181:CJNE R4,#12,L191MOV A,R3CLR CYSUBB A,#32SJMP L231L191:CJNE R4,#4,L201MOV A,R3CLR CYSUBB A,#31SJMP L231L201:CJNE R4,#6,L211MOV A,R3CLR CYSUBB A,#31SJMP L231L211:CJNE R4,#9,L221MOV A,R3CLR CYSUBB A,#31SJMP L231L
28、221:CJNE R4,#11,L231MOV A,R3CLR CYSUBB A,#30L231:RETRXS:CJNE R4,#2,L39MOV A,R3CLR CYSUBB A,#29SJMP L23L39:CJNE R4,#1,L34MOV A,R3CLR CYSUBB A,#32SJMP L23L34:CJNE R4,#3,L35MOV A,R3CLR CYSUBB A,#32SJMP L23L35:CJNE R4,#5,L15MOV A,R3CLR CYSUBB A,#32SJMP L23L15:CJNE R4,#7,L16MOV A,R3MOV R6,#32SJMP L23L16:
29、CJNE R4,#8,L17MOV A,R3CLR CYSUBB A,#32SJMP L23L17:CJNE R4,#10,L18MOV A,R3CLR CYSUBB A,#32SJMP L23L18:CJNE R4,#12,L19MOV A,R3CLR CYSUBB A,#32SJMP L23L19:CJNE R4,#4,L20MOV A,R3MOV A,R3CLR CYSUBB A,#31SJMP L23L20:CJNE R4,#6,L21MOV A,R3CLR CYSUBB A,#31SJMP L23L21:CJNE R4,#9,L22MOV A,R3CLR CYSUBB A,#31SJ
30、MP L23L22:CJNE R4,#11,L23MOV A,R3CLR CYSUBB A,#31L23:RETXS1:MOV A,R0LCALL XSMOV A,R1LCALL XSMOV A,R2LCALL XSMOV A,R3LCALL XSMOV A,R4LCALL XSMOV A,R6LCALL XSRETENDEND第十章结束语通过此项设计设计,本系统能完成以下功能(1)显示公历日期功能(年、月、日、时、分、秒以及星期)。(2)可随时调校年、月、日或时、分。(3)可每次增减一进行时间调节。(4)可动态显示双位年份 。参考资料:1 吉雷, 主编 :Protel99从入门到精通.西安:西安电子科技大学出版社,2004 2 张振荣, 晋明武.MSC-51系列单片机原理及实用技术. 人民邮电出版社,2000年3余永权, MCS-51系列单片机实用接口技术M.北京:北京航空航天大学出版,19934谈震辉, 主编 :单片机原理及接口技术(修订版)清华大学出版社,2006