(2)电源:POWER_CON3输入9V的直流电源,经过7805稳压后输出系统所需的5V的直流电压。电路图如图3.2所示,C1和C2用来稳定输入电压和消除输入电压中的高频成分,C3、C7用来稳定7805的输出电压,C4、C5、C6作为3个IC的去耦电容。LED是系统的电源指示灯。
(3)复位电路:AT89S52复位需要两个时钟周期的高电平(0.167us)。我们采用上电复位的方式,电路如图3.3。上电瞬间复位带电路就会开始对电解电容充电,而电解电容两端的电压为
整体积分之后
而t=0时 则 k=0
所以
即
则复位端电位为
电位持续高电平(大于或等于4.5V)时间
所以我们选择了100uF的电解电容以及4.7K欧 的大电阻。
(4)按键电路:没有按键时5V电源通过上拉电阻输入单片机,使其端口为高电平。有键按下时,单片机端口接地,为低电平。上拉电阻的选取,单片机P1口最大灌电流为4mA,我们选取了10K欧姆的限流电阻,无按键状态单片机的输入电流 ,远小于最大灌电流。
(5) LED、蜂鸣器驱动电路:蜂鸣器驱动电路如图3.4,LED驱动电路如图3.5。4位8段共阳极数码管在一个位正常显示时一段的电流大概为20mA。段码的限流电阻 R=5V/20mA=250Ώ,实际采用220Ώ。8段同时显示时,三极管的集电极-发射极电流I=20mA*8=160mA,单片机P1口的最大输出电流为2mA,三极管基极电流 ,故要求三极管的直流放大倍数n=160mA/1mA=160,故采用常见的9012三极管。
(6)掉电保护电路:DS1302的外围电路如图3.6。DS1302自动比较VCC2与VCC1的电压值,取其电压高的给芯片供电。我们的DY采用3V的纽扣电池,能单独供DS1302工作10年以上。
(7)显示电路:4位8段数码管的接口如图3.7
四 单片机程序设计
4.1程序总体设计
设计采用模块化的思想,将程序分为主控程序(main.c)、显示(disp.h)、按键(key.h)、时钟(ds1302.c)四个模块。定义一个8位的全局变量flag标识系统的18种状态( =32),每种状态对应相应的显示内容,每个按键在每种状态下执行对应的操作。根据三种主体显示状态(时间、日期、闹铃),定义2个结构体(时间和日期一起)。单片机实时获取DS1302的相关数据并将其保存于相应的结构体中,显示函数循环扫描结构体中的内容,并转换为LED的字符代码,送到LED端口将其内容显示出来。单片机实时检测按键端口,发现有键按下后便执行相应函数确认是哪个键按下,然后执行相应的功能。重要参数如下:
char flag=0;//状态标识,默认为显示时间。
SYSTEMTIME CurrentTime;//时间、日期结构体。