王媛媛
摘 要:基于單片機(jī)AT89C52與DS18B20溫度傳感器,設(shè)計(jì)出可以實(shí)時(shí)通過液晶顯示器顯示溫度和時(shí)間,并且超過預(yù)定溫度時(shí)進(jìn)行報(bào)警的火災(zāi)報(bào)警裝置。該裝置大致分為液晶顯示、溫度檢測及報(bào)警、時(shí)間調(diào)用和按鍵更改時(shí)間等四個(gè)模塊,與傳統(tǒng)火災(zāi)報(bào)警器相比,該火災(zāi)裝置經(jīng)濟(jì)成本低、監(jiān)控范圍廣、監(jiān)控精度高、實(shí)時(shí)性強(qiáng)。
關(guān)鍵詞:單片機(jī) 溫度傳感器DS18B20 火災(zāi)報(bào)警
中圖分類號(hào):TU892 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1007-3973(2013)006-121-02
1 引言
隨著科技發(fā)展,生產(chǎn)安全已經(jīng)成為一個(gè)至關(guān)重要的問題。其中,火災(zāi)又是生產(chǎn)安全中最大的難題?;馂?zāi)發(fā)生時(shí),溫度的變化是非常明顯的,所以溫度檢測是該系統(tǒng)的主要部分??捎糜跍囟葯z測的元器件主要為熱電阻,通過檢測熱電阻的阻值變化、公式換算可得到對(duì)應(yīng)的溫度值,此過程需要進(jìn)行A/D轉(zhuǎn)換。由于A/D轉(zhuǎn)換存在精度和分辨率的問題,在檢測熱電阻阻值變化的誤差上通過A/D轉(zhuǎn)換后誤差有可能會(huì)進(jìn)一步增大。即使我們采用軟件進(jìn)行誤差修復(fù),但由于我們采用的微處理器為AT89C52,ROM只有8K,在存貯程序之后也沒有足夠的空間來存放誤差修復(fù)中產(chǎn)生的大量數(shù)據(jù)表格。鑒于以上問題,我們采用了帶封裝的可編程器件DS18B20系列。
DS18B20采用單線接口,僅用一條線就可實(shí)現(xiàn)微處理器與DS18B20的雙向通訊,測溫范圍為-55℃~+125℃,固有測溫分辨率為0.5℃,測量結(jié)果以9至12位數(shù)字量方式串行傳送,不再需要A/D轉(zhuǎn)換,不僅節(jié)約了I/O口,而且還簡化了電路。
我們已知的顯示器件有7段數(shù)碼管和液晶顯示屏。為了可視化顯示效果,我們選擇了1602LCM芯片的液晶顯示屏,能顯示16x2個(gè)字符。相對(duì)于其他液晶芯片,1602LCM芯片的成本低、編程相對(duì)容易,而且還支持8個(gè)用戶自定義字符,能夠滿足基本的輸出要求。
1602LCM芯片的液晶顯示屏在顯示溫度后還有多余的空間可用于顯示日期和時(shí)間,所以我們?cè)O(shè)置了實(shí)時(shí)時(shí)鐘電路DS1302來顯示日期和時(shí)間。時(shí)間的記錄可以通過內(nèi)部定時(shí)器來實(shí)現(xiàn),但是掉電之后數(shù)據(jù)丟失,每次重啟設(shè)備后都需要對(duì)時(shí)間進(jìn)行設(shè)置,及其不方便,所以我們選用了DS1302芯片,它的工作原理與定時(shí)器一樣,但是它可以外接備份電源,在系統(tǒng)掉電之后由備份電源供電,繼續(xù)計(jì)時(shí),達(dá)到實(shí)時(shí)時(shí)鐘的目的。另外,它可以對(duì)年、月、日、時(shí)、分、秒進(jìn)行計(jì)時(shí),且具有閏年補(bǔ)償?shù)裙δ?,即在第一次?duì)它進(jìn)行設(shè)定之后,以后只需要調(diào)用它內(nèi)部存貯的數(shù)據(jù)就可準(zhǔn)確地顯示時(shí)間了,既達(dá)到了實(shí)時(shí)時(shí)鐘的目的,又簡化了編程。
選用的單片機(jī)AT89C52也是同類技術(shù)中性價(jià)比比較高的產(chǎn)品,具有使用普遍、價(jià)格合理、程序?qū)崿F(xiàn)較簡單等特點(diǎn)。
2 單元電路設(shè)計(jì)與分析
2.1 溫度檢測模塊
由于DS18B20是單線操作,與串行接口一樣,需要一定的協(xié)議才能正常工作,協(xié)議如下:初始化→ROM操作→存儲(chǔ)器操作→執(zhí)行/數(shù)據(jù)。
(1)初始化。通過單線總線的所有執(zhí)行(處理)都是從一個(gè)初始化序列開始的。初始化序列包括一個(gè)由總線控制器發(fā)出的復(fù)位脈沖和跟隨其后由從機(jī)發(fā)出的存在脈沖。存在脈沖讓總線控制器知道DS1820在總線上且已準(zhǔn)備好操作。
(2)ROM操作。一旦總線控制器探測到一個(gè)存在脈沖,它就可以發(fā)出5個(gè)ROM命令中的任一個(gè)。由于我們的單線上只有一個(gè)DS18B20,所以只用到一條ROM指令:Skip ROM[CCh],這條命令允許總線控制器不用提供64位ROM編碼就使用存儲(chǔ)器操作命令,在單點(diǎn)總線情況下可以節(jié)省時(shí)間。如果總線上不止一個(gè)從機(jī),在Skip ROM命令之后跟著發(fā)一條讀命令,由于多個(gè)從機(jī)同時(shí)傳送信號(hào),總線上就會(huì)發(fā)生數(shù)據(jù)沖突(漏極開路下拉效果相當(dāng)于相與)。
(3)存儲(chǔ)器操作。在于DS18B20建立起聯(lián)系之后,就應(yīng)該對(duì)DS18B20進(jìn)行存儲(chǔ)器操作,告訴DS18B20接下來應(yīng)該做什么,共有6條指令(協(xié)議),而我們只用到了其中的兩條,分別為:Convert T[44h]啟動(dòng)一次溫度轉(zhuǎn)換;Read Scratchpad[BEh]讀取暫存器內(nèi)容,即讀取溫度轉(zhuǎn)換后的數(shù)值。
(4)執(zhí)行和數(shù)據(jù)顯示。得到溫度值后需要對(duì)數(shù)字量進(jìn)行轉(zhuǎn)換,而讀取的數(shù)字量的低四位為小數(shù)部分,對(duì)得到的數(shù)字量乘以0.0625就得到了溫度的模擬量。鑒于顯示輸出對(duì)小數(shù)操作不方便,則將值放大100倍得到一個(gè)整數(shù),在輸出顯示時(shí),先分別提取各權(quán)位上的數(shù)字,再加小數(shù)點(diǎn)來還原真實(shí)值。
(5)溫度傳感器DS18B20功能塊。DS18B20的核心功能就是可以直接轉(zhuǎn)換成數(shù)字量。
2.2 實(shí)時(shí)時(shí)鐘模塊
實(shí)時(shí)時(shí)鐘采用的DS1302芯片與溫度檢測DS18B20芯片為同一家公司制造,都是單總線數(shù)據(jù)傳輸,除了時(shí)序和協(xié)議上有所區(qū)分,其余操作大體相同,建立全局?jǐn)?shù)組變量來存儲(chǔ)讀取的時(shí)間值,再選擇性輸出。
2.3 按鍵更改時(shí)間模塊
檢測按鍵有兩種方式:(1)查詢;(2)中斷??紤]到主程序要顯示實(shí)時(shí)時(shí)鐘,即1秒內(nèi)至少完成一次循環(huán)操作,而溫度轉(zhuǎn)換又會(huì)占用大部分時(shí)間,為了不影響輸出顯示,同時(shí)減輕CUP負(fù)擔(dān),而采取中斷方式。
按鍵設(shè)置為4個(gè):
MENU鍵:切換調(diào)試模式和正常模式;
MOVE鍵:移動(dòng)光標(biāo)位置,選擇需要修改的數(shù)據(jù);
ADDD鍵:數(shù)據(jù)加1;
SUBB鍵:數(shù)據(jù)減1。
采用4輸入與非門(74LS20)接入單片機(jī)的外部中斷接口。
軟件設(shè)置,通過MENU鍵對(duì)全局變量menu(標(biāo)志變量)變值來進(jìn)入不同的狀態(tài),切換液晶顯示,同時(shí)當(dāng)系統(tǒng)由調(diào)試模式轉(zhuǎn)向正常模式時(shí),向DS1302寫入改變后的時(shí)間值,完成對(duì)DS1302的初始化;設(shè)置move變量來確定光標(biāo)做出的位置及ADDD鍵與SUBB鍵的操作對(duì)象,同時(shí)根據(jù)move的不同值來確定各變量大致的進(jìn)制數(shù),例如:年的進(jìn)制為0~99,月的進(jìn)制為1~12。
2.4 液晶顯示模塊
液晶顯示和7段數(shù)碼管的顯示方法幾乎一致,都是先送顯示地址,再送顯示數(shù)據(jù),不同的是,對(duì)7段數(shù)碼管,當(dāng)?shù)刂愤x擇信號(hào)移開后,該地址的數(shù)碼管不再點(diǎn)亮,屬于動(dòng)態(tài)掃描類型,而對(duì)1602液晶顯示器,1602LCM芯片內(nèi)有一塊DDRAM(顯示數(shù)據(jù)RAM),即液晶屏?xí)恢憋@示存放在DDRAM中數(shù)據(jù),所有,想要在液晶屏上顯示數(shù)據(jù),只需要將數(shù)據(jù)內(nèi)容送到DDRAM中相應(yīng)的地址內(nèi)存儲(chǔ)起來就可以了,改變DDRAM中的內(nèi)容就能改變顯示屏上的內(nèi)容。
1602共有11個(gè)信號(hào)控制引腳,其中8位數(shù)據(jù)接口,1個(gè)使能接口,2個(gè)控制接口,其余為電源、地和背光亮度控制(可選)。
對(duì)1602的操作分為寫命令和寫數(shù)據(jù),其中寫命令可以設(shè)置液晶的工作模式和指定DDRAM地址。
2.5 初始化部分
由于使用的外部器件少,需要初始化的也只有液晶的工作模式設(shè)定。但在調(diào)試過程中發(fā)現(xiàn),系統(tǒng)上電工作的時(shí)候溫度為85℃同時(shí)出現(xiàn)報(bào)警(報(bào)警溫度設(shè)定為57℃,此為火警報(bào)警溫度),上網(wǎng)查找資料后確定,DS18B20在復(fù)位后上電工作時(shí)輸出的溫度為85℃,固在初始化部分加入啟用溫度轉(zhuǎn)換,并延時(shí)一段時(shí)間,以此來錯(cuò)過復(fù)位上電的85℃,達(dá)到修正錯(cuò)誤的目的。
3 火災(zāi)報(bào)警系統(tǒng)硬件組成圖
基于溫度傳感器的火災(zāi)報(bào)警系統(tǒng)由單片機(jī)AT89C52、溫度傳感器DS18B20、液晶顯示器等構(gòu)成的。具體硬件結(jié)構(gòu)如圖1所示。
圖1 硬件結(jié)構(gòu)
4 結(jié)束語
該溫度傳感器的火災(zāi)報(bào)警裝置的設(shè)計(jì)摒棄了傳統(tǒng)測溫方式,采用溫度傳感器進(jìn)行實(shí)時(shí)監(jiān)控溫度的變化。傳統(tǒng)測溫方式中,我們需要把模擬信號(hào)進(jìn)行A/D轉(zhuǎn)換,既造成了誤差的擴(kuò)大,過程又比較繁瑣。為了減小測量誤差、提高精度,我們采用了DS18B20溫度傳感器。它不僅簡化了設(shè)計(jì)過程,而且提高了系統(tǒng)的報(bào)警精度和準(zhǔn)確度,為生命安全提供了更高地保障。
參考文獻(xiàn):
[1] 嚴(yán)志峰.火災(zāi)自動(dòng)報(bào)警系統(tǒng)設(shè)計(jì)中值得注意的幾個(gè)問題[J].低壓電器,2002(2):32-35.
[2] 宋彥雄.基于單片機(jī)的樓宇火災(zāi)智能報(bào)警系統(tǒng)設(shè)計(jì)[J].機(jī)電工程技術(shù),2011(1):45-48.