基于51单片机实现的简易电子时钟论文内容摘要:

断,每产生一次中断,存储器内相应的秒值加 1;若秒值达到 60,则将其清零,并将相应的分字节值加 1;若分值达到 60,则清零分字节,并将时字节值加1;若时值达到 24,则将时字节清零。 数码管显示原理 数码管的显示采用动态显示。 动态显示就是指轮流的一位一位的点亮各个显示位,对显示器 的每一位,采用每隔一段时间点亮一次。 利用人的视觉暂留特点能够看到整个显示,但必须保证扫描速度够快,字符才能不闪烁。 显示器的亮度既与导通电流有关,也与点亮时间和间隔时间的比例有关。 调整参数可以实现较高稳定度的显示 [4]。 因此采用动态显示节省了 I/O 口,更降低了能量的消耗。 毕业论文(设计) 7 总体设计 系统说明 利用单片机 ( AT89S51) 制作电子时钟,由六个 LED 数码管分别显示小时的十位、小时的个位、分钟的十位、分钟的个位、秒钟的十位、秒钟的个位。 6 个 PNP 管分别控制六个数码管的亮灭,采用一个按键用于时 间调整。 系统框图 系统框图如图 所示。 图 系统框图 电源部分 直流电源 控制部分 单片机( AT89S51) 复位电路 按键 S2 位选部分 6 个 PNP 三极管 6 个七段共阴极数码管 显示秒、分、及小时位 毕业论文(设计) 8 模块设计 电源部分 图 电源部分 如图 所示,从外部引入 的直流电,为单片机、复位电路提供电源。 复位电路 图 复位电路 毕业论文(设计) 9 如图 所示,复位电路主要由 1N4148 型的二极管, 10UF/16V 型的电解电容, 104型的瓷片电容, 10K 的电阻以及按键 S1 构成, S1 接芯片的相应引脚 RST,当开关按下时引脚 RST 为高电平 1,断开时引脚为低电平 0。 数码管的连接电路 图 数码管连接电路 图 为 LED 数码管的连接电路,每位的段码线( a,b,c,d,e,f,g,dp)分别与 1 个 8 位的锁存器输出相连,由 AT89S51 控制组合 0- 9 十个数据,如令其显示 1 则 b,c 引脚(即 2,3 引脚)送高电平,此时数码管显示 1。 由于各位的段码线并联, 8 位 I/O 口输出段码对各个显示位来说都是相同的。 毕业论文(设计) 10 控制部分 如图 所示。 图 控制电路 毕业论文(设计) 11 4 软件设计 程序流程图 图 描述的是主程序的流程图,程序开始运行,首先初始化定时器的常数,设置好 T0 中断入口,然后进入一个循环,等待中断 T0 的到来。 图 描述的是一次 T0 中断的过程。 进入中断,首先现场保护,然后重新设定定时器初值;然后判断本轮中断的次数是否满 20 次,如果不是,则还没增加到 1 秒,如果满 20 次,然后时间增加 1 秒,分钟和时钟的变化也按相应规则随之改变。 做完上面操作之后,恢复进入中断前的现场,退出中断,到此一次中断结束。 图 描述的是时钟调整的程序的执行过程。 这个过程, 根据按键 S2的时间去判断执行何种操作。 毕业论文(设计) 12 T0 中断 现场保护 重装定时器初值 满 20 次否 秒值加 1 Y 满 60 秒否 秒缓冲单元清零 Y 分值加 1 满 60 分否 分缓冲单元清零 Y 时值加 1 满 24小时否 时缓冲单元清零 Y 恢复现场 结束 N N N N 主程序开始 设定定时器常数开中断 到 1 秒。 显示时间 Y N 图 主程序流程图 图 T0 流程图 毕业论文(设计) 13 图 时钟调整的程序流程图 时钟调整程序 按键 S2时间 t1 Y 分钟闪烁,调时状态 按键 S2 时间 t Y 分值加 1 分值 =60。 Y 分值清零 N 关闭显示 (省电) 时钟闪烁, 调时状态 N N 时值加 1 时值 =24 时值清零 Y Y 显示 返回 Y N N S2 是否按下 按键 S2 时间 t 毕业论文(设计) 14 源程序 表 P1 口对应段码及数值 显示 数字 16 进制代码 dp g f e d c b a 0 0 0 1 1 1 1 1 1 3FH 1 0 0 0 0 0 1 1 0 06H 2 0 1 0 1 1 0 1 1 5BH 3 0 1 0 0 1 1 1 1 4FH 4 0 1 1 0 0 1 1 0 66H 5 0 1 1 0 1 1 0 1 6DH 6 0 1 1 1 1 1 0 1 7DH 7 0 0 0 0 0 1 1 1 07H 8 0 1 1 1 1 1 1 1 7FH 9 0 1 1 0 1 1 1 1 6FH 中断入口程序 ORG 0000H。 程序执行开始地址 LJMP START。 跳到标号 START 执行 ORG 0003H。 外中 断 0 中断程序入口 RETI。 外中断 0 中断返回 ORG 000BH。 定时器 T0 中断程序入口 LJMP INTT0。 跳至 INTTO 执行 ORG 0013H。 外中断 1 中断程序入口 RETI。 外中断 1 中断返回 ORG 001BH。 定时器 T1 中断程序入口 LJMP INTT1。 跳至 INTT1 执行 ORG 0023H。 串行中断程序入口地址 RETI。 串行中断程序返回 毕业论文(设计) 15 主程序 START: MOV R0, 70H。 清 70H7AH 共 11 个内存单元 MOV R7, 0BH CLR CLEARDISP: MOV @R0, 00H INC R0 DJNZ R7, CLEARDISP MOV 20H, 00H。 清 20H(标志用 ) 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。 允许 T0 中断 SETB TR0。 开启 T0 定时器 MOV R4, 14H。 1 秒定时用初值( 50MS 20) START1: LCALL DISPLAY。 调用显示子程序 JNB , SETMM1。 口为 0 时转时间调整程序 SJMP START1。 口为 1 时跳回 START1 SETMM1: LJMP SETMM。 转到时间调整程序 SETMM 1秒计时程序 INTT0: PUSH ACC。 累加器入 栈保护 PUSH PSW。 状态字入栈保护 CLR ET0。 关 T0 中断允许 CLR TR0。 关闭定时器 T0 MOV A, 0B7H。 中断响应时间同步修正 毕业论文(设计) 16 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 秒)重赋初值 MOV R0, 71H。 指向秒计时单元( 71H72H) ACALL 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。 指向分计时单元( 76H77H) ACALL ADD1。 分计时单元加 1 分钟。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。