很多用AT89C205l制作电子万年历的文章,介绍的都是采用单片机内部定时计数器作定时计时,难免受到停电的影响而需要经常调整,为此,笔者设计制作了AT89C20Sl+DSl302的电子万年历。
该万年历的特点是;动态显示、遥控操作;能按多位数码管或多点输出I采用DSl302时钟模块,走时准确、停电能继续计时(精度±5秒/日左右若采用有源晶报,如DS32Hz,走时精度甚至可达到年误差小于2分钟)。
一、功能
显示年、月、日、星期、时、分。遥控操作、整点报时、定时报时及定时显示、停电自动计时等。
二、硬件电路设计
AT89C2051作为数据处理,DSl302作为计时处理及停电继续走时,用13只LED数码管显示年、月、日、星期、时、分。采用1838V为遥控接收,74LS595作为数码管笔画显示选择移位。
三。工作原理
电路见附图。初始化后,DSl302开始走时。
AT89C205l读取时间数据并处理后,通过2级8位移位寄存器(74LS595)将数码管的选通数据送至显示驱动,SRCLK是移位脉冲,上升沿有效;RCLK是输出锁存器的锁存信号,其上升沿将移位寄存器的输出锁存到输出锁存器;e是选通信号,只有e为低电平时锁存器的输出才开放。
所有数码管的同一笔圆是连在一起的,由AT89C205l对DSl302读回的时间数据进行拆分处理,然后转换成要显示的数字代码。再由SER(AT89C205l的P3.5脚)逐位输出到ICl的(14)脚。以完成对需要显示笔画的数码管选择,P1.1对每一个数码管的同一笔画进行扫描。第一笔画点亮延时,继续把第二笔画的代码移位至74LS595进行第二个笔画的扫描,直至七个笔画全部显示完为止。
例如,要显示的时间为07-02-23,则各数的代码分别为3FH、07H、3FH、5BH、BH、4FH。先通过74LS595把3F、07、3F、5B、5B、4F的DO,即低位右移一位,通过74LS595送至驱动三极管的基极。如果某位为0,则相应的位就不点亮。然后从P1.1输出O,那么该笔画中相应为1的笔画就被点亮。各数桐应代码就变为:3FH-1FF、07H-3H、3FH-1FH、5BH-2DH、5BH-2DH、4FH-27H。
继续通过74LS595把lF、3、lF、2D、2D、27的最低位送至三极管的基极。然后P1.2输出O,数码管的第二笔画相应的位被点亮。各数代码则变为:FH、1 H、FH、16H、16H、l 3H。重复上面的移位及扫描,直至7个笔画的显示完成。就完成了07-02-03的全部显示。
这种显示电路的特点是能够同屏显示多位数码管及多他输出。
图中还可增加秒闪烁和驱动报时蜂呜器等电路功能。
遥控器采用HA622l系列,遥控接收使用1838V红外接收模块。接AT89C205l的P3.2(外中断0)。当1838V接收到遥控信号时,产生中断。处理遥控数据,处理完后返回。
电路中用了一块钮扣电池作为停电走时。
需要注意的是,本电路使用的晶振是4MHz的。如果使用其他频率的晶振,应重新调整遥控解码部分延时的循环次数。另外。遥控器不一样,其键值也需要重新定义。