基于mcs-51单片机的多功能定时电子时钟设计内容摘要:

时钟各功能分析及图解 ( 1) 时钟运行图 仿真开始运行时,或按下 key4 键时,时钟从 12: 00: 00 开始运行,其中key2 键对分进行调整, key3 对小时进行调整, key6 可以让时钟暂停。 时钟运行图如图 441 所示: ( 2)秒表计时图 当按下 key1 键进入秒表计时状态, key6 是秒表暂停键,可按 key4 键跳出秒表计时状态。 秒表计时图如图 442 所示: 图 441 时钟运行图 图 442 秒表计时图 ( 3)闹铃设置图及运行图 当按下 key5,开始定时,分别按 key2 调分, key3 调时设置闹铃时间,然后按下 key4 键恢复时钟运行状态 图 443 当闹铃设置时间到时,蜂鸣器将发出 10秒中蜂鸣声(图 444)。 图 443 闹铃时间设置图 该数字钟是用一片 AT89C51 单片机通过编程去驱动 8 个数码管实现的。 通过6 个开关控制 ,从上到下 6 个开 关 KEY1KEY6 的功能分别为: KEY1,切换至秒表;KEY2,调节时间 ,每调一次时加 1; KEY3, 调节时间 ,每调一次分加 1; KEY4,从其它状态切换至时钟状态; KEY5,切换至闹钟设置状态 ,也可以对秒表清零;KEY6,~ 口连接.其中: A 通过 P2 口和 P3 口去控制数码管的显示如图所示 P2口接数码管的 a―― g端,是控制输出编码 ,P3 口接数码管的 1―― 8 端 ,是控制动态扫描输出. B 从 输出一个信号使二极管发光,二极管在设置的闹钟时间到了时候发光,若有乐曲可以去驱动扬声器实现。 图 444 闹铃运行图 电路功能使用说明 ( 1) 各个控制键的功能:可对时间进行校准调节(只能加1);按下设置键数字时钟进入闹钟设置状态,设置闹钟的时间;时加1、分加1键是在校准时间时或设置闹钟时间对小时数或分钟数调节而设置的;按下秒切换键就可以进入秒表模式,同时秒表也开始计时,按下秒表暂停、复位键就暂停、归零,如果要重新对秒计时则可以按秒表开始、复位;清零键可以对闹钟清零。 AT89C51 单片机,通过编写程序对数码显示进行控制。 八个 7 段数码管显示 时钟和秒表信号 第五章 软件总体设计方案 主程序流程图 软件程序从开始执行,先通过初始化各个寄存器,经过扫描按键来决定是否设定参数来执行相应功能的程序,进而在数码管上显示。 如图 510: 图 31 主程序流程图 总中断程序流程 图 520 中断流程图 时间的显示通过此中断程序来控制,并且通过与设定的时间进行比较来判断是否让闹铃工作。 程序中包含时间的设定,如设定 tcount 来使秒等工作,进而来控制分和时。 如上图图 520。 秒表中断程序流程 秒表功能通过另一个程序来实现。 通过保护主程序的数 据来进行秒表功能。 程序中需要设置秒表的具体显示方法。 如图 53: N N 图 53 秒表中断程序流程图 图 54 为时钟和闹钟的调节,程序中通过扫描来判断按键是否按下进行时间和闹钟的调节。 图 54 按键程序流程图 图 55 为进入中断和清零图,程序中通过扫描来判断按键是否按下进行执行相应的中断来事实现相应的功能。 图 55 中断和清零程序流程图 控制电路的 C 语言源程序 根据流程图,经过认真分析得出控制电路的源程序如下: include define uchar unsigned char define uint unsigned int define delay_time 3/*宏定义 */ uchar k,dat[] 0,0,0,0,0,0,0,0。 uint tcount,t,u。 uchar dat1[] 0,0,0,0,0,0,2,1。 uchar dat2[] 0,0,0,0,0,0,0,0。 uchar alarms[] 0,0,0,0,0,0,0,0。 uchar dis_bit[] 0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01。 unsigned char code SEG7[11] 0xC0,/*0*/ 0xF9,/*1*/ 0xA4,/*2*/ 0xB0,/*3*/ 0x99,/*4*/ 0x92,/*5*/ 0x82,/*6*/ 0xF8,/*7*/ 0x80,/*8*/ 0x90,/*9*/ 0xBF,/**/。 /*数字显示数组 */ sbit miaobiao1 P1^0。 sbit tminute P1^1。 sbit thour P1^2。 sbit miaobiao2 P1^3。 sbit alarm P1^4。 sbit P0_0 P0^0。 sbit P1_5 P1^5。 sbit P1_6 P1^6。 sbit P1_7 P1^7。 /*端口定义 */ uchar ms 0。 uchar flag 0。 uchar sec 0。 uchar minit 0。 struct time uchar second。 uchar minute。 uchar hour。 time1。 uchar n,i。 void delay n while n for i 120。 i 0。 i。 /*延时子程序 */ void modify void EA 0。 if thour 0 if flag 0 dat1[6]++。 delay 280。 if dat1[6] 9。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。