基于单片机的时钟调整系统.docx
- 文档编号:5592317
- 上传时间:2022-12-28
- 格式:DOCX
- 页数:18
- 大小:197.25KB
基于单片机的时钟调整系统.docx
《基于单片机的时钟调整系统.docx》由会员分享,可在线阅读,更多相关《基于单片机的时钟调整系统.docx(18页珍藏版)》请在冰豆网上搜索。
基于单片机的时钟调整系统
单片机研究性教学
题目:
基于51单片机的时钟调整系统
学院:
机电学院
提交日期:
2012年5月29日
前言
时钟是人类生活中必不可少的工具,从挂式的、手机上的、电脑上的以及手表等。
学完单片机后,我们基本了解到了单片机时钟的工作原理以及实现方式。
借此研究性教学的机会,我们打算用单片机的知识完成对单片机电子时钟的设计以及制作。
该设计不仅可以锻炼我们的动手能力,而且可以加深我们对单片机的认识和激发我们对机电控制的探索。
基于单片机的数字时钟采用独立式按键来进行时间调整,MAX7219、AT89C51是其主要芯片,并利用数码管LED动态显示“时”,“分”,“秒”的现代计时装置。
与传统机械表相比,它具有走时精确,显示直观等特点。
它的计时周期为24小时,显满刻度为“23时59分59秒”。
它不仅仅可以显示时间,还可以显示星期。
总而言之该系统同时具有硬件设计简单,工作稳定性高,价格低廉等优点。
关键词:
时钟、LED显示、MAX7219、AT89C51、点阵LED显示器
一、任务
设计一个单片机时钟显示调整系统,其中扩展连接6个8段LED数码管显示器,利用MAX7219显示驱动器驱动LED用于时钟显示和调整,利用8*8点阵LED显示器显示星期。
连接3个独立式按键分别控制系统的显示模式切换和时间值增减调整。
二、方案
硬件选择:
MAX7219驱动器、AT89C51单片机、6位LED显示器、8*8点阵LED、74LS14、74LS245、电阻、CAP电容、PCELECT4U763V电容、晶振、按键、电源
三、功能要求
1、六位数码管显示时、分、秒,以24小时运算
2、点阵LED显示星期
3、可实现对秒、分、时、星期的加减调整
四、程序设计
1、主程序
设计中计时采用定时器T0中断完成。
主程序循环调用显示子程序和查键,当端口有开关按下时,转入相应的功能程序。
流程图如图1所示。
图1主程序流程
4、显示子程序
显示由MAX7219驱动的六位显示器和点阵LED显示器共同完成,首先对其进行初始化,然后用单片机控制显示器显示。
MAX7219驱动器显示流程图
图2显示子程序
5、定时器T0中断服务程序
定时溢出中断周期设为50MS,中断进入后先进行定时中断初值校正,当中断累加到20次时,对秒计数单元进行加1操作。
时钟最大计时值为23时59分59秒。
在计数单元中,采用十进制BCD码计数,满十进位。
流程图如图3所示
在程序中采用12MHZ晶振频率,精度为1MS,定时初值为50MS,用循环程序进行20次循环可到1S。
当1S到时调用加1程序并判断秒、分是否为60,当秒为60时,秒清零,分加1;当分为60时,分清零。
当时满24时,星期加1,时清零,星期由1至7循环。
终端结束时,计时单元数据移入对应显示单元。
三、按键设置
本时钟设置P1.0,P1.1,P1.2接3个按钮开关,用于调时。
其中P1.0用于选择调时模式(对星期,小时,分钟,秒的选择),P1.1完成对所选的项目进行增一的操作,P1.2完成对所选项目进行减一的操作。
四、程序
KEY1BITP1.0
KEY2BITP1.1
KEY3BITP1.2
CLKBITP1.3
LOADBITP1.4
DINBITP1.5
SECONDDATA30H
MINUTEDATA31H
HOURDATA32H
DAYDATA33H
ORG0000H
AJMPMAIN
ORG000BH
AJMPTIMER0
MAIN:
MOVSP,#60H
MOVTMOD,#01H
MOVTH0,#0B1H
MOVTL0,#0E0H
SETBET0
SETBEA
MOVR2,#50
SETBTR0
MOVSECOND,#00H
MOVMINUTE,#00H
MOVHOUR,#00H
MOVDAY,#00H
MOVA,HOUR
ANLA,#0F0H
SWAPA
MOV79H,A
MOVA,HOUR
ANLA,#0FH
MOV7AH,A
MOVA,MINUTE
ANLA,#0F0H
SWAPA
MOV7BH,A
MOVA,MINUTE
ANLA,#0FH
MOV7CH,A
MOVA,SECOND
ANLA,#0F0H
SWAPA
MOV7DH,A
MOVA,SECOND
ANLA,#0FH
MOV7EH,A
MOVR3,#00H
ACALLINT7219
LOOP:
ACALLKEY
ACALLDISPLAY
AJMPLOOP
INT7219:
MOV50H,#0FH
MOV51H,#00H
MOVR0,#50H
ACALLSEND7219
MOV50H,#0CH
MOV51H,#01H
MOVR0,#50H
ACALLSEND7219
MOV50H,#0BH
MOV51H,#05H
MOVR0,#50H
ACALLSEND7219
MOV50H,#0AH
MOV51H,#09H
MOVR0,#50H
ACALLSEND7219
MOV50H,#09H
MOV51H,#0FFH
MOVR0,#50H
ACALLSEND7219
ACALLD1
RET
DISPLAY:
MOV50H,#01H
MOV51H,79H
MOVR0,#50H
ACALLSEND7219
MOV50H,#02H
MOV51H,7AH
MOVR0,#50H
ACALLSEND7219
MOV50H,#03H
MOV51H,7BH
MOVR0,#50H
ACALLSEND7219
MOV50H,#04H
MOV51H,7CH
MOVR0,#50H
ACALLSEND7219
MOV50H,#05H
MOV51H,7DH
MOVR0,#50H
ACALLSEND7219
MOV50H,#06H
MOV51H,7EH
MOVR0,#50H
ACALLSEND7219
ACALLD1
RET
SEND7219:
CLRLOAD
MOVR4,#02H
CLRC
LOP1:
MOVR1,#08H
MOVA,@R0
LOP2:
RLCA
MOVDIN,C
SETBCLK
CLRCLK
DJNZR1,LOP2
INCR0
DJNZR4,LOP1
SETBLOAD
RET
D1:
MOVR6,#0FEH
MOVR1,#08H
MOVA,33H
RLA
RLA
RLA
MOVR4,A
LP:
MOVP3,#0FFH
MOVA,R4
INCR4
MOVDPTR,#DTAB
MOVCA,@A+DPTR
MOVP0,A
MOVA,R6
MOVP3,A
RLA
MOVR6,A
ACALLDEL
DJNZR1,LP
RET
DEL:
MOVR7,#02H
DL0:
MOVR0,#0FFH
DL6:
DJNZR0,DL6
DJNZR7,DL0
RET
KEY:
JNBKEY1,KK1
JBKEY1,$
INCR3
CJNER3,#05H,JMPKK3
MOVR3,#00H
JMPKK3:
AJMPKK3
KK1:
JNBKEY2,KK2
JBKEY2,$
MOVA,R3
RLA
MOVDPTR,#KJMP1
JMP@A+DPTR
KJMP1:
AJMPDISCLK
AJMPSINC
AJMPMINC
AJMPHINC
AJMPDINC
SINC:
MOVA,SECOND
ADDA,#01H
DAA
MOVSECOND,A
CJNEA,#60H,DISS1
MOV30H,#01H
DISS1:
AJMPDISS
MINC:
MOVA,MINUTE
ADDA,#01H
DAA
MOVMINUTE,A
CJNEA,#60H,DISM1
MOVMINUTE,#00H
DISM1:
AJMPDISM
HINC:
MOVA,HOUR
ADDA,#01H
DAA
MOVHOUR,A
CJNEA,#24H,DISH1
MOVHOUR,#00H
DISH1:
AJMPDISH
DINC:
MOVA,DAY
ADDA,#01H
MOVDAY,A
CJNEA,#07H,DISD1
MOVDAY,#00H
DISD1:
AJMPDISD
KK2:
JNBKEY3,KK3
JBKEY3,$
MOVA,R3
RLA
MOVDPTR,#KJMP2
JMP@A+DPTR
KJMP2:
AJMPDISCLK
AJMPSDEC
AJMPMDEC
AJMPHDEC
AJMPDDEC
SDEC:
MOVA,#9AH
CLRC
SUBBA,#01H
ADDA,SECOND
DAA
MOVSECOND,A
CJNEA,#00H,DISS2
MOVSECOND,#59H
DISS2:
AJMPDISS
MDEC:
MOVA,#9AH
CLRC
SUBBA,#01H
ADDA,MINUTE
DAA
MOVMINUTE,A
CJNEA,#00H,DISM2
MOVMINUTE,#59H
DISM2:
AJMPDISM
HDEC:
MOVA,#9AH
CLRC
SUBBA,#01H
ADDA,HOUR
DAA
MOVHOUR,A
CJNEA,#99H,DISH2
MOVHOUR,#23H
DISH2:
AJMPDISH
DDEC:
MOVA,#9AH
CLRC
SUBBA,#01H
ADDA,DAY
DAA
CJNEA,#99H,DISD2
MOVA,#06H
DISD2:
MOVDAY,A
AJMPDISD
KK3:
MOVA,R3
RLA
MOVDPTR,#KJMP3
JMP@A+DPTR
KJMP3:
AJMPDISCLK
AJMPDISS
AJMPDISM
AJMPDISH
AJMPDISD
DISCLK:
MOVR0,#79H
MOVR1,#HOUR
MOVR4,#03H
CFLOOP:
MOVA,@R1
SWAPA
ANLA,#0FH
MOV@R0,A
INCR0
MOVA,@R1
ANLA,#0FH
MOV@R0,A
INCR0
DECR1
DJNZR4,CFLOOP
SETBTR0
RET
DISS:
CLRTR0
MOVA,SECOND
SWAPA
ANLA,#0FH
MOV7DH,A
MOVA,SECOND
ANLA,#0FH
MOV7EH,A
MOV79H,#0FH
MOV7AH,#0FH
MOV7BH,#0FH
MOV7CH,#0FH
AJMPKK5
DISM:
CLRTR0
MOVA,MINUTE
SWAPA
ANLA,#0FH
MOV7BH,A
MOVA,MINUTE
ANLA,#0FH
MOV7CH,A
MOV79H,#0FH
MOV7AH,#0FH
MOV7DH,#0FH
MOV7EH,#0FH
AJMPKK5
DISH:
CLRTR0
MOVA,HOUR
SWAPA
ANLA,#0FH
MOV79H,A
MOVA,HOUR
ANLA,#0FH
MOV7AH,A
MOV7BH,#0FH
MOV7CH,#0FH
MOV7DH,#0FH
MOV7EH,#0FH
AJMPKK5
DISD:
CLRTR0
MOV79H,#0FH
MOV7AH,#0FH
MOV7BH,#0FH
MOV7CH,#0FH
MOV7DH,#0FH
MOV7EH,#0FH
KK5:
RET
TIMER0:
PUSHACC
PUSHPSW
MOVTH0,#0B1H
MOVTL0,#0E0H
DJNZR2,NEXT
MOVR2,#50
MOVA,SECOND
ADDA,#01H
DAA
MOVSECOND,A
CJNEA,#60H,NEXT
S1:
MOVSECOND,#00H
MOVA,MINUTE
ADDA,#01
DAA
MOVMINUTE,A
CJNEA,#60H,NEXT
S2:
MOVMINUTE,#00H
MOVA,HOUR
ADDA,#01H
DAA
MOVHOUR,A
CJNEA,#24H,NEXT
S3:
MOVHOUR,#00H
MOVA,DAY
ADDA,#01H
DAA
MOVDAY,A
CJNEA,#07H,NEXT
MOVDAY,#00H
NEXT:
POPPSW
POPACC
RETI
DTAB:
DB00H,08H,08H,08H,08H,08H,08H,00H
DB00H,04H,24H,24H,24H,24H,04H,00H
DB00H,02H,52H,52H,52H,52H,02H,00H
DB00H,0FFH,91H,0F1H,81H,0F1H,91H,0FFH
DB91H,91H,91H,0FFH,91H,91H,9FH,01H
DB20H,22H,24H,0A8H,60H,28H,24H,22H
DB00H,00H,0FFH,91H,91H,0FFH,00H,00H
END
五、运用Proteus进行仿真
1、正常状态下的时钟显示
6、按一次KEY1对时进行调整
3、按两次KEY1对分进行调整
4、按三次KEY1对秒进行调整
5、按四次KEY1进入关机
6、按五次KEY1返回正常显示模式
操作模式
KEY1次数
1
2
3
4
5
调整模式
调秒
调分
调时
调星期
正常显示
设计说明及建议:
本设计特点在于同时采用由MAX7219驱动六位LED显示器和点阵LED显示器,利用前者的设计程序简便性和后者的显示的多样性以达到理想效果。
参考文献:
【1】赵嘉蔚,张家栋,霍凯,肖燕彩.单片机原理及接口技术【M】.清华大学出版社2010
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 单片机 时钟 调整 系统