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

多點溫度監測系統及其實時時間功能的實現

2015-01-13 02:00:00
化工自動化及儀表 2015年3期
關鍵詞:單片機

肖 正 艾 紅

(北京信息科技大學自動化學院,北京 100192)

糧食是人類賴以生存的根本,是促進國家穩定發展的重要保障。為了防止糧食發霉變質,按期對糧倉進行溫度測量是糧食儲備中常用的手段。隨著科技的發展和自動化水平的提高,溫度自動監測已經成為各行各業進行安全生產和減少損失采取的重要措施之一。為了實現糧情的溫度自動監測,筆者采用STC89C516RD單片機作為主控制器,使用數字溫度傳感器DS18B20,并配合鍵盤管理及液晶顯示等外圍電路,設計多點溫度監測系統及其實時時間功能。

由于系統由多片數字式單總線DS18B20溫度傳感器構成溫度傳感器網絡,因此,準確、有效地對每一個溫度傳感器進行尋址成為系統設計的核心問題。系統設計依據DS18B20 溫度傳感器的操作指令,首先讀取各個傳感器的序列號,并確定傳感器對應的各點位置關系。在讀取溫度數值時,發送相應的序列號,再讀取匹配的傳感器溫度數值。有兩條命令用于獲取傳感器序列號:讀ROM命令33H和搜索ROM命令F0H。讀ROM命令在總線上僅有一個傳感器的情況下使用;搜索ROM命令允許總線主機使用一種處理方法識別總線上所有的傳感器序列號。為了建立64位ROM代碼,即傳感器序列號與測量位置點傳感器之間的關系,選用讀ROM命令33H,通過單總線把各個位置的傳感器序列號讀取出來,并通過串口調試助手觀察每個DS18B20的序列號。現場各溫度傳感器的序列號存放在單片機的CODE區內,軟件設計了10行8列的二維數組來存儲溫度傳感器的64位序列號,具體如下:

code uchar ds[10][8]={0x28,0x3E,0xF0,0xC4,0x00,0x00,0x00,0x71,//第一個傳感器序列號

0x28,0xAE,0xD6,0x98,0x00,0x00,0x00,0x6E,//第二個傳感器序列號

?

0x28,0xE3,0xF1,0xC4,0x00,0x00,0x00,0x32};//第十個傳感器序列號

讀取溫度傳感器序列號流程如圖1所示。

圖1 讀取溫度傳感器序列號流程

2 數據通路選擇

在多點溫度的采集過程中要考慮通路的選擇問題,系統采用兩個數據通路,分別由單片機的P1.0和P1.1控制。軟件設計中設置了一個選擇通路字節DQ_select,通過對DQ_select設定不同的值來決定選擇哪條通路。數據通路選擇流程如圖2所示。

圖2 數據通路選擇流程

對于傳感器序列號數組的選擇,定義了一個全局變量m,通過DQ_select的值對m賦相應的值,程序就可以直接通過m值調用相應傳感器序列號。對于初始化程序,讀寫數據時通路的選擇也是通過判斷DQ_select的值來決定的。

3 實時時間顯示和時間設置功能

3.1 實時時間顯示

系統設計采用一個3V的鋰電池作為備用電源,采用時鐘芯片DS1302實現實時時間顯示。在整個系統斷電后,時鐘芯片依然能夠工作。當單片機上電后,直接讀取時鐘芯片DS1302寄存器中的數據,并在液晶屏上顯示,不必每次都初始化。在修改時間程序中有對時鐘芯片DS1302初始化的程序,只有當修改時間時才會對DS1302進行初始化,如果時間正常,對時鐘芯片DS1302的操作只需循環讀取它內部寄存器的數值即可[1]。實時時間顯示流程如圖3所示。

圖3 實時時間顯示流程

DS1302初始化主要是進行設置運行位及打開電池充電等操作。設置時間數據是將需要顯示的時間數據存儲到DS1302的存儲器內,程序設計如下:

void Set1302(uchar*pClock)

{ uchar i;

uchar ucAddr=0x80;

W1302(0x8e,0x00);//控制命令,WP=0,寫保護禁止

W1302(0xC0,0x01);//寫RAM寄存器

for(i=7;i>0;i--)

{W1302(ucAddr,*pClock);//秒、分、時、星期、日、月、年

pClock++;

ucAddr+=2;

}

W1302(0x8e,0x80);//控制命令,WP=1,寫保護

}

其中,pClock中存儲的是需要設置的時間數據,按照DS1302寄存器的順序,依次存儲秒、分、時、星期、日、月和年的BCD碼。

讀取操作是將DS1302存儲器中的數據讀出來,并在液晶屏上顯示,如果要實現液晶屏顯示實時時間數據,則循環執行讀取和顯示操作,程序設計如下:

while(1){ Get1302(ppClock);//讀取DS1302寄存器中的數據

display_1302(ppClock);//在LCD上顯示數據

}

Get1302(ppClock)是讀取DS1302寄存器中的數據,并存儲在ppClock數組中;display_1302(ppClock)是調用液晶顯示函數,顯示ppClock中的數據。如果要顯示當前時間,則在溫度監測系統菜單選項上選擇“時間顯示”功能,按“確認”鍵后進入時間顯示畫面(圖4)。

圖4 時間顯示畫面

3.2 時間設置功能

當備用電池沒電或時間發生錯誤后,進入時間設置功能畫面修改時間,按照圖5上的提示輸入數值,如果輸入的數值符合相應的時間數值,按“確認”鍵后,液晶屏上的“?”會消失。時間設置流程如圖6所示。

圖5 時間設置功能液晶顯示畫面

程序設計的難點是輸入數據和液晶屏顯示數據與游標的位置能否相對應,程序的核心是通過flag值決定液晶屏顯示的字符。

4 報警歷史數據顯示

多點監測系統的溫度報警數據采用存儲器芯片24C256存儲。報警歷史數據顯示時調出存儲在24C256中的報警數據,并將讀出的數據在液晶屏上顯示。程序設計的難點在于每次報警后存儲的數據較多,每一次報警數據都需要在液晶屏上分兩屏顯示[2]。因此當數據較多時,使用鍵盤的上下箭頭來翻屏會用到大量的顯示代碼,同時需要許多判斷性語句來決定顯示的數據,報警歷史數據顯示流程如圖7所示。

圖6 時間設置流程

圖7 報警歷史數據顯示流程

顯示信息包括報警時間、報警的房間號、報警時的溫度、上限報警設定值、下限報警設定值及報警標志等。例如調用一次報警歷史數據,在液晶屏上顯示畫面如圖8所示。

報警歷史數據顯示程序中由于每次可以讀出最新的4個報警歷史數據,所以必須根據翻屏后flag的值判斷要讀取的歷史報警數據,地址的選擇程序如下:

圖8 報警歷史數據顯示畫面

if(flag==1|flag==2)addr=0x0000;//寫入地址,第一個數據

if(flag==3|flag==4)addr=0x0010;//寫入地址,第二個數據

if(flag==5|flag==6)addr=0x0020;//寫入地址,第三個數據

if(flag==7|flag==8)addr=0x0030;//寫入地址,第四個數據

通過flag的值判斷顯示畫面程序如下:

if(flag==1|flag%2==1)//顯示每個報警參數的第一屏信息

{ lcd_clock_word();

W_1byte(0,0,0x98);

for(i=0;string1[i]!=′

主站蜘蛛池模板: 久久综合色播五月男人的天堂| 国产三级视频网站| 伊人久综合| 国产亚洲精品自在久久不卡| 免费看美女自慰的网站| 国产一级妓女av网站| 国产情侣一区二区三区| 色综合成人| 国产产在线精品亚洲aavv| 重口调教一区二区视频| 国产凹凸视频在线观看| 97国产在线视频| 国产女人爽到高潮的免费视频| 91精品亚洲| 黑色丝袜高跟国产在线91| 国产剧情无码视频在线观看| 国产免费羞羞视频| 国产自无码视频在线观看| 国产精品视频导航| 亚洲日韩精品伊甸| 97视频精品全国免费观看 | 在线国产欧美| 国产偷国产偷在线高清| 亚洲一级毛片免费看| 亚洲天堂视频网| 日韩大乳视频中文字幕| 久久精品国产精品国产一区| 国产精品手机在线观看你懂的| 伊人久久福利中文字幕| 狠狠色噜噜狠狠狠狠奇米777| 青草国产在线视频| 亚洲精品欧美日本中文字幕| 国产成人精品高清在线| 久久天天躁狠狠躁夜夜2020一| 久久免费精品琪琪| 亚欧美国产综合| 免费毛片网站在线观看| 色九九视频| 中文字幕日韩欧美| 免费A级毛片无码免费视频| 亚洲av色吊丝无码| 午夜性刺激在线观看免费| 天天综合网色中文字幕| 欧美人与牲动交a欧美精品 | 五月丁香在线视频| 色哟哟国产精品一区二区| 中美日韩在线网免费毛片视频| 国产成人精品日本亚洲| 国产亚洲第一页| 国产靠逼视频| 亚洲第一成年免费网站| 91热爆在线| 国产成人久久综合777777麻豆 | 日韩成人在线视频| 日韩毛片在线播放| 谁有在线观看日韩亚洲最新视频 | 久久中文字幕2021精品| 免费人成视网站在线不卡| AV老司机AV天堂| 欧美亚洲香蕉| 亚洲a免费| 精品国产欧美精品v| 亚洲精品国产自在现线最新| 久久精品日日躁夜夜躁欧美| 四虎成人精品| 国产屁屁影院| 免费观看国产小粉嫩喷水| 欧美精品亚洲精品日韩专区va| 精品国产女同疯狂摩擦2| 欧美色综合网站| 日韩精品成人在线| 亚洲无码高清免费视频亚洲| 久久精品无码国产一区二区三区| 亚洲人成在线精品| 色综合天天综合| 国产高清又黄又嫩的免费视频网站| 国产精品久久久精品三级| 国产无人区一区二区三区| 日韩欧美国产区| a亚洲天堂| 国产欧美在线观看视频| 中文字幕第1页在线播|