傳統的大容量電熱水器加熱的時間比較長,如果熱水器一直開著,則耗能耗電。定時開關控制器可有效解決這些問題,使電熱水器使用起來更加舒適省電。這樣電熱水器不僅可以充分利用閑置的時間,避免用戶使用時長時間等待,減少不必要保溫,也可以更加節約電能,特別對低谷及高峰用電有差價地區,利用晚間低谷用電開機加熱,白天用電高峰關機保溫,能大量節約電費開支。本文中的定時控制器主要是以單片機AT89C2051作為核心控制元件,通過外圍電路控制熱水器的電源,以達到定時開關機的目的。
2 硬件組成及工作原理
本系統加電后即進入正常計時狀態,用戶可以隨時進行校準時間動作以及設定熱水器開關的時間,控制器將會在設定的開關時刻通過單片機的輸出端口控制輸出繼電器動作,進而控制熱水器的啟閉。硬件原理圖如圖1所示。

圖1 定時控制器硬件原理圖
系統的核心為單片機AT89C2051,AT89C2051為20腳300MIL封裝,帶有2K FLASH E2PROM的單片機,除了少了兩個并口外,兼容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單片機為核心輔以外圍電路的設計,實現了低成本的要求。本控制器為定時控制并顯示有關參數,能夠滿足系統要求的同時,又具有簡單、經濟之特點。靈活的鍵盤輸入方式設定參數,增加了系統的靈活性。本定時控制器已經經過測試并投入使用,證明運行可靠,操作方便,用在傳統的不帶定時功能的熱水器上,能夠達到既經濟又實用的控制目的,有推廣使用價值。