第二章 硬件电路设计
17
图3.5 电子钟基本部分参考电路原理图
2.9 本章小结
本章介绍的是本设计的硬件结构,单片机的相关I/O口输入输出就可以实现相应的控制功能。还介绍了单片机的复位电路和时钟电路。
1 7
18
第二章 硬件电路设计
18
第三章 系统软件的设计
19
第三章 系统软件的设计
在基于单片机8051的控制下,实现时、分、秒的基本功能,本系统主要分为主程序和中断程序两大模块。我们通过8051单片机的基本的C语言进行其逻辑编程,使其实现上述功能。
3.1 调时功能
给三个按键,当8051单片机的P1.0端口的键按下,即P1.0端口检测到
低电平时,则进入调秒状态,当P1.1端口的键按下,则进入调分的状态;当P1.2端口的键按下,则进入调时的状态。当P1.0~P1.2所对应的键抬起,即对应的端口检测到高电平,则退出调时状态,进行正常的时钟显示。由于按键的过程中,存在按键的抖动,从而有时会使得误判断,而进入调时功能状态,对此,我们加入了去抖,其流程图如图4.1所示:
19
20
第三章 系统软件的设计
有按键信号?Y延时等待N仍有按键信号?Y按键处理N
图4.1按键去抖程序图
3.2 显示功能
由于我们需要显示的数字不是很多,故本系统采用数码管进行显示。系统
的时分秒显示部件由两只三位七段共阳极的LED数码管构成,为了保护各段LED不被损坏,我们加入了限流电阻。前两位用于时的显示,第三和第四位用于分钟的显示,第五和第六位用于秒的显示。
3.3 程序设计
本章主要对实现时分秒功能具体程序的设计,保证得到准确的时分秒显
示,及调时功能。
/*
* Desc:DS12C887 6位数码管显示 * */
#include
2 0
第三章 系统软件的设计
#define SEG_DAT P0 #define SEG_BIT P2 #define DS_DAT P0 #define DS_SEC 0x00 #define DS_MIN 0x02 #define DS_HOR 0x04 #define DS_WEK 0x06 #define DS_DAY 0x07 #define DS_MON 0x08 #define DS_YER 0x09 #define DS_R_A 0x0A #define DS_R_B 0x0B #define DS_R_C 0x0C #define DS_R_D 0x0D
#define DS_Y_S 0x0E //年千百位
#define CNT_M 30 //控制闪烁速度,为偶数
#define BCD_DEC(X) (((X & 0xF0) >> 4) * 10 + (X & 0x0F)) #define DEC_BCD(X) (((X / 10) << 4) | (X % 10))
sbit DS_DS = P3^0; sbit DS_RW = P3^1; sbit DS_AS = P3^2; sbit DS_CS = P3^3;
sbit KEY1 = P1^0; sbit KEY2 = P1^1; sbit KEY3 = P1^2;
21
21