溫濕度監(jiān)測系統(tǒng)_第1頁
溫濕度監(jiān)測系統(tǒng)_第2頁
溫濕度監(jiān)測系統(tǒng)_第3頁
溫濕度監(jiān)測系統(tǒng)_第4頁
溫濕度監(jiān)測系統(tǒng)_第5頁
已閱讀5頁,還剩31頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、智能溫濕度監(jiān)測系統(tǒng)摘 要防潮、防霉、防腐、防爆是車間日常工作的重要內(nèi)容,是衡量環(huán)境管理質(zhì)量的重要指標(biāo)。它直接影響到儲備物資的使用壽命和設(shè)備工作可靠性。為保證日常工作的順利進(jìn)行,首要問題是加強工作環(huán)境溫度與濕度的監(jiān)測工作。但傳統(tǒng)的方法是用濕度表、毛發(fā)濕度表、雙金屬式測量計和濕度試紙等測試器材,通過人工進(jìn)行檢測,對不符合溫度和濕度要求的庫房進(jìn)行通風(fēng)、去濕和降溫等工作。這種人工測試方法費時費力、效率低,且測試的溫度及濕度誤差大,隨機性大。因此就需要一種造價低廉、使用方便且測量準(zhǔn)確的溫濕度測量儀。所以在測量儀上安裝溫度傳感器,濕度傳感器,通過單片機計算、顯示和報警,可以實現(xiàn)室內(nèi)溫度和空氣濕度自動調(diào)控功

2、能,對于管理庫房節(jié)省了時間,為設(shè)備安全運行提供了可靠的保障。隨著社會的發(fā)展,該系統(tǒng)具有一定的實用價值和廣泛的應(yīng)用前景。關(guān)鍵詞:溫度傳感器;濕度傳感器;單片機;空氣濕度;自動調(diào)控目 錄第一章 引言11.1概述11.2傳感器的技術(shù)簡介和發(fā)展前景11.3傳感器的實現(xiàn)的功能1第二章 系統(tǒng)總體方案設(shè)計22.1溫度傳感器22.2濕度傳感器42.3MC14433A/D轉(zhuǎn)換器52.4單片機89S517第三章 系統(tǒng)的硬件設(shè)計和連接103.1MC14433與89S51單片機的接口設(shè)計103.2顯示與報警的設(shè)計10第四章 軟件設(shè)計124.1主程序流程圖134.2程序清單14結(jié) 論21參考文獻(xiàn)22謝 辭23附錄24附

3、1 CD4051多路開關(guān)24附2 89S51系統(tǒng)程序及子程序26第一章 引言1.1 概述隨著時代科技的迅猛發(fā)展,微電子學(xué)和計算機等現(xiàn)代電子技術(shù)的成就給傳統(tǒng)的電子測量與儀器帶來了巨大的沖擊和革命性的影響。常規(guī)的測試儀器儀表和控制裝置被更先進(jìn)的智能儀器所取代,使得傳統(tǒng)的電子測量儀器在遠(yuǎn)離、功能、精度及自動化水平定方面發(fā)生了巨大變化,并相應(yīng)的出現(xiàn)了各種各樣的智能儀器控制系統(tǒng),使得科學(xué)實驗和應(yīng)用工程的自動化程度得以顯著提高。1.2傳感器的技術(shù)簡介和發(fā)展前景信心革命的三大重要支柱是信息的采集、傳輸和處理。信息采集中,首先要獲得原始的信息,其最基本的元件是傳感器,關(guān)鍵技術(shù)是傳感器技術(shù)。因此,傳感器及其相關(guān)

4、的應(yīng)用技術(shù)(傳感器、與傳感器相關(guān)的電子技術(shù)、信息處理)是信息領(lǐng)域的源頭技術(shù)。傳感器技術(shù)是新技術(shù)革命和信息社會的重要技術(shù)基礎(chǔ),是現(xiàn)代科技的開路先鋒,也是當(dāng)代科學(xué)技術(shù)發(fā)展的一個重要標(biāo)志。傳感器技術(shù)、通信技術(shù)、計算機技術(shù)、分別對應(yīng)信息技術(shù)中的采集、傳輸和處理。如果說計算機是人類大腦的擴展,那么傳感器就是人類五官的延伸。當(dāng)集成電路、計算機技術(shù)飛速發(fā)展時,電腦的運算速度和信息處理能力得以成倍的提高,這時人們才逐步認(rèn)識到信息攝取裝置:傳感器沒跟上信息技術(shù)的發(fā)展,因而驚呼“大腦發(fā)達(dá)、五官不靈”。世界上技術(shù)發(fā)達(dá)的國家對傳感器技術(shù)開發(fā)都十分重視。目前,傳感器及其應(yīng)用技術(shù)已成為我國國民經(jīng)濟發(fā)展不可或缺的一部分,傳

5、感器在工業(yè)部門的應(yīng)用普及率已被國際社會作為衡量一個國家智能化、數(shù)字化以及網(wǎng)絡(luò)化的重要標(biāo)志之一。1.3傳感器的實現(xiàn)的功能傳感器作為測試系統(tǒng)的第一環(huán)節(jié),將被測系統(tǒng)或過程中需要觀測的信息轉(zhuǎn)化為人們所熟悉的各種信號,這是測試過程中必須完成的首要任務(wù)。通常,傳感器將被測物流量轉(zhuǎn)化成以電量為主要形式的電信號。第二章 系統(tǒng)總體方案設(shè)計本設(shè)計是基于單片機對數(shù)字信號的高敏感和可控性、溫濕度傳感器可以產(chǎn)生模擬信號,和A/D模擬數(shù)字轉(zhuǎn)換芯片的性能,此設(shè)計以89S51基本系統(tǒng)為核心的一套檢測系統(tǒng),其中包括A/D轉(zhuǎn)換、單片機、復(fù)位電路、溫度檢測、濕度檢測、鍵盤及顯示、報警電路、系統(tǒng)軟件等部分的設(shè)計。系統(tǒng)總體方框圖如圖2

6、.1。串行口LED顯示單片機89S51CD4051多路開關(guān)MC14433A/D轉(zhuǎn)換AD590溫度檢測CD4051多路開關(guān)報警電路MC14433A/D轉(zhuǎn)換HS1100濕度檢測圖2.1 系統(tǒng)總體框圖本設(shè)計由信號采集、信號分析和信號處理三個部分組成的:(1) 信號采集 由AD590、HS1100及多路開關(guān)CD4051組成;(2) 信號分析 由A/D轉(zhuǎn)換器MC14433、單片機89S51基本系統(tǒng)組成;(3) 信號顯示 由串行口LED顯示器和報警電路組成。2.1 溫度傳感器集成溫度傳感器AD590是美國模擬器件公司生產(chǎn)的集成兩端感溫電流源。AD590是電流型溫度傳感器,通過對電流的測量可得到所需要的溫度

7、值。 溫度傳感器主要特性流過器件的電流(A)等于器件所處環(huán)境的熱力學(xué)溫度(開爾文)度數(shù):Ir/T=1,式中,Ir流過器件(AD590)的電流,單位為A;T熱力學(xué)溫度,單位為K;AD590的測溫范圍為-55+150;AD590的電源電壓范圍為430V,可以承受44V正向電壓和20V反向電壓,因而器件即使反接也不會被損壞;輸出電阻為710m;精度高,AD590在-55+150范圍內(nèi),非線性誤差僅為±0.3。 AD590的工作原理AD590溫度感測器是一種已經(jīng)IC化的溫度感測器,它會將溫度轉(zhuǎn)換為電流。其規(guī)格如下:溫度每增加1,它會增加1A輸出電流??闪繙y范圍-55至150。供應(yīng)電壓范圍+4

8、V至30V。AD590的接腳圖及零件符號如圖2.2所示:圖2.2 AD590的接腳圖及零件符號AD590的輸出電流是以絕對溫度零度(-273)為基準(zhǔn),每增加1,它會增加1A輸出電流,因此在室溫25時,其輸出電流Io=(273+25)=298A。Vo的值為Io乘上10K,以室溫25而言,輸出值為2.98V(10K×298A)。量測Vo時,不可分出任何電流,否則量測值會不準(zhǔn)。 電路設(shè)計AD590的輸出電流I=(273+T)A(T為攝氏溫度),因此量測的電壓V為(273+T)A ×10K=(2.73+T/100)V。為了將電壓量測出來又需使輸出電流I不分流出來,我們使用電壓追隨器

9、其輸出電壓V2等于輸入電壓V。由于一般電源供應(yīng)較多零件之后,電源是帶噪聲的,因此我們使用齊納二極管作為穩(wěn)壓零件,再利用可變電阻分壓,其輸出電壓V1需調(diào)整至2.73V。接下來我們使用差動放大器其輸出Vo為(100K/10K)×(V2-V1)=T/10,如果現(xiàn)在為攝氏28,輸出電壓為2.8V,輸出電壓接A/D轉(zhuǎn)換器,那么A/D轉(zhuǎn)換輸出的數(shù)字量就和攝氏溫度成線形比例關(guān)系。AD590溫度傳感器使用原理如圖2.3。100K20K10K20K10K100K+12V+12V-5V+12V-5V+12VV1V2+12V-5VV0-+-+-OP1OP2OP3圖2.3 AD590溫度傳感器使用原理圖2.

10、2 濕度傳感器測量空氣濕度的方式很多,其原理是根據(jù)某種物質(zhì)從其周圍的空氣吸收水分后引起的物理或化學(xué)性質(zhì)的變化,間接地獲得該物質(zhì)的吸水量及周圍空氣的濕度。電容式、電阻式和濕漲式濕敏原件分別是根據(jù)其高分子材料吸濕后的介電常數(shù)、電阻率和體積隨之發(fā)生變化而進(jìn)行濕度測量的。下面介紹HS1100(頂端接觸)/HS1101(側(cè)面接觸)濕度傳感器及其應(yīng)用。 主要特性(1)監(jiān)測速度快;(2)高精度和高可靠性;(3)快速響應(yīng)時間和長期穩(wěn)定性;(4)使用方便體積??;(5)適用于線性電壓輸出和頻率輸出兩種電路;(6)適宜于制造流水線上的自動插件和自動裝配過程等。相對濕度在1%100%RH范圍內(nèi),電容量由16pF變到2

11、00pF,其誤差不大于±2%RH、響應(yīng)時間小于5S、溫度系數(shù)為0.04pF/,可見精度是較高的。 工作原理HS1100/HS1101電容傳感器,在電路構(gòu)成中等效于一個電容器件,其電容量隨著所測空氣濕度的增大而增大。如何將電容的變化量準(zhǔn)確地轉(zhuǎn)變?yōu)橛嬎銠C易于接受的信號,常用方法是將該濕敏電容置于555振蕩電路中,將電容值的變化轉(zhuǎn)為與之成反比的電壓頻率信號,可直接被計算機所采集。HS1100/HS1101濕度傳感器在不同的相對濕度中的電容值不同,而容值得改變使輸出的頻率發(fā)出相應(yīng)的改變,HS1100/HS1101的容值隨著相對濕度的增大而增大,因此輸出頻率隨著相對濕度值的變大而變小,即頻率降

12、低。表2.1給出了輸出頻率的典型值。表2.1典型頻率值(參考點:25,相對濕度:50%,輸出頻率:6728KHZ)濕度 %RH頻率HZ濕度 %RH頻率HZ073516066001072247064682071008063303069769061684068531006033圖2.4給出了HS1101典型555應(yīng)用電路。圖2.4 典型555應(yīng)用電路2.3 MC14433A/D轉(zhuǎn)換器 MC14433A/D轉(zhuǎn)換器的特點本系統(tǒng)選用了雙積分A/D轉(zhuǎn)換器MC14433,可以把溫度、濕度檢測電路測出的模擬信號轉(zhuǎn)換成數(shù)字量送CPU處理,它精度高,分辨率達(dá)1/1999。由于MC14433只有一路輸入,而本系統(tǒng)檢

13、測的多路溫度與濕度信號輸入,故選用多路選擇電子開關(guān),可輸入多路模擬量。由于雙積分方法二次積分時間比較長,所以A/D轉(zhuǎn)換速度慢,但精度可以做得比較高;對周期信號變化的干擾信號積分為零,抗干擾性能也比較好。 MC14433A/D轉(zhuǎn)換器件簡介MC14433是三位半雙積分型的A/D轉(zhuǎn)換器,具有精度高,抗干擾性能好的優(yōu)點,其缺點是轉(zhuǎn)換速率低,約110次/秒。在不要求高速轉(zhuǎn)換的場合,在低速數(shù)據(jù)采集系統(tǒng)中,被廣泛采用。MC14433A/D轉(zhuǎn)換器的被轉(zhuǎn)換電壓量程為199.9mV或1.999V。轉(zhuǎn)換完的數(shù)據(jù)以BCD碼的形式分四次送出。圖2.6 MC14433 引腳圖 MC14433 的引腳(圖2.6)功能說明如

14、表2.2表2.2 功能說明電源及共地端外界電阻及電容端轉(zhuǎn)換啟動/結(jié)束信號端過量程信號輸出端VDD:主工作電源+5V。VEE:模擬部分的負(fù)電源端,接-5V。VAG:模擬地端。VSS:數(shù)字地端。VR:基準(zhǔn)電壓。RI:積分電阻輸入端,VX=2V時,R1=47;VX=200M時,R1=27K。C1:積分電容輸入端。C1一般為0.1µF。C01、C02:外界補償電容端,電容取值約0.1µF。R1/C1:R1 與C1的公共端。CLKI、CLKO : 外界振蕩器時鐘調(diào)節(jié)電阻Rc,Rc一般取 470 K左右。EOC:轉(zhuǎn)換結(jié)束信號輸出端,正脈沖有效。DU:啟動新的轉(zhuǎn)換,若DU與EOC相連,每

15、當(dāng)A/D轉(zhuǎn)換結(jié)束后,自動啟動新的轉(zhuǎn)換。:當(dāng)|Vx|VR,過量程/OR 輸出低電平。位選通控制線DS4DS1:選擇個、十、百、千位,正脈沖有效。DS1 對應(yīng)千位,DS4 對應(yīng)個位。每個選通脈沖寬度為18個時鐘周期,兩個相應(yīng)脈沖之間間隔為2個時鐘周期。BCD碼輸出線Q0Q3:BCD碼輸出線。其中Q0為最低位,Q3為最高位。當(dāng)DS2、DS3和DS4選通期間,輸出三位完整的BCD碼數(shù),但在DS1選通期間,輸出端Q0Q3 除了表示個位的0或1外,還表示了轉(zhuǎn)化值的正負(fù)極性和欠量程還是過量程其含義見表2.2,DS1選通時Q3Q0表示的結(jié)果。表2.2 DS1選通時Q3Q0表示的結(jié)果Q3Q2Q1Q0表示結(jié)果1*

16、0千位數(shù)為00*0千位數(shù)為1*1*0結(jié)果為正*0*0結(jié)果為負(fù)0*1輸入過量程1*1輸入欠量程由表可知Q3 表示1/2位,Q3=“0”對應(yīng)1,反之對應(yīng)0。Q2 表示極性,Q2=“1”為正極性,反之為負(fù)極性。Q0=“1”表示超量程:當(dāng)Q3=“0”時,表示過量程;當(dāng)Q3=“1”時,表示欠量程。2.4 單片機89S51為了設(shè)計此系統(tǒng),此系統(tǒng)采用了89S51單片機作為控制芯片,它具有以下特性:片內(nèi)程序存儲器含有4KB的Flash存儲器,允許在線編程,擦寫周期可達(dá)1000次;片內(nèi)數(shù)據(jù)存儲器內(nèi)含128字節(jié)的RAM;I/O口具有32根可編程I/O線;具有兩個16位I/O線;中斷系統(tǒng)具有6個中斷源、5個終端矢量

17、、2個中斷優(yōu)先級的中斷結(jié)構(gòu);串行口是一個全雙工的串行通信口;具有兩個數(shù)據(jù)指針DPTR0和DPTR1;低功耗節(jié)電模式有節(jié)電模式和掉電模式;包含3級程序鎖定位;AT89S51的電源電壓為4.05.5V,AT89LS51的電源電壓為2.74.0V;振蕩器頻率033MHz(AT89S51),016MHz(AT89LS51);具有片內(nèi)看門狗定時器;靈活的在線片內(nèi)編程模式(字節(jié)和頁編程模式);具有斷電標(biāo)志模式POF。89S51引腳如圖2.7。圖2.7 89S51的引腳圖功能說明如下:VCC:供電電壓。 GND:接地。P0口:P0口為一個8位漏級開路雙向I/O口,每腳可吸收8TTL門電流。當(dāng)P1口的管腳第一

18、次寫1時,被定義為高阻輸入。P0能夠用于外部程序數(shù)據(jù)存儲器,它可以被定義為數(shù)據(jù)/地址的第八位。在FIASH編程時,P0 口作為原碼輸入口,當(dāng)FIASH進(jìn)行校驗時,P0輸出原碼,此時P0外部必須被拉高。P1口:P1口是一個內(nèi)部提供上拉電阻的8位雙向I/O口,P1口緩沖器能接收輸出4TTL門電流。P1口管腳寫入1后,被內(nèi)部上拉為高,可用作輸入,P1口被外部下拉為低電平時,將輸出電流,這是由于內(nèi)部上拉的緣故。在FLASH編程和校驗時,P1口作為第八位地址接收。P2口:P2口為一個內(nèi)部上拉電阻的8位雙向I/O口,P2口緩沖器可接收,輸出4個TTL門電流,當(dāng)P2口被寫1時,其管腳被內(nèi)部上拉電阻拉高,且作

19、為輸入。并因此作為輸入時,P2口的管腳被外部拉低,將輸出電流。這是由于內(nèi)部上拉的緣故。P2口當(dāng)用于外部程序存儲器或16位地址外部數(shù)據(jù)存儲器進(jìn)行存取時,P2口輸出地址的高八位。在給出地址1時,它利用內(nèi)部上拉優(yōu)勢,當(dāng)對外部八位地址數(shù)據(jù)存儲器進(jìn)行讀寫時,P2口輸出其特殊功能寄存器的內(nèi)容。P2口在FLASH編程和校驗時接收高八位地址信號和控制信號。P3口:P3口管腳是8個帶內(nèi)部上拉電阻的雙向I/O口,可接收輸出4個TTL門電流。當(dāng)P3口寫入1后,它們被內(nèi)部上拉為高電平,并用作輸入。作為輸入,由于外部下拉為低電平,P3口將輸出電流(ILL)這是由于上拉的緣故。RST:復(fù)位輸入。當(dāng)振蕩器復(fù)位器件時,要保持

20、RST腳兩個機器周期的高電平時間。ALE/PROG:當(dāng)訪問外部存儲器時,地址鎖存允許的輸出電平用于鎖存地址的地位字節(jié)。在FLASH編程期間,此引腳用于輸入編程脈沖。在平時,ALE端以不變的頻率周期輸出正脈沖信號,此頻率為振蕩器頻率的1/6。因此它可用作對外部輸出的脈沖或用于定時目的。然而要注意的是:每當(dāng)用作外部數(shù)據(jù)存儲器時,將跳過一個ALE脈沖。如想禁止ALE的輸出可在SFR8EH地址上置0。此時, ALE只有在執(zhí)行MOVX,MOVC指令是ALE才起作用。另外,該引腳被略微拉高。如果微處理器在外部執(zhí)行狀態(tài)ALE禁止,置位無效。PSEN:外部程序存儲器的選通信號。在由外部程序存儲器取指期間,每個

21、機器周期兩次/PSEN有效。但在訪問外部數(shù)據(jù)存儲器時,這兩次有效的/PSEN信號將不出現(xiàn)。EA/VPP:當(dāng)/EA保持低電平時,則在此期間外部程序存儲器(0000H-FFFFH),不管是否有內(nèi)部程序存儲器。注意加密方式1時,/EA將內(nèi)部鎖定為RESET;當(dāng)/EA端保持高電平時,此間內(nèi)部程序存儲器。在FLASH編程期間,此引腳也用于施加12V編程電源(VPP)。XTAL1:反向振蕩放大器的輸入及內(nèi)部時鐘工作電路的輸入。XTAL2:來自反向振蕩器的輸出。第三章 系統(tǒng)的硬件設(shè)計和連接3.1 MC14433與89S51單片機的接口設(shè)計由于MC14433的A/D轉(zhuǎn)換結(jié)果是動態(tài)分時輸出的BCD碼,Q0Q3H

22、E,DS1DS4都不是總線式的。因此,MCS-51單片機只能通過并行I/O接口或擴展I/O接口與其相連。對于89S51單片機的應(yīng)用系統(tǒng)來說,MC14433可以直接和其P1口或擴展I/O口8155/8255相連。下面是MC14433與89S51單片機P1口直接相連的硬件接口,接口電路如圖3.1所示。123456789101112VA GNDVREFVXR1R1/C1C1C01C02DUCLK1CLK0VEEVssEOC/ORDS4DS3DS2DS1Q0Q1Q2Q3VDD242322212019181716151413MC14433123456789101112131415161718192039

23、40383736353433323130292827262524232221P1.2P1.0P1.1P1.3P1.4P1.5P3.1/TxDP3.7/RDXTAL2P3.0/RxDP1.6P3.6/WRP3.2/INT0P3.4/T0P3.5/T1P3.3/INT1RST/VPDP1.7XTAL1GNDVCCP0.6P0.5P0.7P0.0P0.1P0.2P0.4EA/VppP0.3ALE/PROGP2.1P2.2PSENP2.6P2.7P2.489S51P2.3P2.5P2.01K470k300K0.1uF0.1uF0.02uF0.047uF+5v123AD590-5V+5V圖3.1 MC1

24、4433與8031單片機P口直接相連的硬件接口3.2 顯示與報警的設(shè)計 顯示電路在單片機應(yīng)用系統(tǒng)設(shè)計中,一般都是把鍵盤和顯示器放在一起考慮。本設(shè)計是利用89S51的串行口實現(xiàn)鍵盤/顯示器接口。當(dāng)89S51的串行口未作它用時,使用89S51的串行口來外擴鍵盤/顯示器。應(yīng)用89S51的串行口方式0的輸出方式,在串行口外接移位寄存器74LS164,構(gòu)成鍵盤/顯示器接口,8個74LS164:74LS164(0)74LS164(7)作為8位段碼輸出口,74LS138的Y0作為鍵輸入線,Y2作為同步脈沖輸出控制線。這種靜態(tài)顯示方式亮度大,很容易作到顯示不閃爍。靜態(tài)顯示的優(yōu)點是CPU不必頻繁的為顯示服務(wù),因

25、而主程序可不必掃描顯示器,軟件設(shè)計比較簡單,從而使單片機有更多的時間處理其他事務(wù)。報警電路報警電路在微型計算機控制系統(tǒng)中,為了安全生產(chǎn),對于一些重要的參數(shù)或系統(tǒng)部位,都設(shè)有緊急狀態(tài)報警系統(tǒng),以便提醒操作人員注意,或采取緊急措施。其方法就是把計算機采集的數(shù)據(jù)或記過計算機進(jìn)行數(shù)據(jù)處理、數(shù)字濾波,標(biāo)度變換之后,與該參數(shù)上下限給定值進(jìn)行比較,如果高于上限值(或低于下限值)則進(jìn)行報警,否則就作為采樣的正常值,進(jìn)行顯示和控制。本設(shè)計采用峰鳴音報警電路。峰鳴音報警接口電路的設(shè)計只需購買市售的壓電式蜂鳴器,然后通過MCS-51的1根口線經(jīng)驅(qū)動器驅(qū)動蜂鳴音發(fā)聲。壓電式蜂鳴器約需10mA的驅(qū)動電流,可以使用TTL

26、系列集成電路7406或7407低電平驅(qū)動,也可以用一個晶體三極管驅(qū)動。在圖中,P3.2接晶體管基極輸入端。當(dāng)P3.2輸出高電平“1”時,晶體管導(dǎo)通,壓電蜂鳴器兩端獲得約+5V電壓而鳴叫;當(dāng)P3.2輸出低電平“0”時,三極管截止,蜂鳴器停止發(fā)聲。圖3.2是一個簡單的使用三極管驅(qū)動的峰鳴音報警電路:NPN5.6K3.3K+5VP3.289S51PB2130UP002A圖3.2 三極管驅(qū)動的峰鳴音報警電路三極管驅(qū)動的峰鳴音報警電路本設(shè)計是為在溫濕度測量中對溫濕度的上下限超出是的提示報警,接口位于單片機AT89S51的P3.2口,但溫濕度過限時,P3.2口被置0,本系統(tǒng)開始工作。第四章 軟件設(shè)計溫/濕

27、度控制主程序的設(shè)計應(yīng)考慮以下問題:(1)鍵盤掃描、鍵碼識別和溫/濕度顯示;(2)溫濕度采樣,數(shù)字濾波;(3)越限報警和處理。通常,符合上述功能的溫度控制程序由主程序和T0中斷服務(wù)程序兩部分組成。在該軟件系統(tǒng)中,定時器T0為工作方式1,定時周期為125ms,8次定時器中斷為1S,由于實際環(huán)境溫度和濕度變化是連續(xù)和平緩的,故這里采用分段定值平緩濾波算法處理每次測得的溫度和濕度值,有效防止了突發(fā)干擾使測得值波動很大,導(dǎo)致反饋系統(tǒng)關(guān)啟工作,影響系統(tǒng)的穩(wěn)定,提高了系統(tǒng)的抗干擾性。由于系統(tǒng)中設(shè)計有看門狗監(jiān)視電路,所以在編程時要特別注意,傳統(tǒng)的等待按鍵釋放的方法較好的解決了這個問題,既保證當(dāng)按鍵按下后,置鍵

28、按下標(biāo)志位,在主程序的循環(huán)中則反復(fù)判斷鍵按下標(biāo)志位是否被清零。如果被清零,說明鍵已被釋放,然后才能進(jìn)行下一輪的鍵盤按下判斷。在T0中斷處理程序中,每次中斷均要檢測鍵是否按下。若無按下,有兩種情況,一是系統(tǒng)中確實無鍵按下(此時鍵按下標(biāo)志為0),處于監(jiān)控狀態(tài);二是鍵按下釋放后的情況(此時鍵按下標(biāo)志為1)。這時要清鍵按下標(biāo)志,以便主程序進(jìn)行下一輪的鍵按下檢測。4.1 T0中斷流程圖T0中斷保護(hù)現(xiàn)場設(shè)定1s時間計數(shù)是否到1s N Y濕度數(shù)據(jù)采樣 是否越限?報警程序 N Y顯示重裝時間常數(shù)恢復(fù)現(xiàn)場返回圖4.1 T0中斷流程圖4.2 溫度主程序流程圖開始設(shè)堆棧清標(biāo)志清暫存清顯示T0初始化串行口初始化CPU

29、開中斷掃描鍵盤溫度采樣顯示圖4.2 溫度主程序流程圖4.3 程序清單 main()unsigned char z;unsigned char a,b,flag_2=1,count1=0;unsigned char phil=2,0xce,0x6e,0x60,0x1c,2;TMOD=0x21;TH0=0x2f;TL0=0x40;SCON=0x50;PCON=0x00;TH1=0xfd;TL1=0xfd;PS=1;EA=1;EX1=0;ET0=1;ES=1;TR0=1;TR1=1;high_time=50;low_time=50;PIDInit ( &spid ); /*Initializ

30、e Structure */spid.Proportion = 10; /* Set PID Coefficients*/spid.Integral = 8;spid.Derivative =6;spid.SetPoint = 100; /* Set PID Setpoint */while(1)if(plus=0)EA=0;for(a=0;a<5;a+)for(b=0;b<102;b+)if(plus=0)set_temper+;flag=0;else if(subs=0)for(a=0;a<5;a+)for(b=0;a<102;b+)if(subs=0)set_te

31、mper-;flag=0;else if(stop=0)for(a=0;a<5;a+)for(b=0;b<102;b+)if(stop=0)flag=0;break;EA=1;get_temper();b=temper;if(flag_2=1)a=b;if(abs(a-b)>5)temper=a;elsetemper=b;a=temper;flag_2=0;if(+count1>30)display();count1=0;compare_temper();TR0=0;z=1;while(1)EA=0;if(stop=0)for(a=0;a<5;a+)for(b=0

32、;b<102;b+)if(stop=0)disp_1(phil);/ break;EA=1; /*DS18b20 子程序*/#include <REG52.H>sbit DQ=P21; /*定義端口*/typedef unsigned char byte;typedef unsigned int word; /*延時*/void delay(word useconds) for(;useconds>0;useconds-); /*復(fù)位*/byte ow_reset(void) byte presence; DQ=0; /*DQ低電平*/ delay(29); /*480

33、us*/ DQ=1; /*DQ高電平*/ delay(3); /*等待*/ presence=DQ; /*presence信號*/ delay(25); return(presence); /*0允許,1禁止*/ /*從1-wire 總線上讀取一個字節(jié)*/byte read_byte(viod) byte i; byte value=0; for (i=8;i>0;i-) value>>=1; DQ=0; DQ=1; delay(1); if(DQ)value|=0x80; delay(6); return(value); /*向1-wire總線上寫一個字節(jié)*/void wr

34、ite_byte(char val) byte i; for (i=8;i>0;i-) /*一次寫一個字節(jié)*/ DQ=0; DQ=val&0x01; delay(5); DQ=1; val=val/2; delay(5); /*讀取溫度*/char Read_Temperature(void) union byte c2; int x; temp; ow_reset(); write_byte(0xcc); write_byte(0xBE); temp.c1=read_byte(); temp.c0=read_byte(); ow_reset(); write_byte(0xCC

35、); write_byte(0x44); return temp.x/2;結(jié) 論本系統(tǒng)是基于單片機89S51的處理,借助溫度傳感器與濕度傳感器的測量,可以完美的實現(xiàn)對環(huán)境溫度,濕度的監(jiān)測,實時顯示環(huán)境的溫度和濕度。并在溫度或濕度達(dá)到設(shè)定值上限時,報警系統(tǒng)會發(fā)出聲音報警,此系統(tǒng)完全能運用于工業(yè)生產(chǎn)、環(huán)境測量、貨物保管等部門。它結(jié)構(gòu)緊密、調(diào)試按裝方便、可塑性強,經(jīng)長期使用性能穩(wěn)定可靠。傳感器是實現(xiàn)測量與控制的首要環(huán)節(jié),是測控系統(tǒng)的關(guān)鍵部件,如果沒有傳感器對原始被測信號進(jìn)行準(zhǔn)確可靠的捕捉和轉(zhuǎn)換,一切準(zhǔn)確的測量和控制都將無法實現(xiàn)。工業(yè)生產(chǎn)過程的自動化測量和控制,幾乎主要依靠各種傳感器來檢測和控制生產(chǎn)過

36、程中的各種參量,使設(shè)備和系統(tǒng)正常運行在最佳狀態(tài),從而保證生產(chǎn)的高效率和高質(zhì)量。隨著社會的發(fā)展,傳感器的作用越來越突出。在現(xiàn)代工業(yè)生產(chǎn)尤其是自動化生產(chǎn)過程中,要用各種傳感器來監(jiān)視和控制生產(chǎn)過程中的各個參數(shù),使設(shè)備工作在正常狀態(tài)或最佳狀態(tài),并使產(chǎn)品達(dá)到最好的質(zhì)量。因此可以說,沒有眾多的優(yōu)良的傳感器,現(xiàn)代化生產(chǎn)也就失去了基礎(chǔ)。 附 錄附1 CD4051多路開關(guān)在本設(shè)計中,由于采用了溫濕度雙量控制,所以在信號采集中將有兩個模擬量被提取,這時選用多路開關(guān)就是很必要的。此系統(tǒng)選用的是CD4051多路開關(guān),它是一種單片、COMS、8通道開關(guān)。該芯片由DTL/TTL-COMS電平轉(zhuǎn)換器,帶有禁止端的8選1譯碼

37、器輸入,分別加上控制的8個COMS模擬開關(guān)TG組成。CD4051的內(nèi)部原理框圖如圖附錄1所示:圖附錄1 CD4051的內(nèi)部原理框圖CD4051 引腳功能見圖附錄1。CD4051相當(dāng)于一個單刀八擲開關(guān),開關(guān)接通哪一通道,由輸入的3位地址碼ABC來決定。其真值表見表1。INH是禁止端,當(dāng) INH=1時,各通道均不接通。此外,CD4051還設(shè)有另外一個電源端VEE,以作為電平位移時使用,從而使得通常在單組電源供電條件下工作的 CMOS電路所提供的數(shù)字信號能直接控制這種多路開關(guān),并使這種多路開關(guān)可傳輸峰峰值達(dá)15V的交流信號。例如,若模擬開關(guān)的供電電源VDD=5V, VSS=0V,當(dāng)VGG=5V時,只

38、要對此模擬開關(guān)施加05V的數(shù)字控制信號,就可控制幅度范圍為5V5V的模擬信號。輸出端OUT/IN輸出端OUT/IN和各通道的接通關(guān)系如表附錄1。表附錄1 輸出端OUT/IN輸出端OUT/IN和各通道的接通關(guān)系輸入狀態(tài)接通通道 輸入狀態(tài)接通通道INHCBAINHCBA000000101500011011060 010201117001131xxx均不顯示01004附2 89S51系統(tǒng)程序及子程序#include<reg51.h>#include<intrins.h>#include<math.h>#include<string.h>struct P

39、ID unsigned int SetPoint; /*設(shè)定目標(biāo) Desired Value*/unsigned int Proportion; /*比例常數(shù) Proportional Const*/unsigned int Integral; /*積分常數(shù) Integral Const */unsigned int Derivative; /*微分常數(shù) Derivative Const*/unsigned int LastError; /*Error-1 */unsigned int PrevError; /*Error-2 */unsigned int SumError; /*Sums o

40、f Errors*/; struct PID spid; /*PID Control Structure*/unsigned int rout; /*PID Response (Output) */unsigned int rin; /*PID Feedback (Input) */sbit data1=P10;sbit clk=P11;sbit plus=P20;sbit subs=P21;sbit stop=P22;sbit output=P34;sbit DQ=P33;unsigned char flag,flag_1=0;unsigned char high_time,low_time

41、,count=0;/*占空比調(diào)節(jié)參數(shù)*/unsigned char set_temper=35;unsigned char temper;unsigned char i;unsigned char j=0;unsigned int s;/*延時子程序,延時時間以12M晶振為準(zhǔn),延時時間為30us×time */void delay(unsigned char time)unsigned char m,n;for(n=0;n<time;n+)for(m=0;m<2;m+)/* 寫一位數(shù)據(jù)子程序 */void write_bit(unsigned char bitval)EA

42、=0;DQ=0; /*拉低DQ以開始一個寫時序*/if(bitval=1)_nop_();DQ=1; /*如要寫1,則將總線置高*/delay(5); /*延時90us供DA18B20采樣*/DQ=1; /*釋放DQ總線*/_nop_();_nop_();EA=1;/* 寫一字節(jié)數(shù)據(jù)子程序*/void write_byte(unsigned char val)unsigned char i;unsigned char temp;EA=0; /*關(guān)中斷*/TR0=0;for(i=0;i<8;i+) /*寫一字節(jié)數(shù)據(jù),一次寫一位*/temp=val>>i; /*移位操作,將本次要

43、寫的位移到最低位*/temp=temp&1;write_bit(temp); /*向總線寫該位*/delay(7); /*延時120us后*/ TR0=1;EA=1; /*開中斷*/* 讀一位數(shù)據(jù)子程序 */unsigned char read_bit()unsigned char i,value_bit;EA=0;DQ=0; /*拉低DQ,開始讀時序*/_nop_();_nop_();DQ=1; /*釋放總線*/for(i=0;i<2;i+)value_bit=DQ;EA=1;return(value_bit);/* 讀一字節(jié)數(shù)據(jù)子程序 */unsigned char read

44、_byte()unsigned char i,value=0;EA=0;for(i=0;i<8;i+)if(read_bit() /*讀一字節(jié)數(shù)據(jù),一個時序中讀一次,并作移位處理*/value|=0x01<<i;delay(4); /*延時80us以完成此次都時序,之后再讀下一數(shù)據(jù)*/EA=1;return(value);/* 復(fù)位子程序 */unsigned char reset()unsigned char presence;EA=0;DQ=0; /*拉低DQ總線開始復(fù)位*/delay(30); /*保持低電平480us*/DQ=1; /*釋放總線*/delay(3);p

45、resence=DQ; /*獲取應(yīng)答信號*/delay(28); /*延時以完成整個時序*/EA=1;return(presence); /*返回應(yīng)答信號,有芯片應(yīng)答返回0,無芯片則返回1*/* 獲取溫度子程序 */void get_temper()unsigned char i,j;doi=reset(); /*復(fù)位*/while(i!=0); /*1為無反饋信號*/i=0xcc; /*發(fā)送設(shè)備定位命令*/write_byte(i);i=0x44; /*發(fā)送開始轉(zhuǎn)換命令*/write_byte(i);delay(180); /*延時*/doi=reset(); /*復(fù)位*/while(i!=

46、0);i=0xcc; /*設(shè)備定位*/write_byte(i);i=0xbe; /*讀出緩沖區(qū)內(nèi)容*/write_byte(i);j=read_byte();i=read_byte();i=(i<<4)&0x7f;s=(unsigned int)(j&0x0f);s=(s*100)/16;j=j>>4;temper=i|j; /*獲取的溫度放在temper中*/*=Initialize PID Structure=*/void PIDInit (struct PID *pp) memset ( pp,0,sizeof(struct PID);/*=PI

47、D計算部分 =*/unsigned int PIDCalc( struct PID *pp, unsigned int NextPoint )unsigned int dError,Error;Error = pp->SetPoint - NextPoint;/*偏差*/pp->SumError += Error;/*積分dError = pp->LastError - pp->PrevError;/*當(dāng)前微分*/pp->PrevError = pp->LastError;pp->LastError = Error;return (pp->Proportion * Error/*比例*/+ pp->Integral * pp->SumError /*積分項*/+ pp->Derivative * dError);/* 微分項*/* 溫度比較處理子程序 */compare_temper()unsigned ch

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論