摘 要: 給出了一種基于STC89C51RC單片機的電子定時開關的設計方案。利用時鐘芯片DS1302進行走時,由單片機STC89C51RC的內部EEPROM記憶斷開和閉合的時間數據,當定時開關斷電重啟時,仍能夠按已設置的時間間隔運行,避免了重新設置。
關鍵詞: 單片機;EEPROM;多間隔;定時開關
隨著生活節奏的不斷加快,人們在生活、工作上的時間分配越來越緊張。而在生活和工作中,人們需要電器在所希望的時間里處于工作狀態。因為人們不可能時刻守在電器旁去操作,這時就需要一個自動通電斷電的裝置,即定時開關。定時開關通常分為機械定時開關和電子定時開關兩種。本文基于STC單片機設計了一種電子定時開關。采用了STC89C51RC單片機、DS1302時鐘芯片、LED顯示、四按鍵調時,簡潔方便?!TC89C51RC特有的內部EEPROM功能結合DS1302時鐘芯片,實現了掉電信息不丟失,來電后仍保持用戶的設置,避免了掉電后信息丟失的重復操作,自動斷電、通電。另外,采用了固態繼電器決定插座的通斷,在非設定間隔內始終處于斷開狀態,保證了電路的安全。該設計最多可實現16個定時間隔,可滿足大多數用戶的使用。
1 硬件電路設計
本設計的硬件主要包括單片機等主要功能模塊芯片、顯示和按鍵電路、電源和控制等電路,原理框圖如圖1所示。
1.1 主要功能模塊元件選擇
單片機采用STC89C51RC,其工作頻率范圍為0~40 MHz,相當于普通8051的0~80 MHz,實際工作頻率可達48 MHz。它有ISP(在系統可編程)/IAP(在應用可編程)應用功能,無需專用編程器/仿真器,可通過串口(P3.0/P3.1)直接下載用戶程序??梢岳肐AP技術實現 EEPROM功能[2]。
時鐘走時采用DS1302時鐘芯片實現,實時時鐘芯片DS1302是一種高性能、低功耗、帶RAM的實時時鐘電路,具有涓細電流充電能力。主要特點是采用串行數據傳輸,可為掉電保護電源提供可編程的充電功能,并且可以關閉充電功能。采用普通32.768 kHz晶振。DS1302的使用使本設計在斷電后再次通電時,實現了時鐘正常走時。
1.2 顯示和按鍵電路
顯示電路采用共陽極7段式4位數碼管顯示,P1口為段選碼輸出端,通過地址鎖存器芯片74LS373與數碼管相連,P2.4~P2.7管腳為位選碼輸出端,分別通過三極管與數碼管相連。
按鍵電路設計為獨立式鍵盤,設定為四個,與P2口的P2.0~P2.3相連。按鍵一端接地,另一端各通過5.1 k?贅的上拉電阻與5 V電源相連。
1.3 控制電路
控制電路如圖2所示。STC89C51RC單片機P3.5管腳送出控制信號。當P3.5輸出高電平時,晶體管基極被輸入高電平,晶體管飽和導通,集電極變為低電平。因此繼電器線圈通電,觸點吸合,插座上的電器正常運行。當P3.5輸出低電平時,晶體管基極被輸入低電平,晶體管截止,繼電器線圈斷電,觸點斷開,此時插座上的電器處于斷電狀態。
2 軟件程序設計
2.1 主程序
程序流程圖如圖3所示。程序首先清零要使用的RAM相關單元,然后讀取STC89C51RC內部EEPROM中的數據到相關RAM單元的30H~6FH,因EEPROM在斷電后數據不丟失,就實現了已設定的定時間隔的記憶功能。接著程序讀取DS1302中的時間信息到RAM相關單元的78H~7AH。程序調用顯示子程序,數碼管顯示出設定的顯示內容。然后調用按鍵程序,看是否有按鍵按下。有按鍵按下就進入按鍵功能程序,沒有就進入下一步判定是否到定時時間。沒到定時時間,程序進入主程序循環。如到了定時時間,再判斷是定時開啟時間還是定時關閉時間,然后進行相關操作,對P3.5進行清0或者置1。操作完成進入主程序循環。
其中數據存儲器RAM中的30H~6FH設定為定時間隔存儲數據緩沖區,可儲存16個定時開啟時間和16個定時關閉時間。這樣最多可設置16個時間間隔。30H~3FH和40H~4FH分別為存儲定時開啟時間的小時和分數據緩沖單元,50H~5FH和60H~6FH分別為存儲定時關閉時間的小時和分數據緩沖單元。
數據存儲器RAM的78H、79H、7AH分別為秒、分、小時的時間緩沖單元。
2.2 數碼管顯示程序
采用4位數碼管顯示,從左到右依次顯示小時十位、小時個位、分十位和分個位,在顯示正常時鐘時通過第二個數碼管的小數點的閃爍表示秒的走動。數碼管顯示的信息采用8個內存單元70H~77H存放,這8個內存單元稱為顯示緩沖區,其中秒個位和秒十位、分個位和分十位、時個位和時十位分別由秒數據、分數據和小時數據分拆得到。本設計中數碼管顯示采用軟件譯碼動態顯示[1]。首先建立一張顯示信息的字段碼表,顯示時,先從顯示緩沖區中取出顯示的信息,然后通過查表程序在字段碼表中查出所顯示信息的字段碼,從P1口輸出,同時在P2口將對應的位選碼輸出,選中顯示的數碼管,就能在相應的數碼管上顯示緩沖區的內容。
2.3 按鍵處理程序
按鍵設計為四個,分別接STC89C51RC的P2.0、P2.1、P2.2、P2.3口。P2.0為調時位選擇按鍵,P2.1為加1按鍵,P2.2為調定時間隔數選擇按鍵,P2.3為調定時選擇按鍵。選擇RAM的7CH作為調時位選擇按鍵計數單元,7DH作為調定時選擇按鍵計數單元,7EH作為調定時間隔數選擇按鍵計數單元。
在沒有按鍵按下時,時鐘正常走時,數碼管顯示走時時間,第二個數碼管的小數點閃爍。當在未按下P2.3鍵時,即7DH內數據是0。此時按下P2.0則進入調分狀態,小數點停止閃爍,此時按下P2.1可進行加1操作;繼續按下P2.0可進行分和小時的調整;最后再按下P2.0鍵將退出調整狀態,小數點閃爍,時鐘正常走時。
首先按下P2.3鍵時,數碼管顯示相應的定時開或關時間。按下一次為定時開時間,此時按下P2.2按鍵可在各定時間隔間調整,這時再通過按鍵P2.0選擇定時開的調小時或分鐘的操作,再按下P2.1鍵可對定時開時間進行加1操作;繼續按下P2.3鍵則進入調定時關時間;最后按P2.3鍵退出調整定時間隔狀態。此操作過程中,時鐘后臺正常走時,退出此調整狀態后,顯示時鐘,小數點正常閃爍。
2.4 ISP/IAP應用及內部EEPROM應用程序
IAP即在程序運行時程序存儲器可由程序自身進行擦寫。STC單片機的ISP功能就是通過IAP技術實現的,單片機在出廠前就已經內置一段小的boot程序。單片機上電后,開始運行這段程序,當檢測到上位機有下載要求時,便和上位機通信,然后下載數據到程序存儲區。ISP/IAP應用使STC89C51RC系列單片機實現了在線編程。
利用IAP技術可實現EEPROM,即程序在用戶應用程序區時,可以對數據Flash區(EEPROM)進行字節讀/字節編程/扇區擦除。STC89C51RC的內部EEPROM共有8個扇區,每個扇區為512字節[2]。本設計僅使用EEPROM功能實現儲存定時時間間隔的作用,故選擇使用第一扇區的2000H~203FH單元。
2000H~203FH單元分別對應于RAM的30H~6FH單元,每次通過按鍵程序改變定時時間間隔的時候,先把數據儲存于RAM中,然后再儲存到EEPROM中。如果定時開關電路不掉電,則程序不從EEPROM中讀取數據,僅從RAM中讀取相應數據。當定時開關電路掉電后再次來電時,程序先把數據從EEPROM中讀取到RAM相應單元,再進入主程序,這樣就實現了定時時間間隔的掉電自記憶。
本文給出了一種基于STC89C51RC單片機的電子定時開關的設計。利用此定時開關設計需要儲存數據較少的特點,在RAM和EEPROM之間互相讀取,原始數據儲存于EEPROM中,實現了自記憶。運算快捷,節省單片機系統資源,又避免了添加外部數據存儲器的額外費用。再結合時鐘芯片DS1302的使用,解決了時鐘的斷電后不走時問題,真正實現斷電后再通電插座電路自動運行。
參考文獻
[1] 謝維成,楊加國.單片機原理與應用及C51程序設計[M].北京:清華大學出版社,2006.
[2] 宏晶科技.STC增強型8051單片機中文指南(RC/RD+系列).
[3] 宋浩,田豐.單片機原理及應用[M].北京:清華大學出版社;北京交通大學出版社,2005.