基于单片机电子钟设计 第3页
SYSTEMCLOCK CurrentClock;//闹铃结构体
bit flag_500ms=0;//过程变量 flag_500ms=0或1各持续500ms。
void delay(int x) //软件延时,实参100时大概延时10ms。
4.2 主程序Main.C
程序流程如图4.1所示:
4.3显示模块(disp.h)
硬件电路采用的是两个4位8段共阳极数码管,软件采用动态显示的方法,其原理是动态扫描的频率大于人眼视觉暂停留频率(每秒24次),信息看起就是稳定。显示内容保存在2个结构体中,译码方式采用软件译码,考虑到调整状态需要闪烁功能,用2条译码函数,(1)void disp_led(unsigned char *str),*str为存放显示数据的数组的首地址。(2)void flash_disp_led(unsigned char *str,unsigned char x,unsigned char y),*str为存放显示数据的数组的首地址,x,y为需要闪烁的数码管(数码管编号8-->1)。根据状态字,从结构体中取的相应的实参并调用译码函数即可完成全部状态的显示。程序流程如图4.2所示:4.4按键模块 key.h
按键模块是程序设计的核心部分,采用软件消抖。关键是各种状态下按键实现不同的功能。本程序采用状态标识法,很好的解决了这个问题。设计了四个按键K1,K2,K3,K4功能定义如下表:
按键 键名 功能
K1 显示调整切换键 用于显示与调整之间切换
K2 时间日期切换以及调整状态下的++键 时间显示与日期显示之间切换以及调整状态下的++功能
K3 时间闹铃切换以及调整状态下的--键 时间显示与闹铃显示之间切换以及设置状态下的--功能
K4 返回键 在任何状态下无条件返回到时间显示状态
按键流程如图4.3,按键程序流程如图4.4
4.5闹铃程序
当秒钟到00时开始判断闹铃条件,时间持续5秒(方便输出1HZ的闹铃)。
闹铃程序流程如图4.5五 调试与测试部分
设计完成之后进行了样品制作,PCB板制了三块(一块用于此次竞赛,剩余两块留作今后进行功能扩展作为实验平台),样品进行了严格的功能调试与测试,其结果如下。
5.1功能调试
(1)电源部分:接上电源测试效果时,出现了突然掉电的现象,经过检查发现时电源接口接触不良,从新换了个新的电源接口之后问题得到解决。
(2)数码管显示部分:最初数码管在上电之后不能亮,百思不得其解,最后在将所有电路检查之后作出判断:数码管和驱动电路不匹配,才发现驱动电路是对共阳数码管进行驱动的,但我们的数码管事共阴极的,在换了共阳极数码管之后才把数码管点亮,但又发现亮度不够,将段控电阻由原来的220欧姆换为100欧姆之后亮度得到明显的改善。
(3)ISP在线编程功能:通过自制下载线进行程序烧录的时候,发现程序烧录不成功,才发
上一页 [1] [2] [3] [4] 下一页
基于单片机电子钟设计 第3页下载如图片无法显示或论文不完整,请联系qq752018766