基于單片機(jī)設(shè)計(jì)的智能溫度報(bào)警器_第1頁(yè)
基于單片機(jī)設(shè)計(jì)的智能溫度報(bào)警器_第2頁(yè)
基于單片機(jī)設(shè)計(jì)的智能溫度報(bào)警器_第3頁(yè)
基于單片機(jī)設(shè)計(jì)的智能溫度報(bào)警器_第4頁(yè)
基于單片機(jī)設(shè)計(jì)的智能溫度報(bào)警器_第5頁(yè)
已閱讀5頁(yè),還剩19頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、智能溫度報(bào)警系統(tǒng)摘要:智能作為現(xiàn)代的新發(fā)明,是以后的發(fā)展方向,他可以按照預(yù)先設(shè)定的模式在一個(gè)環(huán)境里自動(dòng)的運(yùn)作,不需要人為的管理,可應(yīng)用于科學(xué)勘探等等的用途。智能溫度報(bào)警系統(tǒng)就是其中的一個(gè)體現(xiàn),本次設(shè)計(jì)的智能溫度報(bào)警系統(tǒng),以STC89C52單片機(jī)作為微控制器,設(shè)計(jì)出一種高低溫智能溫度報(bào)警系統(tǒng),通過DS18B20溫度傳感器檢測(cè)溫度,當(dāng)檢測(cè)到的溫度高于設(shè)定值時(shí)蜂鳴器報(bào)警或當(dāng)檢測(cè)到的溫度低于設(shè)定值時(shí)蜂鳴器開始報(bào)警,溫度檢測(cè)精確到0.1度。并具有掉電保存功能,數(shù)據(jù)保存在單片機(jī)內(nèi)部。工作狀態(tài)實(shí)時(shí)顯示在1602液晶上。其中電源采用3節(jié)5號(hào)干電池供電。關(guān)鍵詞:STC89C52單片機(jī) DS18B20 1602液

2、晶模塊 1 設(shè)計(jì)方案與論證 采用STC89C52單片機(jī)作為控制單元,因?yàn)樵撔蛦纹瑱C(jī)價(jià)格便宜,功能比較強(qiáng)大,性價(jià)比高,而且在市場(chǎng)上很容易買到。通過DS18B20溫度傳感器來采集溫度信息,送入主控單元單片機(jī),處理數(shù)據(jù)后完成相應(yīng)動(dòng)作,以達(dá)到自身控制。液晶顯示采用1602LCD實(shí)時(shí)顯示工作狀態(tài)。此系統(tǒng)比較靈活,更重要的是采用軟件方法來解決復(fù)雜的硬件電路部分,使系統(tǒng)硬件簡(jiǎn)潔化,各類功能易于實(shí)現(xiàn),能很好地滿足題目的要求。2 系統(tǒng)硬件設(shè)計(jì)2.1 單片機(jī)選擇方案一:選用一片CPLD(如EPM7128LC84-15)作為系統(tǒng)的核心部件,實(shí)現(xiàn)控制與處理的功能。CPLD具有速度快、編程容易、資源豐富、開發(fā)周期短等優(yōu)

3、點(diǎn),可利用VHDL語(yǔ)言進(jìn)行編寫開發(fā)。但CPLD在控制上較單片機(jī)有較大的劣勢(shì)。同時(shí),CPLD的處理速度非??欤悄軠囟葓?bào)警系統(tǒng)對(duì)系統(tǒng)處理信息的要求也就不會(huì)太高,在這一點(diǎn)上,MCU就已經(jīng)可以勝任了。若采用該方案,必將在控制上遇到許許多多不必要增加的難題。為此,我們不采用該種方案,進(jìn)而提出了第二種設(shè)想。方案二:采用單片機(jī)作為整個(gè)系統(tǒng)的核心,用其控制行進(jìn)中的小車,以實(shí)現(xiàn)其既定的性能指標(biāo)。充分分析我們的系統(tǒng),以STC89C52單片機(jī)作為微控制器,設(shè)計(jì)出一種高低溫智能溫度報(bào)警系統(tǒng),通過DS18B20溫度傳感器檢測(cè)溫度,當(dāng)檢測(cè)到的溫度高于設(shè)定值時(shí)蜂鳴器報(bào)警或當(dāng)檢測(cè)到的溫度低于設(shè)定值時(shí)蜂鳴器開始報(bào)警,而在這

4、一點(diǎn)上,單片機(jī)就顯現(xiàn)出來它的優(yōu)勢(shì)控制簡(jiǎn)單、方便、快捷。這樣一來,單片機(jī)就可以充分發(fā)揮其資源豐富、有較為強(qiáng)大的控制功能及可位尋址操作功能、價(jià)格低廉等優(yōu)點(diǎn)。51單片機(jī)具有功能強(qiáng)大的位操作指令,I/O口均可按位尋址,程序空間多達(dá)8K,對(duì)于本設(shè)計(jì)也綽綽有余,更可貴的是51單片機(jī)價(jià)格非常低廉。因此,這種方案是一種較為理想的方案。2.2 電源模塊 由于本系統(tǒng)采用電池供電,我們考慮了如下幾種方案為系統(tǒng)供電。方案1: 采用12V蓄電池為系統(tǒng)供電。蓄電池具有較強(qiáng)的電流驅(qū)動(dòng)能力以及穩(wěn)定的電壓輸出性能。但是蓄電池的體積過于龐大,價(jià)格昂貴,在智能溫度報(bào)警器上使用極為不方便。因此我們放棄了此方案。方案2:采用3節(jié)1.5

5、 V 五號(hào)干電池串聯(lián)共4.5V給單片機(jī)傳感器供電,4.5V在單片機(jī)傳感器工作電壓內(nèi)。經(jīng)過實(shí)驗(yàn)驗(yàn)證,能夠滿足系統(tǒng)的要求。系統(tǒng)運(yùn)行穩(wěn)定,電池更換方便。綜上所述采用方案22.3 顯示模塊方案1: 用LCD1602液晶進(jìn)行顯示。LCD1602液晶由于顯示速度快,使用簡(jiǎn)單,顯示效果簡(jiǎn)潔明了而得到了廣泛應(yīng)用。但是由于要顯示溫度。及設(shè)置菜單,用LCD1602液晶無法顯示如此豐富的內(nèi)容,因此我們放棄了此方案。方案 2: 用LCD液晶進(jìn)行顯示。LCD由于其顯示清晰,顯示內(nèi)容豐富、清晰,顯示信息量大,使用方便,顯示快速而得到了廣泛的應(yīng)用。對(duì)于此系統(tǒng)我們選用1602液晶能夠很好的滿足顯示要求,因此我們選擇了此方案。

6、2.4 溫度傳感器方案 1:用鉑電阻測(cè)溫的非線性校正方法,采用橋式電路將熱敏電阻的感溫效應(yīng),在將隨被測(cè)溫度變化的電壓或電流采集過來,再加上放大器將信號(hào)放大,并經(jīng)AD轉(zhuǎn)換器,在通過顯示電路,就可以將被測(cè)溫度顯示出來。圖1鉑電阻橋式測(cè)溫電路方案 2:考慮使用數(shù)字溫度傳感器,結(jié)合單片機(jī)電路設(shè)計(jì),采用一只DS18B20溫度傳感器,直接讀取被測(cè)溫度值,之后進(jìn)行轉(zhuǎn)換,依次完成設(shè)計(jì)要求。圖2 DS18B20測(cè)溫系統(tǒng)框圖方案比較 方案一采用模擬溫度傳感器,數(shù)據(jù)處理麻煩,且容易產(chǎn)生信號(hào)失真. DS18B20可以直接溫度轉(zhuǎn)換為串行數(shù)字信號(hào),供單片機(jī)進(jìn)行處理,具有低功耗、高性能、抗干擾能力強(qiáng)等優(yōu)點(diǎn)。比較以上兩種方案

7、,很容易看出,采用方案二,電路比較簡(jiǎn)單,軟件設(shè)計(jì)容易實(shí)現(xiàn),故實(shí)際設(shè)計(jì)中擬采用方案二。在本系統(tǒng)的電路設(shè)計(jì)方框圖如圖2-3所示。STC89C52CPUDS18B20溫度芯片1602顯示報(bào)警電路電源圖3 溫度計(jì)電路總體設(shè)計(jì)方案 DS18B20是Dallas公司生產(chǎn)的一線式數(shù)字溫度傳感器,它具有微型化、低功耗、高性能抗干擾能力、強(qiáng)易配處理器等優(yōu)點(diǎn),特別適合用于構(gòu)成多點(diǎn)溫度測(cè)控系統(tǒng),可直接將溫度轉(zhuǎn)化成串行數(shù)字信號(hào)(按9位二進(jìn)制數(shù)字)給單片機(jī)處理,且在同一總線上可以掛接多個(gè)傳感器芯片,它具有三引腳TO-92小體積封裝形式,溫度測(cè)量范圍55125,可編程為912位A/D轉(zhuǎn)換精度,測(cè)溫分辨率可達(dá)0.0625,

8、被測(cè)溫度用符號(hào)擴(kuò)展的16位數(shù)字量方式串行輸出,其工作電源既可在遠(yuǎn)端引入,業(yè)可采用寄生電源方式產(chǎn)生,多個(gè)DS18B20可以并聯(lián)到三根或者兩根線上,CPU只需一根端口線就能與多個(gè)DS18B20通信,占用微處理器的端口較少,可節(jié)省大量的引線和邏輯電路。從而可以看出DS18B20可以非常方便的被用于遠(yuǎn)距離多點(diǎn)溫度檢測(cè)系統(tǒng)。圖4 溫度芯片DS18B203 硬件實(shí)現(xiàn)及單元電路設(shè)計(jì)3.1 主控制模塊主控制最小系統(tǒng)電路如圖5所示。 圖 5 3.2 電源模塊 采用3節(jié)1.5 V 五號(hào)干電池串聯(lián)共4.5V給系統(tǒng)供電。實(shí)物圖如圖6。圖 63.4 顯示模塊 顯示模塊采用1602液晶顯示接口電路如圖7圖 73.5 單片

9、機(jī)最小運(yùn)行系統(tǒng)(1)晶振晶振為單片機(jī)提供時(shí)鐘信號(hào)。單片機(jī)XIAL1和XIAL2分別接30PF的電容,中間再并個(gè)12MHZ的晶振,形成單片機(jī)的晶振電路。圖8 晶振電路(2)復(fù)位電路單片機(jī)在啟動(dòng)時(shí)都需要復(fù)位,以使CPU及系統(tǒng)各部件處于確定的初始狀態(tài),并從初態(tài)開始工作。89系列單片機(jī)的復(fù)位信號(hào)是從RST引腳輸入到芯片內(nèi)的施密特觸發(fā)器中的。當(dāng)系統(tǒng)處于正常工作狀態(tài)時(shí),且振蕩器穩(wěn)定后,如果RST引腳上有一個(gè)高電平并維持2個(gè)機(jī)器周期(24個(gè)振蕩周期)以上,則CPU就可以響應(yīng)并將系統(tǒng)復(fù)位。單片機(jī)系統(tǒng)的復(fù)位方式有:手動(dòng)按鈕復(fù)位和上電復(fù)位。 圖9 復(fù)位電路 ALE引腳懸空,復(fù)位引腳接到復(fù)位電路、VCC接電源、VS

10、S接地、EA接電源3.6 溫度傳感器(DS18B20)電路(1) DS18B20基本介紹DS18B20是美國(guó)DALLAS半導(dǎo)體公司推出的第一片支持“一線總線”接口的溫度傳感器,它具有微型化、低功耗、高性能、抗干擾能力強(qiáng)、易配微處理器等優(yōu)點(diǎn),可直接將溫度轉(zhuǎn)化成串行數(shù)字信號(hào)處理器處理。DS18B20進(jìn)行精確的溫度轉(zhuǎn)換,I/O線必須保證在溫度轉(zhuǎn)換期間提供足夠的能量,由于每個(gè)DS18B20在溫度轉(zhuǎn)換期間工作電流達(dá)到1mA,當(dāng)幾個(gè)溫度傳感器掛在同一根I/O線上進(jìn)行多點(diǎn)測(cè)溫時(shí),只靠4.7K上拉電阻就無法提供足夠的能量,會(huì)造成無法轉(zhuǎn)換溫度或溫度誤差極大。因此,下圖電路只適應(yīng)于單一溫度傳感器測(cè)溫情況下使用,不

11、適宜采用電池供電系統(tǒng)中。并且工作電源VCC必須保證在5V,當(dāng)電源電壓下降時(shí),寄生電源能夠汲取的能量也降低,會(huì)使溫度誤差變大。圖10 溫度傳感器電路引腳圖(2) DS18B20控制方法 DS18B20有六條控制命令:溫度轉(zhuǎn)換 44H 啟動(dòng)DS18B20進(jìn)行溫度轉(zhuǎn)換 讀暫存器 BEH 讀暫存器9個(gè)字節(jié)內(nèi)容 寫暫存器 4EH 將數(shù)據(jù)寫入暫存器的TH、TL字節(jié) 復(fù)制暫存器 48H 把暫存器的TH、TL字節(jié)寫到E2RAM中 重新調(diào)E2RAM B8H 把E2RAM中的TH、TL字節(jié)寫到暫存器TH、TL字節(jié) 讀電源供電方式 B4H 啟動(dòng)DS18B20發(fā)送電源供電方式的信號(hào)給主CPU (3) DS18B20供

12、電方式DS18B20可以采用兩種方式供電,一種是采用電源供電方式,此時(shí)DS18B20的1腳接地,2腳作為信號(hào)線,3腳接電源。另一種是寄生電源供電方式,如圖3.1所示單片機(jī)端口接單線總線,為保證在有效的DS18B20時(shí)鐘周期內(nèi)提供足夠的電流,可用一個(gè)三極管來完成對(duì)總線的上拉。本設(shè)計(jì)采用電源供電方式, P2.3口接單線總線為保證在有效的DS18B20時(shí)鐘周期內(nèi)提供足夠的電流,可用一個(gè)上拉電阻和STC89C52的P2.3來完成對(duì)總線的上拉。當(dāng)DS18B20處于寫存儲(chǔ)器操作和溫度A/D變換操作時(shí),總線上必須有強(qiáng)的上拉,上拉開啟時(shí)間最大為10 s。采用寄生電源供電方式是VDD和GND端均接地。由于單線制

13、只有一根線,因此發(fā)送接收口必須是三狀態(tài)的。主機(jī)控制DS18B20完成溫度轉(zhuǎn)換必須經(jīng)過3個(gè)步驟:l 初始化。l ROM操作指令。l 存儲(chǔ)器操作指令。3.7 蜂鳴器、發(fā)光二極管報(bào)警電路 電路主要是用來設(shè)定溫度報(bào)警溫度的、有高溫和低溫報(bào)警。圖11蜂鳴器、發(fā)光二極管驅(qū)動(dòng)引腳圖4.系統(tǒng)軟件設(shè)計(jì)4.1 程序結(jié)構(gòu)分析主程序調(diào)用了3個(gè)子程序,分別是LCD1602液晶顯示程序、溫度信號(hào)處理程序、按鍵設(shè)定報(bào)警溫度程序。溫度信號(hào)處理程序:對(duì)溫度芯片送過來的數(shù)據(jù)進(jìn)行處理,進(jìn)行判斷和顯示。LCD1602液晶顯示程序:向LCD1602液晶的顯示送數(shù),控制系統(tǒng)的顯示部分。按鍵設(shè)定程序:可以設(shè)定低溫和高溫報(bào)警可精確到0.1度

14、。4.2 系統(tǒng)程序流圖主程序的主要功能是負(fù)責(zé)溫度的實(shí)時(shí)顯示、讀出并處理DS18B20的測(cè)量的當(dāng)前溫度值,溫度測(cè)量每1s進(jìn)行一次。這樣可以在一秒之內(nèi)測(cè)量一次被測(cè)溫度,主程序的主要功能是負(fù)責(zé)溫度的實(shí)時(shí)顯示,讀出并處理DS18B20的當(dāng)前溫度值,與設(shè)定的報(bào)警溫度比較,其程序流程見圖11所示。通過調(diào)用讀溫度子程序把存入內(nèi)存儲(chǔ)中的整數(shù)部分與小數(shù)部分開分存放在不的的兩個(gè)單元中,然后通過調(diào)用顯示子程序顯示出來。調(diào)用顯示子程序初始化1s到?初次上電發(fā)溫度轉(zhuǎn)換開始命令讀出溫度值溫度計(jì)算處理顯示數(shù)據(jù)刷新圖11 DS18B20溫度流程圖4.3 DS18B20初始化程序流程圖在DS18B20工作之前需要進(jìn)行初始化,流

15、程圖如下:發(fā)復(fù)位命令發(fā)跳過ROM命令 初始化成功 結(jié)束圖11 初始化程序流程圖4.4 讀溫度子程序流程圖讀溫度子程序的主要功能是從DS18B20中讀出溫度數(shù)據(jù),移入溫度暫存器保存。其程序流程圖如下:發(fā)復(fù)位命令發(fā)跳過ROM命令 發(fā)讀取溫度命令 移入溫度暫存器 結(jié)束 圖12 溫度子程序流程圖 5 結(jié)束語(yǔ) 實(shí)現(xiàn)的功能:可設(shè)置溫度上限高溫報(bào)警和下限低溫報(bào)警,報(bào)警溫度可精確到0.1度,并具有掉電保存功能,數(shù)據(jù)保存在單片機(jī)內(nèi)部EEPOM中,進(jìn)入設(shè)置界面后如果沒有鍵按下系統(tǒng)會(huì)在15秒后自動(dòng)退出設(shè)置界面,人性化的按鍵設(shè)置,按鍵還具有連加、減功能。LCD1602液晶顯示的好處能夠同時(shí)直觀的看到實(shí)際溫度和上、下限

16、報(bào)警溫度,。 通過本次設(shè)計(jì)我掌握了很多以前不熟練的東西,認(rèn)識(shí)了很多以前不熟悉得東西,使我在人生上又進(jìn)了一步。也認(rèn)識(shí)到很多的不足。論文有很多不足之處,但這里的可以回憶起曾經(jīng)的勞動(dòng),換回來今天的作品。然而當(dāng)看著自己的作品,系統(tǒng)能夠無誤的運(yùn)行,真是莫大的欣慰。真是酸甜苦辣后的得到成果都是甘甜的。 這次畢業(yè)設(shè)計(jì)的經(jīng)歷使我終身難忘,希望我的設(shè)計(jì)能夠帶給師弟師妹們學(xué)習(xí)這個(gè)課程的一個(gè)好輔助工具,那么我的辛苦沒有白費(fèi),經(jīng)歷了這個(gè)設(shè)計(jì)后我學(xué)習(xí)了很多東西,而中途遇到的困難能夠迎刃而解,為我以后遇到困難不畏懼,也為會(huì)激勵(lì)我繼續(xù)進(jìn)步。參考文獻(xiàn)1郭惠,吳迅.單片機(jī)C語(yǔ)言程序設(shè)計(jì)完全自學(xué)手冊(cè)M.電子工業(yè)出版社,2008.

17、10:1-200.2王東鋒,王會(huì)良,董冠強(qiáng). 單片機(jī)C語(yǔ)言應(yīng)用100例M. 電子工業(yè)出版社,2009.3:145-300.3Yamato I , et al 1 New conversion system for UPS using high fre2quency linkJ 1 IEEE PESC ,1988 :210-320.4Yamato I , et al 1 High frequency link DC/ AC converter for UPSwith a new voltage clamperJ 1IEEE PESC ,1990 :52-105.部分程序:#include <

18、;reg52.h>#include "lcd1602.h"#include "eepom52.h"#define uchar unsigned char #define uint unsigned intsbit dq = P23;/18b20 IO口的定義sbit beep = P24; /蜂鳴器IO口定義uchar a_a;uint temperature ; /bit flag_300ms ;uchar key_can; /按鍵值的變量uchar menu_1; /菜單設(shè)計(jì)的變量uint t_high = 300,t_low = 100;bi

19、t flag_lj_en; /按鍵連加使能bit flag_lj_3_en; /按鍵連3次連加后使能 加的數(shù)就越大了 uchar key_time,flag_value; /用做連加的中間變量bit key_500ms ;uchar flag_clock;/溫度報(bào)警變量uchar zd_break_en,zd_break_value; /自動(dòng)退出設(shè)置界面uchar menu_shudu = 20; /用來控制連加的速度/*1ms延時(shí)函數(shù)*/void delay_1ms(uint q)uint i,j;for(i=0;i<q;i+)for(j=0;j<110;j+);/*把數(shù)據(jù)保存到

20、單片機(jī)內(nèi)部eepom中*/void write_eepom()SectorErase(0x2000);byte_write(0x2000, t_high % 256);byte_write(0x2001, t_high / 256);byte_write(0x2002, t_low % 256);byte_write(0x2003, t_low / 256);byte_write(0x2055, a_a);/*把數(shù)據(jù)從單片機(jī)內(nèi)部eepom中讀出來*/void read_eepom()t_high = byte_read(0x2001);t_high <<= 8;t_high |=

21、byte_read(0x2000);t_low = byte_read(0x2003);t_low <<= 8;t_low |= byte_read(0x2002);a_a = byte_read(0x2055);/*18b20初始化函數(shù)*/void init_18b20()bit q;dq = 1;/把總線拿高delay_uint(1); /15usdq = 0;/給復(fù)位脈沖delay_uint(80);/750usdq = 1;/把總線拿高 等待delay_uint(10);/110usq = dq;/讀取18b20初始化信號(hào)delay_uint(20);/200usdq =

22、1;/把總線拿高 釋放總線/*寫18b20內(nèi)的數(shù)據(jù)*/void write_18b20(uchar dat)uchar i;for(i=0;i<8;i+) /寫數(shù)據(jù)是低位開始dq = 0; /把總線拿低寫時(shí)間隙開始 dq = dat & 0x01; /向18b20總線寫數(shù)據(jù)了delay_uint(5); / 60usdq = 1; /釋放總線dat >>= 1;/*讀取18b20內(nèi)的數(shù)據(jù)*/uchar read_18b20()uchar i,value;for(i=0;i<8;i+)dq = 0; /把總線拿低讀時(shí)間隙開始 value >>= 1;

23、/讀數(shù)據(jù)是低位開始dq = 1; /釋放總線if(dq = 1) /開始讀寫數(shù)據(jù) value |= 0x80;delay_uint(5); /60us讀一個(gè)時(shí)間隙最少要保持60us的時(shí)間return value; /返回?cái)?shù)據(jù)/*讀取溫度的值 讀出來的是小數(shù)*/uint read_temp()uint value;uchar low; /在讀取溫度的時(shí)候如果中斷的太頻繁了,就應(yīng)該把中斷給關(guān)了,否則會(huì)影響到18b20的時(shí)序init_18b20(); /初始化18b20write_18b20(0xcc); /跳過64位ROMwrite_18b20(0x44); /啟動(dòng)一次溫度轉(zhuǎn)換命令delay_ui

24、nt(50); /500usinit_18b20(); /初始化18b20EA = 0;write_18b20(0xcc); /跳過64位ROMwrite_18b20(0xbe); /發(fā)出讀取暫存器命令EA = 1;low = read_18b20(); /讀溫度低字節(jié)value = read_18b20(); /讀溫度高字節(jié)value <<= 8; /把溫度的高位左移8位value |= low; /把讀出的溫度低位放到value的低八位中value *= 0.625; /轉(zhuǎn)換到溫度值 小數(shù)return value; /返回讀出的溫度 帶小數(shù)/*定時(shí)器0初始化程序*/void t

25、ime_init() EA = 1; /開總中斷TMOD = 0X01; /定時(shí)器0、定時(shí)器1工作方式1ET0 = 1; /開定時(shí)器0中斷 TR0 = 1; /允許定時(shí)器0定時(shí)/*獨(dú)立按鍵處理函數(shù)*/void key()static uchar key_new = 0,key_old = 0,key_value = 0;if(key_new = 0) /按鍵松開的時(shí)候做松手檢測(cè)if(P2 & 0x0f) = 0x0f)key_value +;else key_value = 0;if(key_value >= 10)write_eepom();key_value = 0;key_

26、new = 1;flag_lj_en = 0;/關(guān)閉連加使能flag_lj_3_en = 0;/關(guān)閉3秒后使能flag_value = 0;/清零else if(P2 & 0x0f) != 0x0f)key_value +; /按鍵按下的時(shí)候else key_value = 0;if(key_value >= 7)key_value = 0;key_new = 0;flag_lj_en = 1; /連加使能zd_break_en = 1; /自動(dòng)退出設(shè)置界使能zd_break_value = 0; /自動(dòng)退出設(shè)置界變量清零key_time = 0;key_can = 20;if(

27、key_500ms = 1)key_500ms = 0;key_new = 0;key_old = 1;if(key_new = 0) && (key_old = 1)switch(P2 & 0x0f)case 0x0e: key_can = 4; break; /得到k1鍵值case 0x0d: key_can = 3; break; /得到k2鍵值case 0x0b: key_can = 2; break; /得到k3鍵值case 0x07: key_can = 1; break; /得到k4鍵值 key_old = key_new; /*按鍵處理LCD1602液晶

28、顯示函數(shù)*/void key_with()if(key_can = 4)menu_1 +;if(menu_1 >= 3)menu_1 = 0;if(menu_1 = 0)write_com(0x0c); /關(guān)閉光標(biāo)if(menu_1 = 1)write_sfm3_18B20(2,2,t_high);write_com(0x80+0x40+2); /將光標(biāo)移動(dòng)到秒個(gè)位write_com(0x0f); /顯示光標(biāo)并且閃爍if(menu_1 = 2) write_sfm3_18B20(2,10,t_low);write_com(0x80+0x40+10); /將光標(biāo)移動(dòng)到秒個(gè)位write_co

29、m(0x0f); /顯示光標(biāo)并且閃爍menu_shudu = 20;if(menu_1 = 1)/設(shè)置高溫報(bào)警if(key_can = 3)if(flag_lj_3_en = 0)t_high + ;/按鍵按下未松開自動(dòng)加三次else t_high += 10;/按鍵按下未松開自動(dòng)加三次之后每次自動(dòng)加10if(t_high > 990)t_high = 990;write_sfm3_18B20(2,2,t_high);write_com(0x80+0x40+2); /將光標(biāo)移動(dòng)到秒個(gè)位write_com(0x0f); /顯示光標(biāo)并且閃爍if(key_can = 2)if(flag_lj_

30、3_en = 0)t_high - ;/按鍵按下未松開自動(dòng)加三次else t_high -= 10;/按鍵按下未松開自動(dòng)減三次之后每次自動(dòng)減10if(t_high <= t_low)t_high = t_low + 1;write_sfm3_18B20(2,2,t_high);write_com(0x80+0x40+2); /將光標(biāo)移動(dòng)到秒個(gè)位write_com(0x0f); /顯示光標(biāo)并且閃爍write_eepom();if(menu_1 = 2)/設(shè)置低溫報(bào)警if(key_can = 3)if(flag_lj_3_en = 0)t_low + ;else t_low += 10;if

31、(t_low >= t_high)t_low = t_high - 1; write_sfm3_18B20(2,10,t_low);write_com(0x80+0x40+10); /將光標(biāo)移動(dòng)到秒個(gè)位write_com(0x0f); /顯示光標(biāo)并且閃爍if(key_can = 2)if(flag_lj_3_en = 0)t_low - ;else t_low -= 10;if(t_low <= 10)t_low = 10; write_sfm3_18B20(2,10,t_low);write_com(0x80+0x40+10); /將光標(biāo)移動(dòng)到秒個(gè)位write_com(0x0f)

32、; /顯示光標(biāo)并且閃爍write_eepom(); /*菜單對(duì)應(yīng)的處理函數(shù)*/void menu_dispaly()if(menu_1 = 1) /對(duì)光標(biāo)不處理,要不然光標(biāo)不會(huì)顯示在正確的位置write_com(0x80+0x42); /將光標(biāo)移動(dòng)到write_com(0x0f); /顯示光標(biāo)并且閃爍else if(menu_1 = 2)write_com(0x80+0x4a); /將光標(biāo)移動(dòng)到write_com(0x0f); /顯示光標(biāo)并且閃爍 /*報(bào)警函數(shù)*/void clock_h_l()if(temperature <= t_low) | (temperature >= t_high)flag_clock = 1;elseflag_clock = 0;beep = 1;void main()init_1602();init_

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論