駱定輝
(臺州市環(huán)科環(huán)保設備運營維護有限公司 318000)
DS1302 是美國DALLAS公司推出的一種高性能、低功耗、帶RAM的實時時鐘電路,它可以對年、月、日、周日、時、分、秒進行計時,具有閏年補償功能,工作電壓為2.5V~5.5V。采用三線接口與CPU進行同步通信,并可采用突發(fā)方式一次傳送多個字節(jié)的時鐘信號或RAM數(shù)據(jù)。DS1302內(nèi)部有一個31×8的用于臨時性存放數(shù)據(jù)的RAM寄存器。DS1302是DS1202的升級產(chǎn)品,與DS1202兼容,但增加了主電源/后背電源雙電源引腳,同時提供了對后背電源進行涓細電流充電的能力。
DS1302的引腳排列,其中Vcc1為后備電源,VCC2為主電源。在主電源關(guān)閉的情況下,也能保持時鐘的連續(xù)運行。DS1302由Vcc1或Vcc2兩者中的較大者供電。當Vcc2大于Vcc1+0.2V時,Vcc2給DS1302供電。當Vcc2小于Vcc1時,DS1302由Vcc1供電。X1和X2是振蕩源,外接32.768kHz晶振。RST是復位/片選線,通過把RST輸入驅(qū)動置高電平來啟動所有的數(shù)據(jù)傳送。RST輸入有兩種功能:首先,RST接通控制邏輯,允許地址/命令序列送入移位寄存器;其次,RST提供終止單字節(jié)或多字節(jié)數(shù)據(jù)的傳送手段。當RST為高電平時,所有的數(shù)據(jù)傳送被初始化,允許對DS1302進行操作。如果在傳送過程中RST置為低電平,則會終止此次數(shù)據(jù)傳送,I/O引腳變?yōu)楦咦钁B(tài)。上電運行時,在Vcc≥2.5V之前,RST必須保持低電平。只有在SCLK為低電平時,才能將RST置為高電平。I/O為串行數(shù)據(jù)輸入輸出端(雙向),后面有詳細說明。SCLK為時鐘輸入端。圖1為DS1302的引腳功能圖
圖1 DS1302的引腳
從2001年開始各地方環(huán)境保護部門開始安裝重點企業(yè)污染源在線系統(tǒng),到2007年環(huán)保部開始大范圍安裝重點企業(yè)污染源在線系統(tǒng),污染源在線系統(tǒng)具有實時監(jiān)控企業(yè)排放廢氣或廢水的各項指標,協(xié)助環(huán)保部門對企業(yè)排污的監(jiān)管。但是系統(tǒng)運行需要電源且由企業(yè)提供。當企業(yè)排污未達標甚至明知超標仍要排放時,就會采取將系統(tǒng)電源關(guān)閉來躲避監(jiān)測系統(tǒng)的檢測。由于企業(yè)數(shù)量巨大,無法對關(guān)電行為進行實時執(zhí)法?,F(xiàn)設計一款電源運行記錄儀,記錄在線系統(tǒng)的斷電時間以及來電時間,具備現(xiàn)場查看功能。協(xié)助環(huán)保部門對非法停電的行為進行監(jiān)督。
系統(tǒng)的主要功能是檢測現(xiàn)場的有無電源,并記錄下現(xiàn)場每次電源變化的時間及狀態(tài),電源變化的時間由計時器提供,狀態(tài)分為斷電和來電兩種。難點為系統(tǒng)必須在現(xiàn)場無電源時長時間工作。因為系統(tǒng)由單片機AT89C52、儲存芯片、及顯示部分組成,功耗大,即使采用外置電源也無法保證長時間監(jiān)測運行。
綜上所述,本系統(tǒng)選擇計時芯片DS1302,利用DS1302的主電源/后背電源的雙電源功能,安裝3V電池作為后備電源,只供DS1302芯片來計時,無需供應單片機及其附屬電路,那運行功耗得到大幅度降低,當現(xiàn)場有電源時,停止電池供電以確保長時間測量。
利用DS1302系統(tǒng)斷電時可以以后備電源供電的優(yōu)點,保持時鐘不會因為系統(tǒng)斷電而中止計時,同時利用DS1302內(nèi)部的31個用于臨時性存放數(shù)據(jù)的RAM寄存器。存放AT24C256的數(shù)據(jù)地址,當來電時能讓單片機將數(shù)據(jù)準確的存入AT24C256的相應地址中,而不會造成覆蓋以前的數(shù)據(jù)。存放完整的數(shù)據(jù)以便系統(tǒng)來電時可以查看。
本系統(tǒng)以單片機AT89C52采集電源狀態(tài)以及按鍵的輸入,儲存采集數(shù)據(jù),處理并顯示。計時芯片DS1302用于計時并向單片機提供準確時間。顯示HD7279用于顯示,AT24C256用于歷史數(shù)據(jù)的儲存。
系統(tǒng)的電源部分采用延時設計,當斷電情況發(fā)生后,電源可以短時間繼續(xù)供電,K3由主電源控制,斷電時閉合,在電源短時間供電的情況下記錄下斷電信息。主要電路圖如下圖。
圖2 系統(tǒng)電路圖
程序設計采用DS1302不斷電的特性,將AT24C256的數(shù)據(jù)地址存儲在DS1302的RAM寄存器中,可以在系統(tǒng)每次斷電恢復時知道上次斷電時儲存的數(shù)據(jù)在哪個位置,來電的記錄存放于這個地址。
系統(tǒng)初次使用時,對DS1302進行初始化,初始化包括賦值時間和清空RAM寄存器數(shù)據(jù),在今后的斷電和恢復過程中不再對時間進行初始化。當系統(tǒng)初次開啟或由斷電情況恢復時,讀取DS1302中的分數(shù)據(jù)、小時數(shù)據(jù)、日期數(shù)據(jù)、月數(shù)據(jù)、年數(shù)據(jù)以及來電標志數(shù)據(jù),共6個字節(jié),再讀取C1、C3的數(shù)據(jù)作為AT24C256的最后存放地址,將6個字節(jié)依次存放于地址為0000H~0005H的存儲器中。再將0005H+1覆蓋于DS1302的兩個寄存器中。由K3的閉合標志斷電情況的發(fā)生,此時,再次讀取DS1302中的分數(shù)據(jù)、小時數(shù)據(jù)、日期數(shù)據(jù)、月數(shù)據(jù)、年數(shù)據(jù)以及斷電標志數(shù)據(jù),存放于地址為0006H~000BH的存儲器中。再將地址+1覆蓋于DS1302的兩個寄存器中。為防止因為延時電源時間不可控的情況下多次寫入斷電信息,在單片機初始化中設標志位數(shù)值為0,當標志位為0時,可寫入斷電信息,寫入一次斷電信息后,標志位變?yōu)?,不可再次寫入斷電信息,只有斷電初始化后方可再次寫入。
當電源情況正常時。秒數(shù)據(jù)、分數(shù)據(jù)、小時數(shù)據(jù)與日期數(shù)據(jù)、月數(shù)據(jù)、年數(shù)據(jù)以20S為周期進行循環(huán)送入顯示芯片進行顯示。當K1按下時,讀取DS1302的存儲器地址并-3,將月數(shù)據(jù)、年數(shù)據(jù)以及來電或斷電標志數(shù)據(jù)送入顯示,再按一下,存儲器地址再-3,將分數(shù)據(jù)、小時數(shù)據(jù)、日期數(shù)據(jù)送入顯示。依此類推,如果30S內(nèi)K1無動作將返回待機畫面顯示實時時間。
因為AT24C256芯片的儲存空間為512頁,每頁64個字節(jié),地址區(qū)間為0000H~7FFFH,實際有效地址位為15位,低6位表示字節(jié),高9位表示頁碼。當寫頁操作寫入一個數(shù)據(jù)字節(jié)后,微控制器不發(fā)停止狀態(tài),而是在應答信號后接著輸入63 個字節(jié)。每一個字節(jié)接收完畢后,EEPROM 照樣輸出一個零應答信號。因為一頁只有64 個單元,所以數(shù)據(jù)字的地址低6 位在接收到一個字節(jié)后會自動加l,而高位地址不變,即頁地址不變。若內(nèi)部產(chǎn)生的地址達到了頁的邊界時,系統(tǒng)將回到頁的開始進行寫。如果一次要寫的字節(jié)大于64字節(jié),則最早寫入的字節(jié)將被覆蓋。所以本系統(tǒng)采用寫字節(jié)操作。程序流程圖如圖3。
圖3 程序流程圖
本系統(tǒng)的試驗后,功能基本達到,系統(tǒng)充分利用了DS1302的后備電源的功能,不光是時鐘走時與外接電源無關(guān),自帶的寄存器也可以長時間保持數(shù)據(jù),利用DS1302的寄存器儲存AT24C256的地址,可以忽略AT24C256的地址低6 位在接收到一個字節(jié)后會自動加l,而高位地址不變造成的系統(tǒng)將回到頁的開始進行寫的缺點。以保證系統(tǒng)可以正常日常監(jiān)控企業(yè)的電源供給情況,并且可以隨時查看歷史斷電和來電的記錄。
[1] 王立文,肖理慶.利用DS1302存儲數(shù)據(jù)的一種高效方法.[J] .現(xiàn)代電子技術(shù),2008(24).
[2] 周巧娣,劉敬彪.AT24C256 在單片機系統(tǒng)中的應用.[J].國外 電子元器件,2003(2).