基于51单片机的数字钟设计毕业设计论文 精品Word文档下载推荐.docx
《基于51单片机的数字钟设计毕业设计论文 精品Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《基于51单片机的数字钟设计毕业设计论文 精品Word文档下载推荐.docx(41页珍藏版)》请在冰豆网上搜索。
2.1基本功能
1.设计一个精确的1秒定时器;
2.根据1秒定时器,设计一个带小时、分钟、秒的时钟,并将小时、分钟、秒显示在LED上;
3.设计小时、分钟、秒的修改按键,可分别调整小时、分钟、秒(按键设计参考电子表);
2.2拓展功能
1.增加小时、分钟、秒的键盘直接修改功能;
2.设计闹钟功能,最多支持5个闹钟,可分别查看和修改闹钟时间,可分别设置闹钟开关。
3.增加万年历功能。
3作品方案设计
3.1设计要求
基本设计
1.设计一个精确的一秒定时器
2.运用一秒的定时器设计出有时、分、秒的数字钟,并显示在LED数码管上
3.设置按键,能够修改数字钟时间
扩展设计:
1.设计闹钟功能,能够查看和修改闹钟时间及开关状态
2.设计万年历功能,实现日→月→年的正常进位,能够查看和修改年月日,能够自动区分大小月和平闰年
3.2模块划分
●初始化程序
设定初值,中断初始化
●主程序
程序主要执行部分,对子程序(显示、按键设置,闹钟、万年历功能)进行调用
●定时器中断服务
中断走时:
秒→分→时
●显示程序
刷新8位数码管来显示时间、日期及扩展功能设置界面
●按键设置
通过对按键的操作实现时间及扩展功能的设置。
●闹钟功能
修改闹铃时间,闹铃开关的置换,修改位闪烁加以区分
●万年历功能
修改日期,同样的修改位闪烁加以区分
3.3模块设计概述
1.按键设置
通过调整选择键SET_KEY选择调整位,选中位开始闪烁,此时再按增加键ADD_KEY或减少键DEC_KEY调整选中位,如果长按ADD_KEY或DEC_KEY,系统识别后则进行调时快进,此时停止闪烁,方便人眼观察。
同时还增加了调秒功能:
如果选中位是秒,则按增加键或减少键都是将秒清零。
3.时间设置
进入时间设置界面后,通过调整选择键SET_KEY选择调整位,选中位闪烁。
按增加键ADD_KEY或减少键DEC_KEY设置所需要的时间。
4.闹钟设置
进入闹钟设置界面后,通过调整选择键SET_KEY选择调整位,选中位闪烁。
与时间设置不同的是,闹钟设置里增加了开关设置。
5.万年历设置
进入万年历设置界面后,通过调整选择键SET_KEY选择调整位,选中位闪烁。
万年历设置里增加了大小月和平闰年的判别。
4软件设计
4.1主程序流程图
4.2闹钟程序流程
4.3万年历程序流程
4.4中断系统结构图
附录一
附录二
/*****************************************************************************/
//初始化
MOVSP,#60H;
栈指针地址赋值
MOV3CH,#0CH;
设置界面修改位的闪烁频率具体代码在SERVE1秒中断服务中
MOV37H,#0FFH;
临时地址预留给39H
MOV39H,#0FFH;
段位标志8位数据对应8个数码管为0的那位数码管始终暗
MOV3AH,#11111101B;
界面转换标志******01为时间界面取反后******10为万年历界面******00为设置闹钟界面
CLRA;
时间万年历初始化时间00:
00:
00万年历2000。
01。
01
MOV23H,A;
时
MOV22H,A;
分
MOV21H,A;
秒
MOV33H,#01H;
日
MOV34H,#01H;
月
MOV35H,A;
年只能显示2000-2099的时间
MOV3DH,A;
数码管闪烁开关初始化为关闭状态取反后11111111打开
MOV40H,A;
闹钟设置界面预留地址地址
MOV41H,A
MOV42H,A
MOV43H,A
MOV44H,A
MOV45H,A
MOV46H,A
MOV47H,A
MOV50H,A;
闹钟1时
MOV51H,A;
闹钟1分
MOV52H,A;
闹钟1秒
MOV0AH,A;
闹钟1开关00000000为关闭状态取反后打开闹钟1
MOV53H,A;
同上
MOV54H,A
MOV55H,A
MOV0BH,A
MOV56H,A
MOV57H,A;
MOV58H,A
MOV0CH,A
MOV59H,A;
MOV5AH,A
MOV5BH,A
MOV0DH,A
MOV5CH,A;
MOV5DH,A
MOV5EH,A
MOV0EH,A
**************************************************************/
ORG0000H
;
程序入口地址
LJMPSTART
ORG000BH
定时器0中断入口地址
LJMPTIMER_0
ORG0300H
/*****程序开始,初始化*****/
START:
SETB48H
使用一个bit位用于调时闪烁标志
SETB47H
使用一个bit位用于产生脉冲用于调时快进时基
MOVR1,#0
调整选择键功能标志:
0正常走时、1调时、2调分、3调秒
MOV20H,#00H
用于控制秒基准时钟源的产生
MOV21H,#00H
清零秒寄存器
MOV22H,#00H
清零分寄存器
MOV23H,#00H
清零时寄存器
MOV24H,#00H
用于控制调时闪烁的基准时钟的产生
MOVIP,#02H
IP,IE初始化
MOVIE,#82H
MOVTMOD,#01H
设定定时器0工作方式1
MOVTH0,#3CH
MOVTL0,#0B0H
赋定时初值,定时50ms
SETBTR0
启动定时器0
MOVSP,#40H
重设堆栈指针
/*****主程序*****/
MAIN:
LCALLDISPLAY
调用显示子程序
LCALLKEY_SCAN
调用按键检测子程序
JZMAIN
无键按下则返回重新循环
LCALLSET_KEY
调用选择键处理子程序
JB46H,MAIN
如果已进行长按调整(调时快进),则不再执行下面的单步调整
LCALLADD_KEY
调用增加键处理子程序,加一
LCALLDEC_KEY
调用减少键处理子程序,减一
LJMPMAIN
重新循环
/*****定时器中断服务程序*****/
TIMER_0:
PUSHACC
PUSHPSW
保护现场
MOVTH0,#3CH
MOVTL0,#0B0H
重新赋定时初值
CPL47H
产生脉冲用于调时快进时基
INC24H
MOVA,24H
CJNEA,#10,ADD_TIME
产生0.5秒基准时钟,用于调时闪烁
CPL48H
取反调时闪烁标志位
MOV24H,#00H
ADD_TIME:
走时
INC20H
MOVA,20H
CJNEA,#20,RETI1
产生1秒基准时钟
MOV20H,#00H
一秒钟时间到,清零20H
MOVA,21H
ADDA,#01H
DAA
作十进制调整
MOV21H,A
CJNEA,#60H,RETI1
MOV21H,#00H
一分钟到
MOVA,22H
ADDA,#01H
DAA
MOV22H,A
MOV22H,#00H
一小时到
MOVA,23H
MOV23H,A
CJNEA,#24H,RETI1
MOV23H,#00H
到24点,清零小时
RETI1:
POPPSW
POPACC
恢复现场
RETI
中断返回
/*****显示处理*****/
DISPLAY:
MOVA,21H
ANLA,#0FH
MOV2FH,A
转换出秒个位,存入2FH
MOVA,21H
ANLA,#0F0H
SWAPA
MOV2EH,A
转换出秒十位,存入2EH
JB46H,MIN
如果长按按键(调时快进),则跳过闪烁处理程序
CJNER1,#3,MIN
如果R1为3,闪烁秒位待调整
JB48H,MIN
MOV2FH,#0AH
使该位为10,查表得到使该位不显示的输出