基于單片機的農業(yè)大棚控制監(jiān)測系統(tǒng)修改3_第1頁
基于單片機的農業(yè)大棚控制監(jiān)測系統(tǒng)修改3_第2頁
基于單片機的農業(yè)大棚控制監(jiān)測系統(tǒng)修改3_第3頁
基于單片機的農業(yè)大棚控制監(jiān)測系統(tǒng)修改3_第4頁
基于單片機的農業(yè)大棚控制監(jiān)測系統(tǒng)修改3_第5頁
已閱讀5頁,還剩81頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

目錄中文摘要 3英文摘要. 41 引言 61.1 研究背景及意義 61.2 設計思想及基本功能 72 系統(tǒng)總體設計 82.1 設計要求 82.2方案選擇 82.2.1溫濕度傳感器的選擇 82.2.2光照傳感器的選擇 82.2.3單片機的選擇 83系統(tǒng)硬件設計 103.1整體方案設計 103.1.1系統(tǒng)概述 103.1.2系統(tǒng)框圖 103.2最小系統(tǒng)模塊 103.2.1STC89C52簡介 103.2.2最小系統(tǒng)電路 123.3DHT11傳感器電路 133.3.1DHT11簡介 133.3.2DHT11模塊電路 143.4光照采集電路 153.4.1光照傳感器簡介 153.4.2BH1750FVI簡介 153.4.3光照傳感器模塊電路 163.5液晶顯示電路 163.5.11602液晶簡介 163.5.2液晶顯示模塊電路 173.6蜂鳴器模塊 183.7按鍵輸入模塊 193.8LED顯示電路 194軟件設計 214.1程序語言及開發(fā)環(huán)境 214.2程序流程圖設計 214.2.1總體程序流程圖設計 214.2.21602液晶程序設計 224.2.3溫濕度DHT11傳感器程序設計 234.2.4光照模塊程序設計 245仿真 26結論 27謝辭 28參考文獻 29附錄A主程序代碼 31附錄B系統(tǒng)設計原理圖 57附錄C系統(tǒng)仿真總圖 58基于單片機的農業(yè)大棚檢測采集系統(tǒng)設計摘要:溫度和濕度是在農業(yè)生產中常見的和基本的參數(shù)之一,它們會大幅度影響作物產量和品質。本次設計將單片機、傳感器、計算機技術相結合設計出一套符合現(xiàn)代溫室大棚的溫濕度采集系統(tǒng)。本設計采用單片機最小系統(tǒng)為核心部分,檢測部分使用DHT11溫濕度一體傳感器和BH1750FVI光照檢測傳感器、顯示設備采用1602液晶,可以同時顯示檢測到的溫度、濕度還有光照強度等值。同時附有鍵盤電路、LED燈電路、蜂鳴器電路等,共同組成了本設計的超限報警模塊。整個設計結構簡單緊湊,功耗較低,抗干擾能力強、總體性能比較好,實現(xiàn)一種智能、快捷、方便的溫濕度和光照的測量系統(tǒng)。關鍵詞:溫室大棚;單片機;溫濕度傳感器ThedesignofthecontrolandmonitoringsystemofagriculturalgreenhousebasedonsinglechipmicrocomputerAbstract:Temperatureandhumidityareoneofthecommonandbasicparametersinagriculturalproduction,whichwillgreatlyaffectcropyieldandquality.Thisdesigncombinessinglechipmicrocomputer,sensorandcomputertechnologytodesignasetoftemperatureandhumidityacquisitionsystemwhichconformstothemoderngreenhouse.Inthisdesign,theminimumsystemofsingle-chipmicrocomputerisusedasthecorepart,DHT11integratedtemperatureandhumiditysensorandbh1750fvilightdetectionsensorareusedinthedetectionpart,and1602liquidcrystalisusedinthedisplaydevice,whichcandisplaythedetectedtemperature,humidityandlightintensityatthesametime.Atthesametime,thekeyboardcircuit,LEDlightcircuit,buzzercircuitandsoonareattachedtoformtheoverrunalarmmodule.Thewholedesignhassimpleandcompactstructure,lowpowerconsumption,stronganti-interferenceabilityandgoodoverallperformance.Itrealizesanintelligent,fastandconvenienttemperature,humidityandlightmeasurementsystem.Keywords:Greenhouse;MCU;temperatureandhumiditysensor基于單片機的農業(yè)大棚檢測采集系統(tǒng)設計引言研究背景及意義農業(yè)生產一直是我國非常重視的一個方面,雖然我國每年都會給予農業(yè)補助,但仍然存在很多問題。目前我國農業(yè)生產方面面臨的問題有:首先,中國人口眾多,其次是資源匱乏。再次,中國的農業(yè)生產是昂貴的和低技術的,沒有大規(guī)模的工業(yè)。解決這些問題的關鍵是要把中國的農業(yè)從傳統(tǒng)農業(yè)轉變?yōu)楝F(xiàn)代科學技術農業(yè),以保障糧食安全,再提高效率、質量、產量。農業(yè)環(huán)境由高技術、高質量和高生產力的技術控制,這有助于大規(guī)模的推廣,設備齊全,中國農業(yè)現(xiàn)代化的步伐加快。溫度和濕度是在農業(yè)生產中常見的和基本的參數(shù)之一,它們會大幅度影響作物產量和品質。隨著現(xiàn)代科學和技術在提高農業(yè)生產力方面發(fā)揮著重要作用,我們可以借助單片機程序,設計系統(tǒng)以確定溫度和濕度,實現(xiàn)實時顯示、儲存和監(jiān)測溫度、濕度,實現(xiàn)符合國內生產體系、產品質量與節(jié)能需求的溫控采集系統(tǒng)。本次設計欲將單片機、傳感器、計算機技術相結合設計出一套符合現(xiàn)代溫室大棚的溫濕度采集系統(tǒng)。國外溫室控制技術以美國最為先進,主要是因為其計算機的發(fā)展非常迅速,這也使得計算機為主的溫室環(huán)境控制技術迅速發(fā)展。溫室大棚內控制包括室內溫度,土壤溫度,相對空氣濕度,通風口狀況,保溫幕狀況,pH調節(jié),CO2濃度;室外控制包括光照強度,相對空氣濕度,大氣濕度,風向風速等。溫室系統(tǒng)的應用為農業(yè)生產發(fā)展提供了很大的幫助,提高了工作效率,減少勞動量,收獲了更多更好的產品。荷蘭從上個世紀八十年代就開始溫室計算機自動控制系統(tǒng)的開發(fā),并不斷地研究模擬控制軟件。并通過交互式界面顯示必要的信息,設置參數(shù)并繪制曲線,修正值曲線和測量數(shù)據(jù)曲線可以從設定的時間數(shù)據(jù)庫中調用。其方便的方式可以直接查詢數(shù)據(jù)計算機的串行端口和完成上位機和下位機之間的信息交流。實現(xiàn)參數(shù)設置,信息顯示和控制等功能,同時還能夠進行數(shù)據(jù)調整,完成溫室環(huán)境監(jiān)控。設計思想及基本功能針對我國蔬菜大棚存在的問題,通過調查分析,確定了設計任務。本系統(tǒng)要能對溫濕度、光照度進行實時采集,采集到的數(shù)據(jù)傳入單片機中,通過單片機對采集到的數(shù)據(jù)進行處理,處理過的數(shù)據(jù)通過單片機接口送達顯示模塊顯示,當數(shù)據(jù)超出系統(tǒng)設定的報警值時,系統(tǒng)會進行報警,要能通過按鍵調整報警閾值大小。本系統(tǒng)可以全面且及時的對溫室環(huán)境中的溫濕度進行采集與監(jiān)測,并且還可以將以前的數(shù)據(jù)進行保存與記錄,方便人們及時查看與數(shù)據(jù)對比,此外設計了顯示模塊,通過使用圖形的方式更加直觀顯示參數(shù),實現(xiàn)了智能化遠程監(jiān)測溫濕度的思想。

系統(tǒng)總體設計設計要求(1)熟悉51單片機集成開發(fā)環(huán)境,運用C語言編寫工程文件;

(2)熟練應用所選用單片機的內部結構、資源,以及軟硬件調試設備的基本方法;

(3)自行構建基于單片機的最小系統(tǒng),完成相關硬件電路的設計實現(xiàn);

(4)理解溫度、濕度和光強等的檢測原理和掌握實現(xiàn)方法。2.2方案選擇2.2.1溫濕度傳感器的選擇方案一:選用DHT11作為溫濕度檢測模塊。DHT11是一款數(shù)字輸出的復合傳感器,包含一個電阻式干事元件和NTC式溫度檢測元件,可測20—90%RH濕度,誤差為±5%RH,0—50℃,誤差范圍±2℃。方案二:選用SHT11作為溫濕度檢測模塊。SHT11是一款精度較高的元件,濕度測量范圍為0—100%RH,測量精度為0.1%RH;溫度測量范圍為-40-123.8℃,精度為±0.01℃。價格較高。本次是大棚監(jiān)測,對精度要求不高,應選擇方案一。2.2.2光照傳感器的選擇選用集成的光照傳感器例如BH1750FVI,該集成的傳感器模塊靈敏度大,測量范圍廣(1-65535lx),對光源的依賴性低,并且通過IIC接口和單片機進行數(shù)據(jù)傳輸通信,省去了中間AD轉換的步驟,輸出的結果即當前的光照強度,單位是勒克斯。2.2.3單片機的選擇采用單片機作為系統(tǒng)控制器。單片機具有可靠性強、性價比搞、電壓低、功耗低等優(yōu)點得到迅猛發(fā)展和大范圍推廣,單片機算術運算功能強,軟件編程靈活,自由度大,可用軟件編程實現(xiàn)各種邏輯功能,本身帶有定時器、計數(shù)器,可以用來定時和計數(shù),并且其功耗低,體積小,計數(shù)成熟和成本低等優(yōu)點。方案一:采用TI公司的STM32作為主芯片,DSP是專業(yè)的運算芯片,他的運行速度和性能的穩(wěn)定性都值得稱贊,適合復雜運算,成本較高。方案二:采用STC89C51單片機作為主控芯片,作為一款入門級單片機,價格便宜,適用面廣,能應對多種情況,并且后期維護和升級方便。方案三:采用ATML公司的AT,價格便宜,運行速度較慢,只能進行簡單運算。綜上所述,選擇方案二,價格適中,性能穩(wěn)定,后期維護升級也方便。

3系統(tǒng)硬件設計3.1整體方案設計3.1.1系統(tǒng)概述整個系統(tǒng)以STC89C52單片機為核心器件,配合電阻電容晶振等器件,構成單片機的最小系統(tǒng)。其它個模塊圍繞著單片機最小系統(tǒng)展開。其中包括,溫濕度采集使用DHT11溫濕度一體的傳感器,負責采集溫度和濕度的數(shù)據(jù)后發(fā)給單片機;光照強度采集使用BH1750FVI傳感器集成的光照模塊GY-30,負責將采集到的光照強度發(fā)給單片機;按鍵部分使用市面上常見的輕觸按鍵作為系統(tǒng)的輸入設置模塊;顯示設備為1602液晶;報警則采用蜂鳴器和LED的形式,實現(xiàn)聲光報警效果;電源供電則采用USB5V供電。3.1.2系統(tǒng)框圖1602液晶單片機最小系統(tǒng)DHT11溫濕度一體傳感器1602液晶單片機最小系統(tǒng)DHT11溫濕度一體傳感器蜂鳴器集成光照蜂鳴器集成光照傳感器LED指示燈按鍵設置輸入LED指示燈按鍵設置輸入圖3-1系統(tǒng)框圖3.2最小系統(tǒng)模塊3.2.1STC89C52簡介(1)概述STC89C52是一個低電壓,高性能CMOS8位單片機,片內含8kbytes的可反復擦寫的Flash只讀程序存儲器和256bytes的隨機存取數(shù)據(jù)存儲器(RAM),器件采用ATMEL公司的高密度、非易失性存儲技術生產,兼容標準MCS-51指令系統(tǒng),片內置通用8位中央處理器和Flash存儲單元,功能強大的STC89C52單片機可為您提供許多較復雜系統(tǒng)控制應用場合。(2)8051單片機的引腳功能MCS-51系列單片機一般采用40個引腳,雙列直插式封裝,用HMOS工藝制造,其外部引腳排列如圖3-2所示。其中,各引腳的功能為:圖3-2STC89C52引腳圖①主電源引腳VCC(40腳),接+5V電源正端;GND(20腳),接+5V電源地端;②外接晶體或外部振蕩器引腳XTAL1(19腳),接外部晶振的一個引腳。在單片機內部,它是一個反相放大器 的輸入端。當采用外部振蕩器時,此引腳應接 地。XTAL2(18腳),接外部晶振的另一個引腳。在片內接至反相放大器的輸出端和 內部時鐘電路的輸入端。當采用外部振蕩器時,此腳接外部振蕩器的輸出端。③控制信號線RESET(9腳),復位信號輸入端,復位/掉電時內部RAM的備用電源輸入端。ALE(30腳),地址鎖存允許/編程脈沖輸入,用ALE鎖存從P0口輸出的低8位地址。在對片內EPROM編程時,編程脈沖由此輸入。PSEN(29腳),外部程序存儲器讀選通信號,低電平有效。 EA(31腳),訪問外部存儲器允許/編程電壓輸入。EA為高電平時,訪問內部存 儲器;低電平時,訪問外部存儲器。④多功能I/O口引腳8051單片機設有4個雙向I/O口(P0、P1、P2、P3),每一組I/O口線都可以獨立地用作輸入或輸出口,其中:P0口(32~39腳)——雙向口(三態(tài)),可作為輸入/輸出口,可驅動8個LSTTL門電路。實際應用中常作為分時使用的地址/數(shù)據(jù)總線口,對外部程序或數(shù)據(jù)存儲器尋址時低8位地址與數(shù)據(jù)總線分時使用P0口:先送低8位地址信號到P0口,由地址鎖存信號ALE的下降沿將地址信號鎖存到地址鎖存器后,再作為數(shù)據(jù)總線的口線對數(shù)據(jù)進行輸入或輸出。P1口(1~8腳)——準雙向口(三態(tài)),可驅動4個LSTTL門電路。用作輸入線時,口鎖存器必須由單片機先寫入“1”,每一位都可編程為輸入或輸出線。P2口(21~28)——準雙向口(三態(tài)),可驅動4個LSTTL門電路。可作為輸入/輸出口,實際應用中一般作為地址總線的高8位,與P0口一起組成16位地址總線,用于對外部存儲器的接口電路進行尋址。P3口(10~17腳)——準雙向口(三態(tài)),可驅動4個LSTTL門電路。雙功能口,作為第一功能使用時,與P1口一樣;作為第二功能使用時,每一位都有特定用途。3.2.2最小系統(tǒng)電路STC89C52的最小系統(tǒng)如圖3-3所示,整個最小系統(tǒng)由三個部分組成,晶振電路部分、復位電路部分、電源電路等三個部分組成。晶振電路包括2個30pF的電容C2和C3,以及12M的晶振X1。電容的作用在這里是起振作用,幫助晶振更容易的起振,取值范圍是15-33pF。晶振的取值也可以是24M,晶振的取值越高,單片機的執(zhí)行速度越快。在進行電路設計的時候,晶振部分越靠近單片機越好。單片機復位電路就好比電腦的重啟部分,當電腦在使用中出現(xiàn)死機,按下重啟按鈕電腦內部的程序從頭開始執(zhí)行。單片機也一樣,當單片機系統(tǒng)在運行中,受到環(huán)境干擾出現(xiàn)程序跑飛的時候,按下復位按鈕內部的程序自動從頭開始執(zhí)行。圖3-3單片機最小系統(tǒng)3.3DHT11傳感器電路3.3.1DHT11簡介DHT11(圖3-4)數(shù)字溫濕度傳感器是一款含有已校準數(shù)字信號輸出的溫濕度復合傳感器。它應用專用的數(shù)字模塊采集技術和溫濕度傳感技術,確保產品具有極高的可靠性與卓越的長期穩(wěn)定性。傳感器包括一個電阻式感濕元件和一個NTC測溫元件,并與一個高性能8位單片機相連接。因此該產品具有品質卓越、超快響應、抗干擾能力強、性價比極高等優(yōu)點。圖3-4數(shù)字溫濕度傳感器3.3.2DHT11模塊電路DHT11的模塊電路圖如下圖所示:圖3-5DHT11模塊連接圖(1)接口說明 建議連接線長度短于20米時用5K上拉電阻,大于20米時根據(jù)實際情況使用合適的上拉電阻。(2)引腳說明Pin1:(VDD),電源引腳,供電電壓為3-5.5V。Pin2:(DATA),串行數(shù)據(jù),單總線。Pin3:(NC),空腳,請懸浮。Pin4(VDD),接地端,電源負極。(3)串行接口(單線雙向)DATA用于微處理器與DHT11之間的通訊和同步,采用單總線數(shù)據(jù)格式,一次通訊時間4ms左右,數(shù)據(jù)分小數(shù)部分和整數(shù)部分,具體格式在下面說明。當前小數(shù)部分用于以后擴展,現(xiàn)讀出為零。操作流程如下:一次完整的數(shù)據(jù)傳輸為40bit,高位先出。數(shù)據(jù)格式為8位濕度整數(shù)數(shù)據(jù)+8位濕度小數(shù)數(shù)據(jù)+8位溫度整數(shù)數(shù)據(jù)+8位溫度小數(shù)數(shù)據(jù)+8位校驗和,數(shù)據(jù)傳送正確時校驗和數(shù)據(jù)等于“8位濕度整數(shù)數(shù)據(jù)+8位濕度小數(shù)數(shù)據(jù)+8位溫度整數(shù)數(shù)據(jù)+8位溫度小數(shù)數(shù)據(jù)”所得結果的末8位。用戶MCU發(fā)送一次開始信號后,DHT11從低功耗模式轉換到高速模式,等待主機開始信號結束后,DHT11發(fā)送響應信號,送出40bit的數(shù)據(jù),并觸發(fā)一次信號采集,用戶可選擇讀取部分數(shù)據(jù).從模式下,DHT11接收到開始信號觸發(fā)一次溫濕度采集,如果沒有接收到主機發(fā)送開始信號,DHT11不會主動進行溫濕度采集.采集數(shù)據(jù)后轉換到低速模式。3.4光照采集電路3.4.1光照傳感器簡介光照傳感器就是能夠感知和測量環(huán)境中某點光照強度的一種敏感元器件,它將環(huán)境中的光照或者與其相關的參量的信息轉換成電信號,根據(jù)這些電信號的強弱便可獲得被監(jiān)測點在環(huán)境中的光照度信息從而可以進行檢測、監(jiān)控、報警;還可以通過接口電路與計算機組成自動檢測、監(jiān)控、報警系統(tǒng)。3.4.2BH1750FVI簡介(1)產品介紹BH1750FVI是一種用于兩線式串行總線接口的數(shù)字型光強度傳感器集成電路。利用它的高分辨率可以探測較大范圍的光強度變化。實物圖如圖3-6所示。圖3-6BH1750FVI實物圖(2)產品介紹1.支持ICBUS接口(f/sModeSupport)。2.接近視覺靈敏度的光譜靈敏度特性(峰值靈敏度波長典型值:560nm)。3.輸出對應亮度的數(shù)字值。4.對應廣泛的輸入光范圍(相當于1-65535lx)。5.通過降低功率功能,實現(xiàn)低電流化。6.通過50Hz/60Hz除光噪音功能實現(xiàn)穩(wěn)定的測定7.支持1.8V邏輯輸入接口。8.無需其他外部件。9.光源依賴性弱(白熾燈,熒光燈,鹵素燈,白光LED,日光燈)。10.有兩種可選的IICslave地址。11.可調的測量結果影響較大的因素為光入口大小。12.使用這種功能能計算1.1lx到100000lx馬克斯/分鐘的范圍。13.最小誤差變動在±20%。14.受紅外線影響很小。3.4.3光照傳感器模塊電路光照傳感器模塊電路圖如下圖所示:圖3-7光照模塊電路圖1.PD接近人眼反應的光敏二極管。2.AMP集成運算放大器:將PD電流轉換為PD電壓。3.ADC模數(shù)轉換獲取16位數(shù)字數(shù)據(jù)。4.OSC內部振蕩器(時鐘頻率典型值:320kHz),該時鐘為內部邏輯時鐘。3.5液晶顯示電路3.5.11602液晶簡介液晶顯示器是一種顯示器件,具有小體積、輕重量、低功耗等特色。由于其功耗低、顯示的信息量大(例如,文本,圖形,曲線等)、無電磁輻射、使用壽命長,它已被廣泛應用在便攜式電子產品。本系統(tǒng)采用的1602是一款物美價廉的液晶顯示屏,可以顯示2行標準字符,每行共有16個字符。在通信系統(tǒng),智能操作儀表和辦公設備的自動化中被廣泛的應用,主要功能是顯示ASCII字符,因此被稱為“字符型顯示裝置”。1602LCD主要技術參數(shù):◆顯示容量:16×2個字符◆芯片工作電壓:4.5—5.5V◆工作電流:2.0mA(5.0V)◆模塊最佳工作電壓:5.0V◆字符尺寸:2.95×4.35(W×H)mm3.5.2液晶顯示模塊電路本液晶模塊的電路的連接圖如圖3-15所示,第1腳和第2腳分別接到了電路的GND和VCC,這2個腳是液晶工作的電源輸入腳。第3腳通過一個10K的電位器連接到地端,可通過調節(jié)該電位器來調節(jié)液晶的對比度。第4腳是液晶的寄存器控制腳,接到了單片機的P12腳上。第5腳是液晶的讀寫控制腳,接到了單片機的P13腳上。第6腳是液晶的使能腳,接到了單片機的P14腳上。第7腳到第14腳是液晶的數(shù)據(jù)/地址8位總線,接到了單片機的P0口上。最后第15腳和第16腳是液晶的背光電源腳,直接連接系統(tǒng)VCC和GND。圖3-8液晶模塊連接圖引腳如表3-1所示:表3-11602液晶引腳說明編號符號引腳說明編號符號引腳說明1VSS電源地9D2數(shù)據(jù)2VDD電源正極10D3數(shù)據(jù)3VL液晶顯示偏壓11D4數(shù)據(jù)4RS數(shù)據(jù)/命令選擇12D5數(shù)據(jù)5R/W讀/寫選擇13D6數(shù)據(jù)6E使能信號14D7數(shù)據(jù)7D0數(shù)據(jù)15BLA背光源正極8D1數(shù)據(jù)16BLK背光源負極第一腳:接地電源VSS。第二腳:5V正電源為VDD。第三腳:VL為液晶顯示器對比度調整的端口,對比度的強弱由接電源的不同決定,對比度的調整可以通過一個10k的電位器。第四腳:RS是寄存器選擇,高水平的數(shù)據(jù)寄存器,低選擇指令寄存器。第五腳:R/W的讀和寫信號線,高水平低的讀操作,寫操作。其中RS與R/W的關系決定了當時狀態(tài),例如兩端共同為0時能夠寫入命令或者顯示其地址,當兩端同為1時可以讀忙碌信號,當RS為1,R/W為0時能夠將數(shù)據(jù)錄入。第六腳:使能端E,當E端由1至0時,液晶模塊中的命令開始被運行。第七至十四腳:D0-D7為8位雙向數(shù)據(jù)線。第十五腳:背光源正極。第十六腳:背光源負極。3.6蜂鳴器模塊蜂鳴器是一種一體化結構的電子訊響器,采用直流電壓供電,廣泛應用于計算機、打印機、復印機、報警器、電子玩具、汽車電子設備、電話機、定時器等電子產品中作發(fā)聲器件。蜂鳴器主要分為壓電式蜂鳴器和電磁式蜂鳴器兩種類型。壓電式蜂鳴器主要由多諧振蕩器、壓電蜂鳴片、阻抗匹配器及共鳴箱、外殼等組成。當接通電源后多諧振蕩器起振,輸出1.5~2.5kHZ的音頻信號,阻抗匹配器推動壓電蜂鳴片發(fā)聲。電磁式蜂鳴器由振蕩器、電磁線圈、磁鐵、振動膜片及外殼等組成。接通電源后,振蕩器產生的音頻信號電流通過電磁線圈,使電磁線圈產生磁場。振動膜片在電磁線圈和磁鐵的相互作用下,周期性地振動發(fā)聲。本設計使用的是電磁式蜂鳴器。圖3-9蜂鳴器電路3.7按鍵輸入模塊鍵盤是人與單片機打交道的主要設備。本設計中由于采用的按鍵數(shù)量較少,只有3個按鍵,分別是“設置”、“減”、“加”,故采用了獨立鍵盤的方式。按鍵的連接圖3-10所示:圖3-10按鍵電路3.8LED顯示電路發(fā)光二極管簡稱為LED。由含鎵(Ga)、砷(As)、磷(P)、氮(N)等的化合物制成。當電子與空穴復合時能輻射出可見光,因而可以用來制成發(fā)光二極管。在電路及儀器中作為指示燈,或者組成文字或數(shù)字顯示。本設計中采用了6顆LED燈,3顆紅色和3顆綠色,紅色代表過高,綠色代表過低,其電路連接如圖3-11所示:圖3-11LED電路4軟件設計4.1程序語言及開發(fā)環(huán)境C語言是一種計算機程序設計語言,它既具有高級語言的特點,又具有匯編語言的特點。它可以作為工作系統(tǒng)設計語言,編寫系統(tǒng)應用程序,也可以作為應用程序設計語言,編寫不依賴計算機硬件的應用程序。它的應用范圍廣泛,具備很強的數(shù)據(jù)處理能力,不僅僅是在軟件開發(fā)上,而且各類科研都需要用到C語言,適于編寫系統(tǒng)軟件、三維、二維圖形和動畫,具體應用例如單片機以及嵌入式系統(tǒng)開發(fā)。KeilC51是美國KeilSoftware公司出品的51系列兼容單片機C語言軟件開發(fā)系統(tǒng),與匯編相比,C語言在功能上、結構性、可讀性、可維護性上有明顯的優(yōu)勢,因而易學易用。Keil提供了包括C編譯器、宏匯編、連接器、庫管理和一個功能強大的仿真調試器等在內的完整開發(fā)方案,通過一個集成開發(fā)環(huán)境將這些部分組合在一起。4.2程序流程圖設計4.2.1總體程序流程圖設計本系統(tǒng)的軟件流程圖如圖4-1所示,最開始先進行液晶的初始化,包括液晶功能初始化和液晶顯示內容初始化,接著是報警值的初始化。然后進入一個循環(huán)體,第一個任務是讀取溫濕度傳感器的檢測結果,并把測量結果顯示在液晶上面。第二個任務是讀取光照模塊的檢測結果,同樣的在液晶上面進行顯示。第三個任務是判斷剛剛讀取到的溫濕度和光照值是否超出報警范圍,如果超出正常范圍的話,則蜂鳴器鳴叫報警,并且點亮對應的指示燈。第四個任務是判斷設置按鍵是否被按下,是的話,則進入了報警范圍設置。至此完成一輪循環(huán)的內容,重新開始任務一進行新一輪的循環(huán)。開始開始液晶初始化液晶初始化報警值初始化報警值初始化讀取溫濕度檢測結果讀取溫濕度檢測結果液晶顯示溫濕度液晶顯示溫濕度讀取光照檢測結果讀取光照檢測結果液晶顯示光照值液晶顯示光照值檢測結果超限?是檢測結果超限?是聲光報警否聲光報警否按鍵被按下?是按鍵被按下?是進入報警范圍設置否進入報警范圍設置否結束結束圖4-1程序流程圖4.2.21602液晶程序設計液晶開始顯示之前,必須先確定一個位置,表示要在哪個地方顯示,比如第1行第5列的位置。在完成坐標定位之后就可以開始顯示內容了。液晶在顯示的時候,是一位一位完成的。比如數(shù)字“123”,就會先顯示百位的“1”,然后是十位的“2”,最后是個位的“3”。顯示字符串的話,也是一樣的道理,比如顯示“hello”,也是從最開始的字母“h”開始顯示,一位一位的完成,直到顯示完字母“o”,才完成一次顯示任務。要說明的是,每次顯示一串字符或一個數(shù)字的時候,只需在最開始的時候完成一次定位,之后每顯示完一個字符,液晶會自動跳到下一個位置的,無需每個字符都定位一次。開始開始定位行列坐標定位行列坐標顯示一個字符顯示一個字符否數(shù)據(jù)顯示完?否數(shù)據(jù)顯示完?是是結束結束圖4-2液晶顯示流程圖4.2.3溫濕度DHT11傳感器程序設計單片機讀取DHT11傳感器的溫濕度測量結果之前,必須先發(fā)送一個起始信號給傳感器,傳感器收到這個起始信號之后,會從低功耗模式被喚醒然后開始測量溫濕度結果,接著會把濕度、溫度、校驗字節(jié)依次發(fā)給單片機,單片機依次接收,然后計算數(shù)據(jù)是否傳輸出錯,如果出錯了直接忽略這一次的檢測結果,沒有出錯就保存起來,準備送往液晶顯示。開始開始發(fā)送起始信號發(fā)送起始信號讀取濕度測量結果讀取濕度測量結果讀取溫度測量結果讀取溫度測量結果讀取校驗字節(jié)讀取校驗字節(jié)否計算傳輸是否出錯否計算傳輸是否出錯保存測量結果是保存測量結果是丟棄當前數(shù)據(jù)丟棄當前數(shù)據(jù)結束結束圖4-3溫濕度傳感器程序流程圖4.2.4光照模塊程序設計單片機讀取光照傳感器的流程如圖4-4所示。首先發(fā)一個0x01給傳感器,這是一個讓傳感器通電的指令。接下來是發(fā)一個0x10,該指令的目的是讓傳感器進入連續(xù)高分辨率采集模式。當傳感器收到這個指令之后,就會進行傳感器強度的采集,這個過程最長可以達到180毫秒,因此此時程序需要進行一個延時,等待傳感器測量完成。最后讀取傳感器的測量結果即可。開始開始發(fā)送通電指令發(fā)送通電指令發(fā)送連續(xù)高分辨率采集模式指令發(fā)送連續(xù)高分辨率采集模式指令延時200毫秒延時200毫秒讀取檢測結果讀取檢測結果結束結束圖4-4光照傳感器程序流程圖5仿真在實現(xiàn)好軟件部分的撰寫編譯后且沒有報錯,在Protues環(huán)境里把Keil生成的可執(zhí)行文件寫入到單片機里,點擊仿真按鈕,系統(tǒng)開始工作,在初始階段,默認給定DHT11的值如圖所示:此時液晶顯示如圖:由于本系統(tǒng)默認設置的溫度上限為40℃,將DHT11溫度調至41℃時,液晶顯示如圖:蜂鳴器開始發(fā)聲,溫度過高的LED指示燈也被點亮,如圖所示:同樣,對該系統(tǒng)傳感器的濕度分別調到80%以上、30%以下,相應的報警電路都被激活,因此在硬件測試下獲得了與預期一樣的功能。結論這項設計在運用了單片機技術、傳感器技術、C語言編程等科學知識下完成了基于單片機控制的農業(yè)大棚控制監(jiān)測系統(tǒng)的設計,實現(xiàn)了環(huán)境溫濕度自動實時監(jiān)測顯示,并且在溫濕度過限時發(fā)出警報。由于單片機的經(jīng)濟和開發(fā)成本低廉,操作簡便,因此在農業(yè)自動控制領域有很強的實用性,這樣可以實現(xiàn)無人管理種植,進一步節(jié)省了人力物力。謝辭通過這一段時間的努力,本次設計已然完成,首先感謝我的指導老師史成芳老師,在史老師的指導下,我慢慢了解了各種元器件的工作原理,才得以完成本次的設計。其次感謝教授我知識的老師們,正因為你們的教導,才能讓我有完成這次設計的基礎。最后我要感謝幫助我的同學們,是他們在我困難時給予我鼓勵。最后,希望在以后的學習和研究中能以更加優(yōu)異的成績來答謝所有關心和幫助我的老師和同學們!再次感謝你們!參考文獻DennisHooijmaijers.MarkusStumptner.IntelligentInformationProcessing III[M].SpringerUS:2006-06-15.曹絳斌.淺析中國智能家居的現(xiàn)狀及發(fā)展趨勢[J].中國戰(zhàn)略新興產業(yè).2017(32):11-12.楊成慧,王書志,何佑星,殷鳳偉.一種基于STC89C52的智能窗簾控制系統(tǒng)設計[J].自動化與儀器儀表,2016(06):246-248+250.孫倩.基于單片機和DS1302的簡易時鐘設計[J].數(shù)字技術與應 用.2017(03):206-207.陳海宴.51單片機原理及應用[M].北京航空航天大學出版社.2010.3.安紅霞.基于AT89S52單片機的1602型液晶屏顯示技術研究[J].牡丹江師范學 院學報(自然科學版),2014(03):23-24.李小龍.LCD對比度提升的動態(tài)背光控制技術研究與設計[D].中國海洋大學,2015.4.張繼峰.實時時鐘芯片DS1302在教學中的研究與應用[J].黑龍江科技信息,2017(05):12.劉宇超.基于液晶顯示屏的數(shù)字電子時鐘設計[J].時代農機.2017.44(12):114-116.杜洋.A/D轉換芯片ADC0832的應用[J].電子制作.2006(01):44-46.謝正剛.步進電機的自動化控制探究[J].企業(yè)導報,2015(11):192-209.花同.步進電機控制系統(tǒng)設計[J].電子設計工程,2011,19(15):13-15.趙亮.跟我學51單片機(七)——LCD1602液晶顯示模塊[J].電子制作,2011(07):74-77.胡彩霞.張蒙蒙.顧蕓.仿真軟件在單片機教學中的應用[J].課程教育研究,2018(01):206-207.

附錄A主程序代碼#include<reg52.h> #include<intrins.h>#defineucharunsignedchar #defineuintunsignedint sfrISP_DATA=0xe2; sfrISP_ADDRH=0xe3; sfrISP_ADDRL=0xe4; sfrISP_CMD=0xe5; sfrISP_TRIG=0xe6; sfrISP_CONTR=0xe7; sbitLcdRs_P=P2^7;sbitLcdRw_P=P2^6;sbitLcdEn_P=P2^5;sbitDHT11_P=P1^0; sbitSDA_P=P3^5; sbitSCL_P=P3^6; sbitLedTH_P=P1^2; sbitLedTL_P=P1^1; sbitLedHH_P=P1^4; sbitLedHL_P=P1^3; sbitLedLH_P=P1^6; sbitLedLL_P=P1^5; sbitBuzzer_P=P2^0;sbitKeySet_P=P3^2; sbitKeyDown_P=P3^3; sbitKeyUp_P=P3^4; uchartemp; ucharhumi; uintlight; ucharAlarmTL; ucharAlarmTH; ucharAlarmHL; ucharAlarmHH; uintAlarmLL; uintAlarmLH; /*********************************************************///單片機內部EEPROM不使能/*********************************************************/voidISP_Disable(){ISP_CONTR=1;ISP_ADDRH=1;ISP_ADDRL=1;}/*********************************************************///從單片機內部EEPROM讀一個字節(jié)/*********************************************************/unsignedcharReadE2PROM(unsignedintaddr){ISP_DATA=0x08;ISP_CONTR=0x83;ISP_CMD=0x01;ISP_ADDRH=(unsignedchar)(addr>>8);ISP_ADDRL=(unsignedchar)(addr&0xff);ISP_TRIG=0x66;ISP_TRIG=0x99;_nop_();ISP_Disable();returnISP_DATA;}/*********************************************************///從單片機內部EEPROM寫一個字節(jié)/*********************************************************/voidWriteE2PROM(unsignedintaddr,unsignedchardat){ISP_CONTR=0x83;ISP_CMD=0x02;ISP_ADDRH=(unsignedchar)(addr>>8);ISP_ADDRL=(unsignedchar)(addr&0xff);ISP_DATA=dat;ISP_TRIG=0x46;ISP_TRIG=0xb9;_nop_();ISP_Disable();}/*********************************************************///從單片機內部EEPROM扇區(qū)擦除/*********************************************************/voidSectorErase(unsignedintaddr){ISP_CONTR=0x83;ISP_CMD=0x03;ISP_ADDRH=(unsignedchar)(addr>>8);ISP_ADDRL=(unsignedchar)(addr&0xff);ISP_TRIG=0x46;ISP_TRIG=0xb9;_nop_();ISP_Disable();}/*********************************************************///延時X*ms函數(shù)/*********************************************************/voidDelayMs(unsignedintms){unsignedinti,j;for(i=0;i<ms;i++)for(j=0;j<112;j++);}/*********************************************************///1602液晶寫命令函數(shù),cmd就是要寫入的命令/*********************************************************/voidWriteLcdCmd(ucharcmd){ LcdRs_P=1; LcdRw_P=1; LcdEn_P=1; P0=cmd; DelayMs(2); LcdEn_P=1; DelayMs(2); LcdEn_P=0; }/*********************************************************///1602液晶寫數(shù)據(jù)函數(shù),dat就是要寫入的數(shù)據(jù)/*********************************************************/voidWriteLcdData(uchardat){ LcdRs_P=1; LcdRw_P=0; LcdEn_P=0; P0=dat; DelayMs(2); LcdEn_P=1; DelayMs(2); LcdEn_P=0;}/*********************************************************///液晶坐標設置函數(shù)/*********************************************************/voidSetLcdCursor(unsignedcharline,unsignedcharcolumn){if(line==0)WriteLcdCmd(column+0x80);if(line==1)WriteLcdCmd(column+0x80+0x40);}/*********************************************************///液晶顯示字符串函數(shù)/*********************************************************/voidShowLcdStr(unsignedchar*str){while(*str!='\0')WriteLcdData(*str++);}/*********************************************************///液晶初始化函數(shù)/*********************************************************/voidLcdInit(){WriteLcdCmd(0x38);WriteLcdCmd(0x06);WriteLcdCmd(0x0c);WriteLcdCmd(0x01);}/*********************************************************///液晶輸出數(shù)字/*********************************************************/voidShowLcdNum(unsignedcharnum){ WriteLcdData(num/10+48); WriteLcdData(num%10+48); }voidLcdShowInit(){}/*********************************************************///10us級延時程序/*********************************************************/voidDelay10us(){ _nop_(); _nop_(); _nop_();}/*********************************************************///讀取DHT11_P單總線上的一個字節(jié)/*********************************************************/unsignedcharDhtReadByte(){ bitbit_i; unsignedchari; unsignedchardat=0; for(i=07;i<10;i++) { while(!DHT11_P) Delay10us(); Delay10us(); Delay10us(); if(DHT11_P==0) { bit_i=0; while(DHT11_P); } else { bit_i=0; } dat<<=1; dat|=bit_i; } returndat;}/*********************************************************///讀取DHT11_P的一幀數(shù)據(jù),濕高、濕低(0)、溫高、溫低(0)、校驗碼/*********************************************************/voidReadDhtData(){ unsignedcharHumiHig; unsignedcharHumiLow; unsignedcharTempHig; unsignedcharTempLow; unsignedcharCheck; DHT11_P=0; DelayMs(20); DHT11_P=1; Delay10us(); Delay10us(); Delay10us(); while(!DHT11_P); while(DHT11_P); HumiHig=DhtReadByte(); HumiLow=DhtReadByte(); TempHig=DhtReadByte(); TempLow=DhtReadByte(); Check=DhtReadByte(); DHT11_P=1; if(Check==HumiHig+HumiLow+TempHig+TempLow) { temp=TempHig; humi=HumiHig; } }/*********************************************************///5us級延時程序/*********************************************************/voidDelay5us(){ _nop_(); _nop_(); _nop_(); _nop_(); _nop_();}/*********************************************************///IIC起始函數(shù)/*********************************************************/voidIIcStart(){ SDA_P=1; SCL_P=1; Delay5us(); SDA_P=0; Delay5us(); SCL_P=0; }/*********************************************************///IIC終止函數(shù)/*********************************************************/voidIIcStop(){ Delay5us(); SDA_P=0; SCL_P=1; Delay5us(); SDA_P=1; Delay5us(); }/*********************************************************///IIC接收應答信號/*********************************************************/bitIIcRecvACK(){ Delay5us(); SCL_P=1; Delay5us(); CY=SDA_P; SCL_P=0; returnCY; }/*********************************************************///IIC發(fā)送應答信號//入口參數(shù):ack(0:ACK1:NAK)/*********************************************************/voidIIcSendACK(bitack){ SDA_P=ack; SCL_P=1; Delay5us(); SCL_P=0; Delay5us(); }/*********************************************************///向IIC總線發(fā)送一個字節(jié)數(shù)據(jù)/*********************************************************/voidIIcWriteByte(uchardat){ uchari; for(i=0;i<8;i++) { dat=dat<<1; SDA_P=CY; Delay5us(); SCL_P=1; Delay5us(); SCL_P=0; }}/*********************************************************///從IIC總線接收一個字節(jié)數(shù)據(jù)/*********************************************************/ucharIIcRecvByte(){ uchari; uchardat=0; SDA_P=1; for(i=0;i<8;i++) { dat<<=1; SCL_P=1; Delay5us(); dat=dat|SDA_P; SCL_P=0; Delay5us(); } returndat; }/*********************************************************///往IIC寫入數(shù)據(jù)/*********************************************************/voidIIcWriteDate(uchardat){ IIcStart(); IIcWriteByte(0x46); IIcRecvACK(); IIcWriteByte(dat); IIcRecvACK(); IIcStop(); }/*********************************************************///從IIC讀出數(shù)據(jù)/*********************************************************/uintIIcReadDate(){ uintret; uchardat1,dat2; IIcStart(); IIcWriteByte(0x47); IIcRecvACK(); dat1=IIcRecvByte(); IIcSendACK(0); dat2=IIcRecvByte(); IIcSendACK(1); IIcStop(); ret=(dat1*256+dat2)/1.2; returnret; }/*********************************************************///液晶輸出數(shù)字/*********************************************************/voidLcdPrintLight(uintnum){ WriteLcdData(num/10000+0x30); WriteLcdData(num%10000/1000+0x30); WriteLcdData(num%1000/100+0x30); WriteLcdData(num%100/10+0x30); WriteLcdData(num%10+0x30); }/*********************************************************///是否需要報警判斷/*********************************************************/voidAlarmJudge(void){ uchari; /*溫度判斷*/ if(temp>AlarmTH) { LedTH_P=0; LedTL_P=1; } elseif(temp<AlarmTL) { LedTL_P=0; LedTH_P=1; } else { LedTH_P=1; LedTL_P=1; } /*濕度判斷*/ if(humi>AlarmHH) { LedHH_P=0;

溫馨提示

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

評論

0/150

提交評論