基于單片機的溫濕度測量系統(tǒng)設(shè)計正文_第1頁
基于單片機的溫濕度測量系統(tǒng)設(shè)計正文_第2頁
基于單片機的溫濕度測量系統(tǒng)設(shè)計正文_第3頁
基于單片機的溫濕度測量系統(tǒng)設(shè)計正文_第4頁
基于單片機的溫濕度測量系統(tǒng)設(shè)計正文_第5頁
已閱讀5頁,還剩37頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、1 引言現(xiàn)代的生產(chǎn)生活中,環(huán)境因素是主要影響因素之一,尤其是農(nóng)業(yè)生產(chǎn)離不開環(huán)境控制,其中的溫度、濕度是環(huán)境的兩項主要指標。目前我國農(nóng)業(yè)正處于從傳統(tǒng)農(nóng)業(yè)向以優(yōu)質(zhì)、高產(chǎn)、高效益為目標的現(xiàn)代農(nóng)業(yè)轉(zhuǎn)化的新階段1。因此,溫濕度測量控制技術(shù)作為農(nóng)業(yè)生產(chǎn)速生、優(yōu)質(zhì)、高產(chǎn)的手段,也是農(nóng)業(yè)現(xiàn)代化的重要標志2。溫濕度測量系統(tǒng)對于農(nóng)產(chǎn)品的生產(chǎn)和貯存環(huán)節(jié)都是十分重要的。在生產(chǎn)環(huán)節(jié)中,溫室大棚現(xiàn)已得到廣泛應(yīng)用,但我國溫室環(huán)境控制目前仍靠人工經(jīng)驗來管理,嚴重影響了農(nóng)業(yè)生產(chǎn)的效率,阻礙了農(nóng)業(yè)生產(chǎn)的開展,因此,采用先進的人工智能技術(shù),科學(xué)、合理、有效地控制影響作物的環(huán)境因子,通過微型計算機控制設(shè)備進行環(huán)境控制,以便給農(nóng)作物生

2、長提供一個最正確的環(huán)境,做到既提高產(chǎn)品的質(zhì)量、產(chǎn)量、經(jīng)濟價值和社會效益,同時盡量降低生產(chǎn)本錢,這對溫室環(huán)境施行自動檢測和控制是非常必要的。溫室檢測控制設(shè)施的關(guān)鍵技術(shù)是溫濕度控制3。在貯存環(huán)節(jié)中,糧庫糧食平安儲藏的主要參數(shù)是糧庫的溫度和濕度,但大局部糧庫目前還是采取人工測溫的方法,這不僅使糧庫工作人員工作量增大,且工作效率低,尤其是大型糧庫的溫度檢測任務(wù)如不能及時徹底完成,那么有可能會造成糧食大面積變質(zhì)。因此,一套完善的溫濕度測量系統(tǒng)是十分必要的4 5。此次設(shè)計的是基于單片機的溫濕度測量系統(tǒng),此系統(tǒng)是以MCS-51系列單片機為核心構(gòu)成的溫濕度精確檢測,并能實現(xiàn)超限報警及實時顯示功能。本系統(tǒng)還設(shè)有

3、串口數(shù)據(jù)發(fā)送模塊,能夠?qū)⒉杉臄?shù)據(jù)傳送給計算機,供技術(shù)人員記錄處理。2 系統(tǒng)總體設(shè)計與分析2.1 總體方案根據(jù)設(shè)計功能要求,系統(tǒng)可分如下局部:ü 溫度監(jiān)控:對環(huán)境溫度進行測量,并通過單片機處理實時顯示環(huán)境溫度。ü 濕度監(jiān)控:對環(huán)境濕度進行測量,并通過單片機處理實時顯示環(huán)境濕度。ü 報警處理:當(dāng)溫度、濕度越限時,發(fā)出報警提示信號。ü 顯示: LCD實時顯示溫濕度及時鐘日期。ü 鍵盤控制: 調(diào)整溫濕度上下限、時鐘。ü 串口通信: 將采集的數(shù)據(jù)定時發(fā)送給PC機。2.2 系統(tǒng)方案論證當(dāng)將單片機用作測控系統(tǒng)時,系統(tǒng)總要有被測信號通過輸入通道,由

4、單片機拾取必要的輸入信息。對于測量系統(tǒng)而言6,如何準確獲得被測信號是其核心任務(wù);而對測控系統(tǒng)來講,除對被控對象狀態(tài)的信號測試外,還要將測試數(shù)據(jù)與控制條件比照并實時控制相應(yīng)執(zhí)行設(shè)備。傳感器是實現(xiàn)測量與控制的首要環(huán)節(jié),是測控系統(tǒng)的關(guān)鍵部件,如果沒有傳感器對原始被測信號進行準確可靠的捕捉和轉(zhuǎn)換,一切準確的測量和控制都將無法實現(xiàn)。工業(yè)生產(chǎn)過程的自動化測量和控制,幾乎主要依靠各種傳感器來檢測和控制生產(chǎn)過程中的各種參量,使設(shè)備和系統(tǒng)正常運行在最正確狀態(tài),從而保證生產(chǎn)的高效率和高質(zhì)量7。本系統(tǒng)中,我們選擇SHT11來作為本設(shè)計的溫濕度傳感器。SHT11單芯片傳感器是一款含有已校準數(shù)字信號輸出的溫濕度復(fù)合傳感

5、器。它應(yīng)用專利的工業(yè)COMS過程微加工技術(shù),確保產(chǎn)品具有極高的可靠性與卓越的長期穩(wěn)定性。傳感器包括一個電容式聚合體測濕元件和一個能隙式測溫元件,并與一個14位的A/D轉(zhuǎn)換器以及串行接曰電路在同一芯片上實現(xiàn)無縫連接。因此,該產(chǎn)品具有品質(zhì)草越、超快響應(yīng)、抗干擾能力強、性價比極高等優(yōu)點8。每個SHT11傳感器都在極為精確的濕度校驗室中進行校準。校準系數(shù)以程序的形式儲存在OTP內(nèi)存中,傳感器內(nèi)部在檢測信號的處理過程中要調(diào)用這些校準系數(shù)9。兩線制串行接口和內(nèi)部基準電壓,使系統(tǒng)集成變得簡易快捷。超小的體積、極低的功耗,使其成為各類應(yīng)用甚至最為苛刻的應(yīng)用場合的最正確選那么10。3 系統(tǒng)硬件設(shè)計本系統(tǒng)硬件包括

6、:溫濕度采集轉(zhuǎn)換模塊、單片機及附屬電路、鍵盤控制、LCD顯示、時鐘模塊、報警電路、RS232串口通信模塊等局部的設(shè)計。系統(tǒng)整體電路框圖如圖3.1所示。ATMEL89C51單片機溫濕度采集轉(zhuǎn)換模塊鍵盤控制RS232串口通信模塊LCD顯示報警電路時鐘模塊圖3.1 系統(tǒng)整體電路框圖3.1 溫濕度采集轉(zhuǎn)換模塊硬件設(shè)計3.1.1 SHT11介紹SHT11是瑞士Sensirion公司推出的基于COMSensTM技術(shù)的新型溫濕度傳感器。該傳感器將COMS芯片技術(shù)與傳感器技術(shù)結(jié)合起來,從而發(fā)揮出它們強大的優(yōu)勢互補作用。SHT11溫濕度傳感器的主要特性如下:Ø 將溫濕度傳感器、信號放大調(diào)理、A/D轉(zhuǎn)換

7、、I2C總線接口全部集成于一芯片COMSensTM技術(shù);Ø 可給出全校準相對濕度及溫度值輸出;Ø 帶有工業(yè)標準的I2C總線數(shù)字輸出接口;Ø 具有露點值計算輸出功能;Ø 具有卓越的長期穩(wěn)定性;Ø 濕度值輸出分辨率為14位,溫度值輸出分辨率為12位,并可編程為12位和8位;Ø 小體積××,可外表貼裝;Ø 具有可靠的CRC數(shù)據(jù)傳輸校驗功能;Ø 片內(nèi)裝載的校準系數(shù)可保證100%互換性;Ø 電源電壓范圍為;Ø 電流消耗,測量時為550uA,平均為28uA,休眠時為3uA。SHT11溫濕

8、度傳感器采用SMD(LCC)外表貼片封裝形式,管腳排列如圖3.2所示,其引腳說明如下11:(1)GND:接地端;(2)DATA:雙向串行數(shù)據(jù)線;DATA三態(tài)門用于數(shù)據(jù)的讀取。DATA在SCK時鐘下降沿之后改變狀態(tài),并僅在SCK時鐘上升沿有效。數(shù)據(jù)傳輸期間,在SCK時鐘高電平時,DATA必須保持穩(wěn)定。為防止信號沖突,微處理器應(yīng)驅(qū)動DATA在低電平。需要一個外部的上拉電阻將信號提拉至高電平。上拉電阻通常已包含在微處理器的I/O電路中。(3)SCK:串行時鐘輸入;SCK用于微處理器與SHT11之間的通訊同步。由于接口包含了完全靜態(tài)邏輯,因而不存在最小SCK頻率。(4)VDD電源端:電源端;SHT11

9、的供電電壓為5.5V。傳感器上電后,要等待11 ms以越過“體眠狀態(tài)。在此期間無需發(fā)送任何指令。電源引腳(VDD,GND)之間可增加一個100nF的電容,用以去藕濾波12。(5)NC:空管腳。3.1.2 工作原理SHT11的濕度檢測運用電容式結(jié)構(gòu),并采用具有不同保護的“微型結(jié)構(gòu)檢測電極系統(tǒng)與聚合物覆蓋層來組成傳感器芯片的電容,除保持電容式濕敏器件的原有特性外,還可抵御來自外界的影響。由于它將溫度傳感器與濕度傳感器結(jié)合在一起而構(gòu)成了一個單一的個體,因而測量精度較高且可精確得出露點,同時不會產(chǎn)生由于溫度與濕度傳感器之間隨溫度梯度變化引起的誤差。CMOSensTM技術(shù)不僅將溫濕度傳感器結(jié)合在一起,而

10、且還將信號放大器、模數(shù)轉(zhuǎn)換器、校準數(shù)據(jù)存儲器、標準I2C總線等電路全部集成在一個芯片內(nèi)。SHT11傳感器的內(nèi)部結(jié)構(gòu)框圖如圖3.3所示13。SHT11的每一個傳感器都是在極為精確的濕度室中校準的。SHT11傳感器的校準系數(shù)預(yù)先存在OTP內(nèi)存中。經(jīng)校準的相對濕度和溫度傳感器與一個14位的A/D轉(zhuǎn)換器相連,可將轉(zhuǎn)換后的數(shù)字溫濕度值送給二線I2C總線器件,從而將數(shù)字信號轉(zhuǎn)換為符合I2C總線協(xié)議的串行數(shù)字信號14。由于將傳感器與電路局部結(jié)合在一起,因此,該傳感器具有比其它類型的濕度傳感器優(yōu)越得多的性能。首先是傳感器信號強度的增加增強了傳感器的抗干擾性能,保證了傳感器的長期穩(wěn)定性,而A/D轉(zhuǎn)換的同時完成,

11、那么降低了傳感器對干擾噪聲的敏感程度。其次在傳感器芯片內(nèi)裝載的校準數(shù)據(jù)保證了每一只濕度傳感器都具有相同的功能,即具有100%的互換性。最后,傳感器可直接通過I2C總線與任何類型的微處理器、微控制器系統(tǒng)連接,從而減少了接口電路的硬件本錢,簡化了接口方式15。 輸出特性(1)濕度值輸出SHT11可通過I2C總線直接輸出數(shù)字量濕度值,其相對濕度數(shù)字輸出特性曲線如圖3.4所示。由圖3.4可看出,SHT11的輸出特性呈一定的非線性,為了補償濕度傳感器的非線性,可按如下公式修正濕度值:Rhlinear=C1+C2SORH+C3SORH2式中,SORH為傳感器相對濕度測量值,系數(shù)取值如下:12位:SORH:

12、C1=4,C2,C3×1068位:SORH:C14,C2,C3×104(2)溫度值輸出由于SHT11溫度傳感器的線性非常好,故可用以下公式將溫度數(shù)字輸出轉(zhuǎn)換成實際溫度值:T=d1+d2SOT當(dāng)電源電壓為5V,且溫度傳感器的分辨率為14位時,d140,d2,當(dāng)溫度傳感器的分辨率為12位時,d140,d2。(3)露點計算17空氣的露點值可根據(jù)相對濕度和溫度值來得出,具體的計算公式如下:LogEW=(0.6607+5T/(237.3+T)+log10(RH)2logEW)×237.3/(logEW8.16077) 存放器配置SHT11傳感器中的一些高級功能是通過狀態(tài)存放

13、器來實現(xiàn)的,存放器各位的類型及說明見表1所列18。下面對存放器相關(guān)位的功能說明:(1)加熱使芯片中的加熱開關(guān)接通后,傳感器溫度大約增加5,從而使功耗增加至8mA*5v。加熱用途如下:通過對啟動加熱器前后的溫、濕度進行比擬,可以正確地區(qū)別傳感器的功能;在相對濕度較高的環(huán)境下,傳感器可通過加熱來防止冷凝。(2)低電壓檢測SHT11工作時可以自行檢測VDD電壓是否低于,準確度為±。(3)下載校準系數(shù)為了節(jié)省能量并提高速度,OTP在每次測量前都要重新下載校準系數(shù),從而使每一次測量節(jié)省的時間。(4)測量分辨率設(shè)定將測量分辨率從14位溫度和12位濕度分別減到12位和8位可應(yīng)用于高速或低功耗場合。

14、表1 SHT11狀態(tài)存放器類型及說明位類型說 明默認值7保存06讀工檢限低電壓檢查X5保存04保存03只用于試驗,不可以使用02讀/寫加熱0關(guān)1讀/寫不從OTP重下載0重下載0讀/寫'1'=8位相對濕度,12位溫度分辨率。'0'=12位相對濕度,14位濕度分辨率012位相對濕度,14位濕度 接口電路AT89C51與SHT11的接口電路如下圖。圖中,SHT11的DATA端口通過一個10K的外部上拉電阻與單片機連接。由于P2口內(nèi)部已有上拉電阻,所以本次設(shè)計DATA端口連接單片機的P2.7口時不需要上拉電阻。圖 AT89C51與SHT11的接口電路3.2 單片機系統(tǒng)硬

15、件設(shè)計本系統(tǒng)中,我們采用美國ATMEL愛特梅爾公司生產(chǎn)的AT89C51單片機作為主控芯片19。AT89C51單片機是一種低功耗、高性能CMOS 8位微控制器,具有4K在系統(tǒng)可編程Flash存儲器。使用ATMEL公司高密度非易失性存儲器技術(shù)制造,與工業(yè)8051產(chǎn)品指令和引腳完全兼容20。AT89C51具有以下標準功能:4k字節(jié)Flash, 128字節(jié)RAM,32位I/O口線,兩個16位定時器/計數(shù)器,可編程串行通道,5個中斷源,低功耗的閑置和掉電模式,片內(nèi)晶振及時鐘電路。圖3.6所示為AT89C51單片機最小系統(tǒng)原理圖21。圖3.6 AT89C51最小系統(tǒng)圖3.7 串口通信模塊電路 RS232串

16、口通信模塊硬件設(shè)計AT89C51有一個全雙工的串行通訊口,所以單片機和電腦之間可以方便地進行串口通訊。進行串行通訊時要滿足一定的條件,比方電腦的串口是RS232電平的,而單片機的串口是TTL電平的,兩者之間必須有一個電平轉(zhuǎn)換電路,我們采用了專用芯片MAX232進行轉(zhuǎn)換22。采用三線制連接串口,也就是說單片機和電腦的9針串口只連接其中的4根線:第5腳的GND、第2腳的RXD、第3腳的TXD與第4腳。具體電路圖如圖3.7所示。3.4 LCD顯示硬件設(shè)計圖3.8 1602引腳圖由于本次設(shè)計要求實時顯示時鐘、溫濕度和鍵盤調(diào)整提示信息,所以傳統(tǒng)的LED數(shù)碼管遠遠不能滿足要求,在這里我們采用1602工業(yè)字

17、符型液晶,能夠同時顯示16X02即32個字符。16列2行1602字符型LCD通常有14條引腳線或16條引腳線的LCD,多出來的2條線是背光電源線 VCC(15腳)和地線GND(16腳),其控制原理與14腳的LCD完全一樣,如表2引腳說明表3存放器選擇控制所示:表2 1602引腳說明引腳符號功能說明1VSS一般接地2VDD接電源+5V3V0液晶顯示器比照度調(diào)整端,接正電源時比照度最弱,接地電源時比照度最高比照度過高時會產(chǎn)生“鬼影,使用時可以通過一個10K的電位器調(diào)整比照度。4RSRS為存放器選擇,高電平1時選擇數(shù)據(jù)存放器、低電平0時選擇指令存放器。5R/WR/W為讀寫信號線,高電平(1)時進行讀

18、操作,低電平(0)時進行寫操作。6EE(或EN)端為使能(enable)端,下降沿使能。7DB0低4位三態(tài)、 雙向數(shù)據(jù)總線 0位最低位8-10DB1-3低4位三態(tài)、 雙向數(shù)據(jù)總線 1-3位11-13DB4-6高4位三態(tài)、 雙向數(shù)據(jù)總線 4-6位14DB7高4位三態(tài)、 雙向數(shù)據(jù)總線 7位最高位也是busy flag15BLA背光電源正極16BLK背光 電源負極表3存放器選擇控制RSR/W操作說明00寫入指令存放器去除屏等01讀busy flagDB7,以及讀取位址計數(shù)器DB0DB6值10寫入數(shù)據(jù)存放器顯示各字型等11從數(shù)據(jù)存放器讀取數(shù)據(jù)注:關(guān)于E=H脈沖開始時初始化E為0,然后置E為1,再清0.

19、 busy flagDB7:在此位為被去除為0時,LCD將無法再處理其他的指令要求23。 鍵盤控制模塊硬件設(shè)計在單片機應(yīng)用系統(tǒng)中,按接口形式上分鍵盤分兩大類:編碼鍵盤和非編碼鍵盤。編碼鍵盤是由硬件邏輯電路完成必要的鍵識別工作與可靠性措施。每按一次鍵,鍵盤自動提供被按鍵的讀數(shù),同時產(chǎn)生一選通脈沖通知微處理器,一般還具有反彈跳和同時按鍵保護功能。這種鍵盤易于使用,但硬件比擬復(fù)雜,對于主機任務(wù)也很繁重。非編碼鍵盤主要有獨立式按鍵結(jié)構(gòu)和矩陣式按鍵結(jié)構(gòu)24。矩陣式鍵盤適用于按鍵數(shù)量較多的場合,由行線和列線組成,按鍵位于行列的交叉點上,節(jié)省I/O口。獨立式按鍵就是各按鍵相互獨立,每個按鍵單獨占用一根I/O

20、口線,每根I/O口線的按鍵工作狀態(tài)不會影響其他I/O口線上的工作狀態(tài)。因此,通過檢測輸入線的電平狀態(tài)可以很容易判斷哪個按鍵被按下了。具有電路配置靈活,軟件結(jié)構(gòu)簡單的優(yōu)點。此鍵盤是用于按鍵較少或操作速度較高的場合。圖3.9 鍵盤控制模塊由于本次設(shè)計只用到5個鍵,所以采用獨立式鍵盤,在程序設(shè)計中采用查詢的方式來識別按鍵。本次設(shè)計共5個鍵,分別為時鐘調(diào)整鍵S5、加一鍵S4、減一鍵S3、上下溫度設(shè)置S2、上下濕度設(shè)置S1。如圖3.9所示。注:由于鍵盤使用的是單片機的P0口,所以必須上拉電阻。報警接口模塊硬件設(shè)計在微型計算機控制系統(tǒng)中,為了平安生產(chǎn)有緊急狀態(tài)報警系統(tǒng)采集的數(shù)據(jù)或通過計以便提醒操作人員注意

21、對于一些重要的參數(shù)或系統(tǒng)部位,都設(shè)或采取緊急措施。其方法就是把計算機算機進行數(shù)據(jù)處理、數(shù)字濾波,標度變換之后,與該參數(shù)上下限給定值進行比擬,如果高于上限值(或低于下限值)那么進行報警,否那么就作為采樣的正常進行顯示和控制24。本設(shè)計采用蜂鳴器和發(fā)光二極管報警電路。蜂鳴器報警接口電路的設(shè)計只需購置市售的壓電式蜂,然后通過AT89C51的1根口線經(jīng)驅(qū)動器驅(qū)動蜂鳴音發(fā)聲。壓電式蜂鳴器約需l 0mA的驅(qū)動電流,可以用一個晶體三極管驅(qū)動,利用單片機軟件延時使單片機產(chǎn)生間斷的報警時,同時相應(yīng)的發(fā)光二極管點亮。如下圖。圖 報警電路3.7 時鐘模塊硬件設(shè)計本次設(shè)計的時鐘模塊選用美國DALLAS公司推出DS13

22、02,它具有涓細電流充電能力的低功耗實時時鐘電路結(jié)構(gòu)、工作原理及其在實時顯示時間中的應(yīng)用。它可以對年、月、日、周、日、時、分、秒進行計時,且具有閏年補償?shù)榷喾N功能。采用三線接口與CPU進行同步通信,并可采用突發(fā)方式一次傳送多個字節(jié)的時鐘信號或RAM數(shù)據(jù)。DS1302內(nèi)部有一個31×8的用于臨時性存放數(shù)據(jù)的RAM存放器。DS1302是DS1202的升級產(chǎn)品,與DS1202兼容,但增加了主電源/后備電源雙電源引腳,同時提供了對后備電源進行涓細電流充電的能力。DS1302的引腳排列,其中VCC1為后備電源,VCC2為主電源。在主電源關(guān)閉的情況下,也能保持時鐘的連續(xù)運行。DS1302由Vcc

23、1或VCC2兩者中的較大者供電。當(dāng)VCC2大于VCC1+0.2V時,VCC2給DS1302供電。當(dāng)VCC2小于VCC1時,DS1302由Vcc1供電。X1和X2是振蕩源,外接32.768kHz晶振。RST是復(fù)位/片選線,通過把RST輸入驅(qū)動置高電平來啟動所有的數(shù)據(jù)傳送。RST輸入有兩種功能:首先,RST接通控制邏輯,允許地址/命令序列送入移位存放器;其次,RST提供終止單字節(jié)或多字節(jié)數(shù)據(jù)的傳送手段。當(dāng)RST為高電平時,所有的數(shù)據(jù)傳送被初始化,允許對DS1302進行操作。如果在傳送過程中RST置為低電平,那么會終止此次數(shù)據(jù)傳送,I/O引腳變?yōu)楦咦钁B(tài)。上電運行時,在VCC>2.0V之前,RS

24、T必須保持低電平。只有在SCLK為低電平時,才能將RST置為高電平。I/O為串行數(shù)據(jù)輸入輸出端(雙向)。SCLK為時鐘輸入端25。DS1302有12個存放器,其中有7個存放器與日歷、時鐘相關(guān),存放的數(shù)據(jù)位為BCD碼形式。此外,DS1302 還有年份存放器、控制存放器、充電存放器、時鐘突發(fā)存放器及與RAM相關(guān)的存放器等。時鐘突發(fā)存放器可一次性順序讀寫除充電存放器外的所有存放器內(nèi)容。 DS1302與RAM相關(guān)的存放器分為兩類:一類是單個RAM單元,共31個,每個單元組態(tài)為一個8位的字節(jié),其命令控制字為C0HFDH,其中奇數(shù)為讀操作,偶數(shù)為寫操作;另一類為突發(fā)方式下的RAM存放器,此方式下可一次性讀

25、寫所有的RAM的31個字節(jié),命令控制字為FEH(寫)、FFH(讀)。如圖3.11所示:圖3.11 時鐘模塊電路4 系統(tǒng)軟件設(shè)計本次設(shè)計軟件系統(tǒng)主要包括:溫濕度采集轉(zhuǎn)換模塊、鍵盤控制模塊、LCD顯示模塊、串口通信模塊等。4.1 系統(tǒng)整體框架介紹系統(tǒng)初始化溫濕度數(shù)據(jù)采集處理LCD顯示按鍵處理時鐘顯示報警處理利用T1定時,每隔1分鐘向PC機發(fā)送一次數(shù)據(jù)圖4.1 系統(tǒng)整體的工作方式流程圖當(dāng)單片機上電復(fù)位后,蜂鳴器會發(fā)出“滴一聲說明系統(tǒng)開始運行程序,時間日期和溫濕度會實時顯示的液晶顯示器上,按下相應(yīng)的功能鍵可以隨時更改設(shè)置溫濕度上下限和調(diào)整顯示時間。當(dāng)按下溫度或濕度調(diào)整功能鍵時,LCD顯示器上會有相應(yīng)提

26、示,繼續(xù)按下直至正常顯示溫濕度表示退出設(shè)置,方便工作人員操作。當(dāng)按下時鐘調(diào)整功能鍵時,相應(yīng)的被調(diào)整項伴有閃爍,繼續(xù)按下會跳到下一項直至退出。按下系統(tǒng)運行后,每隔一分鐘向PC機發(fā)送一次當(dāng)前時間和溫濕度數(shù)據(jù),以便工作人員記錄處理。當(dāng)溫濕度越限時,蜂鳴器會以500HZ的頻率響起間斷的報警聲,相應(yīng)的指示燈亮起。系統(tǒng)整體的工作方式如下圖溫濕度采集轉(zhuǎn)換模塊軟件設(shè)計SHT11傳感器共有5條用戶命令,具體命令格式見表4所列。下面介紹一下具體的命令順序及命令時序。表4 SHT11傳感器命令列表命  令編  碼說   明測量溫度00011溫度測量測量濕度00101濕度測量讀

27、存放器狀態(tài)00111“讀狀態(tài)存放器寫存放器狀態(tài)00110“寫狀態(tài)存放器軟啟動11110重啟芯片,去除狀態(tài)記錄器的錯誤記錄11毫秒后進入下一個命令(1)傳輸開始初始化傳輸時,應(yīng)首先發(fā)出“傳輸開始命令,該命令可在SCK為高時使DATA由高電平變?yōu)榈碗娖剑⒃谙乱粋€SCK為高時將DATA升高。接下來的命令順序包含三個地址位目前只支持“000和5個命令位,當(dāng)DATA腳的ACK位處于低電位時,表示SHT11正確收到命令。(2)連接復(fù)位順序如果與SHT11傳感器的通訊中斷,以下信號順序會使串口復(fù)位:即當(dāng)DATA線處于高電平時,觸發(fā)SCK 9次以上含9次,此后應(yīng)接著發(fā)一個“傳輸開始命令。(3)溫濕度測量時序

28、當(dāng)發(fā)出了溫濕度測量命令后,控制器就要等到測量完成。使用8/12/14位的分辨率測量分別需要大約11/55/210ms的時間。為說明測量完成,SHT11會使數(shù)據(jù)線為低,此時控制器必須重新啟動SCK,然后傳送兩字節(jié)的測量數(shù)據(jù)與1字節(jié)CRC校驗和。控制器必須通過使DATA為低來確認每一個字節(jié),所有的量均從右算,MSB列于第一位。通訊在確認CRC數(shù)據(jù)位后停止。如果沒有用CRC8校驗和,那么控制器就會在測量數(shù)據(jù)LSB后保持ACK為高來停止通訊,SHT11在測量和通訊完成后會自動返回睡眠模式。需要注意的是:為使SHT11的溫升低于此時的工作頻率不能大于標定值的15%如:12位精確度時,每秒最多進行3次測量

29、。SHT11程序流程復(fù)位啟動計算濕度值并顯示NNY寫入測濕命令讀出濕度數(shù)據(jù)計算溫度值并顯示N寫入測溫命令讀出溫度數(shù)據(jù)圖4.2 SH11程序流程圖4.3 鍵盤控制模塊軟件設(shè)計本系統(tǒng)采用獨立式鍵盤,采用查詢的方式來識別按鍵。五個鍵分別為:時鐘調(diào)整鍵S5功能:依次按下可調(diào)節(jié)月、日、時和分,被選中的工程會伴有閃爍。上下溫度設(shè)置S2功能:當(dāng)?shù)谝淮伟聪聲r,LCD第二行會有“SET High T= 的提示,表示設(shè)置溫度上限,再按下時會有“SET Low T= 提示,表示設(shè)置溫度下限。第三次按下是確定并退出設(shè)置。上下濕度設(shè)置S1功能:與上下溫度設(shè)置S2功能類似。加一功能鍵S3:顯示的數(shù)字加一并顯示。減一功能鍵

30、S4:顯示的數(shù)字減一并顯示。 LCD顯示模塊軟件設(shè)計本次設(shè)計顯示模塊采用1602液晶屏,對它的操作主要是將一些固定的字符寫入1602的存放器中,當(dāng)需要顯示時調(diào)用即可,以到達在液晶上顯示的效果。LCD初始化允許寫數(shù)據(jù)寫數(shù)據(jù)顯示結(jié)束判斷LCD忙NY圖 LCD顯示流程圖 串口通信模塊軟件設(shè)計本次設(shè)計中,串口設(shè)置利用定時器0產(chǎn)生波特率為2400bps,波特率不倍增,設(shè)定工作方式2。程序流程圖如圖串口初始化啟動定時器1發(fā)送數(shù)據(jù)等待發(fā)送數(shù)據(jù)去除數(shù)據(jù)傳送標志關(guān)閉定時器1圖 串口通信模塊流程圖5電路仿真圖5.1 整體仿真圖圖 溫度上限報警仿真圖圖5.3 溫度上限設(shè)置仿真圖圖 實物仿真圖本次設(shè)計采用Preteu

31、s 7.5 繪制原理圖26 27,Keil C51編輯編譯程序。仿真如圖5.1所示,Virtual Terminal窗口顯示單片機發(fā)送給PC機的數(shù)據(jù),每隔一分鐘發(fā)送一次。溫度上限報警如圖5.2所示,蜂鳴器報警,D3發(fā)光二極管點亮。6總結(jié)單片機技術(shù)在各個領(lǐng)域正得到越來越廣泛的應(yīng)用,尤其MCS-51系列單片機,迅速占領(lǐng)了工業(yè)測控和自動化工程應(yīng)用的主要市場,并取得了令人矚目的成果,展現(xiàn)出了廣闊的應(yīng)用前景?;趩纹瑱C的溫濕度測量系統(tǒng),采用AT89C51單片機和SHT11溫濕度傳感器,實現(xiàn)了對環(huán)境溫濕度的自動測量和報警,8051單片機因其指令系統(tǒng)豐富、小巧、低價、靈活易擴展等獨特的優(yōu)點,在所設(shè)計的溫濕度

32、測量系統(tǒng)中使整個系統(tǒng)的性價比得以大幅度的提高。將8051單片機成功應(yīng)用于溫濕度測控系統(tǒng),所研發(fā)產(chǎn)品可靠性和擴充性較強,能廣泛應(yīng)用于糧庫、物流倉儲、檔案館、農(nóng)業(yè)大棚等對溫濕度要求較高的場所,具有較大的市場推廣前景。當(dāng)然此設(shè)計也存在缺乏之處,軟件仿真時鐘正常已排除DS1302直接調(diào)用PC機時間的問題,實物仿真就不能正常顯示。通過設(shè)計使我對單片機有了更深刻的了解,尤其是讓我學(xué)會了如何使用一個完全陌生的元件,通過查閱各種資料,對新元件從陌生到熟悉直至靈活應(yīng)用,這種自學(xué)的方法會使我終生受益。附錄A 電路原理圖附錄B 局部程序/*/ 啟動SHT11/*void start_sht11(void) DATA

33、=1; SCK=0; /數(shù)據(jù)為1,SCK=0 _nop_(); SCK=1; /第一個脈沖 _nop_(); DATA=0; /數(shù)據(jù)跌落 _nop_ (); SCK=0; /完成一個脈沖 _nop_(); _nop_(); _nop_(); SCK=1; /再一個脈沖 _nop_(); DATA=1; /數(shù)據(jù)變?yōu)? _nop_(); SCK=0; /完成該脈沖 /*/ 復(fù)位SHT11/*void sht_rest(void) uchar i; DATA=1; SCK=0; /數(shù)據(jù)為1 時鐘為0 for(i=0;i<9;i+) /9 個脈沖為 復(fù)位 SCK=1; SCK=0; start_

34、sht11(); /啟動/*/ 測量溫度或者是溫度,返回校驗值/*text_a(uchar ml) uint i;start_sht11(); /啟動 write(ml); /寫入測溫度if (ack=1) sht_rest() ;/復(fù)位 write(ml);/寫入測溫度 for (i=0;i<65535;i+) if(DATA=0) break; /判斷是否處于忙read();/讀溫度/*/ 讀一個字節(jié) 返回應(yīng)答信號/*char read() uchar i,val=0; temp_l=0; temp_h=0;/高8位/ DATA=1; /釋放數(shù)據(jù)總線 for (i=0x80;i>

35、;0;i/=2) /位移8位 SCK=1; /上升沿讀入 if (DATA) val=(val | i); /確定值 SCK=0; DATA=0; /讀應(yīng)答信號,有應(yīng)答為1,為應(yīng)答為0 通過CPU下拉為應(yīng)答 SCK=1; /第9個脈沖 _nop_(); _nop_(); _nop_(); /pulswith approx. 5 us SCK=0; DATA=1; /釋放數(shù)據(jù)總線 temp_h=val; val=0; /低8位/ DATA=1; /釋放數(shù)據(jù)總線 for (i=0x80;i>0;i/=2) /位移8位 SCK=1; /上升沿讀入 if (DATA) val=(val | i)

36、; /確定值 SCK=0; DATA=1;/0; /不需要應(yīng)答 通過CPU下拉為應(yīng)答 SCK=1; /第9個脈沖 _nop_(); _nop_(); _nop_(); /pulswith approx. 5 us SCK=0; DATA=1; /釋放數(shù)據(jù)總線 temp_l=val; /*/ 寫一個字節(jié) 返回應(yīng)答信號/*char write(uchar value) uchar i ; ack=0; for (i=0x80;i>0;i/=2) /釋放數(shù)據(jù)總線 if (i & value) DATA=1; /寫入值 else DATA=0; SCK=1; /上升沿寫入 _nop_()

37、; _nop_(); _nop_(); /延時 SCK=0; DATA=1; /釋放數(shù)據(jù)總線 SCK=1; /第9個脈沖 if (DATA=1) ack=1; /讀應(yīng)答信號 SCK=0; return ack; /error=1 表示沒有應(yīng)答/*/ 計算溫度/*text_jishuan_temp() float aa=0,bb=0,temp_zi;aa=(float)temp_h*256+(float)temp_l; temp_zi=0.01*aa-40;if(temp_zi<0) temp_zi=0; temp_zi=temp_zi*10; xianzhi_t=(int)temp_zi

38、+1; /給顯示值/*/ 計算濕度/*text_jishuan_humi() float aa=0,bb=0,humi_zi;aa=(float)temp_h*256+(float)temp_l; bb=aa*aa*2.8/1000000;aa=0.0405*aa;aa=aa-6-bb;humi_zi=aa;humi_zi=humi_zi*10; xianzhi_h=(int)humi_zi; /給顯示值/*/ 溫濕度處理/*text_jishuan_temp11()error=0;ack=0; sht_rest(); /復(fù)位text_a(TEMP_ML);text_jishuan_temp(

39、); /計算溫度值text_a(HUMI_ML); text_jishuan_humi(); /計算濕度值/*/ 延時程序/*delay(int i) while(-i); /*/ 判斷LCD忙/*void check_busy(void)while(1)P1=0xff;E=0;_nop_();RS=0;_nop_();_nop_();RW=1;_nop_();_nop_();E=1;_nop_();_nop_();_nop_();_nop_();if(P1&0x80)=0) break;E=0;/*/ 將數(shù)據(jù)碼寫入LCD數(shù)據(jù)存放器/* void write_command(uchar

40、 tempdata) E=0;_nop_();_nop_();RS=0;_nop_();_nop_();RW=0;P1=tempdata;_nop_();_nop_();E=1;_nop_();_nop_(); E=0;_nop_();check_busy();/*/ 寫LCD1602使能程序/*void write_data(uchar tempdata) E=0;_nop_();_nop_();RS=1;_nop_();_nop_();RW=0;P1=tempdata;_nop_();_nop_();E=1;_nop_();_nop_(); E=0;_nop_();check_busy()

41、;/*/ 初始化LCD1602/*void init() write_command(0x01);/去除屏幕 write_command(0x38);/功能設(shè)定8位,2行,5*7點矩陣) write_command(0x0C);/顯示器ON,光標OFF,閃爍OFF write_command(0x06);/加1/*/ 顯示子程序/*void display_T(void) uchar i; display2=LCDDataxianzhi_t/100; display3=LCDData(xianzhi_t%100)/10; display10=LCDDataxianzhi_h/100; disp

42、lay11=LCDData(xianzhi_h%100)/10; write_command(0xc0); for(i=0;i<13;i+) write_data(displayi); /*/ 1302時鐘主程序/*void shizhong() uchar temp; write1302(0x8e,0x00); /允許寫1302 month=read1302(0x89); /讀出月存放器 temp=month; display11=LCDDatatemp&0x0f; /月別離,并找相應(yīng)的ASCALL碼值,/存入緩存數(shù)組中 temp=temp>>4; display1

43、0=LCDDatatemp&0x0f; day=read1302(0x87); /讀出日存放器 temp=day; display14=LCDDatatemp&0x0f; /日別離,并找相應(yīng)的ASCALL碼值,/存入緩存數(shù)組中 temp=temp>>4; display13=LCDDatatemp&0x0f; hour=read1302(0x85); /讀出小時存放器 temp=hour; display17=LCDDatatemp&0x0f;/小時別離,并找相應(yīng)的ASCALL碼值, /存入緩存數(shù)組中 temp=temp>>4; disp

44、lay16=LCDDatatemp&0x0f; mintue=read1302(0x83); /讀出分存放器 temp=mintue; display110=LCDDatatemp&0x0f;/分鐘別離,并找相應(yīng)的ASCALL碼值, /存入緩存數(shù)組中 temp=temp>>4; display19=LCDDatatemp&0x0f; second=read1302(0x81); /讀出秒存放器 temp=second; display113=LCDDatatemp&0x0f;/秒別離,并找相應(yīng)的ASCALL碼值, /存入緩存數(shù)組中 temp=temp>>4; display112=LCDDatatemp&0x0f; display1302();/*/ 報警及處理/*doing() char xianzhi_mi; xianzhi_mi=xianzhi_t/10; /溫度 if(xianzhi_mi<setzhi_T_h)&(xianzhi_t>setzhi_T_l) motor=0;hot=0;speek=1; if(xianzhi_mi>setzhi_T_h) motor=1;hot=0;speek=1;delay(3000);speek=0;delay(15000); if

溫馨提示

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

評論

0/150

提交評論