摘 要:將時鐘芯片DS1302應(yīng)用于溫室CO2增施控制器中,提出一種利用其內(nèi)部RAM存儲數(shù)據(jù)的方法,在其內(nèi)部RAM地址與時間之間建立一種映射關(guān)系,根據(jù)這種關(guān)系,存儲數(shù)據(jù)時不需要保存相應(yīng)的時間;在讀取數(shù)據(jù)時,可以根據(jù)映射關(guān)系將數(shù)據(jù)與其相應(yīng)的時間計算出來傳遞給用戶。對CO2濃度數(shù)值進行編碼壓縮后再進行存儲。這些措施提高了DS1302內(nèi)部RAM的利用效率,可存儲更多數(shù)據(jù)。這種方法可推廣到其他按一定時間間隔保存小容量數(shù)據(jù)的場合。
關(guān)鍵詞:DS1302;數(shù)據(jù)存儲;RAM;CO2濃度
中圖分類號:TH79,TP368.1文獻標(biāo)識碼:B文章編號:1004-373X(2008)24-140-03
High Efficiency Method of Data Storage by DS1302
WANG Liwen,XIAO Liqing,WU Jian,XU Mingsheng,ZHENG Jing
(Xuzhou Institute of Technology,Xuzhou,221008,China)
Abstract:DS1302 is applied in a greenhouse CO2 enrichment controller and its internal RAM is used to store data.A mapping relation between address of RAM and time is set up,according to the relation,time needn′t to be preserved to store data.When data in RAM is read,hours and minutes when these data is saved could be figured out and passed to users.Data of CO2 concentration is coded and compressed before it is saved to RAM.All the above techniques improve the availability of RAM in DS1302,so more data can be stored in it.This method could be extended to similar application when few data need to be saved in fixed time interval.
Keywords:DS1302;data storage;RAM;CO2 concentration
DS1302是美國Dallas公司生產(chǎn)的一種定時芯片,可以向用戶提供年月日時分秒等時間信息,廣泛應(yīng)用于時鐘電路和各種計時定時場合[1-3]。其內(nèi)部具有31 B RAM,可以存儲用戶數(shù)據(jù)。DS1302可以采用備用電源工作,主電源斷電時DS1302自動將備用電源轉(zhuǎn)換為工作電源,因而其計時和數(shù)據(jù)存儲不受系統(tǒng)主電源通斷影響,存儲的用戶數(shù)據(jù)也不會丟失[4,5]。因此,DS1302可以存儲重要的用戶數(shù)據(jù)[6,7]。但許多應(yīng)用中往往直接采用E2PROM芯片[8,9],忽視了DS1302中的內(nèi)部RAM,使這部分資源造成浪費。
作者發(fā)現(xiàn),在需要記錄的數(shù)據(jù)與時間有特定關(guān)系的場合,可以在DS1302的RAM地址與其記錄的數(shù)據(jù)出現(xiàn)的時間之間建立一種映射或函數(shù)關(guān)系。利用這種關(guān)系,可以只記錄首項數(shù)據(jù)的產(chǎn)生時間,而免于記錄其余數(shù)據(jù)的產(chǎn)生時間,這就節(jié)省了許多RAM空間,可以記錄更多數(shù)據(jù)項目。在查詢數(shù)據(jù)時,根據(jù)數(shù)據(jù)所在地址和時間的映射關(guān)系可以推算出每項數(shù)據(jù)產(chǎn)生的時間。將這種方法應(yīng)用于CO2增施控制器中,利用DS1302的RAM存儲CO2濃度,免于安裝專用的E2PROM,不僅節(jié)省資金,也減化了電路,縮短了系統(tǒng)開發(fā)周期。本文目的不是研究DS1302的特點和一般使用方法,而是著力探討如何利用其內(nèi)部RAM高效存儲數(shù)據(jù)。
1 DS1302 RAM地址與數(shù)據(jù)產(chǎn)生時間的關(guān)系
在許多場合中,需要保存的數(shù)據(jù)與時間之間有一定的對應(yīng)關(guān)系。例如,在溫室中,每隔半小時采集并保存一次CO2濃度數(shù)據(jù),這時,如果確定了第一次保存CO2濃度的時間為8∶00,以后保存CO2濃度的時間也就確定為8∶30,9∶00,9∶30…。如果第一次保存CO2濃度的RAM地址是0x02,則第二次、第三次保存CO2濃度的RAM地址為0x03,0x04…若將RAM地址編號用x表示,將此地址中數(shù)據(jù)對應(yīng)的時間化為分鐘(從零點算起,當(dāng)前分鐘=當(dāng)前小時×60+當(dāng)前小時內(nèi)分鐘)并用y表示,則x與y之間的關(guān)系可表示為:
y=30×(x-2)+FirstHour×60+
FirstMinute (x≥2)(1)
其中:FirstHour:首次記錄產(chǎn)生的小時數(shù);FirstMinute:首次記錄產(chǎn)生的分鐘數(shù);RecMode:兩次記錄之間的時間間隔,單位分鐘。
在保存數(shù)據(jù)時,用下面公式確定某時間y產(chǎn)生的數(shù)據(jù)對應(yīng)的RAM地址x:
x=2+[y-(FirstHour×60+FirstMinute)]÷
RecMode(2)
如果要將某地址中數(shù)據(jù)對應(yīng)的記錄時間化為“小時∶分鐘”表示方法,小時用H表示,分鐘為M表示,則:
H=y/60(3)
M=y%60(4)
其中,符號“/”表示整除;符號“%”表示取余數(shù),相當(dāng)于C語言中的取模運算。
根據(jù)上述討論可知,如果要完整的推算出每項數(shù)據(jù)對應(yīng)的時間信息,則需要在DS1302的RAM中存儲的內(nèi)容為:第一條數(shù)據(jù)產(chǎn)生的時間;第一條記錄的存儲地址;不同數(shù)據(jù)產(chǎn)生的時間間隔。
2 DS1302中的數(shù)據(jù)存放格式
2.1 控制信息存放格式
為了使系統(tǒng)在恢復(fù)供電后可繼續(xù)工作,必須將有關(guān)控制參數(shù)保存在DS1302的內(nèi)部RAM中。為確定是否記錄數(shù)據(jù),除了保存前面討論的信息以外,還需要保存是否記錄標(biāo)志。為提高RAM利用效率,將“是否記錄(IsRec)”、“記錄模式(RecMode)”和“首項記錄產(chǎn)生小時(FirstHour)”記錄在同一個8位控制字WORD1中,并將此控制字保存在DS1302內(nèi)部RAM的第一個字節(jié)(其地址為0x00)中,將首項記錄的“產(chǎn)生分鐘(FirstMinute)”保存在第二個字節(jié)中(其地址為0x01)。第一個字節(jié)各位的含義如圖1所示。
圖1 控制字 WORD1編碼
IsRec取值含義;
0:不記錄數(shù)據(jù);
1:記錄數(shù)據(jù);
RecMode含義;
00:每10 min記錄一次數(shù)據(jù);
01:每20 min記錄一次數(shù)據(jù);
10:每30 min記錄一次數(shù)據(jù);
11:每60 min記錄一次數(shù)據(jù);
FirstHour含義:
首項數(shù)據(jù)產(chǎn)生時間的小時數(shù);
在確定各個參數(shù)的取值后,可用如下運算得到控制字WORD1:
RecMode=RecMode<<1;
FirstHour=FirstHour<<3;
WORD1=FirstHour|RecMode|IsRec;
2.2 CO2濃度數(shù)據(jù)存放格式
根據(jù)農(nóng)學(xué)家的研究,CO2濃度約1 000 ppm可顯著提高作物產(chǎn)量,在各種溫室控制中,CO2濃度的變動范圍一般不超過0~5 000 ppm,而且作物對低于20 ppm的CO2濃度變化是不敏感的[10]。因此,在確保CO2濃度記錄數(shù)據(jù)的準(zhǔn)確性前提下,為了節(jié)省RAM空間,將CO2濃度變化自0~5 000 ppm分為250個區(qū)間,每個區(qū)間中的CO2濃度值一律以本數(shù)據(jù)所在區(qū)間號為代表進行記錄。實測CO2濃度值ρ與記錄值R之間的關(guān)系為:
R=ρ/20(5)
其中“/”表示整除。
在讀取CO2濃度時,實際讀取值為CO2實際濃度值所在的區(qū)間號,為了得到CO2濃度值ρ,應(yīng)用以下公式:
ρ′=R×20+10(6)
計算出的CO2濃度值ρ′與其實際值ρ之間的最大誤差為10 ppm。實際測量CO2濃度值與其記錄值、讀取值之間的關(guān)系見表1。
表1 CO2濃度記錄值與實際值之間的關(guān)系
實際值/ppm保存值/ppm讀取值/ppm最大誤差/ppm
0~2001010
21~4013010
41~6025010
…………
4 961~4 9802484 97010
4 981~5 0002494 99010
3 數(shù)據(jù)保存與顯示
3.1 數(shù)據(jù)保存
在啟動數(shù)據(jù)保存功能時,需要將DS1302內(nèi)部RAM中所有內(nèi)容清空,然后將控制信息IsRec和RecMode寫入WORD1并存入地址為0x00的RAM。第一次記錄數(shù)據(jù)時,將FirstHour信息寫入WORD1并存放至0x00 RAM,將FirstMinute存入0x01 RAM。
程序不斷讀取和檢測當(dāng)前時間,如果當(dāng)前時間與上次記錄時間間隔為程序控制參數(shù)RecMode規(guī)定的時間,就按圖2所示流程保存CO2濃度數(shù)據(jù)。
3.2 數(shù)據(jù)讀取與顯示
將CO2濃度保存到DS1302中后,任意時間可以讀取顯示。讀取與顯示流程如圖3所示。為使用戶方便地了解當(dāng)前時刻CO2濃度值及其記錄情況,在LCD顯示屏上隨時更新當(dāng)前CO2濃度及第一次CO2濃度記錄時間及已經(jīng)記錄的CO2濃度值個數(shù)。CO2增施控制器LCD屏顯示界面如圖4所示。查詢顯示CO2濃度的界面如圖5所示。
圖2 數(shù)據(jù)保存流程
圖3 CO2濃度顯示流程
圖4顯示的信息為:當(dāng)前CO2濃度是883 ppm;當(dāng)前時間是8∶01;當(dāng)前已記錄了1個CO2濃度值;首次記錄CO2濃度的時間是8∶01。圖5顯示的信息為:8∶01時CO2濃度是890 ppm。可見,數(shù)據(jù)保存到DS1302中后, 產(chǎn)生了7 ppm的誤差。當(dāng)然,這個誤差是微不足道的。
圖4 系統(tǒng)顯示界面
圖5 CO2濃度查詢界面
4 結(jié) 語
本方法利用DS1302的2個字節(jié)存放控制信息,剩余的29個字節(jié)可存儲29條CO2濃度數(shù)據(jù)。若半小時存儲1個CO2濃度值,共可存儲14.5 h的數(shù)據(jù),即可以自動存儲整個白天或夜晚的CO2濃度值。對程序控制參數(shù)和CO2濃度數(shù)據(jù)進行了編碼轉(zhuǎn)換,提高了RAM利用效率??刂茀?shù)保存在DS1302中,即使斷電這些參數(shù)也不會丟失,恢復(fù)供電后程序繼續(xù)運行。如果某時刻因斷電而不能記錄數(shù)據(jù),在查詢CO2濃度時,此時刻的數(shù)據(jù)將顯示為0,提示用戶為無效數(shù)據(jù),但恢復(fù)供電后的數(shù)據(jù)仍然有效。 該方法可推廣到其他按一定時間間隔記錄小容量數(shù)據(jù)的場合。
參考文獻
[1]趙海蘭,朱劍,趙祥偉.DS1302實時顯示時間的原理與應(yīng)用[J].電子技術(shù),2004(1):43-46.
[2]李文玉.例談實時時鐘/日歷芯片DS1302的具體應(yīng)用[J].電子制作,2007(9):43-45.
[3]歐陽喬.時鐘芯片DS1302的原理及其Proteus仿真設(shè)計[J].科技信息,2006(6):19-20.
[4]陳冬,彭德遲,胡榮強.DS1302實時鐘在嵌入式系統(tǒng)中的應(yīng)用.黃石理工學(xué)院學(xué)報,2006(3):83-86.
[5]黃明強.DS1302在單片機系統(tǒng)中的應(yīng)用[J].保定師范??茖W(xué)校學(xué)報,2004(2):30-33.
[6]能昌會.時鐘芯片DS1302在單片機系統(tǒng)中的應(yīng)用[J].電子制作,2007(11):39-40.
[7]姚得法,張洪林.串行時鐘芯片DS1302的原理與使用[J].信息技術(shù)與信息化,2006(1):92-94.
[8]高培先,張相.實時時鐘芯片DS1302在某測試記錄儀設(shè)計中的應(yīng)用[J].電子技術(shù),2003(7):43-46.
[9]朱昌,方勇,朱保文.心電圖的采集與存儲[J].儀器儀表學(xué)報,2004,25(4):360-361.
[10]陳平平.大氣二氧化碳濃度升高對植物的影響[J].生物學(xué)通報,2002,37(3):20-22.
作者簡介 王立文 男,1976年出生,山東濟南人,講師。從事數(shù)字電子及環(huán)境控制方面的教學(xué)和研究工作。
注:本文中所涉及到的圖表、注解、公式等內(nèi)容請以PDF格式閱讀原文