单片机课程论文设计-电子钟课程设计.doc

上传人:小小飞 文档编号:3915866 上传时间:2019-10-10 格式:DOC 页数:26 大小:290KB
返回 下载 相关 举报
单片机课程论文设计-电子钟课程设计.doc_第1页
第1页 / 共26页
单片机课程论文设计-电子钟课程设计.doc_第2页
第2页 / 共26页
单片机课程论文设计-电子钟课程设计.doc_第3页
第3页 / 共26页
单片机课程论文设计-电子钟课程设计.doc_第4页
第4页 / 共26页
单片机课程论文设计-电子钟课程设计.doc_第5页
第5页 / 共26页
点击查看更多>>
资源描述

《单片机课程论文设计-电子钟课程设计.doc》由会员分享,可在线阅读,更多相关《单片机课程论文设计-电子钟课程设计.doc(26页珍藏版)》请在三一文库上搜索。

1、单片机课程论文设计-电子钟课程设计该作品是个性化电子钟设计,技术上主要用单片机(AT89S52)主控,6位LED数码显示,分别显示“小时:分钟:秒”。该作品主要用于24小时计时显示,能整时报时,能作为秒表使用,能定时闹铃1分钟。功能介绍:(1)上电以后自动进入计时状态,起始于00:00:00。(2)设计键盘调整时间,完成时间设计,并设置闹钟。(3)定时时间为1/100秒,可采用定时器实现。(4)采用LED数码管显示,时、分,秒采用数字显示。(5)采用24小时制,具有方便的时间调校功能。(6)具有时钟和秒表的切换功能。使用方法:开机后时钟在00:00:00起开始计时。(1) 长按P3.2进入调分

2、状态:分单元闪烁,按P3.2加1,按P3.3减1.再长按P3.2进入 时调整状态,时单元闪烁,加减调整同调分.按长按退出调整状态。(2) (2)按P3.3进入设定闹时状态: 12:00: ,可进行分设定,按P3.4分加1,再按P3.2为时调整,按P3.4时加1,按P3.3调闹钟结束.在闹铃时可按P3.2停闹,不按闹铃1分钟。(3)按下P3.4进入秒表状态:再按P3.4秒表又启动,按P3.4暂停,再按P3.4秒表清零,按P3.4退出秒表回到时钟状态。二、电路原理图 如原理图所示,硬件系统主要由单片机最小应用系统、LED数码管显示模块、电源模块、晶振模块、按键模块等组成。电子时钟原理图各个模块设计

3、1.单片机系统 AT89S52 AT89S52概述:是一款非常适合单片机初学者学习的单片机,它完全兼容传统的8051,8031的指令系统,他的运行速度要比8051快最高支持达33MHz的晶体震荡器,在此系统中使用12MHz的晶振。AT89S52具有以下标准功能: 8k字节Flash,256字节RAM,32 位I/O 口线,看门狗定时器,2 个数据指针,三个16 位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。另外,AT89S52 可降至0Hz 静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保

4、护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止主要性能:与MCS-51单片机产品兼容 、8K字节在系统可编程Flash存储器、 1000次擦写周期、 全静态操作:0Hz33Hz 、 三级加密程序存储器 、 32个可编程I/O口线 、三个16位定时器/计数器 八个中断源 、全双工UART串行通道、 低功耗空闲和掉电模式 、掉电后中断可唤醒、看门狗定时器 、双数据指针 、掉电标识符 。2、显示模块 LED数码管是由发光二极管构成的,亦称半导体数码管。将条状发光二极管按照共阴极(负极)或共阳极(正极)的方法连接,组成“8”字,再把发光二极管另一电极作笔段电

5、极,就构成了LED数码管。若按规定使某些笔段上的发光二极管发光,就能显示从09的系列数字。同荧光数码管(VFD)、辉光数码管(NRT)相比,它具有:体积小、功耗低、耐震动、寿命长、亮度高、单色性好、发光响应的时间短,能与TTL、CMOS电路兼容等的数显器件。+、-分别表示公共阳极和公共阴极。ag是7个笔段电极,DP为小数点。另有一种字高为76mm的超小型LED数码管,管脚从左右两排引出,小数点则是独立的。 本系统利用6位LED数码管显示时间,共阴极结构。LED数码管由7段发光二极管组成,当要显示某个数字时只要将数字所对应的引脚送入低电平。 3.按键模块 本设计中主要有三个控制按键,按键功能为:

6、(1)P3.2为调时间模式,长按P3.2进入调分状态:分单元闪烁,按P3.2加1,按P3.3减1.再长按P3.2进入时调整状态,时单元闪烁,加减调整同调分.按长按退出调整状态。(2)按P3.3进入设定闹时状态: 12:00: ,可进行分设定,按P3.4分加1,再按P3.2为时调整,按P3.4时加1,按P3.3调闹钟结束.在闹铃时可按P3.2停闹,不按闹铃1分钟。(3)按下P3.4进入秒表状态:再按P3.4秒表又启动,按P3.4暂停,再按P3.4秒表清零,按P3.4退出秒表回到时钟状态。4晶振模块在AT89S51芯片内部有一个高增益反相放大器,其输入端为芯片引脚XTAL1,输出端为引脚XTAL2

7、。而在芯片内部,XTAL1和XTAL2之间跨接晶体振荡器和微调电容,从而构成一个稳定的自激振荡器。时钟电路产生的振荡脉冲经过触发器进行二分频之后,才成为单片机的时钟脉冲信号。晶振电路三、程序设计源程序代码; AT89S52时钟程序 ;*定时器T0、T1溢出周期为50MS,T0为秒计数用, T1为调整时闪烁及秒表定时用,P3.2、P3.3、P3.4为调整按钮,P0口为字符输出口,P2为扫描口,P1.2为蜂呜器口,采用共阳显示管。50H-55H为闹钟定时单元,60H-65H为秒表计时单元,70H-75H为显示时间单元,76H-79H为分时计时单元。03H标志=0时钟闪烁,=1秒表, 05H=0,不

8、闹铃,=1要闹铃. 07H每秒改变一次,用作间隔呜叫.* DISPFIRST EQU 30H ;显示首址存放单元 BELL EQU P1.2 CONBS EQU 2FH ;存放报时次数 CLOCK EQU 2DH* 中断入口程序 * ORG 0000H ;程序执行开始地址 LJMP START ;跳到标号START执行 ORG 0003H ;外中断0中断程序入口 RETI ;外中断0中断返回 ORG 000BH ;定时器T0中断程序入口 LJMP INTT0 ;跳至INTTO执行 ORG 0013H ;外中断1中断程序入口 RETI ;外中断1中断返回 ORG 001BH ;定时器T1中断程序

9、入口 LJMP INTT1 ;跳至INTT1执行 ORG 0023H ;串行中断程序入口地址 RETI ;串行中断程序返回*以下程序开始 ;*整点报时用 QQQQ: MOV A,#10H MOV B,79H MUL AB ADD A,78H MOV CONBS,A BSLOOP: LCALL DS21MS LCALL DL1S LCALL DL1S LCALL DL1S DJNZ CONBS,BSLOOP CLR 08H ;清整点报时标志 AJMP START1* 主程序开始 ;* START: LCALL ST ;上电显示00:00:00 MOV R0,#00H ;清00H-7FH内存单元

10、MOV R7,#80H ; CLEARDISP: MOV R0,#00H ; INC R0 ; DJNZ R7,CLEARDISP ; MOV 20H,#00H ;清20H(标志用) MOV 55H,#1 MOV 54H,#2 MOV 7AH,#0AH ;放入熄灭符数据 MOV TMOD,#11H ;设T0、T1为16位定时器 MOV TL0,#0B0H ;50MS定时初值(T0计时用) MOV TH0,#3CH ;50MS定时初值 MOV TL1,#0B0H ;50MS定时初值(T1闪烁定时用) MOV TH1,#3CH ;50MS定时初值 SETB EA ;总中断开放 SETB ET0 ;

11、允许T0中断 SETB TR0 ;开启T0定时器 MOV R4,#14H ;1秒定时用计数值(50MS20) MOV DISPFIRST,#70H ;显示单元为70-75H;以下主程序循环 START1: LCALL DISPLAY ;调用显示子程序 JNB P3.2,SETMM1 ;P3.2口为0时转时间调整程序 JNB P3.3,TSFUN ;定时闹铃设定 JNB P3.4,FUNPT ;秒表功能(STOP,RUN,CLR) JB 08H, QQQQ AJMP START1 ;P3.2口为1时跳回START1 FUNPT: LJMP FUNPTT START12: LJMP START1以

12、下闹铃时间设定程序,按P3.3进入设定 TSFUN: LCALL DS20MS JB P3.3,START1 ; WAIT113: JNB P3.3,WAIT113 ;等待键释放 JB 05H,CLOSESP ;闹铃已开的话,关闹铃 MOV DISPFIRST,#52H ;进入闹铃设定程序,显示52-55H闹钟定时单元 DSWAIT: SETB EA LCALL DISPLAY JNB P3.4,DSFINC ;分加1 JNB P3.2,DSDEC ;分减1 JNB P3.3,DSSFU ;进入时调整 AJMP DSWAIT CLOSESP: CLR 05H ;关闹铃标志 CLR BELL A

13、JMP START1 DSSFU: LCALL DS20MS ;消抖 JB P3.3, DSWAIT LJMP DSSFUNN ;进入时调整; SETMM1: LJMP SETMM ;转到时间调整程序SETMM DSFINC : LCALL DS20MS ;消抖 JB P3.4, DSWAIT DSWAIT12: LCALL DISPLAY ;等键 释放 JNB P3.4, DSWAIT12 CLR EA MOV R0,#53H ; LCALL ADD1 ;闹铃设定分加1 MOV A,R3 ;分数据放入A CLR C ;清进位标志 CJNE A,#60H,ADDHH22 ; ADDHH22:

14、JC DSWAIT ;小于60分时返回 ACALL CLR0 ;大于或等于60分时分计时单元清0 AJMP DSWAIT DSDEC : LCALL DS20MS ;消抖 JB P3.2, DSWAIT DSWAITEE: LCALL DISPLAY ;等键 释放 JNB P3.2, DSWAITEE CLR EA MOV R0,#53H ; LCALL sub1 ;闹铃设定分减1 LJMP DSWAIT;以下秒表暂停清零功能程序;按下P3.4切换秒表功能,再按开始计时,暂停或清0,最后按P3.4退出秒表回到时钟计时 FUNPTT: LCALL DS20MS JB P3.4,START12 W

15、AIT22: JNB P3.4,WAIT21 CPL 03H JNB 03H,TIMFUN MOV DISPFIRST,#60H ;显示秒表数据单元 MOV 60H,#00H MOV 61H,#00H MOV 62H,#00H MOV 63H,#00H MOV 64H,#00H MOV 65H,#00H MOV TL1,#0F0H ;10MS定时初值 MOV TH1,#0D8H ;10MS定时初值 WAIT88:LCALL DS20MS JB P3.4,WAIT81 WAIT99:JNB P3.4,WAIT99 SETB TR1 ;T1运行控制软件 SETB ET1 ;T1溢出中断允许 WAI

16、T33: LCALL DS20MS JB P3.4,WAIT31 WAIT44: JNB P3.4,WAIT41 CLR ET1 CLR TR1 WAIT55: LCALL DS20MS JB P3.4,WAIT51 WAIT66: JNB P3.4,WAIT61 MOV 60H,#00H MOV 61H,#00H MOV 62H,#00H MOV 63H,#00H MOV 64H,#00H MOV 65H,#00H TIMFUN:MOV DISPFIRST,#72H ;显示时钟数据单元 CLR ET1 CLR TR1 AJMP FUNSS11 FUNSS11: AJMP START1;以下键

17、等待释放时显示不会熄灭用 WAIT21: LCALL DISPLAY AJMP WAIT22 WAIT31: LCALL DISPLAY AJMP WAIT33 WAIT41: LCALL DISPLAY AJMP WAIT44 WAIT51: LCALL DISPLAY AJMP WAIT55 WAIT61: LCALL DISPLAY AJMP WAIT66 WAIT81: LCALL DISPLAY AJMP WAIT88 WAIT91: LCALL DISPLAY AJMP WAIT99; 1秒计时程序 ;T0中断服务程序 INTT0: PUSH ACC ;累加器入栈保护 PUSH P

18、SW ;状态字入栈保护 CLR ET0 ;关T0中断允许 CLR TR0 ;关闭定时器T0 MOV A,#0B7H ;中断响应时间同步修正 ADD A,TL0 ;低8位初值修正 MOV TL0,A ;重装初值(低8位修正值) MOV A,#3CH ;高8位初值修正 ADDC A,TH0 ; MOV TH0,A ;重装初值(高8位修正值) SETB TR0 ;开启定时器T0 DJNZ R4, OUTT0 ;20次中断未到中断退出 ADDSS: MOV R4,#14H ;20次中断到(1秒)重赋初值 CPL 07H ;闹铃时间隔呜叫用 MOV R0,#71H ;指向秒计时单元(71H-72H) A

19、CALL ADD1 ;调用加1程序(加1秒操作) MOV A,R3 ;秒数据放入A(R3为2位十进制数组合) CLR C ;清进位标志 CJNE A,#60H,ADDMM ; ADDMM: JC OUTT0 ;小于60秒时中断退出 ACALL CLR0 ;大于或等于60秒时对秒计时单元清0 MOV R0,#77H ;指向分计时单元(76H-77H) ACALL ADD1 ;分计时单元加1分钟 MOV A,R3 ;分数据放入A CLR C ;清进位标志 CJNE A,#60H,ADDHH ; ADDHH: JC OUTT0 ;小于60分时中断退出 ACALL CLR0 ;大于或等于60分时分计时

20、单元清0 LCALL DS20MS ;正点报时 SETB 08H MOV R0,#79H ;指向小时计时单元(78H-79H) ACALL ADD1 ;小时计时单元加1小时 MOV A,R3 ;时数据放入A CLR C ;清进位标志 CJNE A,#24H,HOUR ; HOUR: JC OUTT0 ;小于24小时中断退出 ACALL CLR0 ;大于或等于24小时小时计时单元清0 OUTT0: MOV 72H,76H ;中断退出时将分、时计时单元数据移 MOV 73H,77H ;入对应显示单元 MOV 74H,78H ; MOV 75H,79H ; LCALL BAOJ POP PSW ;恢

21、复状态字(出栈) POP ACC ;恢复累加器 SETB ET0 ;开放T0中断 RETI ;中断返回;*; 闪动调时程序秒表功能程序 ;*;T1中断服务程序,用作时间调整时调整单元闪烁指示或秒表计时INTT1: PUSH ACC ;中断现场保护 PUSH PSW ; JB 03H, MMFUN ;=1时秒表 MOV TL1, #0B0H ;装定时器T1定时初值 MOV TH1, #3CH ; DJNZ R2,INTT1OUT ;0.3秒未到退出中断(50MS中断6次) MOV R2,#06H ;重装0.3秒定时用初值 CPL 02H ;0.3秒定时到对闪烁标志取反 JB 02H,FLASH1

22、 ;02H位为1时显示单元熄灭 MOV 72H,76H ;02H位为0时正常显示 MOV 73H,77H ; MOV 74H,78H ; MOV 75H,79H ;INTT1OUT: POP PSW ;恢复现场 POP ACC ; RETI ;中断退出FLASH1: JB 01H,FLASH2 ;01H位为1时,转小时熄灭控制 MOV 72H,7AH ;01H位为0时,熄灭符数据放入分 MOV 73H,7AH ;显示单元(72H-73H),将不显示分数据 MOV 74H,78H ; MOV 75H,79H ; AJMP INTT1OUT ;转中断退出FLASH2: MOV 72H,76H ;0

23、1H位为1时,熄灭符数据放入小时 MOV 73H,77H ;显示单元(74H-75H),小时数据将不显示 MOV 74H,7AH ; MOV 75H,7AH ; AJMP INTT1OUT ;转中断退出;MMFUN : CLR TR1 MOV A,#0F7H ;中断响应时间同步修正,重装初值(10ms) ADD A,TL1 ;低8位初值修正 MOV TL1,A ;重装初值(低8位修正值) MOV A,#0D8H ;高8位初值修正 ADDC A,TH1 ; MOV TH1,A ;重装初值(高8位修正值) SETB TR1 ;开启定时器T1 MOV R0,#61H ;指向秒计时单元(71H-72H

24、) ACALL ADD1 ;调用加1程序(加1秒操作) CLR C ; MOV A,R3 ; JZ FSS1 ;加1后为00,C=0 AJMP OUTT01 ;加1后不为00,C=1 FSS1: ACALL CLR0 ;大于或等于60秒时对秒计时单元清0 MOV R0,#63H ;指向分计时单元(76H-77H) ACALL ADD1 ;分计时单元加1分钟 MOV A,R3 ;分数据放入A CLR C ;清进位标志 CJNE A,#60H,ADDHH1 ; ADDHH1: JC OUTT01 ;小于60分时中断退出 LCALL CLR0 ;大于或等于60分时分计时单元清0 MOV R0,#65H ;指向小时计时单元(78H-79H) ACALL ADD1 ;小时计时单元加1小时 OUTT01: POP PSW ;恢复状态字(出栈) POP ACC ;恢复累加器 RETI ;中断返回*; 加1子 程 序 ;* ADD1: MOV A,R0 ;取当前计时单元数据到A DEC R0 ;指向前一地址 SWAP A ;A中数据高四位与低四位交换 ORL A,R0 ;前一地址中数据放入A中低四位 ADD A,#01H ;A加1操作 DA A ;十进制调整 MOV

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1