电子钟课程设计精编版

上传人:ahu****ng1 文档编号:142169064 上传时间:2020-08-17 格式:DOC 页数:21 大小:252.50KB
返回 下载 相关 举报
电子钟课程设计精编版_第1页
第1页 / 共21页
电子钟课程设计精编版_第2页
第2页 / 共21页
电子钟课程设计精编版_第3页
第3页 / 共21页
电子钟课程设计精编版_第4页
第4页 / 共21页
电子钟课程设计精编版_第5页
第5页 / 共21页
点击查看更多>>
资源描述

《电子钟课程设计精编版》由会员分享,可在线阅读,更多相关《电子钟课程设计精编版(21页珍藏版)》请在金锄头文库上搜索。

1、精品资料推荐 毕业设计任务书一 题目 电子钟二 基本要求 利用单片机内部的定时器设计一个电子时钟,在LED 上显示时、分、秒 毕业设计报告写作要求 一、封面 二、内容提要 三、目录 四、正文 1、概述所作题目的意义、本人所做的工作及系统的主要功能2、硬件电路设计及描述;3、软件设计流程及描述; 4、源程序代码。五 设计体会 六、参考文献 单片微型计算机应用技术徐仁贵 机械工业出版社单片机控制技术及应用韩全立 电子工业出版社http:/www.kj- 数码管 按键 电铃一、绪论用单片机控制的自动打铃器,充分发挥单片机体积小,价格便宜,功耗低可靠性好等特点。可用于学校作息,方便了广大师生。同时也可

2、作为电子手表的设计方案,两者在原理及实现的功能上是一样的效果,也可作为各种时钟控制电路的报警装置使用,具有用途范围广,原理简单便于操作和维护的优点总体上单片机设计方案在现实中应用非常广泛 而且在现实生活中也比较容易实现设计的实施二、总体设计方案.设计思路利用单片机及定时器设计的一个时钟,在每次秒加1的计时过程中,都与规定的时间作比较,如果相等就进行开关电铃,不等则返回。同时时时的时间显示功能为我们提供了方便 2 总体电路方框图三、设计原理分析1.校时模式按下K1(模式选择键),将模式选择为校时模式(模式指示灯黄灯亮),K2,K3,K4分别为时钟加1键,分钟加1键,秒钟加1键,K5无用。2.定时

3、模式按下K1(模式选择键),将模式选择为定时模式(模式指示灯绿灯亮),K2为定时器组选择(本装置有24组定时器)键,K3,K4分别为定时器时钟加1键和定时器分钟加1键,K5为定时器状态选择键,每按K5一次,此组的定时器状态改变一次,并将此组数据存入片内数据存储器中按下K1(模式选择键),将模式选择为工作模式(模式指示灯红灯亮),K2,K3,K4,K5无用。此模式为正常工作模式3 自动打零器电路图四、程序部分1.程序分为五部分1.初始化程序,2.键值处理程序,3.中断程序,4.显示程序,5显示驱动程序2.部分寄存器及按键说明28H:扫描指针寄存器20H-25H:显示缓存寄存器R6:时钟寄存器R5

4、:分钟寄存器R4:秒钟寄存器K1:模式选择键K2:时加1(定时器组加1)键K3:分加1(定时器时加1)键K4:秒加1(定时器分加1)键K5:定时器状态改变既存储键3.程序流程图4 总体软件流程图的解释总体流程图的定时器首先设定一个时间,执行程序时及进入计时程序。通过加一比较程序与设定的计时程序进行比较,如果不到计时时间执行中断返回指令。在此时如果校时键启动时可进行校时作用。而LED显示器也通过8051控制程序实时传来的数据进行显示工作。LED也是动态的显示方式。5 校时程序流程图首先进入校时显示模式,此时K1如果有按下,校时程序即可执行。此时如果K2手工操作下被按下则计时加一,达到与想要的结果

5、一致即可停止K2的操作,如果计时结果在现在时间之前则可一直按下直到到达24小时一个循环时候,然后再次按下达到想要的计时结果。而24时也是校时循环终点。此时指示灯也有所变化。可以作为执行程序效果的参考。而校分流程图也对整体软件流程产生影响,最终达到时间的精确。小时和分钟的实时显示是定时的基础。6 校分及显示流程图解释首先进入校分模式时看K1是否按下,如果按键则K3是否有按键,如果有则分钟加一,如此便起到修改分钟的作用,如果分钟修改到达60分钟则分钟全部清零,分钟计时重新开始。如果K1键没有按下,则小时和分钟数据进入显示缓存器,然后进入显示器显示,此时看K1键是否还在断开状态,如果没有按下则时间还

6、是显示而不做变化如果K1键按下则此时进入定时器进入工作状态,因此K1键是程序运行的关键所在,在K1键进入工作状态的同时修改小时和分钟及定时器的工作程序才能进行7 程序清单1.初始化程序:READ EQU 0 ;读RAMWRITE EQU 2 ;写入RAMEWEN EQU 4 ;RAM写入使能EWDS EQU 6 ;RAM写入禁止ADR46 EQU 21H ;RAM地址显示显示启动定时器进入工作状态时分值送显示缓存区K1 有按键吗?清分单元显示分值加1置校分标志K3 有按键吗?K1 有按键吗?是60 分吗?THIGH EQU 0F8HTLOW EQU 5FHTIMENEQU 30 ;打铃持续时间

7、(30秒)CS BIT P3.7 ;RAMCSCLK BIT P3.6 ;RAMCLKDI BIT P3.5 ;RAMDIDO BIT P3.4 ;RAMDOORG 0000H ;主程序起始地址AJMP START ;跳至主程序ORG 000BH ;TIMER0中断起始地址AJMP TIM0 ;跳至TIMER0中断子程序START:MOV SP,#60H ;设置堆栈在60HMOV 28H,#00 ;显示寄存器初值为00MOV R6,#12H ; 时寄存器值为12HMOV R5,#00H ;“分”寄存器值为00HMOV R4,#00H ;“秒”寄存器值为00H2.键值处理程序:LOOP: SET

8、B P0.5 ;工作模式CLR P0.6CLR P0.7JB P0.0,N1 ;K1(模式选择键)按了?不是则跳至N1ACALL DELAY ;消除抖动JNB P0.0,$ ;K1(模式选择键)放开了?ACALL DELAY ;消除抖动AJMP SET ;转到定时模式SETN1: MOV 2FH,R6 ;将时钟数据载入2FH中MOV 2EH,R5 ;将分钟数据载入2EH中MOV RAM,#00 ;把93C46地址置0SETB RS0 ;将工作寄存器组选择1区LOOP1: MOV A,#READ ;读RAMACALL RAMMOV A,R3 ;取出定时器的状态ANL A,#01HCJNE A,#

9、01H,N2 ;定时器为关闭,则跳转至N2MOV A,R4 ;取出定时器分钟数据CJNE A,2FH,N2 ;定时器分钟数据与时钟分钟不同则转至N2MOV A,R5 ;取出定时器时钟数据CJNE A,2EH,N2 ;定时器时钟数据与时钟时钟不同则转至N2MOV TMOD,#01H;MOV TH0,#THIGH;MOV TL0,#TLOWH;SETB TR0SETB P2.1 ;定时器时间到,打铃MOV R7,#9678H;中断查询7500次让时间达到30秒SJMP $TISE:DJNE R7CPL P2.1 终止打铃MOV A,RAM ;将RAM地址载入A中N2: CJNE A,#1EH,N3

10、 ;到定时器数据表表尾?没到转至N3MOV ADR46,#00 ;到表尾,置RAM地址为表头AJMP LOOP1 ;转至LOOP1N3: INC RAM ;RAM地址加2INC RAMAJMP LOOP1 ;转至LOOP1SET: CLR P0.5 ;校时模式SETB p0.6 高电平CLR P0.7 低电平LOOPS: JB P0.0,N11 ;K1(模式选择键)按了?不是则跳至N11ACALL DELAY ;消除抖动JNBP0.0,$ ;K1(模式选择键)放开了?ACALL DELAY ;消除抖动AJMP SETTIME ;转至SETTIMEN11: JB P0.1,N13 ;K2(时钟加

11、1键)按了?不是则跳至N13ACALL DELAY ;消除抖动MOV A,R6 ;将时寄存器的值载入AADD A,#01H ;A内容加1DA A ;做十进制调整MOV R6,A ;将A的值存入时寄存器CJNE A,#24H,N12 ;是否超过24时?不是则跳至N12MOV R6,#00H ;是则清除时寄存器的值为00N12: JNB P0.1,$ ;K2(时钟加1键)放开了?ACALL DELAY ;消除抖动N13: JB P0.2,N15 ;K3(分钟加1键)按了?不是则跳至N15ACALL DELAY ;消除抖动MOV A,R5 ;将分寄存器的值载入AADD A,#01 ;A内容加1DA

12、A ;做十进制调整MOV R5,A ;将A的值存入分寄存器CJNE A,#60H,N14 ;是否超过60分?不是则跳至N14MOV R5,#00H ;是则清除分寄存器的值为00N14: JNB P0.2,$ ;K3(分钟加1键)放开了?ACALL DELAY ;消除抖动N15: JB P0.3,N17 ;K4(秒钟加1键)按了?不是则跳至N17ACALL DELAY ;消除抖动MOV A,R4 ;将秒寄存器的值载入AADD A,#01 ;A内容加1DA A ;做十进制调整MOV R4,A ;将A的值存入秒寄存器CJNE A,#60H,N16 ;是否超过60秒?不是则跳至N16MOV R4,#0

13、0 ;是则清除分寄存器的值为00N16: JNB P0.3,$ ;K4(秒钟加1键)放开了?ACALL DELAY ;消除抖动N17: AJMP LOOPS ;转至LOOPSSETTIME:CLR P0.5 ;定时模式CLR P0.6SETB P0.7MOV RAM,#00HMOV A,#READ ;将数据存储器的地址为RAM中的数据ACALL TO RAMLOOPB:ACALL DISP ;调用DISPJB P0.0,N21 ;K1(模式选择键)按了?不是则跳至N21ACALL DELAY ;消除抖动JNB P0.0,$ ;K1(模式选择键)放开了?ACALL DELAY ;消除抖动AJMP LOOP ;转至LOOPN21: JB P0.1,N22 ;K2(定时器组加1键)按了?不是则跳至N22ACALL DELAY ;消除抖动MOV A,RAM ;将地址载入ACLR C ;清除进位位RRC A ;A右移1位ADD A,#01H ;地址加1MOV R6,A ;将A存入R6CLR C ;清除进位位RLC A ;A左移1位MOV RAM,A ;将A中地址存入RAMMOV A,#READ ;读RAM地址为ADR46中的数据ACALL TORAMJNB P0.1,$ ;K2(定时器组加1键)放开了?ACALLDELAY ;消除抖动N22: JB P0.2,N24 ;K3(定时器分钟加1

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

最新文档


当前位置:首页 > 商业/管理/HR > 管理学资料

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