《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 設計應用 > 基于內(nèi)部EEPROM的自動電子定時開關的設計
基于內(nèi)部EEPROM的自動電子定時開關的設計
來源:微型機與應用2011年第7期
劉凱凱,孫緒保,,高 飛,,劉偉永
(山東科技大學 信息與電氣工程學院,山東 青島 266510)
摘要: 給出了一種基于STC89C51RC單片機的電子定時開關的設計方案,。利用時鐘芯片DS1302進行走時,,由單片機STC89C51RC的內(nèi)部EEPROM記憶斷開和閉合的時間數(shù)據(jù),當定時開關斷電重啟時,,仍能夠按已設置的時間間隔運行,,避免了重新設置。
Abstract:
Key words :

摘  要: 給出了一種基于STC89C51RC單片機的電子定時開關的設計方案。利用時鐘芯片DS1302進行走時,,由單片機STC89C51RC的內(nèi)部EEPROM記憶斷開和閉合的時間數(shù)據(jù),,當定時開關斷電重啟時,仍能夠按已設置的時間間隔運行,,避免了重新設置,。
關鍵詞: 單片機;EEPROM,;多間隔,;定時開關

 隨著生活節(jié)奏的不斷加快,人們在生活,、工作上的時間分配越來越緊張,。而在生活和工作中,人們需要電器在所希望的時間里處于工作狀態(tài),。因為人們不可能時刻守在電器旁去操作,,這時就需要一個自動通電斷電的裝置,即定時開關,。定時開關通常分為機械定時開關和電子定時開關兩種。本文基于STC單片機設計了一種電子定時開關,。采用了STC89C51RC單片機,、DS1302時鐘芯片、LED顯示,、四按鍵調(diào)時,,簡潔方便?!TC89C51RC特有的內(nèi)部EEPROM功能結合DS1302時鐘芯片,,實現(xiàn)了掉電信息不丟失,來電后仍保持用戶的設置,,避免了掉電后信息丟失的重復操作,,自動斷電、通電,。另外,,采用了固態(tài)繼電器決定插座的通斷,在非設定間隔內(nèi)始終處于斷開狀態(tài),,保證了電路的安全,。該設計最多可實現(xiàn)16個定時間隔,可滿足大多數(shù)用戶的使用,。
1 硬件電路設計
 本設計的硬件主要包括單片機等主要功能模塊芯片,、顯示和按鍵電路、電源和控制等電路,,原理框圖如圖1所示,。

1.1 主要功能模塊元件選擇
 單片機采用STC89C51RC,,其工作頻率范圍為0~40 MHz,相當于普通8051的0~80 MHz,,實際工作頻率可達48 MHz,。它有ISP(在系統(tǒng)可編程)/IAP(在應用可編程)應用功能,無需專用編程器/仿真器,,可通過串口(P3.0/P3.1)直接下載用戶程序,。可以利用IAP技術實現(xiàn) EEPROM功能[2],。

 


時鐘走時采用DS1302時鐘芯片實現(xiàn),,實時時鐘芯片DS1302是一種高性能、低功耗,、帶RAM的實時時鐘電路,,具有涓細電流充電能力。主要特點是采用串行數(shù)據(jù)傳輸,,可為掉電保護電源提供可編程的充電功能,,并且可以關閉充電功能。采用普通32.768 kHz晶振,。DS1302的使用使本設計在斷電后再次通電時,,實現(xiàn)了時鐘正常走時。
1.2 顯示和按鍵電路
 顯示電路采用共陽極7段式4位數(shù)碼管顯示,,P1口為段選碼輸出端,,通過地址鎖存器芯片74LS373與數(shù)碼管相連,P2.4~P2.7管腳為位選碼輸出端,,分別通過三極管與數(shù)碼管相連,。
按鍵電路設計為獨立式鍵盤,設定為四個,,與P2口的P2.0~P2.3相連,。按鍵一端接地,另一端各通過5.1 k?贅的上拉電阻與5 V電源相連,。
1.3 控制電路
 控制電路如圖2所示,。STC89C51RC單片機P3.5管腳送出控制信號。當P3.5輸出高電平時,,晶體管基極被輸入高電平,,晶體管飽和導通,集電極變?yōu)榈碗娖?。因此繼電器線圈通電,,觸點吸合,插座上的電器正常運行。當P3.5輸出低電平時,,晶體管基極被輸入低電平,,晶體管截止,繼電器線圈斷電,,觸點斷開,,此時插座上的電器處于斷電狀態(tài)。

2 軟件程序設計
2.1 主程序

 程序流程圖如圖3所示,。程序首先清零要使用的RAM相關單元,,然后讀取STC89C51RC內(nèi)部EEPROM中的數(shù)據(jù)到相關RAM單元的30H~6FH,因EEPROM在斷電后數(shù)據(jù)不丟失,,就實現(xiàn)了已設定的定時間隔的記憶功能,。接著程序讀取DS1302中的時間信息到RAM相關單元的78H~7AH。程序調(diào)用顯示子程序,,數(shù)碼管顯示出設定的顯示內(nèi)容,。然后調(diào)用按鍵程序,看是否有按鍵按下,。有按鍵按下就進入按鍵功能程序,,沒有就進入下一步判定是否到定時時間。沒到定時時間,,程序進入主程序循環(huán),。如到了定時時間,再判斷是定時開啟時間還是定時關閉時間,,然后進行相關操作,對P3.5進行清0或者置1,。操作完成進入主程序循環(huán),。

 其中數(shù)據(jù)存儲器RAM中的30H~6FH設定為定時間隔存儲數(shù)據(jù)緩沖區(qū),可儲存16個定時開啟時間和16個定時關閉時間,。這樣最多可設置16個時間間隔,。30H~3FH和40H~4FH分別為存儲定時開啟時間的小時和分數(shù)據(jù)緩沖單元,50H~5FH和60H~6FH分別為存儲定時關閉時間的小時和分數(shù)據(jù)緩沖單元,。
數(shù)據(jù)存儲器RAM的78H,、79H、7AH分別為秒,、分,、小時的時間緩沖單元。
2.2 數(shù)碼管顯示程序
 采用4位數(shù)碼管顯示,,從左到右依次顯示小時十位,、小時個位、分十位和分個位,在顯示正常時鐘時通過第二個數(shù)碼管的小數(shù)點的閃爍表示秒的走動,。數(shù)碼管顯示的信息采用8個內(nèi)存單元70H~77H存放,,這8個內(nèi)存單元稱為顯示緩沖區(qū),其中秒個位和秒十位,、分個位和分十位,、時個位和時十位分別由秒數(shù)據(jù)、分數(shù)據(jù)和小時數(shù)據(jù)分拆得到,。本設計中數(shù)碼管顯示采用軟件譯碼動態(tài)顯示[1],。首先建立一張顯示信息的字段碼表,顯示時,,先從顯示緩沖區(qū)中取出顯示的信息,,然后通過查表程序在字段碼表中查出所顯示信息的字段碼,從P1口輸出,,同時在P2口將對應的位選碼輸出,,選中顯示的數(shù)碼管,就能在相應的數(shù)碼管上顯示緩沖區(qū)的內(nèi)容,。
2.3 按鍵處理程序
 按鍵設計為四個,,分別接STC89C51RC的P2.0、P2.1,、P2.2,、P2.3口。P2.0為調(diào)時位選擇按鍵,,P2.1為加1按鍵,,P2.2為調(diào)定時間隔數(shù)選擇按鍵,P2.3為調(diào)定時選擇按鍵,。選擇RAM的7CH作為調(diào)時位選擇按鍵計數(shù)單元,,7DH作為調(diào)定時選擇按鍵計數(shù)單元,7EH作為調(diào)定時間隔數(shù)選擇按鍵計數(shù)單元,。
 在沒有按鍵按下時,,時鐘正常走時,數(shù)碼管顯示走時時間,,第二個數(shù)碼管的小數(shù)點閃爍,。當在未按下P2.3鍵時,即7DH內(nèi)數(shù)據(jù)是0,。此時按下P2.0則進入調(diào)分狀態(tài),,小數(shù)點停止閃爍,此時按下P2.1可進行加1操作,;繼續(xù)按下P2.0可進行分和小時的調(diào)整,;最后再按下P2.0鍵將退出調(diào)整狀態(tài),,小數(shù)點閃爍,時鐘正常走時,。
 首先按下P2.3鍵時,,數(shù)碼管顯示相應的定時開或關時間。按下一次為定時開時間,,此時按下P2.2按鍵可在各定時間隔間調(diào)整,,這時再通過按鍵P2.0選擇定時開的調(diào)小時或分鐘的操作,再按下P2.1鍵可對定時開時間進行加1操作,;繼續(xù)按下P2.3鍵則進入調(diào)定時關時間,;最后按P2.3鍵退出調(diào)整定時間隔狀態(tài)。此操作過程中,,時鐘后臺正常走時,,退出此調(diào)整狀態(tài)后,顯示時鐘,,小數(shù)點正常閃爍,。
2.4 ISP/IAP應用及內(nèi)部EEPROM應用程序
 IAP即在程序運行時程序存儲器可由程序自身進行擦寫。STC單片機的ISP功能就是通過IAP技術實現(xiàn)的,,單片機在出廠前就已經(jīng)內(nèi)置一段小的boot程序,。單片機上電后,開始運行這段程序,,當檢測到上位機有下載要求時,,便和上位機通信,然后下載數(shù)據(jù)到程序存儲區(qū),。ISP/IAP應用使STC89C51RC系列單片機實現(xiàn)了在線編程,。
 利用IAP技術可實現(xiàn)EEPROM,即程序在用戶應用程序區(qū)時,,可以對數(shù)據(jù)Flash區(qū)(EEPROM)進行字節(jié)讀/字節(jié)編程/扇區(qū)擦除,。STC89C51RC的內(nèi)部EEPROM共有8個扇區(qū),每個扇區(qū)為512字節(jié)[2],。本設計僅使用EEPROM功能實現(xiàn)儲存定時時間間隔的作用,,故選擇使用第一扇區(qū)的2000H~203FH單元,。
2000H~203FH單元分別對應于RAM的30H~6FH單元,,每次通過按鍵程序改變定時時間間隔的時候,先把數(shù)據(jù)儲存于RAM中,,然后再儲存到EEPROM中,。如果定時開關電路不掉電,則程序不從EEPROM中讀取數(shù)據(jù),,僅從RAM中讀取相應數(shù)據(jù),。當定時開關電路掉電后再次來電時,,程序先把數(shù)據(jù)從EEPROM中讀取到RAM相應單元,再進入主程序,,這樣就實現(xiàn)了定時時間間隔的掉電自記憶,。
 本文給出了一種基于STC89C51RC單片機的電子定時開關的設計。利用此定時開關設計需要儲存數(shù)據(jù)較少的特點,,在RAM和EEPROM之間互相讀取,,原始數(shù)據(jù)儲存于EEPROM中,實現(xiàn)了自記憶,。運算快捷,,節(jié)省單片機系統(tǒng)資源,又避免了添加外部數(shù)據(jù)存儲器的額外費用,。再結合時鐘芯片DS1302的使用,,解決了時鐘的斷電后不走時問題,真正實現(xiàn)斷電后再通電插座電路自動運行,。
參考文獻
[1] 謝維成,,楊加國.單片機原理與應用及C51程序設計[M].北京:清華大學出版社,2006.
[2] 宏晶科技.STC增強型8051單片機中文指南(RC/RD+系列).
[3] 宋浩,,田豐.單片機原理及應用[M].北京:清華大學出版社,;北京交通大學出版社,2005.

此內(nèi)容為AET網(wǎng)站原創(chuàng),,未經(jīng)授權禁止轉載,。