1引言
传统的大容量电热水器加热的时间比较长,假如热水器一直开着,则耗能耗电。定时开关控制器可有效解决这些题目,使电热水器使用起来更加舒适省电。这样电热水器不仅可以充分利用闲置的时间,避免用户使用时长时间等待,减少不必要保温,也可以更加节约电能,特别对低谷及高峰用电有差价地区,利用晚间低谷用电开机加热,白天用电高峰关机保温,能大量节约电费开支。本文中的定时控制器主要是以单片机AT89C2051作为核心控制元件,通过外围电路控制热水器的电源,以达到定时开关机的目的。
2硬件组成及工作原理
本系统加电后即进进正常计时状态,用户可以随时进行校准时间动作以及设定热水器开关的时间,控制器将会在设定的开关时刻通过单片机的输出端口控制输出继电器动作,进而控制热水器的启闭。硬件原理图如图1所示。
图1定时控制器硬件原理图
系统的核心为单片机AT89C2051,AT89C2051为20脚300MIL封装,带有2KFLASHE2PROM的单片机,除了少了两个并口外,兼容MCS-51系列单片机所有功能。具备体积小、功能强、运行速度快等特点。通过P3.7口连接一个键盘电路来实现人工对参数的自由设定。通过串口连接6位LED数码管,分别显示小时、分钟和秒。系统定时启动是通过P3.0口完成的。程序开始时这三个口的输出状态是低电平,892051通过程序查询P3.0口输出的ON或OFF状态预置时间是否已到,假如已到时间,则改变相应的输出状态,就完成了对外部电路的控制。
2.1显示电路
主要由七段共阳显示译码器74LS47、3线-8线译码器74HC138、7个PNP型三极管和六个数码管组成。通过89C2051的P1.4~P1.7口将要显示字符的BCD码输出到74LS47的四个输进端,译码后输出相应的笔段驱动LED数码管(共阳)。LED数码管显示采用动态扫描方式,即在某一时刻,只有一个数码管被点亮。数码管的位选信号由89C2051的P3.3~P3.5输出,经74HC138译码后通过三极管放大,驱动相应的数码管。
2.2键盘电路
键盘电路跟显示电路一样,采用扫描方式,利用动态显示时的数码管驱动位置信号来判定相应按键的状态。单片机的P3.3~P3.5口输出的BCD码经译码器译码后,相应Y口呈低电平,而89C2051的P3.7口平时为高电平(由于有上拉电阻),当某一键按下时,P3.7被下拉为低电平,这时单片机利用程序查询P3.7是否为低电平,假如P3.7为低电平,就读回单片机P3.3~P3.5口的值(从缓冲区读取),就可判定是那个按键按下,然后调用相应的处理程序进行处理。
2.3输出控制电路
单片机对控制的输出是通过P3.0~P3.2口完成的。程序开始时这三个口的输出状态是低电平,AT89C2051通过程序查询三路输出的ON或OFF状态预置时间是否已到,假如已到时间,则改变相应的输出状态,就完成了对外部电路的控制。
3软件设计
3.1主程序工作过程
首先循环进行六个数码管扫描显示(DISPLY段),然后比较所有预置时间(COMP段)是否与当前时间相等,如相等则转向相应处理程序。在比较完成(或处理完成)后判定有无按键(PP2段),没有则返回继续显示、比较、判定;有按键则转向相应处理程序。按键转移采用偏移量加表格跳转转移法(KEY段),简单、明了。预置时间比较则采用逐一比较法,即对每一个预置值进行比较,如相等则做相应处理。具体比较时(COMP1段)先比较TH值,如不相等则直接转出并置“时间到”标志CCB为0,如TH、TM、TS全部对应相等,则置该标志为1,软件流程图如图2所示。
图2软件程序工作流程图
3.2秒脉冲发生器
秒脉冲发生器是由定时器T0和内存空间TT0配合完成的。T0工作于16位计数器模式,当T0向上计数由全1变为全0时产生中断,本程序中T0的初值为0DC00H,大约0.01s中断一次。这里使用的晶振频率为11.0592MHz,由此可计算出日误差约为0.78s。工作过程:如图2流程图所示,产生中断后,首先保存ACC和PSW的值,然后为T0重装初值,判定中断次数是否小于100,是则转出中断服务,反之则为秒计数器加1,秒计数器假如大于59,则为分计数器加1,同时秒计数器清0。同样分计数器如大于59则为时计数器加1,同时分计数器清0,时计数器如大于23则清0并转出中断服务。T0中断100次的时间恰好为1秒钟。
4结束语
通过以AT89C2051单片机为核心辅以外围电路的设计,实现了低本钱的要求。本控制器为定时控制并显示有关参数,能够满足系统要求的同时,又具有简单、经济之特点。灵活的键盘输进方式设定参数,增加了系统的灵活性。本定时控制器已经经过测试并投进使用,证实运行可靠,操纵方便,用在传统的不带定时功能的热水器上,能够达到既经济又实用的控制目的,有推广使用价值。