《数字万年历》课程设计报告专业:自动化班级:*****姓名:*****指导老师:*****二零一一年六月摘要在当代繁忙的工作与生活中,时间与我们每个人都有非常密切的关系,每个人都被时间影响着,我们必须对时间有个度量,因此设计万年历来记录时间,本设计采用AT89C51和DS1302实时时钟芯片进行万年历电路设计和软件设计,该万年历能实现能够实现年、月、日、时、分的显示,也可以人为校正时间,初始时间:2000 01 01 12.00。
本次设计以12MHZ晶振与AT89C51相连,通过编程实现以24小时为一周期,利用单片机的定时器和计数器产生定时效果,通过编程产生数字时钟效果,然后用数码管动态扫描显示内部处理的数据。
通过端口读入当前外部控制状态来改变程序的不同状态从而实现不同功能。
本次万年历设计以单片机为核心软硬件结合,使硬件部分大为简化,也提高了系统的稳定性。
关键词:万年历单片机DS1302目录一、方案的确定 (3)1.1单片机芯片的选择方案 (3)1.2显示方案 (3)1.3时钟芯片的选择方案 (5)二、系统的硬件设计与实现 (6)2.1电路设计框图 (6)2.2主要单元电路的设计 (7)2.2.1单片机主控制模块的设计 (7)2.2.2时钟电路模块的设计 (8)三、系统的软件设计 (9)3.1程序流程框图 (9)3.1.1电子时钟计算程序图 (10)3.1.2调整流程图 (11)3.2程序设计 (12)四、致谢词 (15)参考文献 (15)附录:proteus仿真图 (16)一.方案的确定1.1单片机芯片的选择方案方案1:采用89C51芯片作为硬件核心,采用Flash ROM,内部具有4KB ROM 存储空间,能于3V的超低压工作,而且与MCS-51系列单片机完全兼容,实验室学生用的较多的也较为熟悉的处理单元。
方案2:采用AT89S52,片内ROM全都采用Flash ROM;能以3V的超底压工作;同时也与MCS-51系列单片机完全该芯片内部存储器为8KB ROM 存储空间,同样具有89C51的功能,但AT89S52性价比不高。
所以选择采用89C51作为主控制系统。
1.2显示方案方案一:硬件方案:采用51单片机作为控制单元,显示器采用6位LED数码管(共阳),可分别显示时间或日期;(通过KB键可切换),显示器的驱动采用动态扫描电路形式。
所需的驱动电流比静态驱动时要大,因此要增加驱动电路。
可采用74LS244或者晶体管;其中74ls244是用来驱动段选码,晶体管是驱动位选码。
软件方案:“时钟”基准时间由单片机内部定时中断来提供,定时时间应该乘以一个整数得到“秒”,且不宜太长或太短,最长不能超过16位定时器的最长定时时间,最短不能少于定时中断服务程序的执行时间。
一般来说,基准时间越短,越有利于提高时钟运行的精确度。
本实验定时5ms乘以一个整数200得到1秒,用一个计数器(R4)对定时中断的次数进行计数,从而可以实现“秒”定时,同理可以实现“分”定时和“时”定时,甚至于“日”、“月”、“年”定时。
设计电路图如下图所示:方案二:硬件方案:同样采用51单片机作为核心控制单元,采用7SEG-MPX6对时间进行显示,同时为了节省I/O口线采用MAX7221,软件方案:由于此方案也是采用51单片机作为控制单元,软件方案同方案一。
方案二设计的电路图如下图所示:从电路图可以看出显示方案二比方案一要简单得多,看起来直观,硬件连接也相对容易,出错的几率也小得多。
因此采用方案二作为显示模块。
1.3时钟芯片的选择方案方案一:直接采用单片机定时计数器提供秒信号,使用程序实现年、月、日、星期、时、分、秒计数。
采用此种方案虽然减少芯片的使用,节约成本,但是,实现的时间误差较大。
所以不采用此方案。
方案二:采用DS1302时钟芯片实现时钟,DS1302芯片是一种高性能的时钟芯片,可自动对秒、分、时、日、周、月、年以及闰年补偿的年进行计数,而且精度高,位的RAM做为数据暂存区,工作电压2.5V~5.5V范围内,2.5V时耗电小于300nA。
二.系统的硬件设计与实现2.1电路设计框图:2.2主要单元电路的设计2.2.1单片机主控制模块的设计MCS-51单片机共有4个8位的I/O 口(P0、P1、P2、P3),每一条I/O 线都能独立地作输出或输入。
单片机的最小系统如下图所示,2.2.2时钟电路模块的设计下图为DS1302的引脚排列,其中Vcc1为后备电源,Vcc2为主电源。
在主电源关闭的情况下,也能保持时钟的连续运行。
DS1302由Vcc1或Vcc2两者中的较大者供电。
X1和X2是振荡源,外接32.768KHz 晶振。
RST 是复位/片选线,通过把RST 输入驱动置高电平来启动所有的数据传送。
RST 输入有两种功能:首先,RST 接通控制逻辑,允许地址/命令序列送入移位寄存器;其次,RST 提供终止单字节或多字节数据的传送手段。
当RST为高电平时,所有的数据传送被初始化,允许对DS1302进行操作。
如果在传送过程中RSTS置为低电平,则会终止此次数据传送,I/O引脚变为高阻态。
上电动行时,在Vcc大于等于2.5V之前,RST必须保持低电平。
中有在SCLK 为低电平时,才能将RST置为高电平,I/O 为串行数据输入端(双向)。
SCLK始终是输入端。
三、系统的软件设计3.1程序流程框图3.1.1电子时钟计算程序图3.1.2调整流程图3.2程序设计根据流程图的思路采用汇编语言编写程序,程序代码如下:DSRST BIT P1.0DSCLK BIT P1.1DSIO BIT P2.2DIN BIT P2.5CS BIT P2.6CLK BIT P2.7D158 EQU 30HD70 EQU 31HADDRESS EQU 32hCONTENT EQU 33hCOMMAND EQU 34hSECOND equ 35hMINITE equ 36hHOUR equ 37hORG 0000HLJMP MAINORG 0030HMAIN: LCALL INTI7221LCALL INTI1302LOOP: LCALL READ1302LCALL CONVERTLCALL DELAYLCALL DISPLAYLCALL DELAYSJMP LOOP;DS1302初始化INTI1302:MOV ADDRESS, #8EH MOV CONTENT, #00HLCALL SENT_BYTEMOV ADDRESS, #90HMOV CONTENT, #0A7H ;慢充电寄存器LCALL SENT_BYTEREAD1302: MOV ADDRESS, #81h LCALL REV_BYTEMOV SECOND, AMOV ADDRESS, #83hLCALL REV_BYTEMOV MINITE, AMOV ADDRESS, #85hLCALL REV_BYTEMOV HOUR, ARETSENT_BYTE: CLR DSRSTCLR CNOPCLR DSCLKNOPSETB DSRSTMOV A, ADDRESSMOV R3, #2MOV R2, #8LOOP0: RRC AMOV DSIO, CSETB DSCLKNOPCLR DSCLKDJNZ R2, LOOP0MOV A, CONTENTMOV R2, #8DJNZ R3, LOOP0CLR DSRSTRETREV_BYTE: PUSH 02H CLR DSRSTCLR CCLR DSCLKNOPSETB DSRSTMOV A, ADDRESS MOV R2, #8RDDS0: RRC AMOV DSIO, CSETB DSCLKNOPCLR DSCLKDJNZ R2, RDDS0CLR AMOV R2, #8RDDS1: MOV C, DSIO RRC ASETB DSCLKNOPCLR DSCLKDJNZ R2, RDDS1CLR DSRSTPOP 02HRETCONVERT:mov a, hour anl a, #0f0hswap amov 40h, amov a, houranl a, #0fhmov 41h, amov a, miniteanl a, #0f0hswap amov 42h, amov a, miniteanl a, #0fhmov 43h, amov a, secondanl a, #0f0hswap amov 44h, amov a, secondanl a, #0fhmov 45h, aretINTI7221: MOV D158, #09H MOV D70, #0FFHLCALL WRITEMOV D158, #0AHMOV D70, #0EHLCALL WRITEMOV D158, #0BHMOV D70, #05HLCALL WRITEMOV D158, #0CHMOV D70, #01HLCALL WRITEMOV D158, #0FH MOV D70, #00H LCALL WRITERETDISPLAY:MOV R6, #6 MOV R5, #0mov R0, #40h DIGIT: MOV A, R5 MOV DPTR, #TAB1 MOVC A, @A+DPTR MOV D158, AMOV D70, @R0INC R0LCALL WRITEINC R5DJNZ R6, DIGITRETORG 0250H WRITE: CLR CS MOV A, D158MOV R3, #2LOOP00: MOV R2, #8 LOOP11: CLR CLK RLC AMOV DIN, CSETB CLKDJNZ R2, LOOP11 MOV A, D70DJNZ R3, LOOP00 SETB CSRETTAB1: DB 01H,02H,03H,04H,05H,06HTAB2: DB 00H,01H,02H,03H,04H,05H,06H,07H,08H,09H;time:1ms;12MHzDELAY: MOV R7, #200DEL0: MOV R6, #243DJNZ R6, $DJNZ R7, DEL0RETEND致谢词感谢学院给我们提供了一个展现自己的舞台,给我们一次难得煅炼的机会,使得我们的动手能力和专业技能都有了很大的提高。
在做作品的日子里得到了张晓虎老师的悉心指导,在此向我们的指导教师致以诚挚的谢意。
感谢提供相关技术帮助的老师和同学,你们的支持和鼓励使我们对这次的作品完成有了信心和动力,也给了我们很多无私的帮助和支持,我们在此深表谢意。
参考文献1刘勇编数字电路电子工业出版社20042陈正振编电子电路设计与制作广西交通职业技术学院信息工程系20073杨子文编单片机原理及应用西安电子科技大学出版社20064 王法能编单片机原理及应用科学出版社2004附:proteus仿真图。