基于89c52单片机的电子时钟设计(编辑修改稿)内容摘要:

将自动叠加一次 , 当闪烁第 60次时分钟将自动加 1。 下面讲述的便是按键的各种功能模式 : 1. 日期模式:按下 1键后,显示的是年月日可以进行调节,调节状态指示灯亮。 年份的调节:按下 6键时调节年份的千位以及百位,一次可叠加 1 按下 5键调节的是年份的十位和个位,同样的按下一次叠加 1 月份的调节: 4键便是调整月份的 ,按下一次便会叠加 1,当所显示的月份到达 12月时,再次叠加将会显示 1月 日的调整: 3键就是调节月份所属的日期,每叠加一位便会加 1,其中当为 12时日期最高显示为 31日,当为 11时显示的最高日期便为 30日,至于 2月当为所属的年份为 平年 或者 闰年 时,最高显示将不同分别为 28日和 29日。 平年和 闰年 的计算下面将会继续做详细的讨论。 2. 调时模式:按下 2键时,显示的是时分秒可以进行调节,且此时的调节指示灯亮。 时钟的调节:按下 6键时此时可以调节的是时钟,按下一次该位也将自动加 1,最高可显 示 23,最低显示 0。 分钟的调节:触动 5键可以进行分钟的调节,按一次分钟就加 1,当显示为 59时按 5键,分钟的显示将变为 0,此时时钟也将加 1。 秒的调节:按 4键将会使钟清零。 3. 闹铃模式: 3键为闹钟的调整,此时显示的是闹钟时刻的可调节,指示灯变亮。 闹铃调节相对应的按键: 5键,对应的是进行时钟的调整; 4键对应的是分钟的调整。 每按一次键时对应的位也将相应的加 1。 4. 倒计时模式:长按 4键进入倒计时模式,显示定时长度可进行相应的调节,同样的状态指示灯变亮。 定时调整相对应按键: 6键控制分的调节, 5键控制秒的调节, 4键启 动定时功能,边显示倒计时。 5. 按 5键铃声测试,扬声器播放音乐。 6. 按下 7键,进入秒表模式,显示秒表走时。 拨上 7键,秒表暂停;按下 7键,秒表又继续走时。 按下 8键,秒表清零。 0键 —— 调整状态指示灯灭,返回主程序,显示时间 日期模式调整完毕后,按 0键返回主程序,此时指示灯灭,显示调节好的时间 7. 按下 8键,数码管熄灭,时钟仍在走时,进入节能模式。 东华理工大学长江学院毕业设计(论文) 11 拨上 8键,数码管亮,恢复普通工作模式。 8. 9键为闹铃启动(停止)键,按下可以选择是否要闹铃,以及在闹铃响起时,按此键可以停止闹铃。 9. 10键为铃声选择开关,按下与否,可以选择两手音乐。 10. 11键为闹铃重响控制开关,重响功能开启时,从闹铃随音乐结束而结束的时刻开始,或从手动按 9键停止闹铃的时刻开始定时,一段时间后闹铃重响。 11. 12键为闹铃重响间隔选择开关,可选两个定时长度,以便在闹铃重响功能开启时,闹铃初次响后,过一段时间闹铃继续响。 程序主要模块 延时模块 数码管显示动态扫描时,用到延时程序,这里使用延迟 1ms 的程序,此程序需要反复调用程序如下: D_1MS: MOV R7,2 D_5: MOV R2,250 DJNZ R2,$ DJNZ R7,D_5 RET 除数码管动态扫描外,数码管的闪烁提示,以及音乐模块也用到了延时,只是延时的长短不同罢了。 中断服务程序 本实验中,计数器 T0,T1中断都有运用,其中 T0中断为时钟定时所用, T1中断用于音乐播放。 T0的定时长度为 ,工作于方式 1,计数 1次,时长 1us,故计数器计数 10000次,进入中断,计数初值为 6553610000=55536=0D8F0,装满定时器需要 ,从而 100次中断为一秒,一秒之后,判 断是否到 60秒,若不到则秒加一,然后返回,若到,则秒赋值为 0,分加一,依次类推。 包括日期显示的功能也是如此。 另外,由于要实现倒计时功能,因此在中断程序中还要加入减一的寄存器,需要时将其进行显示。 基东华理工大学长江学院毕业设计(论文) 12 于以上考虑,以 R3为倒计时中的秒, R4为倒计时的分,当秒加 1时 R3减一,减到 0之后,秒赋值为 59,分减一,直到分为 0。 以下为定时中断流程图: NO YES YES NO 进入 T0 定时中断 修正,重装计数初值 按 7 键 秒表的百分之一秒位,秒位,分位,时位的进位 DEC PNUM PNUM=0,已到 1 秒 MOV PNUM,100 重装中断计数值 INC SECOND 秒位加 1 R3,R4 所存定时长度减 1 分,时,日周,月,年的进位 RETI 中断返回 东华理工大学长江学院毕业设计(论文) 13 计数器 T1工作于方式 1, 当调用响铃程序时,其计数功能开启,为音乐音调不同频率的方波的形成,提供延时。 其中断服务程序就是根据音调改变音乐方波输出口电平的高低,用语句 CPL实现。 中断服务程序中日历的实现较为复杂,要考虑平年,闰年,特殊的 2月,每月的天数的不尽相同。 具体的逻辑判断方法为:首先,要考虑年份是不是闰年,闰年的判断方法是:将年份除以 100,若能整除,则将年份除以 400,若还能整除,则为闰年,若不能,则为平年;若不能被 100整除,则判断是否能被 4整除,若能,则为闰年,若不能则为平年。 只有 2月与平、闰年相关,因此在闰年和平年的子程序中,要判断是不是 2月,若是则在相应的年中进行日期的增加,若不是则转入平时的月份。 其中 12月是每月 31天, 11月为每月 30天。 日历进位判断流程图如下: 本实验用 8个数码管,刚好能显示年,月,日,扫描显示与时间的扫描显示类似。 年比较特殊,由两个寄存器存储,个位,十位为 0时,表明年数能被 100整除,若此时千位,百位 年份能否被 100 整除 N Y 年份是否能被 4 整除 年份是否能被 400 整除 N N 平年 闰年 Y Y 是不是 2 月 是不是 2 月 Y 日 =28 之后返回为 1 N N Y 日 =29 之后返回为 1 若月份为 12月则调用 31 天的程序 若月份为 11 则调用 30 天的程序 东华理工大学长江学院毕业设计(论文) 14 组成两位数能被 4整除,则年数被 400整除,为闰年。 若十位,个位组成两位数能被4整除,则年数能被 4整除,为闰年。 主程序 主程序主要对按键进行扫描,以及判断定时和闹铃时间是否已到,若到则调用相关程序,该段程序如下: MAIN: JNB ,DATETZ。 按下 0键,显示日 期并可对日期进行调整 JNB ,ZSTZ1。 按下。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。