51单片机数码管时钟电路的设计_AT89C51

上传人:woxinch****an2018 文档编号:38640831 上传时间:2018-05-05 格式:DOC 页数:20 大小:97.61KB
返回 下载 相关 举报
51单片机数码管时钟电路的设计_AT89C51_第1页
第1页 / 共20页
51单片机数码管时钟电路的设计_AT89C51_第2页
第2页 / 共20页
51单片机数码管时钟电路的设计_AT89C51_第3页
第3页 / 共20页
51单片机数码管时钟电路的设计_AT89C51_第4页
第4页 / 共20页
51单片机数码管时钟电路的设计_AT89C51_第5页
第5页 / 共20页
点击查看更多>>
资源描述

《51单片机数码管时钟电路的设计_AT89C51》由会员分享,可在线阅读,更多相关《51单片机数码管时钟电路的设计_AT89C51(20页珍藏版)》请在金锄头文库上搜索。

1、广东石油化工学院广东石油化工学院51 单片机原理与实践单片机原理与实践课程设计报告课程设计报告学学 院院 计算机与电子信息学院专专 业业 班班 级级 学学 号号 姓姓 名名 指导教师指导教师 课程成绩课程成绩 完成日期完成日期 1数码管时钟电路的设计数码管时钟电路的设计1、设计目的:设计目的:通过这次课程设计掌握单片机系统的基本设计步骤及设计思路,掌握 汇编语言的用法及各种指令的含义,比较熟练的运用指令进行单片机系统 的设计的,熟悉用 KEIL 软件进行汇编语言的汇编,以及把代码写入实验 板中,观测代码结合实际的运行结果后进行调整,体会到编程的分析问题、 确定算法、画程序流程图、编写程序、程序

2、功能模块化的优点的各各步骤。2、设计要求:设计要求:LED 数码管时钟电路采用 24h 计时方式,时、分、秒用六位数码管显 示。该电路采用 AT89C2051 单片机,使用 3V 电池供电,只使用一个按键 开关即可进入调时、省电(不显示 LED 数码管)和正常显示三种状态。3、设计实验内容:设计实验内容:1. 硬件的设计硬件的设计 其采用 AT89C51 单片机应用设计,LED 显示采用动态扫描方式实现, P0 口输出段码数据,P2 口输出位码数据 ,P1.1、P1.2 接按钮开关。为了 提供 LED 数码管的驱动电流,采用 6MHz 晶振。2. 系统总体分析系统总体分析系统主要包含四大模块:

3、显示模块、时间计时模块、模式切换模块和 模式设置模块。2显示模块:主要由主循环负责。内存中开辟了一段 8 字节的内存空间, 用作数据显示的字符缓冲区。主循环不断将缓冲区中的字符呈现至数 码管。 时间计时模块:电子钟的核心模块,记录了时间的时、分、秒信息。 模式切换模块(MODE):切换电子钟的设置模式,包括时设置、分 设置、秒设置、闹铃开关设置、闹铃时设置和闹铃分设置。相关数据 被设置时将闪烁显示。 模式设置模块(CONFIG):通过判断设置模式(MODE) ,执行相应 的设置。如时、分、秒的增 1 以及闹铃开关的变换。另外,主循环还负责扫描键盘,检测相应键是否被按下,若 MODE 键 被按下

4、则在特定单元中登记该功能,并启动定时器 1,然后返回继续执行 显示功能。在定时器 1 中断时,被登记的功能正式执行。期间用时约 10ms,用以消除机械抖动。主循环流程图大致如下:开始键被按下登记相应功能数码管显示是否图(一)主循环流程图定时器 1 中断服务程序流程图如下:3定时器 1 中断logfunc = ?执行 MODE执行 CONFIG结束MODECONFIG图(二)定时器 1 中断服务程序流程图3. 系统主要程序的设计系统主要程序的设计 1)主程序主程序本设计中的主程序主要负责对键盘扫描及显示数据,还包括判断是否 闹钟正在活动。若键盘中的 P1.6(模式键)或 P1.7(设置键)被按下

5、,登 记将被执行的功能,主循环不负责功能模块的执行。若闹钟正在活动,调 用蜂鸣函数。其中 bPalse 标识了一秒的前半秒和后半秒,是为了控制显示 数据的半秒闪烁。主函数还包含初始化操作,以下省略。 loop:MOV B, #01111111B ;位选通信号MOV R0, #prebuf - 01H ;数据缓冲区 nextnum:ACALL keyscan ;扫描键盘INC R0MOV A, R0PUSH ACCMOV A, BRL AMOV B, AJB bPalse, showORL A, dmaskJNB bAlaIng, showMOV led, #0FFHACALL beeponce

6、 若闹铃活动,调用蜂鸣函数DEC SP4SJMP loop show: PUSH ACCACALL displayone 在特定数码管显示数据。DEC SPDEC SPACALL delayCJNE R0, #prebufend, nextnumSJMP loopkeyscan:JNB keym, keymode ;若切换键被按下,登记“切换”功能JNB keyc, keyconf ;若设置键被按下,登记“设置”功能RET;= ; ;log function mode ; ;= keymode:MOV funclog, #01H ;key actACALL funcperform ;激活“功能

7、执行模块” (见下文) ,RET;= ; ;log function config ; ;= keyconf:MOV funclog, #02HACALL funcperform ;激活“功能执行模块” (见下文)RET2)显示子程序显示子程序在特定数码管显示数据,通过堆栈传递参数。 第一个参数是待显示的字符,第二个参数是位选通信号。 函数通过查字形码表将字形显示至数码管。 displayone:PUSH ACCPUSH PSWMOV A, R0PUSH ACCPUSH BMOV PSW, #00HMOV A, SPSUBB A, #07HMOV R0, AMOV A, R0INC R0MOV

8、 B, R05PUSH DPLPUSH DPHMOV DPTR, #metrixMOVC A, A + DPTRJNB bPalse, noftANL A, ft noft:MOV lmask, BMOV led, APOP DPHPOP DPLPOP BPOP ACCMOV R0, APOP PSWPOP ACCRET3)定时器定时器 TO 中断服务程序中断服务程序 电子钟的计秒程序,负责计算时间。 act: ;main timer actorCJNE R2, #0BH, conCLR bPalse ;palse per second con: DJNZ R2, leaveMOV R2, #

9、14HPUSH ACCPUSH PSWMOV PSW, #00HMOV A, s ;sINC ADA AMOV s, ACJNE A, #60H, incnMOV s, #00HMOV A, m ;mINC ADA AMOV m, ACJNE A, #60H, incnMOV m, #00HMOV A, h ;hINC ADA AMOV h, ACJNE A, #24H, incnMOV h, #00H incn:SETB bPalseJNB bAlaOn, alarmoffACALL checkala ;check alarm when alarm is ON alarmoff:6MOV A

10、, npageANL A, #02HJNZ skipACALL prepare skip: POP PSWPOP ACC leave:MOV TH0,#03CH MOV TL0,#0B0HRETI4)模式切换程序模式切换程序切换设置模式,包括时间时设置、时间分设置、时间秒设置、闹铃开 关设置、闹铃时设置、闹铃分设置。 mode: ;mode;SETB P3.2PUSH ACCPUSH PSWPUSH DPLPUSH DPHJNB bAlaIng, modeskipSETB bKick ;stop alarmCLR bAlaIngSJMP modeleave modeskip:MOV npage

11、, #00HMOV DPTR, #maskdatMOV A, cmodeINC ACJNE A, #07H, enmodeMOV A, #00H enmode:MOV cmode, AANL A, #04HJZ notalapageMOV npage, #02HACALL preala ;时钟调整页准备 notalapage:MOV A, cmodeMOVC A, A + DPTRMOV dmask, A ;设置时闪烁 modeleave:POP DPHPOP DPLPOP PSWPOP ACCRET5)模式设置程序模式设置程序对时间量执行加 1,特别的闹铃开关执行开关设置。7conf: ;c

12、onf;SETB P3.3PUSH ACCPUSH PSWMOV PSW, #00HMOV A, cmodePUSH DPLPUSH DPHJNB bAlaIng, confskip;SETB bKick ;stop alarm;CLR bAlaIngSJMP confleave confskip:MOV DPTR, #confsetRL AJMP A + DPTR set1: ;时设置MOV A, hINC ADA AMOV h, ACJNE A, #24H, notsetMOV h, #00HSJMP notset set2: ;分设置MOV A, m INC ADA AMOV m, AC

13、JNE A, #60H, notsetMOV m, #00HSJMP notset set3: ;秒设置MOV A, s INC ADA AMOV s, A CJNE A, #60H, notsetMOV s, #00HSJMP notset setae:CPL bAlaOn ;闹钟开关SJMP notseta setah:MOV A, ah ;闹钟时设置INC ADA AMOV ah, ACJNE A, #24H, notsetaMOV ah, #00HSJMP notseta setam:MOV A, am ;闹钟分设置INC ADA AMOV am, ACJNE A, #60H, notsetaMOV am, #00H notseta:8ACALL prealaCLR bKickSJMP confleave notset:ACALL prepare confleave:POP DPHPOP DPLPOP PSWP

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 中学教育 > 高中教育

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号