基于51单片机的数字钟设计-学位论文.doc
《基于51单片机的数字钟设计-学位论文.doc》由会员分享,可在线阅读,更多相关《基于51单片机的数字钟设计-学位论文.doc(41页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、武汉大学电子信息学院电子系统综合设计课程论文基于51单片机的数字钟设计2010 年 6 月 20日目 录1 作品的背景与意义12 功能指标设计13 作品方案设计24 软件设计3附录1 系统电路图6附录2 系统软件代码7电子系统综合设计课程论文1 作品的背景与意义时钟,自从它发明的那天起,就成为人类的朋友,但随着时间的推移,科学技术的不断发展,人们对时间计量的精度要求越来越高,应用越来越广。怎样让时钟更好的为人民服务,怎样让我们的老朋友焕发青春呢?这就要求人们不断设计出新型时钟。现今,高精度的计时工具大多数都使用了石英晶体振荡器,由于电子钟,石英表,石英钟都采用了石英技术,因此走时精度高,稳定性
2、好,使用方便,不需要经常调校,数字式电子钟用集成电路计时时,译码代替机械式传动,用LED显示器代替指针显示进而显示时间,减小了计时误差,这种表具有时,分,秒显示时间的功能,还可以进行时和分的校对,片选的灵活性好。现在我们利用单片机实现数字时钟计时功能的主要内容,其中AT89C51是核心元件同时采用数码管动态显示“时”,“分”,“秒”的现代计时装置。与传统机械表相比,它具有走时精确,显示直观等特点。它的计时周期为24小时,显满刻度为“23时59分59秒”,另外具有校时功能,断电后有记忆功能,恢复供电时可实现计时同步等特点,除此外还实现了万年历和闹钟等的功能。时钟电路在计算机系统中起着非常重要的作
3、用,是保证系统正常工作的基础。在一个单片机应用系统中,时钟有两方面的含义:一是指为保障系统正常工作的基准振荡定时信号,主要由晶振和外围电路组成,晶振频率的大小决定了单片机系统工作的快慢;二是指系统的标准定时时钟,即定时时间,它通常有两种实现方法:一是用软件实现,即用单片机内部的可编程定时/计数器来实现,但误差很大,主要用在对时间精度要求不高的场合;二是用专门的时钟芯片实现,在对时间精度要求很高的情况下,通常采用这种方法,典型的时钟芯片有:DS1302,DS12887,X1203等都可以满足高精度的要求。单片计算机即单片微型计算机。(Single-Chip Microcomputer ),是集C
4、PU、RAM、ROM、定时、计数和多种接口于一体的微控制器。他体积小,成本低,功能强,广泛应用于智能产品和工业自动化上。而51单片机是各单片机中最为典型和最有代表性的一种。所以综上所述,此次实验中所完成的数字钟有着强大的功能和良好的市场前景,复合电子类产品的发展趋势。2 功能指标设计2.1 基本功能1.设计一个精确的1秒定时器; 2.根据1秒定时器,设计一个带小时、分钟、秒的时钟,并将小时、分钟、秒显示在LED上; 3.设计小时、分钟、秒的修改按键,可分别调整小时、分钟、秒(按键设计参考电子表); 2.2 拓展功能1.增加小时、分钟、秒的键盘直接修改功能; 2.设计闹钟功能,最多支持5个闹钟,
5、可分别查看和修改闹钟时间,可分别设置闹钟开关。 3.增加万年历功能。3 作品方案设计3.1设计要求基本设计1设计一个精确的一秒定时器2运用一秒的定时器设计出有时、分、秒的数字钟,并显示在LED数码管上3设置按键,能够修改数字钟时间扩展设计:1.设计闹钟功能,能够查看和修改闹钟时间及开关状态2.设计万年历功能,实现日月年的正常进位,能够查看和修改年月日,能够自动区分大小月和平闰年3.2模块划分 初始化程序 设定初值,中断初始化主程序 程序主要执行部分,对子程序(显示、按键设置,闹钟、万年历功能)进行调用定时器中断服务 中断走时:秒分时显示程序 刷新8位数码管来显示时间、日期及扩展功能设置界面按键
6、设置 通过对按键的操作实现时间及扩展功能的设置。闹钟功能 修改闹铃时间,闹铃开关的置换,修改位闪烁加以区分万年历功能修改日期,同样的修改位闪烁加以区分 3.3模块设计概述1.按键设置通过调整选择键SET_KEY选择调整位,选中位开始闪烁,此时再按增加键ADD_KEY或减少键DEC_KEY调整选中位,如果长按ADD_KEY或DEC_KEY,系统识别后则进行调时快进,此时停止闪烁,方便人眼观察。同时还增加了调秒功能:如果选中位是秒,则按增加键或减少键都是将秒清零。3.时间设置进入时间设置界面后,通过调整选择键SET_KEY选择调整位,选中位闪烁。按增加键ADD_KEY或减少键DEC_KEY设置所需
7、要的时间。4.闹钟设置进入闹钟设置界面后,通过调整选择键SET_KEY选择调整位,选中位闪烁。按增加键ADD_KEY或减少键DEC_KEY设置所需要的时间。与时间设置不同的是,闹钟设置里增加了开关设置。5.万年历设置 进入万年历设置界面后,通过调整选择键SET_KEY选择调整位,选中位闪烁。按增加键ADD_KEY或减少键DEC_KEY设置所需要的时间。万年历设置里增加了大小月和平闰年的判别。4 软件设计4.1 主程序流程图4.2闹钟程序流程4.3万年历程序流程4.4中断系统结构图附录一附录二/*/初始化MOV SP,#60H;栈指针地址赋值MOV 3CH,#0CH;设置界面修改位的闪烁频率 具
8、体代码在SERVE 1秒中断服务中MOV 37H,#0FFH;临时地址 预留给39HMOV 39H,#0FFH;段位标志 8位数据对应8个数码管 为0的那位数码管始终暗MOV 3AH,#11111101B;界面转换标志*01为时间界面 取反后 *10为万年历界面 *00为设置闹钟界面CLR A ;时间万年历初始化 时间00:00:00 万年历2000。01。01MOV 23H,A;时MOV 22H,A ;分MOV 21H,A ;秒MOV 33H,#01H;日MOV 34H,#01H ;月MOV 35H,A;年 只能显示2000-2099的时间MOV 3DH,A ;数码管闪烁开关 初始化为关闭状
9、态 取反后 11111111 打开MOV 40H,A ;闹钟设置界面预留地址地址MOV 41H,AMOV 42H,AMOV 43H,AMOV 44H,AMOV 45H,AMOV 46H,AMOV 47H,AMOV 50H,A ;闹钟1 时MOV 51H,A ;闹钟1 分MOV 52H,A ;闹钟1 秒MOV 0AH,A ;闹钟1 开关 00000000为关闭状态 取反后打开闹钟1MOV 53H,A ;同上MOV 54H,AMOV 55H,AMOV 0BH,AMOV 56H,AMOV 57H,A ;同上MOV 58H,AMOV 0CH,AMOV 59H,A ;同上MOV 5AH,AMOV 5BH
10、,AMOV 0DH,AMOV 5CH,A ;同上MOV 5DH,AMOV 5EH,AMOV 0EH,A*/ORG 0000H;程序入口地址 LJMP START ORG 000BH;定时器0中断入口地址 LJMP TIMER_0ORG 0300H/*程序开始,初始化*/ START: SETB 48H;使用一个bit位用于调时闪烁标志SETB 47H;使用一个bit位用于产生脉冲用于调时快进时基MOV R1,#0;调整选择键功能标志:0正常走时、1调时、2调分、3调秒MOV 20H,#00H;用于控制秒基准时钟源的产生 MOV 21H,#00H;清零秒寄存器MOV 22H,#00H;清零分寄存
11、器MOV 23H,#00H;清零时寄存器MOV 24H,#00H;用于控制调时闪烁的基准时钟的产生MOV IP,#02H;IP,IE初始化 MOV IE,#82H MOV TMOD,#01H;设定定时器0工作方式1MOV TH0,#3CH MOV TL0,#0B0H;赋定时初值,定时50ms SETB TR0;启动定时器0 MOV SP,#40H;重设堆栈指针/*主程序*/ MAIN: LCALL DISPLAY ;调用显示子程序 LCALL KEY_SCAN ;调用按键检测子程序 JZ MAIN;无键按下则返回重新循环LCALL SET_KEY ;调用选择键处理子程序JB 46H,MAIN;
12、如果已进行长按调整(调时快进),则不再执行下面的单步调整 LCALL ADD_KEY;调用增加键处理子程序,加一LCALL DEC_KEY;调用减少键处理子程序,减一 LJMP MAIN ;重新循环 /*定时器中断服务程序*/ TIMER_0: PUSH ACC PUSH PSW ;保护现场MOV TH0,#3CHMOV TL0,#0B0H ;重新赋定时初值 CPL 47H;产生脉冲用于调时快进时基INC 24HMOV A,24HCJNE A,#10,ADD_TIME;产生0.5秒基准时钟,用于调时闪烁CPL 48H;取反调时闪烁标志位MOV 24H,#00HADD_TIME:;走时INC 2
13、0H MOV A,20H CJNE A,#20,RETI1;产生1秒基准时钟 MOV 20H,#00H ;一秒钟时间到,清零20HMOV A,21HADD A,#01HDA A;作十进制调整MOV 21H,A CJNE A,#60H,RETI1 MOV 21H,#00H ;一分钟到 MOV A,22H ADD A,#01H DA A MOV 22H,A CJNE A,#60H,RETI1 MOV 22H,#00H ;一小时到 MOV A,23H ADD A,#01H DA A MOV 23H,A CJNE A,#24H,RETI1 MOV 23H,#00H ;到24点,清零小时RETI1: P
14、OP PSW POP ACC ;恢复现场RETI ;中断返回/*显示处理*/ DISPLAY:MOV A,21H ;秒ANL A,#0FH MOV 2FH,A;转换出秒个位,存入2FHMOV A,21H ANL A,#0F0H SWAP A MOV 2EH,A;转换出秒十位,存入2EHJB 46H,MIN;如果长按按键(调时快进),则跳过闪烁处理程序CJNE R1,#3,MIN;如果R1为3,闪烁秒位待调整JB 48H,MINMOV 2FH,#0AH;使该位为10,查表得到使该位不显示的输出MOV 2EH,#0AHMIN:MOV A,22H ;分 ANL A,#0FH MOV 2DH,A;转换
15、出分个位,存入2DHMOV A,22H ANL A,#0F0H SWAP A MOV 2CH,A;转换出分十位,存入2CHJB 46H,HOUR;如果长按按键(调时快进),则跳过闪烁处理程序CJNE R1,#2,HOUR;如果R1为2,闪烁分位待调整 JB 48H,HOURMOV 2DH,#0AH;使该位为10,查表得到使该位不显示的输出MOV 2CH,#0AHHOUR:MOV A,23H ;时 ANL A,#0FH MOV 2BH,A;转换出时个位,存入2BHMOV A,23H ANL A,#0F0H SWAP A MOV 2AH,A;转换出时十位,存入2AHJB 46H,DISP;如果长按
16、按键(调时快进),则跳过闪烁处理程序CJNE R1,#1,DISP;如果R1为1,闪烁时位待调整 JB 48H,DISPMOV 2BH,#0AH;使该位为10,查表得到使该位不显示的输出MOV 2AH,#0AH/*数码管动态扫描显示*/DISP:MOV DPTR,#TABLEMOV A,2FHMOVC A,A+DPTRMOV P0,ACLR P2.7LCALL DELAYSETB P2.7;显示秒个位MOV A,2EHMOVC A,A+DPTRMOV P0,ACLR P2.6LCALL DELAYSETB P2.6;显示秒十位MOV A,#0BFHMOV P0,ACLR P2.5LCALL D
17、ELAYSETB P2.5;显示“-”MOV A,2DHMOVC A,A+DPTRMOV P0,ACLR P2.4LCALL DELAYSETB P2.4;显示分个位MOV A,2CHMOVC A,A+DPTRMOV P0,ACLR P2.3LCALL DELAYSETB P2.3;显示分十位MOV A,#0BFHMOV P0,ACLR P2.2LCALL DELAYSETB P2.2;显示“-”MOV A,2BHMOVC A,A+DPTRMOV P0,ACLR P2.1LCALL DELAYSETB P2.1;显示时个位MOV DPTR,#TABLE1;该位使用TABLE1以消除前置0MOV
18、 A,2AHMOVC A,A+DPTRMOV P0,ACLR P2.0LCALL DELAYSETB P2.0;显示时十位RET /*按键检测子程序*/ KEY_SCAN: CLR 46H;关闭长按调整(调时快进)标志MOV P1,#0FFH ;将P1口设置成输入状态 MOV A,P1 CPL A ANL A,#07H;P1口低3位连接3个按键,只判断该3位 JZ EXIT_KEY ;无键按下则返回 LCALL DELAY;延时去抖动MOV A,P1;重新判断 CPL A ANL A,#07H JZ EXIT_KEY ;键盘去抖动 MOV R5,A ;临时将键值存入R5MOV R4,#00H;
19、用于控制调时快进速度;设置为00H是为了在进入长按处理前加长延时区分用户的长按与短按,防止误快进 LOOP:;进入长按处理LCALL DISPLAY;使长按时显示正常 MOV A,P1 CPL A ANL A,#07HJB 47H,LOOP1INC R4;调时快进间隔时间基准加1LOOP1:CJNE R1,#03H,LOOP2;如果调秒时长按,则不处理LJMP LOOP3LOOP2:CJNE R4,#99H,LOOP3MOV R4,#70H;确认用户长按后,重新设定起始值,加快调时快进速度SETB 46H;长按调整(调时快进)标志LCALL ADD_KEYLCALL DEC_KEYLOOP3:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 51 单片机 数字 设计 学位 论文
限制150内