999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

利用DS1302存儲數據的一種高效方法

2008-04-12 00:00:00王立肖理慶許明生
現代電子技術 2008年24期

摘 要:將時鐘芯片DS1302應用于溫室CO2增施控制器中,提出一種利用其內部RAM存儲數據的方法,在其內部RAM地址與時間之間建立一種映射關系,根據這種關系,存儲數據時不需要保存相應的時間;在讀取數據時,可以根據映射關系將數據與其相應的時間計算出來傳遞給用戶。對CO2濃度數值進行編碼壓縮后再進行存儲。這些措施提高了DS1302內部RAM的利用效率,可存儲更多數據。這種方法可推廣到其他按一定時間間隔保存小容量數據的場合。

關鍵詞:DS1302;數據存儲;RAM;CO2濃度

中圖分類號:TH79,TP368.1文獻標識碼: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公司生產的一種定時芯片,可以向用戶提供年月日時分秒等時間信息,廣泛應用于時鐘電路和各種計時定時場合[1-3]。其內部具有31 B RAM,可以存儲用戶數據。DS1302可以采用備用電源工作,主電源斷電時DS1302自動將備用電源轉換為工作電源,因而其計時和數據存儲不受系統主電源通斷影響,存儲的用戶數據也不會丟失[4,5]。因此,DS1302可以存儲重要的用戶數據[6,7]。但許多應用中往往直接采用E2PROM芯片[8,9],忽視了DS1302中的內部RAM,使這部分資源造成浪費。

作者發現,在需要記錄的數據與時間有特定關系的場合,可以在DS1302的RAM地址與其記錄的數據出現的時間之間建立一種映射或函數關系。利用這種關系,可以只記錄首項數據的產生時間,而免于記錄其余數據的產生時間,這就節省了許多RAM空間,可以記錄更多數據項目。在查詢數據時,根據數據所在地址和時間的映射關系可以推算出每項數據產生的時間。將這種方法應用于CO2增施控制器中,利用DS1302的RAM存儲CO2濃度,免于安裝專用的E2PROM,不僅節省資金,也減化了電路,縮短了系統開發周期。本文目的不是研究DS1302的特點和一般使用方法,而是著力探討如何利用其內部RAM高效存儲數據。

1 DS1302 RAM地址與數據產生時間的關系

在許多場合中,需要保存的數據與時間之間有一定的對應關系。例如,在溫室中,每隔半小時采集并保存一次CO2濃度數據,這時,如果確定了第一次保存CO2濃度的時間為8∶00,以后保存CO2濃度的時間也就確定為8∶30,9∶00,9∶30…。如果第一次保存CO2濃度的RAM地址是0x02,則第二次、第三次保存CO2濃度的RAM地址為0x03,0x04…若將RAM地址編號用x表示,將此地址中數據對應的時間化為分鐘(從零點算起,當前分鐘=當前小時×60+當前小時內分鐘)并用y表示,則x與y之間的關系可表示為:

y=30×(x-2)+FirstHour×60+

FirstMinute (x≥2)(1)

其中:FirstHour:首次記錄產生的小時數;FirstMinute:首次記錄產生的分鐘數;RecMode:兩次記錄之間的時間間隔,單位分鐘。

在保存數據時,用下面公式確定某時間y產生的數據對應的RAM地址x:

x=2+[y-(FirstHour×60+FirstMinute)]÷

RecMode(2)

如果要將某地址中數據對應的記錄時間化為“小時∶分鐘”表示方法,小時用H表示,分鐘為M表示,則:

H=y/60(3)

M=y%60(4)

其中,符號“/”表示整除;符號“%”表示取余數,相當于C語言中的取模運算。

根據上述討論可知,如果要完整的推算出每項數據對應的時間信息,則需要在DS1302的RAM中存儲的內容為:第一條數據產生的時間;第一條記錄的存儲地址;不同數據產生的時間間隔。

2 DS1302中的數據存放格式

2.1 控制信息存放格式

為了使系統在恢復供電后可繼續工作,必須將有關控制參數保存在DS1302的內部RAM中。為確定是否記錄數據,除了保存前面討論的信息以外,還需要保存是否記錄標志。為提高RAM利用效率,將“是否記錄(IsRec)”、“記錄模式(RecMode)”和“首項記錄產生小時(FirstHour)”記錄在同一個8位控制字WORD1中,并將此控制字保存在DS1302內部RAM的第一個字節(其地址為0x00)中,將首項記錄的“產生分鐘(FirstMinute)”保存在第二個字節中(其地址為0x01)。第一個字節各位的含義如圖1所示。

圖1 控制字 WORD1編碼

IsRec取值含義;

0:不記錄數據;

1:記錄數據;

RecMode含義;

00:每10 min記錄一次數據;

01:每20 min記錄一次數據;

10:每30 min記錄一次數據;

11:每60 min記錄一次數據;

FirstHour含義:

首項數據產生時間的小時數;

在確定各個參數的取值后,可用如下運算得到控制字WORD1:

RecMode=RecMode<<1;

FirstHour=FirstHour<<3;

WORD1=FirstHour|RecMode|IsRec;

2.2 CO2濃度數據存放格式

根據農學家的研究,CO2濃度約1 000 ppm可顯著提高作物產量,在各種溫室控制中,CO2濃度的變動范圍一般不超過0~5 000 ppm,而且作物對低于20 ppm的CO2濃度變化是不敏感的[10]。因此,在確保CO2濃度記錄數據的準確性前提下,為了節省RAM空間,將CO2濃度變化自0~5 000 ppm分為250個區間,每個區間中的CO2濃度值一律以本數據所在區間號為代表進行記錄。實測CO2濃度值ρ與記錄值R之間的關系為:

R=ρ/20(5)

其中“/”表示整除。

在讀取CO2濃度時,實際讀取值為CO2實際濃度值所在的區間號,為了得到CO2濃度值ρ,應用以下公式:

ρ′=R×20+10(6)

計算出的CO2濃度值ρ′與其實際值ρ之間的最大誤差為10 ppm。實際測量CO2濃度值與其記錄值、讀取值之間的關系見表1。

表1 CO2濃度記錄值與實際值之間的關系

實際值/ppm保存值/ppm讀取值/ppm最大誤差/ppm

0~2001010

21~4013010

41~6025010

…………

4 961~4 9802484 97010

4 981~5 0002494 99010

3 數據保存與顯示

3.1 數據保存

在啟動數據保存功能時,需要將DS1302內部RAM中所有內容清空,然后將控制信息IsRec和RecMode寫入WORD1并存入地址為0x00的RAM。第一次記錄數據時,將FirstHour信息寫入WORD1并存放至0x00 RAM,將FirstMinute存入0x01 RAM。

程序不斷讀取和檢測當前時間,如果當前時間與上次記錄時間間隔為程序控制參數RecMode規定的時間,就按圖2所示流程保存CO2濃度數據。

3.2 數據讀取與顯示

將CO2濃度保存到DS1302中后,任意時間可以讀取顯示。讀取與顯示流程如圖3所示。為使用戶方便地了解當前時刻CO2濃度值及其記錄情況,在LCD顯示屏上隨時更新當前CO2濃度及第一次CO2濃度記錄時間及已經記錄的CO2濃度值個數。CO2增施控制器LCD屏顯示界面如圖4所示。查詢顯示CO2濃度的界面如圖5所示。

圖2 數據保存流程

圖3 CO2濃度顯示流程

圖4顯示的信息為:當前CO2濃度是883 ppm;當前時間是8∶01;當前已記錄了1個CO2濃度值;首次記錄CO2濃度的時間是8∶01。圖5顯示的信息為:8∶01時CO2濃度是890 ppm。可見,數據保存到DS1302中后, 產生了7 ppm的誤差。當然,這個誤差是微不足道的。

圖4 系統顯示界面

圖5 CO2濃度查詢界面

4 結 語

本方法利用DS1302的2個字節存放控制信息,剩余的29個字節可存儲29條CO2濃度數據。若半小時存儲1個CO2濃度值,共可存儲14.5 h的數據,即可以自動存儲整個白天或夜晚的CO2濃度值。對程序控制參數和CO2濃度數據進行了編碼轉換,提高了RAM利用效率。控制參數保存在DS1302中,即使斷電這些參數也不會丟失,恢復供電后程序繼續運行。如果某時刻因斷電而不能記錄數據,在查詢CO2濃度時,此時刻的數據將顯示為0,提示用戶為無效數據,但恢復供電后的數據仍然有效。 該方法可推廣到其他按一定時間間隔記錄小容量數據的場合。

參考文獻

[1]趙海蘭,朱劍,趙祥偉.DS1302實時顯示時間的原理與應用[J].電子技術,2004(1):43-46.

[2]李文玉.例談實時時鐘/日歷芯片DS1302的具體應用[J].電子制作,2007(9):43-45.

[3]歐陽喬.時鐘芯片DS1302的原理及其Proteus仿真設計[J].科技信息,2006(6):19-20.

[4]陳冬,彭德遲,胡榮強.DS1302實時鐘在嵌入式系統中的應用.黃石理工學院學報,2006(3):83-86.

[5]黃明強.DS1302在單片機系統中的應用[J].保定師范專科學校學報,2004(2):30-33.

[6]能昌會.時鐘芯片DS1302在單片機系統中的應用[J].電子制作,2007(11):39-40.

[7]姚得法,張洪林.串行時鐘芯片DS1302的原理與使用[J].信息技術與信息化,2006(1):92-94.

[8]高培先,張相.實時時鐘芯片DS1302在某測試記錄儀設計中的應用[J].電子技術,2003(7):43-46.

[9]朱昌,方勇,朱保文.心電圖的采集與存儲[J].儀器儀表學報,2004,25(4):360-361.

[10]陳平平.大氣二氧化碳濃度升高對植物的影響[J].生物學通報,2002,37(3):20-22.

作者簡介 王立文 男,1976年出生,山東濟南人,講師。從事數字電子及環境控制方面的教學和研究工作。

注:本文中所涉及到的圖表、注解、公式等內容請以PDF格式閱讀原文

主站蜘蛛池模板: 成人免费一区二区三区| 国产资源站| 操操操综合网| 国产精品三级av及在线观看| 国产成人91精品| 国产精品视频猛进猛出| 五月天天天色| a级毛片在线免费| 欧美a在线| …亚洲 欧洲 另类 春色| 综合色亚洲| 日韩精品一区二区三区免费在线观看| 亚洲国产精品VA在线看黑人| 精品人妻无码中字系列| 亚洲AV一二三区无码AV蜜桃| 69精品在线观看| 国产拍揄自揄精品视频网站| 第九色区aⅴ天堂久久香| 欧美国产成人在线| 91在线精品麻豆欧美在线| 91色在线观看| 在线观看国产一区二区三区99| 国产波多野结衣中文在线播放 | 四虎成人免费毛片| 国产专区综合另类日韩一区| 一级不卡毛片| 香蕉久久永久视频| 亚洲无码视频一区二区三区| 在线国产综合一区二区三区| 久久久亚洲色| 国产精品亚洲一区二区三区z| 国产av色站网站| 青青草原国产| 五月婷婷综合色| 国产嫖妓91东北老熟女久久一| a毛片在线免费观看| 久久综合国产乱子免费| 亚洲视频欧美不卡| 国产精品白浆在线播放| 免费三A级毛片视频| 伊人成人在线| 免费a在线观看播放| 亚洲日韩久久综合中文字幕| 日韩无码黄色| 亚洲国产日韩在线成人蜜芽| 999国内精品久久免费视频| 欧美精品另类| 国产精品免费入口视频| a级毛片网| 亚洲视频免| 全部毛片免费看| 操操操综合网| 伊人激情久久综合中文字幕| 无码精油按摩潮喷在线播放 | 欧美三级视频网站| 亚洲综合久久成人AV| 国产好痛疼轻点好爽的视频| 呦系列视频一区二区三区| 久久免费精品琪琪| 美女被操黄色视频网站| 日日拍夜夜嗷嗷叫国产| 青青久久91| 99热这里只有精品免费| 91无码人妻精品一区二区蜜桃| 国产天天色| 婷婷开心中文字幕| 久久大香伊蕉在人线观看热2| 999国产精品永久免费视频精品久久 | 国产91视频免费观看| 97视频精品全国免费观看| 成人亚洲国产| 久久人体视频| 在线无码av一区二区三区| 日韩高清欧美| 四虎亚洲国产成人久久精品| 国产在线精彩视频二区| 一本大道香蕉高清久久| 欧美区日韩区| 丁香婷婷激情综合激情| 国产美女精品人人做人人爽| 国产裸舞福利在线视频合集| 国产精品一线天|