基于單片機(jī)(MCU)的蔬菜大棚溫濕度監(jiān)測(cè)系統(tǒng)設(shè)計(jì)_第1頁(yè)
基于單片機(jī)(MCU)的蔬菜大棚溫濕度監(jiān)測(cè)系統(tǒng)設(shè)計(jì)_第2頁(yè)
基于單片機(jī)(MCU)的蔬菜大棚溫濕度監(jiān)測(cè)系統(tǒng)設(shè)計(jì)_第3頁(yè)
基于單片機(jī)(MCU)的蔬菜大棚溫濕度監(jiān)測(cè)系統(tǒng)設(shè)計(jì)_第4頁(yè)
基于單片機(jī)(MCU)的蔬菜大棚溫濕度監(jiān)測(cè)系統(tǒng)設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩33頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

目錄中文摘要I英文摘要II緒論11系統(tǒng)總體方案及傳感器選型31.1系統(tǒng)總體設(shè)計(jì)方案簡(jiǎn)述31.2系統(tǒng)的工作原理31.3傳感器的選型4溫度傳感器的選型4濕度傳感器的選擇52傳感器及其硬件電路設(shè)計(jì)62.1溫度傳感器DS18B20介紹62.2濕度傳感器HS1101介紹112.3硬件電路設(shè)計(jì)16溫度測(cè)量電路16濕度測(cè)量電路163人機(jī)接口電路173.1鍵盤(pán)局部173.2顯示局部173.3報(bào)警電路設(shè)計(jì)183.4RS-485異步半雙工通信總線194軟件設(shè)計(jì)204.1主程序流程圖204.2按鍵掃描子程序流程圖214.3溫度程序流程圖224.4濕度程序流程圖24結(jié)束語(yǔ)25致謝26參考文獻(xiàn)27附錄128附錄237基于單片機(jī)的蔬菜大棚溫濕度監(jiān)測(cè)系統(tǒng)設(shè)計(jì)摘要本設(shè)計(jì)首先給出了基于單片機(jī)的蔬菜大棚溫濕度監(jiān)測(cè)系統(tǒng)的總體方案,描述了溫度傳感器DS18B20和濕度傳感器HS1101的工作原理;其次,進(jìn)行了硬件電路的設(shè)計(jì),包括溫度測(cè)量電路、濕度測(cè)量電路、鍵盤(pán)與顯示電路以及報(bào)警電路;然后在硬件局部的根底上又進(jìn)行了軟件局部的設(shè)計(jì),包括主程序流程圖、按鍵掃描子程序流程圖和溫濕度程序流程圖,最后運(yùn)用C語(yǔ)言對(duì)各個(gè)局部進(jìn)行了編程。通過(guò)實(shí)踐證明,該系統(tǒng)具有性能好、操作方便等優(yōu)點(diǎn),并且實(shí)現(xiàn)了對(duì)溫濕度的測(cè)量、顯示、調(diào)節(jié)和報(bào)警功能。關(guān)鍵詞單片機(jī)溫度傳感器濕度傳感器THEMONITORINGSYSTEMOFTHETEMPERATUREANDHUMIDITYBASEDONSINGLECHIPMIRCROCOMPUTERABSTRACTInthispaper,wefirstpresentthegeneralschemeofthemonitoringsystemofthetemperatureandhumiditybasedonsinglechipmicrocomputer,anddescribetheworkingprincipleofthetemperaturesensorDS18B20andthehumiditysensorHS1101.Secondly,thispaperdesignedthehardwareelectriccircuitswhichincludetemperaturemeasurementcircuit,humiditymeasurementcircuit,keyanddisplaycircuitandalarmcircuit.Thenonthisbasis,itdesignedthesoftware,thissoftwarepartincludesmainprogramflowdiagrams,thekey-pressscanningsubprogramflowdiagramsandtemperatureandhumidityprogramflowdiagrams.Finally,usingClanguageprogrammedeachpartofthescheme.Provethroughpracticethesystemhastheadvantageofbetterperformanceandconvenientoperation,andalsorealizedthemeasurement,display,regulationandalarmfunctionoftemperatureandhumidity.KEYWORDSsinglechipmicrocomputerthetemperaturesensorthehumiditysensor緒論溫濕度是衡量溫室大棚的重要指標(biāo),它直接影響到栽培作物的的生長(zhǎng)和產(chǎn)量,為了能給作物提供一個(gè)適宜的生長(zhǎng)環(huán)境,首要問(wèn)題是加強(qiáng)溫室內(nèi)的溫濕度的檢測(cè),傳統(tǒng)的方法是用與濕度表、毛發(fā)濕度表、雙金屬式測(cè)量計(jì)和濕度試紙等測(cè)試器材,通過(guò)人工進(jìn)行檢測(cè),對(duì)不符合溫度和濕度要求的庫(kù)房進(jìn)行通風(fēng)、去濕和降溫等工作。這種人工測(cè)試方法費(fèi)時(shí)費(fèi)力、效率低,且測(cè)試的溫度及濕度誤差大,隨機(jī)性大。因此我們需要一種造價(jià)低廉、使用方便且測(cè)量準(zhǔn)確的溫濕度測(cè)量?jī)x。本設(shè)計(jì)即是針對(duì)這一問(wèn)題,設(shè)計(jì)出了能夠?qū)崿F(xiàn)溫濕度自動(dòng)檢測(cè),顯示,上下限報(bào)警等多功能的溫濕度監(jiān)測(cè)控制系統(tǒng)。在傳統(tǒng)的溫度測(cè)量系統(tǒng)設(shè)計(jì)中,往往采用模擬技術(shù)進(jìn)行設(shè)計(jì)。溫度傳感器一般采用熱電阻、熱電偶等模擬器件,需要額外加補(bǔ)償電路,安裝復(fù)雜,本錢(qián)較高。而且必須經(jīng)過(guò)A/D轉(zhuǎn)換后才可以被微處理器識(shí)別和處理。這樣就不可防止地遇到諸如引線誤差補(bǔ)償、多點(diǎn)測(cè)量中的切換誤差和信號(hào)調(diào)理電路的誤差等問(wèn)題;而其中某一環(huán)節(jié)處理不當(dāng),就可能造成整個(gè)系統(tǒng)性能的下降。而DS1820新型單總線數(shù)字溫度傳感器,采用3腳(或8腳)封裝,從DS1820讀出或?qū)懭霐?shù)據(jù)僅需要一根I/O口線,而且測(cè)量精度到達(dá)12位,最低精確到小數(shù)點(diǎn)后4位有效數(shù)字。用這種智能化數(shù)字式傳感器的優(yōu)勝顯而易見(jiàn)?,F(xiàn)代濕度測(cè)量方案最主要的有兩種:干濕球測(cè)濕法,電子式濕度傳感器測(cè)濕法。下面對(duì)這兩種方案進(jìn)行比擬:干濕球濕度計(jì)的特點(diǎn):干濕球濕度計(jì)的準(zhǔn)確度只有5%—7%RH。干濕球測(cè)濕法采用間接測(cè)量方法,通過(guò)測(cè)量干球、濕球的溫度經(jīng)過(guò)計(jì)算得到濕度值,因此對(duì)使用溫度沒(méi)有嚴(yán)格限制,在高溫環(huán)境下測(cè)濕不會(huì)對(duì)傳感器造成損壞。干濕球測(cè)濕法的維護(hù)相當(dāng)簡(jiǎn)單,在實(shí)際使用中,只需定期給濕球加水及更換濕球紗布即可。與電子式濕度傳感器相比,干濕球測(cè)濕法不會(huì)產(chǎn)生老化,精度下降等問(wèn)題。所以干濕球測(cè)濕方法更適合于在高溫及惡劣環(huán)境的場(chǎng)合使用。電子式濕度傳感器的特點(diǎn):電子式濕度傳感器的準(zhǔn)確度可以到達(dá)2%—3%RH。電子式濕度傳感器的精度水平要結(jié)合其長(zhǎng)期穩(wěn)定性去判斷,一般說(shuō)來(lái),電子式濕度傳感器的長(zhǎng)期穩(wěn)定性和使用壽命不如干濕球濕度傳感器。濕度傳感器是采用半導(dǎo)體技術(shù),因此對(duì)使用的環(huán)境溫度有要求,超過(guò)其規(guī)定的使用溫度將對(duì)傳感器造成損壞。所以電子式濕度傳感器測(cè)濕方法更適合于在潔凈及常溫的場(chǎng)合使用。系統(tǒng)完成后可以通過(guò)溫度傳感器DB18B20和濕度傳感器HS1101對(duì)大棚溫室內(nèi)的溫濕度進(jìn)行測(cè)量,通過(guò)單片機(jī)AT89S51對(duì)采集到的數(shù)據(jù)進(jìn)行處理,用LED顯示出當(dāng)前環(huán)境的溫濕度狀況,其中溫度可以有操作人員根據(jù)不同作物所需的最適宜溫度進(jìn)行調(diào)節(jié),當(dāng)環(huán)境溫度和設(shè)置的最適宜溫度之差大于3℃時(shí),報(bào)警裝置即會(huì)啟動(dòng)。1系統(tǒng)總體方案及傳感器選型1.1系統(tǒng)總體設(shè)計(jì)方案簡(jiǎn)述該溫濕度測(cè)控系統(tǒng)是由數(shù)據(jù)采集和處理系統(tǒng)和報(bào)警系統(tǒng)組成,由溫度、濕度傳感器,顯示器,鍵盤(pán)與報(bào)警電路等組成。通過(guò)對(duì)信號(hào)的采集、分析、處理,然后輸出信號(hào)來(lái)使執(zhí)行部件進(jìn)行動(dòng)作,使溫室大棚到達(dá)所要求指標(biāo)。1.2系統(tǒng)的工作原理溫濕度測(cè)控系統(tǒng)能完成數(shù)據(jù)采集和處理、顯示、串行通信、輸出控制信號(hào),實(shí)現(xiàn)人機(jī)對(duì)話等多種功能。由數(shù)據(jù)采集及處理、單片機(jī)、控制和人機(jī)接口等4個(gè)大的局部組成。該測(cè)控系統(tǒng)具有實(shí)時(shí)采集〔檢測(cè)溫室大棚內(nèi)的溫濕度〕、實(shí)時(shí)處理〔對(duì)監(jiān)測(cè)到的溫濕度值進(jìn)行比擬分析,決定下一步控制進(jìn)程〕、實(shí)時(shí)控制〔根據(jù)處理的結(jié)果發(fā)出控制指令,指揮被控對(duì)象動(dòng)作〕的功能。主要硬件包括溫度傳感器,濕度傳感器,AT89S51單片機(jī)、數(shù)據(jù)采集電路、LED顯示器、發(fā)光二極管、蜂鳴器、鍵盤(pán)等。其原理結(jié)構(gòu)圖如圖1-1所示:復(fù)位電路復(fù)位電路濕度傳感器處理電路溫度傳感器AT89S51單片機(jī)鍵盤(pán)顯示電路報(bào)警電路485半雙工收發(fā)器圖1-1原理結(jié)構(gòu)圖首先充分考慮氣候、環(huán)境因素對(duì)植物的影響,并根據(jù)溫室大棚內(nèi)植物保持正常狀態(tài)所需的溫度和濕度,設(shè)計(jì)出溫濕度參考值預(yù)先存儲(chǔ)于單片機(jī)中。系統(tǒng)的數(shù)據(jù)采集局部是將溫濕度傳感器置于溫室內(nèi)部,測(cè)出室內(nèi)的溫濕度值之后送入AT89S51單片機(jī)中,然后LED顯示出溫濕度測(cè)量值。單片機(jī)將預(yù)設(shè)的參考值與測(cè)量值進(jìn)行比擬,根據(jù)比擬結(jié)果做出判斷。當(dāng)溫濕度值超過(guò)允許的誤差范圍,系統(tǒng)將發(fā)出報(bào)警,如果有必要,工作人員還可以根據(jù)實(shí)際的情況通過(guò)鍵盤(pán)來(lái)人工修改片內(nèi)存儲(chǔ)的預(yù)設(shè)值。通過(guò)對(duì)整個(gè)系統(tǒng)的核心單片機(jī)局部的設(shè)計(jì),到達(dá)優(yōu)化控制溫濕度的目標(biāo)。1.3傳感器的選型傳感器是實(shí)現(xiàn)測(cè)量與控制的首要環(huán)節(jié),是測(cè)控系統(tǒng)的關(guān)鍵部件,如果沒(méi)有傳感器對(duì)原始被測(cè)信號(hào)進(jìn)行準(zhǔn)確可靠的捕捉和轉(zhuǎn)換,一切準(zhǔn)確的測(cè)量和控制都將無(wú)法實(shí)現(xiàn)。工業(yè)生產(chǎn)過(guò)程的自動(dòng)化測(cè)量和控制,幾乎主要依靠各種傳感器來(lái)檢測(cè)和控制生產(chǎn)過(guò)程中的各種參量,使設(shè)備和系統(tǒng)正常運(yùn)行在最正確狀態(tài),從而保證生產(chǎn)的高效率和高質(zhì)量,因此選擇正確的溫濕度傳感器在設(shè)計(jì)中起著至關(guān)重要的作用。溫度傳感器的選型方案一:采用熱電阻溫度傳感器熱電阻是利用導(dǎo)體的電阻隨溫度變化的特性制成的測(cè)溫元件。現(xiàn)應(yīng)用較多的有鉑、銅、鎳等熱電阻。其主要的特點(diǎn)為精度高、測(cè)量范圍大、便于遠(yuǎn)距離測(cè)量。鉑的物理、化學(xué)性能極穩(wěn)定,耐氧化能力強(qiáng),易提純,復(fù)制性好,工業(yè)性好,電阻率較高,因此,鉑電阻用于工業(yè)檢測(cè)中高精密測(cè)溫和溫度標(biāo)準(zhǔn)。缺點(diǎn)是價(jià)格貴,溫度系數(shù)小,受到磁場(chǎng)影響大,在復(fù)原介質(zhì)中易被玷污變脆。按IEC標(biāo)準(zhǔn)其測(cè)溫范圍為-200℃~650℃,百度電阻比W〔100〕=1.3850時(shí),R0為100Ω和10Ω,其允許的測(cè)量誤差A(yù)級(jí)為±〔0.15℃+0.002︱t︱〕,B級(jí)為±〔0.3℃+0.005︱t︱〕。銅電阻的溫度系數(shù)比鉑電阻大,價(jià)格低,也易于提純和加工,但其電阻率小,在腐蝕性介質(zhì)中使用穩(wěn)定性差。在工業(yè)中用于-50℃~180℃測(cè)溫。方案二:采用DS18B20作為溫度傳感器DS18B20是由Dallas半導(dǎo)體公司生產(chǎn)的“一線總線〞接口的溫度傳感器。一線總線結(jié)構(gòu)具有簡(jiǎn)潔且經(jīng)濟(jì)的特點(diǎn),可使用戶輕松地組建傳感器網(wǎng)絡(luò),從而為測(cè)量系統(tǒng)的構(gòu)建引入全新概念,DS18B20的測(cè)溫范圍為-55℃~+125℃,在-10℃~+85℃范圍內(nèi),精度為±0.0625℃,現(xiàn)場(chǎng)溫度可直接通過(guò)“一線總線〞以數(shù)字方式傳輸,大大提高了系統(tǒng)的抗干擾性。DS18B20適合于惡劣環(huán)境的現(xiàn)場(chǎng)溫度測(cè)量,如環(huán)境控制、設(shè)備或過(guò)程控制、測(cè)溫類消費(fèi)電子產(chǎn)品等。它工作在3V~5.5V的電壓范圍,采用多種封裝形式,從而使系統(tǒng)設(shè)計(jì)更靈活、方便,設(shè)定分辨率及用戶設(shè)定的報(bào)警溫度存儲(chǔ)在EEPROM中,掉電后依然保存。綜合比擬方案一與方案二,方案二更為適合于本設(shè)計(jì)系統(tǒng)對(duì)于溫度傳感器的選擇。濕度傳感器的選擇測(cè)量空氣濕度的方式很多,其原理是根據(jù)某種物質(zhì)從其周?chē)目諝馕账趾笠鸬奈锢砘蚧瘜W(xué)性質(zhì)的變化,間接地獲得該物質(zhì)的吸水量及周?chē)諝獾臐穸?。電容式、電阻式和濕漲式濕敏原件分別是根據(jù)其高分子材料吸濕后的介電常數(shù)、電阻率和體積隨之發(fā)生變化而進(jìn)行濕度測(cè)量的。方案一:采用HOS-201濕敏傳感器HOS-201濕敏傳感器為高濕度開(kāi)關(guān)傳感器,它的工作電壓為交流1V以下,頻率為50HZ~1KHZ,測(cè)量濕度范圍為0~100%RH,工作溫度范圍為0~50℃,阻抗在75%RH〔25℃〕時(shí)為1MΩ。這種傳感器原是用于開(kāi)關(guān)的傳感器,不能在寬頻帶范圍內(nèi)檢測(cè)濕度,因此,主要用于判斷規(guī)定值以上或以下的濕度電平。然而,這種傳感器只限于一定范圍內(nèi)使用時(shí)具有良好的線性,可有效地利用其線性特性。方案二:采用HS1100/HS1101濕度傳感器HS1101電容傳感器,在電路構(gòu)成中等效于一個(gè)電容器件,其電容量隨著所測(cè)空氣濕度的增大而增大。不需校準(zhǔn)的完全互換性,高可靠性和長(zhǎng)期穩(wěn)定性,快速響應(yīng)時(shí)間,專利設(shè)計(jì)的固態(tài)聚合物結(jié)構(gòu),由頂端接觸〔HS1100〕和側(cè)面接觸〔HS1101〕兩種封裝產(chǎn)品,適用于線性電壓輸出和頻率輸出兩種電路,適宜于制造流水線上的自動(dòng)插件和自動(dòng)裝配過(guò)程等。相對(duì)濕度在1%100%RH范圍內(nèi);電容量由16pF變到200pF,其誤差不大于±2%RH;響應(yīng)時(shí)間小于5S;溫度系數(shù)為0.04pF/℃??梢?jiàn)精度是較高的。綜合比擬方案一與方案二,方案一雖然滿足精度及測(cè)量濕度范圍的要求,但其只限于一定范圍內(nèi)使用時(shí)具有良好的線性,可有效地利用其線性特性。而且還不具備在本設(shè)計(jì)系統(tǒng)中對(duì)溫度-30~50℃的要求,因此,我們選擇方案二來(lái)作為本設(shè)計(jì)的濕度傳感器。2傳感器及其硬件電路設(shè)計(jì)2.1溫度傳感器DS18B20介紹測(cè)溫元件采用新型的溫度傳感器DS18B20。DS18B20是由Dallas半導(dǎo)體公司生產(chǎn)的“一線總線〞接口的溫度傳感器。一線總線結(jié)構(gòu)具有簡(jiǎn)潔且經(jīng)濟(jì)的特點(diǎn),可使用戶輕松地組建傳感器網(wǎng)絡(luò),從而為測(cè)量系統(tǒng)的構(gòu)建引入全新概念,DS18B20的測(cè)溫范圍為-55℃~+125℃,在-10℃~+85℃范圍內(nèi),精度為±0.0625℃,現(xiàn)場(chǎng)溫度可直接通過(guò)“一線總線〞以數(shù)字方式傳輸,大大提高了系統(tǒng)的抗干擾性。DS18B20適合于惡劣環(huán)境的現(xiàn)場(chǎng)溫度測(cè)量,如環(huán)境控制、設(shè)備或過(guò)程控制、測(cè)溫類消費(fèi)電子產(chǎn)品等。它工作在3V~5.5V的電壓范圍,采用多種封裝形式,從而使系統(tǒng)設(shè)計(jì)更靈活、方便,設(shè)定分辨率及用戶設(shè)定的報(bào)警溫度存儲(chǔ)在EEPROM中,掉電后依然保存。DS18B20的內(nèi)部結(jié)構(gòu)如圖2-1所示:圖2-1DS18B20的內(nèi)部結(jié)構(gòu)溫度測(cè)量原理電路如圖2-2所示:低溫度系數(shù)振蕩器低溫度系數(shù)振蕩器斜率累加器計(jì)數(shù)比擬器預(yù)置減法計(jì)數(shù)器減至0溫度存放器預(yù)置高溫度系數(shù)振蕩器減法計(jì)數(shù)器減至0圖2-2溫度測(cè)量原理電路DS18B20主要有4局部組成:64為ROM、溫度傳感器、非易失性溫度報(bào)警觸發(fā)器TH和TL、配置存放器。DS18B20有三個(gè)引腳,GND接地;DQ數(shù)字信號(hào)的輸出/輸入;Vdd為外接電源輸入端。DS18B20的封裝形式及引腳排列如圖2-3所示:圖2-3DS18B20的引腳排列圖DS18B20有4個(gè)主要的數(shù)據(jù)部件:(1)光刻ROM中的64位序列號(hào)是出廠前被光刻好的,它可以看作是該DS18B20的地址序列碼。64位光刻ROM的排列是:開(kāi)始8位〔28H〕是產(chǎn)品類型標(biāo)號(hào),接著的48位是該DS18B20自身的序列號(hào),最后8位是前面56位的循環(huán)冗余校驗(yàn)碼〔CRC=X8+X5+X4+1〕。光刻ROM的作用是使每一個(gè)DS18B20都各不相同,這樣就可以實(shí)現(xiàn)一根總線上掛接多個(gè)DS18B20的目的。(2)DS18B20中的溫度傳感器可完成對(duì)溫度的測(cè)量,以12位轉(zhuǎn)化為例:用16位符號(hào)擴(kuò)展的二進(jìn)制補(bǔ)碼讀數(shù)形式提供,以0.0625℃/LSB形式表達(dá),其中S為符號(hào)位。其中DQ為數(shù)字信號(hào)輸入/輸出端;GND為電源地;VDD為外接供電電源輸入端(采用寄生電源供電方式時(shí)接地)。DS18B20溫度數(shù)據(jù)如表2-1所示:表2-1DS18B20溫度數(shù)據(jù)表TEMPERATUREDIGITALOUTPUT〔Binary〕DIGITALOUTPUT(Hex)+125℃+85℃+25.0265℃+10.125℃+0.5℃0℃-0.5℃-10.125℃-25.0625℃-55℃000001111101000000000101010100000000000110010001000000001010001000000000000010000000000000000000111111111111100011111111010111101111111001101111111111001001000007D0h0550h0191h00A2h0008h0000hFFF8hFF5EhFF6EhFC90H(3)DS18B20溫度傳感器的存儲(chǔ)器DS18B20溫度傳感器的內(nèi)部存儲(chǔ)器包括一個(gè)高速暫存RAM和一個(gè)非易失性的可電擦除的EEPRAM,后者存放高溫度和低溫度觸發(fā)器TH、TL和結(jié)構(gòu)存放器。(4)配置存放器該字節(jié)各位的意義如表2-2所示:表2-2配置存放器結(jié)構(gòu)TMR1R011111低五位一直都是1,TM是測(cè)試模式位,用于設(shè)置DS18B20在工作模式還是在測(cè)試模式。在DS18B20出廠時(shí)該位被設(shè)置為0,用戶不要去改動(dòng)。R1和R0用來(lái)設(shè)置分辨率,如下表所示〔DS18B20出廠時(shí)被設(shè)置為12位〕:表2-3分辨率設(shè)置R1R0分辨率溫度最大轉(zhuǎn)換時(shí)間009位93075ms0110位187.5ms1011位375ms1112位750msDSl8B20工作過(guò)程中的協(xié)議如下:初始化:ROM操作命令;存儲(chǔ)器操作命令;處理數(shù)據(jù)。初始化單總線上的所有處理均從初始化開(kāi)始。ROM操作命令總線主機(jī)檢測(cè)到DSl820的存在,便可以發(fā)出ROM操作命令之一,這些命令如:指令代碼ReadROM(讀ROM)[33H]MatchROM(匹配ROM)[55H]SkipROM(跳過(guò)ROM][CCH]SearchROM(搜索ROM)[F0H]Alarmsearch(告警搜索)[ECH]存儲(chǔ)器操作命令指令代碼WriteScratchpad(寫(xiě)暫存存儲(chǔ)器)[4EH]ReadScratchpad(讀暫存存儲(chǔ)器)[BEH]CopyScratchpad(復(fù)制暫存存儲(chǔ)器)[48H]ConvertTemperature(溫度變換)[44H]RecallEPROM(重新調(diào)出)[B8H]ReadPowersupply(讀電源)[B4H]時(shí)序主機(jī)使用時(shí)間隙(timeslots)來(lái)讀寫(xiě)DSl820的數(shù)據(jù)位和寫(xiě)命令字的位(1)初始化時(shí)序見(jiàn)圖2-4。主機(jī)總線T0時(shí)刻發(fā)送一復(fù)位脈沖(最短為480us的低電平信號(hào)),接著在tl時(shí)刻釋放總線并進(jìn)入接收狀態(tài),DSl8B20在檢測(cè)到總線的上升沿之后,等待15-60us,接著DSl8B20在t2時(shí)刻發(fā)出存在脈沖(低電平持續(xù)60-240us),如圖中虛線所示:圖2-4主機(jī)讀時(shí)序(2)寫(xiě)時(shí)間隙當(dāng)主機(jī)總線t0時(shí)刻從高拉至低電平時(shí),就產(chǎn)生寫(xiě)時(shí)間隙,見(jiàn)圖2.5、圖2.6,從t0時(shí)刻開(kāi)始15us之內(nèi)應(yīng)將所需寫(xiě)的位送到總線上,DSl8B20在t0后15-60us間對(duì)總線采樣。假設(shè)低電平,寫(xiě)入的位是0,見(jiàn)圖2-5;假設(shè)高電平,寫(xiě)入的位是1,見(jiàn)圖2-6。連續(xù)寫(xiě)2位間的間隙應(yīng)大于1us。圖2-5DS18B20寫(xiě)0圖2-6DS18B20寫(xiě)1(3)讀時(shí)間隙見(jiàn)圖2-7,主機(jī)總線t0時(shí)刻從高拉至低電平時(shí),總線只須保持低電平t0一t1。之后在t1時(shí)刻將總線拉高,產(chǎn)生讀時(shí)間隙,讀時(shí)間隙在t1時(shí)刻后t2時(shí)刻前有效。t2距t0為15us,也就是說(shuō)t2時(shí)刻前主機(jī)必須完成讀位,并在t0后的60us一120us內(nèi)釋放總線。圖2-7主機(jī)讀時(shí)序2.2濕度傳感器HS1101介紹測(cè)量空氣濕度的方式很多,其原理是根據(jù)某種物質(zhì)從其周?chē)目諝馕账趾笠鸬奈锢砘蚧瘜W(xué)性質(zhì)的變化,間接地獲得該物質(zhì)的吸水量及周?chē)諝獾臐穸?。電容式、電阻式和濕漲式濕敏原件分別是根據(jù)其高分子材料吸濕后的介電常數(shù)、電阻率和體積隨之發(fā)生變化而進(jìn)行濕度測(cè)量的。下面介紹HS1101濕度傳感器及其應(yīng)用。HS1101的特點(diǎn)是不需校準(zhǔn)的完全互換性,高可靠性和長(zhǎng)期穩(wěn)定性,具有快速響應(yīng)時(shí)間,可以自動(dòng)化焊接,包括波峰焊或水浸,專利設(shè)計(jì)的固態(tài)聚合物結(jié)構(gòu),適用于線性電壓輸出和頻率輸出兩種電路,適宜于制造流水線上的自動(dòng)插件和自動(dòng)裝配過(guò)程等。圖2-8為濕敏電容工作的溫、濕度范圍。圖2-9為濕度-電容響應(yīng)曲線。圖2-8濕敏電阻工作的溫、濕度范圍圖2-9濕度-電容響應(yīng)曲線相對(duì)濕度在1%100%RH范圍內(nèi);電容量由16pF變到200pF,其誤差不大于±2%RH;響應(yīng)時(shí)間小于5S;溫度系數(shù)為0.04pF/℃。可見(jiàn)精度是較高的。HUMIREL濕度傳感器HS1101基于獨(dú)特工藝設(shè)計(jì)的電容元件,這些相對(duì)濕度傳感器可以大批量生產(chǎn)??梢詰?yīng)用于辦公自動(dòng)化,車(chē)廂內(nèi)空氣質(zhì)量控制,家電,工業(yè)控制系統(tǒng)等。在需要濕度補(bǔ)償?shù)膱?chǎng)合他也可以得到很大的應(yīng)用。HS1101的外部結(jié)構(gòu)及符號(hào)如圖2-10所示:圖2-10HS1101的符號(hào)及外部結(jié)構(gòu)HS1101電容式濕度傳感器,在電路構(gòu)成中等效于一個(gè)電容器件,其電容量隨著所測(cè)空氣濕度的增大而增大。如何將電容的變化量準(zhǔn)確地轉(zhuǎn)變?yōu)橛?jì)算機(jī)易于接受的信號(hào),常有兩種方法:一是將該濕敏電容置于運(yùn)放與阻容組成的橋式振蕩電路中,所產(chǎn)生的正弦波電壓信號(hào)經(jīng)整流、直流放大、再A/D轉(zhuǎn)換為數(shù)字信號(hào);另一種是將該濕敏電容置于555振蕩電路中,將電容值的變化轉(zhuǎn)為與之成反比的電壓頻率信號(hào),可直接被計(jì)算機(jī)所采集。空氣濕度與電壓頻率的典型值如表2-4所示:表2-4空氣濕度與電壓頻率的典型值濕度頻率濕度頻率%RHHZ%RHHZ073516066001072247064682071008063303069769061684068531006033506728本系統(tǒng)采用的是將HS1101接入555定時(shí)器組成的震蕩電路中,輸出一定頻率的方波信號(hào),這種方法結(jié)構(gòu)簡(jiǎn)單,使用方便,因此被廣泛采用,具體結(jié)構(gòu)圖如2-11下:圖2-11HS1101和NE556構(gòu)成的濕度采集電路集成定時(shí)器NE555一方面可以形成單穩(wěn)態(tài)電路,另一方面可以形成多諧振蕩電路,本系統(tǒng)選用的是NE556,它內(nèi)部含有兩個(gè)NE555定時(shí)器,其中R1,R2,C1,C2和NE556構(gòu)成多諧振蕩器,外接電阻R1,R2和濕敏電容C1構(gòu)成了對(duì)濕敏電容C1的充電回路,7端通過(guò)芯片內(nèi)部的晶體管對(duì)地短路又構(gòu)成了對(duì)C1的放電回路,并將2,6端相連引入到片內(nèi)比擬器。該振蕩電路的兩個(gè)暫穩(wěn)態(tài)過(guò)程交替如下:首先是電源Ucc通過(guò)R1,R2向C2充電,經(jīng)T1充電時(shí)后,Uc2充至內(nèi)比擬器的高觸發(fā)電平,約2/3Ucc,此時(shí)輸入引腳3端由高電平突降為低電平,然后通過(guò)R2放電,經(jīng)T2放電時(shí)間后,Uc2下降到比擬器的低觸發(fā)電平,約1/3Ucc,此時(shí)輸入引腳3端又由低電平躍升為高電平,如此反復(fù),形成方波輸出,其中充放電時(shí)間為:T1=C1(R1+R2)ln2(2-1)T2=C1R2ln2(2-2)因而輸出的方波頻率為:f=1/(T1+T2)=1/C1(R1+2R2)ln2=50HZ(2-3)只要改變定時(shí)元件R1和R2就可以改變脈沖的頻率,從多諧振蕩器出來(lái)的信號(hào)又接入到單穩(wěn)態(tài)觸發(fā)器,單穩(wěn)態(tài)觸發(fā)器它有兩個(gè)觸發(fā)狀態(tài),一個(gè)穩(wěn)定狀態(tài),一個(gè)暫穩(wěn)定狀態(tài),在外來(lái)觸發(fā)脈沖作用下,能夠由穩(wěn)定狀態(tài)翻轉(zhuǎn)到暫穩(wěn)定狀態(tài),而暫穩(wěn)定狀態(tài)維持一段時(shí)間后,再自動(dòng)的返回到穩(wěn)定狀態(tài),且暫穩(wěn)定狀態(tài)持續(xù)時(shí)間長(zhǎng)短取決與電路本身參數(shù),圖中,R3,C3和傳感器HS1101是外接地定時(shí)元件,觸發(fā)脈沖Ui由5端輸出,由8端輸入,下降沿有效,從9端輸出一個(gè)幅度,寬度都一定的矩形波信號(hào),輸出的脈沖寬度Tp為:Tp=R3(C2+Cx)ln3(2-4)雖然從NE556輸出的是標(biāo)準(zhǔn)的脈沖信號(hào),為了減少外界對(duì)信號(hào)的干擾,設(shè)計(jì)中采用低通濾波器,過(guò)濾掉高頻信號(hào)的干擾,然后直接用單片機(jī)的定時(shí)計(jì)數(shù)器T1來(lái)測(cè)量脈寬Tp,通過(guò)脈寬值,我們可以得到濕度傳感器的電容值,知道了傳感器的電容值,我們就可以分析電容與濕度的關(guān)系,下列圖為HS1101的典型輸出曲線,相對(duì)濕度在1%-99%RH之間,電容量由163pf變化到202pf,其誤差不大于±2%RH,響應(yīng)時(shí)間小于5S,溫度系數(shù)為0.04pf/℃。濕度傳感器HS1101的典型輸出曲線如圖2-12所示:圖2-12HS1101的典型輸出曲線根據(jù)HS1101的典型輸出曲線,以及傳感器的相關(guān)資料,我們可以得到電容值與濕度值的近似關(guān)系為:RH≈(Cx-163〕/0.39(2-5)我們可以根據(jù)前面測(cè)量出的NE556輸出的脈寬值,求出相應(yīng)的電容值,再根據(jù)上式,我們就可以由相應(yīng)的電容值求出濕度值。2.3硬件電路設(shè)計(jì)溫度測(cè)量電路溫度測(cè)量采用DS18B20,它是單線傳輸器件,不需校正溫宿,接口接的是P3.6,具體的溫度測(cè)量電路如圖3-1所示:圖3-1溫度測(cè)量電路濕度測(cè)量電路濕度測(cè)量用的是HS1101電容式濕度傳感器,他與NE556組成一方波發(fā)生電路,濕度改變對(duì)應(yīng)頻率的變化,用單片機(jī)采集頻率值進(jìn)行轉(zhuǎn)化得出濕度值,具體的濕度測(cè)量電路如圖3-2所示:圖3-2濕度測(cè)量電路3人機(jī)接口電路3.1鍵盤(pán)局部根據(jù)該系統(tǒng)的實(shí)際情況,我選用了獨(dú)立式鍵盤(pán)。獨(dú)立式鍵盤(pán)是各個(gè)按鍵相互獨(dú)立地連通兩條輸入數(shù)據(jù)線。這種鍵盤(pán)結(jié)構(gòu)的優(yōu)點(diǎn)是電路簡(jiǎn)單,缺點(diǎn)是當(dāng)鍵的數(shù)量較多時(shí)占用的I/O線的數(shù)量較多。其電路結(jié)構(gòu)如圖3-3所示:圖3-3鍵盤(pán)連接3.2顯示局部八位數(shù)碼管采用動(dòng)態(tài)顯示方式,動(dòng)態(tài)顯示可節(jié)省端口,方便連接,由于每個(gè)數(shù)碼管處于輪流導(dǎo)通狀態(tài),因此,每次只有一個(gè)數(shù)碼管點(diǎn)亮,比靜態(tài)數(shù)碼管可省電。數(shù)碼管顯示電路如圖3-4所示:圖3-4顯示電路3.3報(bào)警電路設(shè)計(jì)在微型計(jì)算機(jī)控制系統(tǒng)中,為了平安生產(chǎn),對(duì)于一些重要的參數(shù)或系統(tǒng)部位,都設(shè)有緊急狀態(tài)報(bào)警系統(tǒng),以便提醒操作人員注意,或采取緊急措施。其方法就是把計(jì)算機(jī)采集的數(shù)據(jù)或記過(guò)計(jì)算機(jī)進(jìn)行數(shù)據(jù)處理、數(shù)字濾波,標(biāo)度變換之后,與該參數(shù)上下限給定值進(jìn)行比擬,如果高于上限值〔或低于下限值〕那么進(jìn)行報(bào)警,否那么就作為采樣的正常值,進(jìn)行顯示和控制。本設(shè)計(jì)采用兩個(gè)發(fā)光二級(jí)管和蜂鳴器作為報(bào)警電路。發(fā)光二級(jí)管與單片機(jī)的兩個(gè)I/O口連接,當(dāng)測(cè)定的溫度或者濕度超過(guò)上下限時(shí),二極管發(fā)光報(bào)警。蜂鳴器報(bào)警電路的設(shè)計(jì)只需購(gòu)置市售的壓電式蜂鳴器,然后通過(guò)AT89S51的1根口線經(jīng)驅(qū)動(dòng)器驅(qū)動(dòng)蜂鳴器發(fā)聲。壓電式蜂鳴器需要約10mA的驅(qū)動(dòng)電流,可以使用TTL系列集成電路7406或7407低電平驅(qū)動(dòng),也可以用一個(gè)晶體三極管驅(qū)動(dòng)。在圖中,當(dāng)輸出高電平“1〞時(shí),晶體管導(dǎo)通,壓電蜂鳴器兩端獲得約+5V電壓而鳴叫;當(dāng)輸出低電平“0〞時(shí),三極管截止,蜂鳴器停止發(fā)聲。圖3-5、3-6為電路原理圖:圖3-5發(fā)光二級(jí)管報(bào)警電路圖3-6三極管驅(qū)動(dòng)的蜂鳴器報(bào)警電路3.4RS-485異步半雙工通信總線RS-485異步半雙工通信總線是被廣泛使用的數(shù)據(jù)通信總線,往往應(yīng)用在集中控制樞紐與分散控制單元之間。在本系統(tǒng)中,使用RS-485異步半雙工通信總線,能夠多點(diǎn)測(cè)量大棚溫濕度,并與上位機(jī)連接,實(shí)現(xiàn)遠(yuǎn)程控制。485總線應(yīng)用電路圖如圖3-7所示:圖3-7RS-485總線的應(yīng)用電路圖在應(yīng)用系統(tǒng)中,主機(jī)與分機(jī)一般相隔較遠(yuǎn),而分級(jí)系統(tǒng)上電或復(fù)位又常常不在同一個(gè)時(shí)刻完成,如果在此時(shí)DE端電位為“1〞,那么485總線的輸出將會(huì)處于發(fā)送狀態(tài),也就是占用了通信總線,這樣其他的分機(jī)就無(wú)法與主機(jī)進(jìn)行通信。這種情況尤其表現(xiàn)在某個(gè)分機(jī)出現(xiàn)異常情況下〔死機(jī)〕,會(huì)使整個(gè)系統(tǒng)通信崩潰。因此在電路設(shè)計(jì)時(shí),應(yīng)保證系統(tǒng)上電復(fù)位時(shí)DE端電位為“0〞。485總線輸出電路的設(shè)計(jì)要考慮到線路上的各種干擾及線路特性阻抗的匹配。由于工程環(huán)境的原因,現(xiàn)場(chǎng)常有各種形式的干擾,所以485總線的傳輸端一定要加有保護(hù)措施,在電路設(shè)計(jì)中采用穩(wěn)壓管D1、D2組成的吸收回路,有效地抵抗干擾??紤]到線路的特殊情況〔如一條分機(jī)的485芯片被擊穿短路〕,為防止總線中其他分機(jī)的通信受到影響,在輸出端串聯(lián)了兩個(gè)20Ω的電阻R34、R36,這樣本機(jī)的硬件故障就不會(huì)使整個(gè)總線的通信受到影響。在應(yīng)用系統(tǒng)工程的現(xiàn)場(chǎng)施工中,由于通信載體是雙絞線,它的特性阻抗為120Ω左右,所以電路設(shè)計(jì)時(shí),在RS-485網(wǎng)絡(luò)傳輸線的始端和末端應(yīng)加一個(gè)120Ω的電阻〔如圖中R35〕,以減少線路上傳輸信號(hào)的反射。由于RS-485芯片的特性,接收器的檢測(cè)靈敏度為±200mV,即差分輸入端VA-VB≥200mV,輸出邏輯1;VA-VB≤-200mV,輸出邏輯0;而A、B端電位差的絕對(duì)值小于200mV時(shí),輸出為不確定。如果在總線上所有發(fā)送器被禁止時(shí),接收器輸出邏輯0,這會(huì)誤認(rèn)為通信幀的起始引起工作不正常。解決這個(gè)問(wèn)題的方法是人為的使A端電位高于B端電位,這樣RXD的電平在485總線不發(fā)送期間呈現(xiàn)唯一的高電平,8951單片機(jī)就不會(huì)被誤中斷而收到亂字符,通過(guò)在485電路的A、B端加接上拉電阻R33、R37,即可很好的解決這個(gè)問(wèn)題。485芯片的軟件編程對(duì)產(chǎn)品的可靠性也有很大影響。由于485總線是異步半雙工的通信總線,在某一個(gè)時(shí)刻,總線只可能呈現(xiàn)一種狀態(tài),所以這種方式一般適用于主機(jī)對(duì)分機(jī)的查詢方式通信,總線上必然有一種始終處于主機(jī)地位的設(shè)備在巡檢其他分機(jī),所以需要制定一套合理的通信協(xié)議來(lái)協(xié)調(diào)總線的分時(shí)共用。這里采用的是數(shù)據(jù)包通信方式,通信數(shù)據(jù)是成幀成包發(fā)送的,每包數(shù)據(jù)都有引導(dǎo)碼、長(zhǎng)度碼、地址碼、地址碼、命令碼、內(nèi)容、校驗(yàn)碼等局部組成。其中引導(dǎo)碼是用于同步每一包數(shù)據(jù)的引導(dǎo)頭;長(zhǎng)度碼是這一包數(shù)據(jù)的總長(zhǎng)度;命令碼是主機(jī)對(duì)分機(jī)的控制命令;地址碼是分機(jī)的本機(jī)地址號(hào);內(nèi)容是這一包數(shù)據(jù)里的各種信息;校驗(yàn)碼是這一包數(shù)據(jù)的校驗(yàn)標(biāo)志,可以采用奇偶校驗(yàn)、和校驗(yàn)等不同方式。在485通信的芯片中,尤其要注意對(duì)485控制端DE的軟件編程。為了可靠地工作,在485總線狀態(tài)切換時(shí)需要做適當(dāng)延時(shí),再進(jìn)行數(shù)據(jù)的收發(fā),具體做法是在數(shù)據(jù)發(fā)送狀態(tài)下,先將控制端置“1〞,延時(shí)1ms左右的時(shí)間,再發(fā)送有效的數(shù)據(jù),一包數(shù)據(jù)發(fā)送結(jié)束后再延時(shí)1ms左右的時(shí)間后,將控制端置“0〞。這樣的處理會(huì)使總線在狀態(tài)切換時(shí),有一個(gè)穩(wěn)定的工作過(guò)程。4軟件設(shè)計(jì)4.1主程序流程圖主程序流程圖如圖4-1所示:開(kāi)始開(kāi)始初始化單片機(jī)初始化DS18B20初始化HS1101初始化LED讀取溫度數(shù)據(jù)顯示讀取濕度數(shù)據(jù)返回圖4-1系統(tǒng)主程序流程圖4.2按鍵掃描子程序流程圖按鍵掃描子程序如圖4-2所示:KEYKEY0鍵按下KEY1鍵按下設(shè)定溫度值加1設(shè)定溫度值減1正常工作指示燈工作YYYNNN異常指示燈工作蜂鳴器報(bào)警檢測(cè)到溫度在正常范圍圖4-2按鍵掃描子程序流程圖4.3溫度程序流程圖溫度報(bào)警程序流程圖如圖4-3所示:開(kāi)始開(kāi)始總線復(fù)位跳過(guò)ROM設(shè)置匹配ROM發(fā)送ROM編號(hào)報(bào)警開(kāi)始溫度轉(zhuǎn)換延時(shí)1秒顯示溫度DS18B20開(kāi)始溫度轉(zhuǎn)換是否超限制溫度NY圖4-3溫度報(bào)警流程圖4.4濕度程序流程圖濕度測(cè)量局部程序流程圖如圖4-4所示:濕度處理函數(shù)濕度處理函數(shù)重新設(shè)置定時(shí)器,計(jì)數(shù)從頭來(lái)過(guò),等待3s后下一次結(jié)果定時(shí)器0、1初始化讀取定時(shí)器計(jì)數(shù)值函數(shù)返回定時(shí)器設(shè)置50ms定時(shí),啟動(dòng)定時(shí)中斷對(duì)計(jì)數(shù)值求算法得濕度值,保存,以便顯示調(diào)用是否中斷60次,即3sYN圖4-4濕度測(cè)量局部程序流程圖結(jié)束語(yǔ)本設(shè)計(jì)以滿足工況需要最大限度的提高工作效率和節(jié)省人力物力為出發(fā)點(diǎn),使用AT89S51單片機(jī)對(duì)溫室大棚內(nèi)的溫濕度進(jìn)行數(shù)據(jù)的采集、接收,處理、發(fā)送和控制。單片機(jī)采用C語(yǔ)言程序,建立模塊化結(jié)構(gòu),各模塊互相獨(dú)立,有較高的可靠性和擴(kuò)展性。可與上位機(jī)連機(jī)通訊,實(shí)行遠(yuǎn)程監(jiān)控,大大提高了儲(chǔ)存質(zhì)量也節(jié)省了大量的人力物力。本設(shè)計(jì)的有優(yōu)點(diǎn)在于操作人員可根據(jù)不同農(nóng)作物的需求來(lái)設(shè)定最正確適宜溫度值,在當(dāng)前溫度偏離所設(shè)定的適宜溫度±3℃時(shí),報(bào)警裝置發(fā)光二極管和蜂鳴器即會(huì)啟動(dòng),該系統(tǒng)根本實(shí)現(xiàn)了對(duì)溫濕度的測(cè)量與顯示,操作人員可以根據(jù)顯示指示,來(lái)判斷當(dāng)前溫濕度是否對(duì)作物生長(zhǎng)有利。該系統(tǒng)的缺乏之處在于沒(méi)能夠?qū)崿F(xiàn)溫濕度的自動(dòng)調(diào)節(jié),可以進(jìn)一步參加溫濕度自動(dòng)調(diào)節(jié)電路,在當(dāng)前溫濕度超出作物所需的最適宜條件時(shí),啟動(dòng)溫濕度調(diào)節(jié)裝置,就可以真正的實(shí)現(xiàn)溫濕度的自動(dòng)控制。致謝參考文獻(xiàn)[1]梁中明.基于DS18B20與虛擬I~(2)C總線的數(shù)字溫度測(cè)量裝置設(shè)計(jì)[J].湖北電子報(bào),2006.[2]劉迎春.傳感器原理—設(shè)計(jì)與應(yīng)用[M].北京:國(guó)防科技大學(xué)出版社,2005.205-207.[3]余成波.胡新宇,趙勇.傳感器與自動(dòng)檢測(cè)技術(shù)[M].北京:高等教育出版社,2006.[4]金杰.DS18B20實(shí)現(xiàn)高精度溫度測(cè)量[J].鄭州電子報(bào),2005,(2005-02-27).[5]吳興慧,王彩君.傳感器與信號(hào)處理[M].北京:電子工業(yè)出版社,1998.[6]張世英,劉萬(wàn)瑩,李仁兵.基于AT89S51單片機(jī)的溫濕度監(jiān)控系統(tǒng)設(shè)計(jì)[A].中南六省〔區(qū)〕自動(dòng)化學(xué)會(huì)第24屆學(xué)術(shù)年會(huì)會(huì)議論文集[C],2006.[7]新型單片機(jī)AT89S51及其應(yīng)用舉例[J].1996.[8]蘇家健,曹柏榮,汪志峰.單片機(jī)原理及應(yīng)用技術(shù)[M].北京:高等教育出版社,2006.[9]趙娜,趙剛.基于51單片機(jī)的溫度測(cè)量系統(tǒng)[J].微計(jì)算機(jī)信息,2007,23(1):146—148.[10]劉攀,俞杰.基于單片機(jī)的溫度測(cè)控系統(tǒng)[J].蘭州交通大學(xué)學(xué)報(bào),2005,6(12):103—106.[11]黃明,梁旭,岳洋.基于CAN總線設(shè)計(jì)實(shí)現(xiàn)的數(shù)據(jù)采集監(jiān)控系統(tǒng)[J].化工自動(dòng)化及儀表,2023,37〔6〕:79-81.[12]張培仁,孫力.基于C語(yǔ)言C8501F系列微控制器原理與應(yīng)用[M].北京:清華大學(xué)出版社,2007.[13]OreganoSystems.MC8051IPCoreUserGuide[z].OreganoSystems.2002.6.[14]馮顯英,葛榮雨.基于數(shù)字溫濕度傳感器SHT11的溫濕度測(cè)控系統(tǒng)[J].自動(dòng)化儀表,2006,27(1):59—61.[15]李俊,張曉東.基于單片機(jī)的溫濕度檢測(cè)與控制系統(tǒng)研究[J].微計(jì)算機(jī)信息,2023,24(17):116—118.[16]陶然,王樹(shù)文.智能化溫室環(huán)境控制系統(tǒng)的研究[J].農(nóng)機(jī)化研究,2003,33(2):53—55.[17]SensirionCompany.SHT1x/SHT7xhumidity&temperaturesensordatasheet[Z].2005.附錄1:程序清單/***************************************************/#include"reg52.h"#include"intrins.h"http://_nop_();延時(shí)函數(shù)用#include"string.h"#defineDisdataP1//段碼輸出口#defineucharunsignedchar#defineuintunsignedint/*485通信命令*/#define__ACTIVE_0x01 //主機(jī)詢問(wèn)從機(jī)是否存在#define__GETDATA_0x02 //主機(jī)發(fā)送讀設(shè)備請(qǐng)求#define__OK_0x03 //從機(jī)應(yīng)答#define__STATUS_0x04 //從機(jī)發(fā)送設(shè)備狀態(tài)信息#define__MAXSIZE0x08 //緩沖區(qū)長(zhǎng)度#define__ERRLEN12 //任何通信幀長(zhǎng)度超過(guò)12那么表示出錯(cuò)uchardbuf[__MAXSIZE]; //該緩沖區(qū)用于保存設(shè)備狀態(tài)信息uchardev=1; //該字節(jié)用于保存本機(jī)設(shè)備號(hào)unsignedintS,G,TH,RS;unsignedcharB1,B2,B3;//定義數(shù)的各位數(shù),分別為百,十,個(gè)位uintnumber;unsignedcharnum=0;sbitDQ=P3^6;//溫度輸入口sbitHS=P3^5;//濕度輸入口sbitDIN=P1^7;//LED小數(shù)點(diǎn)控制sbitLED1=P2^2;sbitLED2=P2^3;sbitBEEP=P2^7;//蜂鳴器輸出口sbitkey1=P2^0;sbitkey2=P2^1;sbitS1=P0^0;//位選端sbitS2=P0^1;sbitS3=P0^2;sbitS4=P0^3;sbitS5=P0^4;sbitS6=P0^5;sbitS7=P0^6;sbitS8=P0^7;sbit M_RE=P2^6;//接收器使能,0有效sbitM_DE=P2^5;//驅(qū)動(dòng)器使能,1有效uinth,T;uinttemp;ucharcoadASCii[]={48,49,50,51,52,53,54,55,56,57};//**************溫度小數(shù)局部用查表法***********//ucharcodeditab[16]={0x00,0x01,0x01,0x02,0x03,0x03,0x04,0x04,0x05,0x06,0x06,0x07,0x08,0x08,0x09,0x09};//ucharcodedis_7={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//共陰LED段碼表"0""1""2""3""4""5""6""7""8""9"uchardatatemp_data[2]={0x00,0x00};//讀出溫度暫放uchardatadisplay[4]={0x00,0x00,0x00,0x00};//顯示單元數(shù)據(jù),共3個(gè)數(shù)據(jù)和一個(gè)運(yùn)算暫用/*****************11us延時(shí)函數(shù)*************************/voiddel10ms(){uinta,b;for(a=40;a!=0;a--)for(b=248;b!=0;b--);}voiddelay(uintt){for(;t>0;t--);}/*******************************************************/voidtimer0()interrupt1{TH0=0x3C;TL0=0xB0;//定時(shí)50msnum++;//記到20就直接停止}/*******************************************************/voidscankey(){if(key1==0){del10ms();if(key1==0){TH++;}}if(key2==0){del10ms();if(key2==0){TH--;}}T=display[2]*10+display[1];if((TH-3)<T<(TH+3)){LED1=0;LED2=1;BEEP=1;}if((T<TH-3)||(T>TH+3)){BEEP=0;LED1=1;LED2=0;}}/****************顯示掃描函數(shù)***************************/scan(){S=TH/10;G=TH%10;S8=1;S7=1;S6=1;S5=1;S4=1;S3=1;S2=1;S1=0;Disdata=dis_7[display[2]];delay(200);Disdata=0x00;S8=1;S7=1;S6=1;S5=1;S4=1;S3=1;S2=0;S1=1;Disdata=dis_7[display[1]];DIN=1;delay(200);Disdata=0x00;S8=1;S7=1;S6=1;S5=1;S4=1;S3=0;S2=1;S1=1;Disdata=dis_7[display[0]];delay(200);Disdata=0x00;S8=1;S7=1;S6=1;S5=1;S4=0;S3=1;S2=1;S1=1;Disdata=dis_7[S];delay(200);Disdata=0x00;S8=1;S7=1;S6=1;S5=0;S4=1;S3=1;S2=1;S1=1;Disdata=dis_7[G];delay(200);Disdata=0x00;S8=1;S7=1;S6=0;S5=1;S4=1;S3=1;S2=1;S1=1;Disdata=dis_7[B1];delay(200);Disdata=0x00;S8=1;S7=0;S6=1;S5=1;S4=1;S3=1;S2=1;S1=1;Disdata=dis_7[B2];DIN=1;delay(200);Disdata=0x00;S8=0;S7=1;S6=1;S5=1;S4=1;S3=1;S2=1;S1=1;Disdata=dis_7[B3];delay(200);Disdata=0x00;}/****************DS18B20復(fù)位函數(shù)************************/ow_reset(void){charpresence=1;while(presence){while(presence){DQ=1;_nop_();_nop_();//從高拉倒低DQ=0;delay(50);//550usDQ=1;delay(6);//66uspresence=DQ;//presence=0復(fù)位成功,繼續(xù)下一步}delay(45);//延時(shí)500uspresence=~DQ;}DQ=1;//拉高電平}/****************DS18B20寫(xiě)命令函數(shù)************************///向1-WIRE總線上寫(xiě)1個(gè)字節(jié)voidwrite_byte(ucharval){uchari;for(i=8;i>0;i--){DQ=1;_nop_();_nop_();//從高拉倒低DQ=0;_nop_();_nop_();_nop_();_nop_();//5usDQ=val&0x01;//最低位移出delay(6);//66usval=val/2;//右移1位}DQ=1;delay(1);}/****************DS18B20讀1字節(jié)函數(shù)************************///從總線上取1個(gè)字節(jié)ucharread_byte(void){uchari;ucharvalue=0;for(i=8;i>0;i--){DQ=1;_nop_();_nop_();value>>=1;DQ=0;_nop_();_nop_();_nop_();_nop_();//4usDQ=1;_nop_();_nop_();_nop_();_nop_();//4usif(DQ)value|=0x80;delay(6);//66us}DQ=1;return(value);}/****************讀出溫度函數(shù)************************///read_temp(){ow_reset();//總線復(fù)位delay(200);write_byte(0xcc);//發(fā)命令write_byte(0x4e);write_byte(TH);//發(fā)命令write_byte(RS);delay(200);ow_reset();write_byte(0xcc);//發(fā)命令write_byte(0x44);delay(200);ow_reset();write_byte(0xcc);//發(fā)命令write_byte(0xbe);temp_data[0]=read_byte();//讀溫度值的第字節(jié)temp_data[1]=read_byte();//讀溫度值的高字節(jié)temp=temp_data[1];temp<<=8;temp=temp|temp_data[0];//兩字節(jié)合成一個(gè)整型變量returntemp;//返回溫度值}/****************溫度數(shù)據(jù)處理函數(shù)************************///二進(jìn)制高字節(jié)的低半字節(jié)和低字節(jié)的高半字節(jié)組成一字節(jié),這個(gè)//字節(jié)的二進(jìn)制轉(zhuǎn)換為十進(jìn)制后,就是溫度值的百、十、個(gè)位值,而剩//下的低字節(jié)的低半字節(jié)轉(zhuǎn)化成十進(jìn)制后,就是溫度值的小數(shù)局部/********************************************************/work_temp(uinttem){if(tem>6348)//溫度值正負(fù)判斷{tem=65536-tem;}//負(fù)溫度求補(bǔ)碼,標(biāo)志位置1display[3]=tem&0x0f;//取小數(shù)局部的值display[0]=ditab[display[3]];//存入小數(shù)局部顯示值display[3]=tem>>4;//取中間八位,即整數(shù)局部的值display[2]=display[3]%100/10;//取十位數(shù)據(jù)暫存display[1]=display[3]%100%10;}///////////////////////////////////////////////////////////////////////////////////voidREADSTATUS()interrupt0using1//產(chǎn)生外部中斷0時(shí)表示設(shè)備狀態(tài)發(fā)生改變,該函數(shù)使用存放器組1{get_status();//獲得設(shè)備狀態(tài)信息,并將其存入dbuf指向的存儲(chǔ)區(qū),數(shù)據(jù)最后一字節(jié)置0表示數(shù)據(jù)結(jié)束}/*該函數(shù)接收一幀數(shù)據(jù)并進(jìn)行檢測(cè),無(wú)論該幀是否錯(cuò)誤,函數(shù)均會(huì)返回*函數(shù)參數(shù)type保存接收到的命令字*當(dāng)接收到數(shù)據(jù)幀錯(cuò)誤或其地址位不為0時(shí)〔非主機(jī)發(fā)送幀〕,函數(shù)回0,反之返回1*/bitrecv_cmd(uchar*type){bitdb=0;//當(dāng)接收到的上一個(gè)字節(jié)為0xdb時(shí),該位置位bitc0=0;//當(dāng)接收到的上一個(gè)字節(jié)為0xc0時(shí),該位置位uchardata_buf[__ERRLEN];//保存接收到的幀uchartmp;ucharecc=0;uchari;M_DE=0;//置發(fā)送禁止,接收允許M_RE=0;/*接收一幀數(shù)據(jù)*/i=0;while(!c0)//循環(huán)直至幀接收完畢{RI=0;while(!RI);tmp=SBUF;RI=0;if(db==1)//接收到的上一個(gè)字節(jié)為0xdb{switch(tmp){case0xdd:data_buf[i]=0xdb;//0xdbdd表示0xdbecc=ecc^0xdb;db=0;break;case0xdc:data_buf[i]=0xc0;//0xdbdc表示0xc0ecc=ecc^0xc0;db=0;break;defaultreturn0;//幀錯(cuò)誤,返回}i++;}switch(tmp)//正常情況{case0xc0://幀結(jié)束c0=1;break;case0xdb://檢測(cè)到轉(zhuǎn)義字符db=1;break;default://普通數(shù)據(jù)data_buf[i]=tmp;//保存數(shù)據(jù)ecc=ecc^tmp;//計(jì)算校驗(yàn)字節(jié)i++;}if(i==__ERRLEN)//幀超長(zhǎng),錯(cuò)誤,返回return0;}/*判斷幀是否錯(cuò)誤*/if(i<4)//幀過(guò)短,錯(cuò)誤,返回return0;if(ecc!=0)//校驗(yàn)錯(cuò)誤,返回return0;if(data_buf[0]!=dev)//非訪問(wèn)本機(jī)命令,錯(cuò)誤,返回return0;*type=data_buf[1];//獲得命令字return1;//函數(shù)成功返回}/*該函數(shù)實(shí)現(xiàn)將溫度和濕度值以ASCII碼的形式通過(guò)485串口發(fā)送到PC機(jī)串口調(diào)試助手,格式為:設(shè)備號(hào)+T:溫度值+M:濕度值+換行*/voidsend_data_pc(void){send_byte(ASCii[dev]);//設(shè)備號(hào) send_byte(84);//發(fā)送T: send_byte(58);send_byte(ASCii[display[2]]);//發(fā)送溫度數(shù)據(jù)send_byte(ASCii[display[1]]);send_by

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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)論