基于89c51的电子时钟设计课程设计论文(编辑修改稿)内容摘要:

3 控制系统的硬件设计 单片机型号的选择 通过对多种单片机性能的分析,最终认为 89C51 是最理想的电子时钟开发芯片。 89C51 是一种带 4K 字节闪烁可编程可擦除只读存储器的低电压,高性能 CMOS8位微处理器,器件采用 ATMEL高密度非易失存储器制造技术制造,与工业标准的 MCS51 指令集和输出管脚相兼容。 由于将多功能 8 位 CPU 和闪烁存储器组合在单个芯片中, ATMEL 的 89C51 是一种高效微控制器 ,而且它 与 MCS51 兼容 ,且具有 4K 字节可编程闪烁存储器 和 1000 写 /擦循环 , 数据保留时间 为 10 年 等特点,是最好的选择。 数码管显示 工作原理 数码管是一种把多个 LED 显示段集成在一起的显示设备。 有两种类型,一种是共阳型,一种是共阴型。 共阳型就是把多个 LED 显示段的阳极接在一起,又称为公共端。 共阴型就是把多个 LED 显示段的阴极接在一起,即为公共商。 阳极即为二极管的正极,又称为正极,阴极即为二极管的负极,又称为负极。 通常的数码管又分为 8 段,即 8 个 LED 显示段,这是为工程应用方便如设计的,分别为 A、 B、 C、 D、 E、 F、 G、 DP,其中 DP 是小数点位段。 而多位数码管,除某一位的公共端会连接在一起,不同位的数码管的相同端也会连接在一起。 即,所有的 A 段都会连 在一起,其它的段也是如此,这是实际最常用的用法。 数码管显示方法可分为静态显示和动态显示两种。 静态显示就是数码管的 8 段输入及其公共端电平一直有效。 动态显示的原理是,各个数码管的相同段连接在一起,共同占用 8 位段引管线;每位数码管的阳极连在一起组成公共端。 利用人眼的视觉暂留性,依次给出各个数码管公共端加有效信号,在此同时给出该数码管加有效的数据信号,当全段扫描速度大于视觉暂留速度时,显示就会清晰显示出来。 图 共阴数码管 键盘电路设计 该设计只用了一个键盘,但实现的功能却是比较完善,减少了硬件资源的损耗,该键盘可以实现小时和分钟的调节以及控制是否进入省电模式。 当按键按下又松开,可以实现屏蔽数码管显示的功能,达到省电的目的;直接按下不松开,则可以通过按键实现分钟的累加,每按一次分钟 加一;而连续两次按下按键不放松,则可实现小时的调节,同样每按一次小时加一。 达到时间调节的目的。 图 多功能控制键 整个电路原理图 图 系统电路原理图 4 控制系统的软件设计 程序设计 本系统的软件系统主要可分为主程序、定时计数中断程序、时间调整程序、延时程序四大模块。 在程序设计过程中,加强了部分软件抗干扰措施,下面对部分模块作介绍。 定时计数中断程序: MOV TMOD,00H。 写控制字 MOV TH0,0F0H ;写定时常数 MOV TLO,0CH SETB TR0 ;启动 T0 SETB ETO ;允许 T0 中断 SETB EA ;开放 CPU 中断 AJMP $ 时间调整程序: SETMM: cLR ET0。 关定时器 T0 中断 CLR TR0。 关闭定时器 T0 LCALL DL1S。 调用 1 秒延时程序 JB ,CLOSEDIS。 键按下时间小于 1 秒,关闭显示(省电) MOV R2,06H。 进入调时状态,赋闪烁定时初值 SETB ET1。 允许 T1 中断 SETB TR1。 开启定时器 T1 SET2: JNB ,SET1。 口为 0(键未释放),等待 SETB 00H。 键释放,分调整闪烁标志置 1 SET4: JB ,SET3。 等待键按下 LCALL DL05S。 有键按下,延时 秒 JNB ,SETHH。 按下时间大于 秒转调小时状态 MOV R0,77H。 按下时间小于 秒加 1 分钟操作 LCALL ADD1。 调用加 1 子程序 MOV A,R3。 取调整单元数据 CLR C。 清进位标志 CJNE A,60H,HHH。 调整单元数据与 60 比较 HHH: JC SET4。 调整单元数据小于 60 转 SET4循环 LCALL CLR0。 调整单元数据大于或等于 60 时清0 CLR C。 清进位标志 AJMP SET4。 跳转到 SET4 循环 CLOSEDIS:SETB ET0。 省电( LED 不显示)状态。 开T0 中断 SETB TR0。 开启 T0 定时器(开时钟) CLOSE: JB ,CLOSE。 无按键按下,等待。 LCALL DISPLAY。 有键按下,调显示子程序延时削抖 JB ,CLOSE。 是干扰返回 CLOSE 等待 WAITH: JNB ,WAITH。 等待键释放 LJMP START1。 返回主程序( LED 数据显示亮) SETHH: CLR 00H。 分闪烁标志清除(进入调小时状态) SETHH1: JNB ,SET5。 等待键释放 SETB 01H。 小时调整标志置 1 SET6: JB ,SET7。 等待按键按下 LCALL DL05S。 有键按下延时 秒 JNB ,SETOUT。 按下时间大于 秒退出时间调整 MOV R0,79H。 按下时间小于 秒加 1 小时操作 LCALL ADD1。 调加 1 子程序 MOV A,R3。 CLR C。 CJNE A,24H,HOUU。 计时单元数据与 24 比较 HOUU: JC SET6 小于 24 转 SET6 循环 LCALL CLR0。 大于或等于 24 时清 0 操作 AJMP SET6。 跳转到 SET6 循环 SETOUT: JNB ,SETOUT1。 调时退出程序。 等待键释放 LCALL DISPLAY。 延时削抖 JNB ,SETOUT。 是抖动,返回 SETOUT 再等待 CLR 01H。 清调小时标志 CLR 00H。 清调分标志 CLR 02H。 清闪烁标志 CLR TR1。 关闭定时器 T1 CLR ET1。 关定时器 T1 中断 SETB TR0。 开启定时器 T0 SETB ET0。 开定时器 T0 中 断(计时开始) LJMP START1。 跳回主程序 SET1: LCALL DISPLAY。 键释放等待时调用显示程序(调分) AJMP SET2。 防止键按下时无时钟显示 SET3: LCALL DISPLAY。 等待调分按键时时钟显示用 AJMP SET4 SET5: LCALL DISPLAY。 键释放等待时调用显示程序(调小时) AJMP SETHH1。 防止键按下时无时钟显示 SET7: LCALL DISPLAY。 等待调小时按键时时钟显示用 AJMP SET6 SETOUT1: LCALL DISPLAY。 退出时钟调整时键释放等待 AJMP SETOUT。 防止键按下时无时钟显示 延时程序 : 1MS 延时程序, LED 显示程序用 DL1MS: MOV R6,14H DL1: MOV R7,19H DL2: DJNZ R7,DL2 DJNZ R6,DL1 RET 20MS 延时程序,采用调用显示子程序以改善 LED 的显示闪烁现象 DS20MS: ACALL DISPLAY ACALL DISPLAY ACALL DISPLAY RET 程序流程图 系统的流程图如图 和图 所示: 图 主程序流程图 图 中断处理流程图 仿真结果 图 开始运行程序仿真图。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。