摘 要:本文介紹了基于單片機(jī)AT89C51 的溫度控制系統(tǒng)的設(shè)計(jì)方案與軟硬件實(shí)現(xiàn)。采用溫度傳感器DS18B20 采集溫度數(shù)據(jù),液晶顯示屏LCM1602 顯示溫度數(shù)據(jù),AT24C02B 存儲(chǔ)溫度上下限設(shè)定值,按鍵設(shè)置溫度上下限并可改變加熱器與致冷器的溫控狀態(tài),當(dāng)溫度低于設(shè)定的下限時(shí),單片機(jī)啟動(dòng)加熱器加熱,同時(shí)點(diǎn)亮綠色發(fā)光二極管,當(dāng)溫度高于設(shè)定的上限時(shí),單片機(jī)啟動(dòng)致冷器降溫,同時(shí)點(diǎn)亮紅色發(fā)光二極管。給出了系統(tǒng)總體框架、程序流程圖和Proteus 仿真結(jié)果,并在硬件平臺(tái)上實(shí)現(xiàn)了所設(shè)計(jì)的功能。 關(guān)鍵詞:單片機(jī);溫度控制系統(tǒng);溫度傳感器;液晶顯示器
1 引 言 隨著社會(huì)的發(fā)展,溫度的測量及控制變得越來越重要。本文采用單片機(jī)AT89C51 設(shè)計(jì)了溫度實(shí)時(shí)測量及控制系統(tǒng)。單片機(jī)AT89C51 能夠根據(jù)溫度傳感器DS18B20 所采集的溫度數(shù)據(jù)來控制加熱器或致冷器的啟停,從而把溫度控制在設(shè)定的范圍之內(nèi)。在溫控開關(guān)被激活的情況下,當(dāng)溫度低于設(shè)定的下限時(shí),單片機(jī)啟動(dòng)加熱器加熱,同時(shí)點(diǎn)亮綠色發(fā)光二極管,當(dāng)溫度高于設(shè)定的上限時(shí),單片機(jī)啟動(dòng)致冷器降溫,同時(shí)點(diǎn)亮紅色發(fā)光二極管。所有溫度數(shù)據(jù)均通過液晶顯示器LCM1602 顯示出來。為了防止單片機(jī)掉電引起的數(shù)據(jù)丟失,溫度上下限的設(shè)定值存儲(chǔ)在AT24C02B 中。 2 系統(tǒng)總體設(shè)計(jì) 系統(tǒng)主要包括單片機(jī)控制模塊,溫度采集模塊,溫度顯示模塊,溫度上下限調(diào)整模塊,電機(jī)驅(qū)動(dòng)模塊和外部存儲(chǔ)模塊等六大部分。系統(tǒng)總體框架如圖1 所示。
2.1 單片機(jī)控制模塊 控制模塊是整個(gè)設(shè)計(jì)方案的核心,它控制了溫度的采集、處理與顯示、溫度上下限值的設(shè)定與溫度越限時(shí)電機(jī)的啟動(dòng)。 本文選用AT89C51 作為控制器件。它是美國ATMEL 公司生產(chǎn)的8 位Flash ROM 單片機(jī)。其最突出的優(yōu)點(diǎn)是片內(nèi)ROM 為Flash ROM,可方便地擦寫1000 次以上,價(jià)格低廉,而且其指令豐富,編譯工具多,仿真環(huán)境好。因此被廣泛地應(yīng)用于各種控制領(lǐng)域。 本控制系統(tǒng)中AT89C51 與外圍設(shè)備的連接關(guān)系如圖2 所示:
由圖2 可知,溫度數(shù)據(jù)采集模塊中溫度傳感器DS18B20 的DQ 端接P1.7;顯示模塊LCM1602的DB0~DB7 數(shù)據(jù)端口接P0.0~P0.7,數(shù)據(jù)命令選擇端RS 接P2.0,讀寫選擇端接P2.1,使能信號接P2.2;溫度上下限調(diào)整模塊包括模式切換、增加溫度上下限值、減少溫度上下限值、溫控開關(guān)等四個(gè)功能,它們分別接P1.0~P1.3;外部存儲(chǔ)模塊為AT24C02B,其SCK、SDA 分別接P2.3 與P2.4;電機(jī)控制電路與P3.6 和P3.7 相連;XTAL1、XTAL2 接振蕩電路,RST 接復(fù)位電路,EA 接高電平,LCM1602 上的VO、RST 接電源+5V,GND 接地。 2.2 溫度數(shù)據(jù)采集模塊 溫度由DALLAS 公司生產(chǎn)的一線式數(shù)字溫度傳感器DS18B20 采集。DS18B20 測溫范圍為-55°C~+125°C,測溫分辨率可達(dá)0.0625°C,被測溫度用符號擴(kuò)展的16 位補(bǔ)碼形式串行輸出。CPU 只需一根端口線就能與諸多DS18B20 通信,占用微處理器的端口較少,可節(jié)省大量的引線和邏輯電路。 DS18B20 內(nèi)部有一個(gè)9 字節(jié)的高速存儲(chǔ)器用于存儲(chǔ)溫度值。其中前兩個(gè)字節(jié)是測得的溫度數(shù)據(jù),第1 字節(jié)的內(nèi)容是溫度的低八位,第2 字節(jié)是溫度的高八位,第3 和第4 字節(jié)是溫度上限 TH 與溫度下限 TL 的易失性拷貝,第5 字節(jié)是結(jié)構(gòu)寄存器的易失性拷貝,這三個(gè)字節(jié)的內(nèi)容在每一次上電復(fù)位時(shí)被刷新,第6、7、8 這三個(gè)字節(jié)用于內(nèi)部計(jì)算,第9個(gè)字節(jié)是冗余檢驗(yàn)字節(jié),可用來保證通信的正確性。當(dāng)溫度轉(zhuǎn)換命令發(fā)出后,經(jīng)轉(zhuǎn)換所得的溫度值以二字節(jié)補(bǔ)碼形式存放在此存儲(chǔ)器的第1 和第2 個(gè)字節(jié)。單片機(jī)可通過單線接口讀到該數(shù)據(jù),讀取時(shí)低位在前,高位在后,其中高5 位是符號位,中間7 位是整數(shù)位,最低4 位是小數(shù)位。
DS18B20 最大的特點(diǎn)是單總線數(shù)據(jù)傳輸方式,因此對讀寫的數(shù)據(jù)位有著嚴(yán)格的時(shí)序要求。時(shí)序包括:初始化時(shí)序、讀時(shí)序、寫時(shí)序。每一次命令和數(shù)據(jù)的傳輸都是從單片機(jī)啟動(dòng)寫時(shí)序開始,如果要求DS18B20 回送數(shù)據(jù),在進(jìn)行寫命令后,單片機(jī)需啟動(dòng)讀時(shí)序完成數(shù)據(jù)接收。數(shù)據(jù)和命令的傳輸都是低位在先。DS18B20 的時(shí)序及命令請參考文獻(xiàn)[1]。 2.3 LCM1602 LCM1602 是2 行×16 個(gè)字符的字符型LCD 顯示器,它由32 個(gè)字符點(diǎn)陣塊組成,每個(gè)字符點(diǎn)陣塊由5×7 或5×10 個(gè)點(diǎn)陣組成,可以顯示ASCII 碼表中的所有可視的字符。它內(nèi)置了字符產(chǎn)生器ROM (Character Generator ROM,CGROM)、 字符產(chǎn)生器RAM (CharacterGenerator RAM, CGRAM)和顯示數(shù)據(jù)RAM(Data Display RAM, DDRAM)。CGROM 中內(nèi)置了192個(gè)常用字符的字模,CGRAM 包含8 個(gè)字節(jié)的RAM,可存放用戶自定義的字符,DDRAM 就是用來寄存待顯示的字符代碼。DDRAM 地址與顯示位置的對應(yīng)關(guān)系以及LCM1602 的指令與讀寫時(shí)序可參考文獻(xiàn)[2]。 2.4 外部存儲(chǔ)模塊 外部存儲(chǔ)模塊采用美國ATMEL 公司生產(chǎn)的低功耗CMOS 型E2PROM 器件AT24C02B,它內(nèi)含256×8 位存儲(chǔ)空間,具有工作電壓寬(2.5~5.5 V)、擦寫次數(shù)多(大于10000 次)、寫入速度快(小于10ms)、抗干擾能力強(qiáng)、數(shù)據(jù)不易丟失、體積小等特點(diǎn)。它采用了I2C 總線規(guī)程,使主/從機(jī)雙向通信。主機(jī)通過SCL 引腳產(chǎn)生串行時(shí)鐘信號并發(fā)出控制字,控制總線數(shù)據(jù)傳送的開始、方向和停止。無論是主機(jī)還是從機(jī),接收到一個(gè)字節(jié)后必須發(fā)出一個(gè)確認(rèn)信號。AT24C02B 占用很少的資源和I/O 線,并且支持在線編程,數(shù)據(jù)實(shí)時(shí)存取十分方便。AT24C02B 的讀寫時(shí)序及控制字見參考文獻(xiàn)[3]。 2.5 溫度上下限設(shè)置模塊 溫度上下限設(shè)置模塊包括四個(gè)按鍵: (1)模式切換鍵:進(jìn)行模式之間的切換,模式包括設(shè)置溫度上限模式、設(shè)置溫度下限模式,每次按下該鍵就在這兩種模式之間切換。 (2)溫度上下限增加鍵:增加溫度上下限的值。 (3)溫度上下限減少鍵:減少溫度上下限的值。 (4)溫控開關(guān)鍵:是溫控與非溫控之間的切換鍵。它用于設(shè)置是否進(jìn)行溫度控制即是否讓越界的溫度值觸發(fā)加熱器或致冷器的啟動(dòng)。 2.6 控制電路模塊 該部分電路有光耦合元件4N25、繼電器、三極管,若干電阻等構(gòu)成。這部分電路的主要作用是光電隔離,即消除后級電機(jī)對前級單片機(jī)的影響。三極管使用的是9013,9013是NPN 型的,把其集電極接+5V 電壓,射極接繼電器。當(dāng)單片機(jī)引腳給出低電位時(shí),4N25內(nèi)部的發(fā)光二極管亮,使其內(nèi)部的三極管導(dǎo)通,繼而通過第4 引腳上的10K 電阻分得電壓。當(dāng)4N25 給其基極提供足夠的電壓時(shí)9013 導(dǎo)通。繼電器的常開開關(guān)閉合,電機(jī)上電工作。 3 系統(tǒng)軟件設(shè)計(jì) 主程序調(diào)用了5 個(gè)子程序,分別是LCD 顯示程序、按鍵掃描及處理程序、溫度采集程序、溫度越界判決程序、AT24C02B 讀寫程序。LCD 顯示程序,用于溫度等數(shù)據(jù)的實(shí)時(shí)顯示;按鍵掃描及處理程序,實(shí)現(xiàn)按鍵識(shí)別、按鍵輸入及相關(guān)處理;溫度采集程序負(fù)責(zé)把DS18B20所采集的現(xiàn)場溫度讀入到指定的數(shù)組中;溫度越界判決程序,對現(xiàn)場溫度與設(shè)定的溫度上下限進(jìn)行比較,若溫度越界,并且當(dāng)溫控開關(guān)處于開啟狀態(tài)時(shí),啟動(dòng)加熱器或致冷器工作;
AT24C02B 讀寫程序,存儲(chǔ)和調(diào)用設(shè)定的溫度上下限值。圖3 為系統(tǒng)主程序與按鍵掃描程序的流程圖。有關(guān)溫度采集的程序及流程圖可參考文獻(xiàn)[4]。
4 PROTEUS 仿真 按照圖2 所示電路原理圖,在Proteus 里面建立元器件連接關(guān)系。根據(jù)設(shè)計(jì)功能要求在Keil μVision3 環(huán)境下編寫C 語言程序,并編譯連接生成十六進(jìn)制的hex 文件,把此文件加載到單片機(jī),就可以進(jìn)行Proteus 仿真了。圖4 是當(dāng)溫度低于所設(shè)定的下限值并且溫控開關(guān)處于激活狀態(tài)時(shí),綠色二極管亮,同時(shí)加熱器啟動(dòng)的仿真結(jié)果。
5 結(jié)束語 本文詳細(xì)講述了系統(tǒng)設(shè)計(jì)方案,并給出了相關(guān)程序流程。本設(shè)計(jì)應(yīng)用性比較強(qiáng),可以應(yīng)用在倉庫溫度、大棚溫度、機(jī)房溫度等的監(jiān)控。另外,如果把本設(shè)計(jì)方案擴(kuò)展為多點(diǎn)溫度控制,加上上位機(jī),則可以實(shí)現(xiàn)遠(yuǎn)程溫度監(jiān)控系統(tǒng),將具有更大的應(yīng)用價(jià)值。 本文的創(chuàng)新點(diǎn)在于詳細(xì)設(shè)計(jì)了基于單片機(jī)AT89C51 的溫度監(jiān)控系統(tǒng),進(jìn)行了Proteus仿真,所設(shè)計(jì)程序已經(jīng)在硬件平臺(tái)上成功運(yùn)行.此系統(tǒng)可廣泛用于溫度在DS18B20 測溫范圍之內(nèi)的場合,有良好的應(yīng)用前景。 本項(xiàng)目來源于焦煤集團(tuán)礦區(qū)溫度監(jiān)控工程,項(xiàng)目經(jīng)濟(jì)效益為20 萬元。 參考文獻(xiàn) [1] 周潤景,張麗娜.基于PROTEUS 的電路及單片機(jī)系統(tǒng)設(shè)計(jì)與仿真[M].北京:航空航天大學(xué)出版 ,2006.P321~P326 [2]王忠飛,胥芳.MCS-51 單片機(jī)原理及嵌入式系統(tǒng)應(yīng)用[M].西安:西安電子科技大學(xué)出版社,2007.P268-273 [3] Microchip 24C01B/02B 8 位PIC®單片機(jī)產(chǎn)品手冊[ED/OL],http://www.chuandong.com/publish/data/2007/2/data_14_27926.html. [4]趙娜,趙剛,于珍珠等.基于51 單片機(jī)的溫度測量系統(tǒng)[J]. 微計(jì)算機(jī)信息,2007,1-2:146-148。 作者簡介:趙鴻圖(1965.4-),男,漢族,河南理工大學(xué)計(jì)算機(jī)學(xué)院,講師,主要研究方向?yàn)榍度耸较到y(tǒng),計(jì)算機(jī)通信; |