工业控制 | 能源技术 | 汽车电子 | 通信网络 | 安防监控 | 智能电网 | 移动手持 | 无线技术 | 家用电器 | 数字广播 | 消费电子 | 应用软件 | 其他方案

电路设计->光电电路图->其他光电实用电路图->LED大屏幕滚动显示电子钟

LED大屏幕滚动显示电子钟

作者:dolphin时间:2016-09-08

硬件原理如图示,U10(PCF8583)为I2C总线接口的日历时钟专用芯片,内含256字节的RAM。其中前16个用于时标和闹铃寄存器,另外240个字节可作为一般的RAM使用。但由于有后备可充电电池BT2的存在,掉电后数据仍可保持,所以可视为非易失性RAM,同时,当市电停电时。时钟可继续维持运行数日。U6(AT89C52)为主控CPU,C46、R141构成它的上电复位电路,Y3、C49、C50构成时钟振荡电路。C19-C28为10块8乘8LED点阵模块。采用行列扫描显示。显示时,CPU的串行口先输出显示列数据。通过5块74HC595进行串并行转换,再通过ULN2003驱动40个列(需要点亮的列为低电平),然后CPU的P0口输出行扫描信号,经U11进行4—16译码,再通过分立三极管驱动相应的行(显示的行为高电平)。完 成一行显示后,串口又输出下-二行的数据,P0口加1,指向下一行,依次类推,直到16行全部轮流显示完。完成一帧显示。然后再重复以上过程,一直显示下去。CPU的P2口接3乘4键盘,有0、1、2……9、A、B共12个键。用于时钟调整。本电路的电源由市电经9V/5W的变压器(图中未画出)降压。D10—D13整流,C侣滤波后分成两路。一路由经三端稳压器7805稳压为5V为CPU及各IC供电。另一路由Q57,Q58两只C2073并联稳压为5V-1专供LED模块。


本电子钟软件与硬件相比要复杂,主要由以下几部分组成:主程序,I2C总线子程序,当前时间的读取(刷新)子程序,显示子程序,滚动子程序,键盘输入子程序,时间调整子程序等。由于篇幅所限,这里无法一一具体描述。下面仅介绍一些重点。由于PCF8583内部仅用2bit表示年,命名为NIAN,它只有O、1、2、3四种状态。无法满足00—99百年日历的要求,所以在其内部RAM再中安排一个单元命名为NIAN_1,用于年的累加。在软件中每刷新完一次时间后,立即检查一下NIAN与上次刷新时是否有变化。如有则将NIAN_1加1。另外在时间设置时,还需将设置的两位数的NIAN_1除以4,并把余数赋予NIAN。在显示子程序中,每只LED模块需要8个显示影射单元。所以10只模块需要80个显示缓冲单元,如果用有128个RAM的89C51则内存不足。所以用有256个RAM的89C52,并把显示缓冲区安排在高128地址位置。即地址为80H到FFH。这部分RAM地址和特殊寄存器的地址重复。但89C52规定这部分RAM必须用间接寻址访问,而特殊寄存器必须用直接寻址访问。为提高可靠性,用定时器T0作软件看门狗。方法是:定义一个变量WDT,在主程序的初始化中为其赋值。在T0的每次中断服务程序中,将WDT减1,在主程序中不断清零T0,使其无法溢出。如果,主程序由于某种原因发生紊乱或死循环,将无法清零T0,那么T0就会多次溢出,直到将WDT减到0,这时就在程序中使PC=0000,实现强行复位。T0的中断服务程序如下:


按A键一次,屏幕全黑,如果现在是2005年10月1日星期六9点30分,则连续输入“05100160930”11位数字,再按A键一次,即可从设置的时间开始滚动显示。 功能扩展:在原理图中已设计了闹铃部分,并在PCB上留有响应位置,只需在软件上增加闹铃设置和识别部分即可实现自动定闹与打铃。本文后附制作需要的PCB图、原理图、写入CPU 的HEX文件。使用或根据这3个文件,爱好者或感兴趣的厂家完全可以按图制作,制作时要注意LED点阵模块要装在PCB的底面,其余元件要装在顶面。在AT89C52的位置上要先焊一个40P的IC坐,将AT89C52用编程器写入后附的123.hex文件后插入插座即可。无须调试,只要没有其他意外,一装即成。


评论

技术专区