溫濕度遠程監(jiān)測節(jié)點的研制_第1頁
溫濕度遠程監(jiān)測節(jié)點的研制_第2頁
溫濕度遠程監(jiān)測節(jié)點的研制_第3頁
溫濕度遠程監(jiān)測節(jié)點的研制_第4頁
溫濕度遠程監(jiān)測節(jié)點的研制_第5頁
已閱讀5頁,還剩56頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

PAGE本科畢業(yè)論文題目:溫濕度遠程監(jiān)測節(jié)點的研制院(部):信息與電氣工程學院專業(yè):電氣工程與自動化班級:姓名:學號:指導教師:完成日期:PAGEIV目錄摘要 IIIABSTRACT IV1前言 -1-1.1課題研究的背景 -1-1.2國內外的研究現(xiàn)狀 -1-1.2.1監(jiān)控模式 -1-1.2.2數(shù)據(jù)通信方式 -3-1.3課題研究的目的和意義 -4-2硬件電路設計 -5-2.1系統(tǒng)硬件總體方案設計 -5-2.2單片機核心控制電路設計 -5-2.2.1單片機選型 -6-2.2.2復位電路設計 -8-2.2.3時鐘電路設計 -9-2.3系統(tǒng)電源電路設計 -9-2.3.1電源穩(wěn)壓芯片LM7805 -10-2.3.25V穩(wěn)壓電源模塊原理圖 -10-2.4系統(tǒng)溫濕度檢測電路設計 -11-2.4.1數(shù)字溫濕度傳感器SHT11 -11-2.4.2SHT11傳輸原理及I2C總線 -13-2.4.3溫濕度檢測模塊原理圖 -14-2.5液晶顯示模塊電路設計 -15-2.5.1LCD1602 -15-2.5.2液晶顯示模塊原理圖 -16-2.6無線模塊電路設計 -17-2.6.1NRF24L01無線模塊 -17-2.6.2無線模塊原理圖 -18-2.7報警電路設計 -19-2.8小結 -20-3系統(tǒng)軟件設計 -21-3.1系統(tǒng)軟件方案設計 -21-3.2系統(tǒng)主程序流程圖 -21-3.3系統(tǒng)各模塊軟件設計 -22-3.3.1溫濕度采集子程序設計 -22-3.3.2液晶顯示模塊子程序設計 -31-3.3.3無線發(fā)射模塊子程序設計 -37-3.4小結 -48-4總結 -50-謝辭 -51-參考文獻 -52-附錄 -53-摘要隨著單片機技術、微機技術、自動控制技術的快速發(fā)展,在現(xiàn)代工業(yè)自動化系統(tǒng)中,單片機和微機的應用日益廣泛。溫度與濕度是衡量環(huán)境的一個重要指標,如今農場、糧庫、一些大型展館和醫(yī)院等場合對溫濕度有著較高的要求,由于監(jiān)控范圍廣,遠程測控便提上了日程。本文設計了一種以AT89S51單片機為主控制單元的溫濕度遠程監(jiān)測系統(tǒng)。本設計首先給出了系統(tǒng)總體方案,然后進行了硬件設計和相關器件選型,繪制了原理圖和PCB,最后編寫了系統(tǒng)功能模塊程序。其中硬件部分主要包括AT89S51單片機核心控制系統(tǒng),溫濕度檢測、LCD液晶顯示以及無線發(fā)射模塊;軟件部分主要包括主程序設計,溫濕度測量處理、液晶顯示及無線發(fā)射各模塊子程序設計。該溫濕度遠程監(jiān)測系統(tǒng)以SHT11數(shù)字溫濕度傳感器芯片檢測溫濕度,由LCD1602實時顯示溫濕度數(shù)據(jù),并由NRF24L01無線模塊把采集數(shù)據(jù)發(fā)送給遠程設備,從而實現(xiàn)遠程監(jiān)測。

本設計的溫濕度遠程監(jiān)測系統(tǒng)溫濕度檢測精度高、成本低廉、可靠性高,可用于糧倉、大型展館、醫(yī)院等場合溫濕度的遠程監(jiān)測。關鍵詞:單片機;溫濕度監(jiān)測;LCD液晶顯示;無線模塊

DevelopmentofRemoteTemperatureandHumidityMonitoringNodeABSTRACTWithsinglechipmicrocomputertechnology,computertechnology,automaticcontroltechnology'srapiddevelopment,inmodernindustrialautomationsystems,singlechipmicrocomputerandmicrocomputeriswidelyused.Temperatureandhumidityisanimportantmeasureofenvironmentalindicators,nowfarms,grainstorage,anumberoflargeexhibitionhallsandhospitals,onthetemperatureandhumiditywithhighdemand,becauseofthewiderangeofmonitoring,remotemonitoringandcontrolisputontheagenda.ThispaperdescribesthedesignofaAT89S51microcontrollerasthecontrolunitoftheremotetemperatureandhumiditymonitoringsystem.Thedesigngivesoftheoverallschemeofthesystemfirstly,thengivesthehardwaredesignanddeviceselection,drawingaschematicandPCB,finallywrittentheprogramofthefunctionalmodulessystem.ThehardwarepartincludestheAT89S51microcontrollercorecontrolsystem,temperatureandhumiditydetection,LCDliquidcrystaldisplayandwirelesstransmittingmodule;thesoftwaredesignincludesthemainprogram,temperatureandhumiditymeasurementprocessing,liquidcrystaldisplayandwirelesstransmittingmodulesubroutinedesign.TheremotetemperatureandhumiditymonitoringsystembasedonSHT11digitalsensorchiptestingtemperatureandhumidity,byLCD1602real-timedisplayoftemperatureandhumiditydata,bytheNRF24L01wirelessmoduletocollectdataandsenttotheremotedevice,soastorealizeremotemonitoring.Thedesignoftemperatureandhumiditymonitoringsystemswithhighprecision,lowcost,andhighreliability,soitcanbeappliedtothegranary,largeexhibitionhalls,hospitalsandotheroccasionsofremotetemperatureandhumiditymonitoring.KeyWords:Singlechipmicrocomputer;temperatureandhumiditymonitoring;LCDliquidcrystaldisplay;wirelessmodule山東建筑大學畢業(yè)論文PAGE56-1前言1.1課題研究的背景工業(yè)控制是計算機的一個重要應用領域,計算機控制系統(tǒng)正是為了適應這一領域的需要而發(fā)展起來的一門專業(yè)技術,它主要研究如何將計算機技術、通過信息技術和自動控制理論應用于工業(yè)生產過程,并設計出所需要的計算機控制系統(tǒng)。溫度與濕度是衡量環(huán)境的一個重要指標。如今農場、糧庫、一些大型展館和醫(yī)院等場合對溫濕度有著較高的要求,由于監(jiān)控范圍廣,遠程測控便提上了日程。對環(huán)境溫濕度進行監(jiān)測,實時數(shù)據(jù)顯示,以確保環(huán)境“符合規(guī)格”是至關重要的。在我們的生活中,我們要時刻關注環(huán)境的變化,只有很好的把握好環(huán)境的差異變化,我們才能更好的生存與發(fā)展。比如說在一些糧庫,糧食的貯存,和溫濕度是密切相關的,溫濕度過高或過低都容易使糧食變質腐爛,不利于長久保存,只有在適宜的溫度和濕度下,才能使糧食保存時間更長,對人類的生活才能更有利,在生活中我們才能獲取更大的效益。隨著微機測量和控制技術的迅速發(fā)展與廣泛應用,以單片機為核心的溫濕度采集與控制系統(tǒng)的研發(fā)與應用在很大程度上提高了生產生活中對溫濕度的監(jiān)測控制水平。本設計就是基于單片機AT89S51為主控制器的溫濕度監(jiān)測系統(tǒng)。1.2國內外的研究現(xiàn)狀對于溫濕度監(jiān)控的研究要從監(jiān)控模式和數(shù)據(jù)通信方式兩方面來分析。1.2.1監(jiān)控模式(1)基于溫度計和濕度計的人工測量模式對于溫濕度檢測來說,最早采用的測量方式是人工方式測量。但由于人工方式存在人為誤差的原因并且溫度計本身也存在誤差比較大,反應比較慢的原因,導致這種溫濕度測量方式效率比較低,同時抽樣也不具有代表性。并且這種測量方式的應用環(huán)境也有很大的局限,進行檢測的工作人員不可能直接到達一些危險的地帶進行溫濕度測量。(2)分散儀表控制模式1)基于溫濕度傳感器以單片機為核心的監(jiān)控模式基于溫濕度傳感器以單片機為核心的監(jiān)控模式是使用溫濕度傳感器對環(huán)境進行溫濕度測量。溫度傳感器和濕度傳感器的輸出信號均為模擬信號,必須經過A/D轉換,轉換所得的數(shù)字信號由單片機接收,通過單片機對溫濕度進行監(jiān)控。這種監(jiān)控模式的優(yōu)點是溫濕度的監(jiān)控效率有了很大的提高,溫濕度的實時數(shù)據(jù)可由LCD液晶顯示屏進行同步的顯示,缺點就是溫濕度傳感器的初始輸出信號均為模擬信號,模擬信號在傳輸過程中容易發(fā)生損耗,使傳輸?shù)男畔a生誤差,從而影響到了整體的監(jiān)控精度。2)基于集成電路的監(jiān)控模式基于集成電路的監(jiān)控模式主要體現(xiàn)了集成電路技術的提高對溫濕度監(jiān)控領域的影響。隨著集成電路技術的蓬勃發(fā)展,傳統(tǒng)的基于模擬信號的溫濕度傳感器已經不能滿足監(jiān)控環(huán)境對系統(tǒng)的要求取而代之的是數(shù)字化的溫濕度傳感器。在這類新型的傳感器當中,溫濕度檢測芯片,A/D轉換模塊,溫度補償模塊等均被集成于統(tǒng)一的整體,這樣做不僅僅使整體系統(tǒng)的結構得以很大程度上的簡化,并且降低了溫濕度信號在傳輸過程中所發(fā)生的損耗,提高了信號的抗干擾性,從而從整體上提高了系統(tǒng)的精度。大規(guī)模集成電路技術的發(fā)展為溫濕度的數(shù)字化,網絡化監(jiān)控提供了技術上的可能。雖然在系統(tǒng)的效率和結構上有了很大的提高和發(fā)展,但基于集成電路的溫濕度監(jiān)控模式依舊仍是采用單片機監(jiān)控的簡單模式,屬于分散的儀表控制模式。(3)集中式計算機監(jiān)控模式近些年來伴隨著計算機技術的蓬勃發(fā)展,已有許多溫濕度監(jiān)控系統(tǒng)都紛紛采用了主機——終端的監(jiān)控模式,該模式的實現(xiàn)方式是采用一個主機作為整個溫濕度監(jiān)控系統(tǒng)的監(jiān)控核心,各個監(jiān)控環(huán)境的溫濕度情況有分別的監(jiān)控子系統(tǒng)進行測量,而監(jiān)控主機會對所有子系統(tǒng)進行統(tǒng)一的監(jiān)控管理,這種監(jiān)控模式相當于以前的分散儀表監(jiān)控模式已經有了很大的提高和進步,突破了僅僅只是依靠單片機的分散式控制,從整體上顯著擴大了溫濕度監(jiān)控系統(tǒng)的使用功能和環(huán)境[1]。但主機——終端模式在系統(tǒng)的實現(xiàn)過程中也存在很多的缺點與不足,這種監(jiān)控模式的布線相對復雜,傳輸距離也受到限制,從而很難做到對不同地點的溫濕度監(jiān)控,并且這種模式應用起來不夠靈活,對于溫濕度的實時監(jiān)控問題和子系統(tǒng)與中央監(jiān)控系統(tǒng)的實時通信問題并不能很好地解決。(4)分布式監(jiān)控模式分布式監(jiān)控不同于分散式儀表式的監(jiān)控,也不同于主機——終端式的監(jiān)控,而是彌補了兩個方式的缺點并且融合了兩個方式的優(yōu)點。分布式監(jiān)控模式是目前的主要發(fā)展方向。分布式監(jiān)控系統(tǒng)(DCS),又稱為分散監(jiān)控系統(tǒng),集散監(jiān)控系統(tǒng)。有多臺計算機分別控制生產過程中多個控制回路,同時又可集中獲取數(shù)據(jù)、集中管理和集中控制的自動控制系統(tǒng)。分布式控制系統(tǒng)采用微處理機分別控制各個回路,而用中小型工業(yè)控制計算機或高性能的微處理機實施上一級的控制。各回路之間和上下級之間通過高速數(shù)據(jù)通道交換信息。分布式控制系統(tǒng)具有數(shù)據(jù)獲取、直接數(shù)字控制、人機交互以及監(jiān)控和管理等功能。在分布式的溫濕度監(jiān)控系統(tǒng)中,整個系統(tǒng)包括許多分散的溫濕度監(jiān)控節(jié)點,任意的溫濕度監(jiān)控節(jié)點都可以通過網絡與服務主機(上位機)進行數(shù)據(jù)通信。系統(tǒng)通過每個溫濕度監(jiān)控節(jié)點處理所采集到的溫濕度數(shù)值并進行檢測,通過上位機進行數(shù)據(jù)存儲并且顯示溫濕度監(jiān)控節(jié)點所傳來的溫濕度數(shù)據(jù),并且上位機可以通過網絡通信向任意的溫濕度監(jiān)控節(jié)點發(fā)送系統(tǒng)設置值或是其他的控制參數(shù)。這種溫濕度監(jiān)控模式的優(yōu)點是故障率較低,故障影響范圍較小,從控制效果上來說這種監(jiān)控模式易于實現(xiàn)系統(tǒng)的局部獨立監(jiān)控效果[2]。分布式監(jiān)控是現(xiàn)代工業(yè)控制的標志,它的出現(xiàn)極大地推動了工業(yè)控制系統(tǒng)的發(fā)展。隨著各種高性能的工業(yè)設備的不斷普及,分布式監(jiān)控技術在現(xiàn)代工業(yè)控制領域中得到越來越廣泛的應用。1.2.2數(shù)據(jù)通信方式(1)獨立的信號線通信獨立的信號線通常和基于溫濕度傳感器以單片機為核心的監(jiān)控模式相結合使用。其中每一個的智能測試點都需要通過各自獨立的信號線進行通信,故布線復雜,在應用上難以維護且價格昂貴。(2)單總線通信單總線通信技術通常是基于集成電路的溫濕度監(jiān)控模式相結合使用。該技術采用單根信號線,既可以傳輸時鐘,又能傳輸數(shù)據(jù),且數(shù)據(jù)傳輸是雙向的,因而這種單總線技術具有線路簡單,硬件開銷小,成本低廉,便于總線擴展和維護。缺點是單總線只適用于單主機系統(tǒng),只能夠控制一個或多個從機設備。(3)現(xiàn)場總線網絡通信現(xiàn)場總線網絡通信通常是和集中式計算機控制模式相結合使用。現(xiàn)場總線也常常被稱為數(shù)字化、開放式、多點通信的底層控制網絡,它所實現(xiàn)的是雙向串行多節(jié)點的數(shù)字通信功能,現(xiàn)場總線常常應用與生產現(xiàn)場,實現(xiàn)微機化測量控制設備之間的通信??梢詫崿F(xiàn)整個企業(yè)的信息集成,實施綜合自動化,形成工廠底層網絡,完成現(xiàn)場自動化設備之間的多點數(shù)字通信,實現(xiàn)底層現(xiàn)場設備之間及生產現(xiàn)場與外界的信息交換。缺點是布線繁瑣、傳輸距離受限[3]。(4)接入以太網通信將溫濕度監(jiān)控的智能節(jié)點接入網絡通常是和分布式監(jiān)控模式相結合使用,而模塊的直接入網也是當今智能監(jiān)控發(fā)展的一個重要趨勢?,F(xiàn)今以太網技術在當前的局域網范圍市場內占有率超過了90%,由于以太網十分普遍,許多制造商把以太網卡直接集成安裝進了計算機主板,因此,用以太網代替?zhèn)鹘y(tǒng)的現(xiàn)場總線控制網絡在工業(yè)控制中已成為一個技術趨勢也是提高控制系統(tǒng)性價比的一個表現(xiàn)[1]。1.3課題研究的目的和意義隨著社會的發(fā)展,溫度的測量及控制變得越來越重要。在智能化高度發(fā)展的今天,農場、糧庫等一些大場合不可能有人時時停留在那對溫濕度進行監(jiān)測,因此在生活中對溫濕度遠程監(jiān)測節(jié)點的研制變得尤為重要。本文采用單片機AT89S51設計了溫濕度實時監(jiān)測系統(tǒng)。單片機AT89S51能夠根據(jù)溫濕度傳感器SHT11所采集到的溫濕度在液晶屏上實時顯示,并通過無線傳輸模塊把溫濕度數(shù)據(jù)傳送出去實現(xiàn)了遠程監(jiān)測。所有溫濕度數(shù)據(jù)均通過液晶顯示器LCD在采集現(xiàn)場顯示出來。通過該畢業(yè)設計的學習使我對單片機控制系統(tǒng)有了一個全面的了解、掌握常規(guī)控制算法的使用方法、掌握了簡單微型計算機應用系統(tǒng)軟硬件的設計方法,進一步鍛煉了自己在單片機應用方面的實際工作能力。

2硬件電路設計2.1系統(tǒng)硬件總體方案設計本論文設計以AT89S51單片機為主控制單元,以SHT11溫濕度傳感器采集溫濕度數(shù)據(jù)信息,采用NRF24L01無線傳輸模塊,實現(xiàn)了溫濕度的遠程監(jiān)測。該控制系統(tǒng)可以實時監(jiān)測所測環(huán)境的的溫濕度數(shù)據(jù)并在現(xiàn)場由LCD液晶顯示。系統(tǒng)主要包括:電源模塊、溫濕度采集模塊、報警模塊、LCD顯示模塊、無線傳輸模塊以及單片機最小系統(tǒng)的設計。系統(tǒng)框圖如圖1.1所示:NRF24LNRF24L01無線模塊AT89S51電源模塊LCD液晶顯示模塊 LCD液晶顯示模塊溫濕度傳感器檢測模塊 溫濕度傳感器檢測模塊報警模塊報警模塊圖1.1系統(tǒng)框圖由系統(tǒng)框圖1.1本硬件系統(tǒng)包括五個功能模塊:電源模塊完成220V交流電轉換為5V穩(wěn)定的直流電壓為單片機及其它各模塊提供所需電壓;測控電路模塊主要由單片機AT89S51組成主控電路,實現(xiàn)數(shù)據(jù)收集與控制功能;數(shù)據(jù)采集模塊主要實現(xiàn)溫、濕度實時數(shù)據(jù)采集與數(shù)據(jù)轉換;液晶顯示模塊對單片機收到的溫濕度數(shù)據(jù)進行現(xiàn)場顯示;無線模塊將檢測到的溫濕度數(shù)據(jù)發(fā)射出去,同時可以接受遠程發(fā)射來的監(jiān)控信號;當檢測溫濕度值超過設定值時故障報警模塊發(fā)出報警信號。由以上模塊共同構成了溫濕度遠程監(jiān)測系統(tǒng)。2.2單片機核心控制電路設計在論文設計的溫濕度監(jiān)測系統(tǒng)中,其核心部分是51系列單片機,保證其正常工作的核心系統(tǒng)主要包括:復位電路、時鐘震蕩電路。2.2.1單片機選型目前,51系列單片機在工業(yè)檢測領域中得到了廣泛的應用,AT89S51單片機是ATMEL公司生產的一種單片機,是一個低功耗,高性能CMOS8位單片機,片內含4kBytesISP的可反復擦寫1000次的Flash只讀程序存儲器,器件采用高密度、非易失性存儲技術制造,兼容標準MCS-51指令系統(tǒng)及80C51引腳結構,芯片內集成了通用8位中央處理器和ISPFlash存儲單元,在一小塊芯片上集成了一個微型計算機的各個組成部分。本文設計的溫濕度監(jiān)測系統(tǒng)主控制芯片選型為AT89S51單片機,現(xiàn)將其簡要介紹如下。(1)AT89S51單片機主要性能特點4kBytesFlash片內程序存儲器;128bytes的隨機存取數(shù)據(jù)存儲器;32個外部雙向輸入/輸出(I/O)口;5個中斷優(yōu)先級、2層中斷嵌套中斷;6個中斷源;2個16位可編程定時/計數(shù)器;2個全雙工串行通信口;看門狗電路;片內振蕩器和時鐘電路;與MCS-51兼容;全靜態(tài)工作:0Hz-33MHz;三級程序存儲器保密鎖定;可編程串行通道;低功耗的閑置和掉電模式。(2)AT89S51單片機時序AT89S51單片機的一個機器周期由6個狀態(tài)(s1—s6)組成,每個狀態(tài)又持續(xù)2個震蕩周期,分為P1和P2兩個節(jié)拍。這樣,一個機器周期由12個振蕩周期組成。采用12MHz的晶體振蕩器,則每個機器周期為1us,每個狀態(tài)周期為1/6us,在一數(shù)情況下,算術和邏輯操作發(fā)生在N期間,而內部寄存器到寄存器的傳輸發(fā)生在P2期間。對于單周期指令,當指令操作碼讀人指令寄存器時,便從S1P2開始執(zhí)行指令。如果是雙字節(jié)指令,則在同一機器周期的s4讀入第二字節(jié)。若為單字節(jié)指令,則在s1期間仍進行讀,但所讀入的字節(jié)操作碼被忽略,且程序計數(shù)器也不加1。在加結束時完成指令操作。多數(shù)AT89S51指令周期為1—2個機器周期,只有乘法和除法指令需4個機器周期。對于雙字節(jié)單周期指令,通常是在一個機器周期內從程序存儲器中讀人兩個字節(jié),但有些指令例外[19]。(3)AT89S51單片機引腳功能AT89S51單片機的40個引腳中有2個專用于主電源引腳,2個外接晶振的引腳,4個控制或與其它電源復用的引腳,以及32條輸入輸出I/O引腳。下面將分別敘述各個引腳的功能。1)控制信號或與其它電源復用引腳控制信號或與其它電源復用引腳有RST/VPD、ALE/P、PSEN和EA/VPP等4種形式。RST/VPD(9腳):RST即為RESET,VPD為備用電源,所以該引腳為單片機的上電復位或掉電保護端,當單片機振蕩器工作時,該引腳上出現(xiàn)持續(xù)兩個機器周期的高電平,就可實現(xiàn)復位操作,使單片機復位到初始狀態(tài),當VCC發(fā)生故障,降低到低電平規(guī)定值或掉電時,該引腳可接上備用電源VPD(+5V)為內部RAM供電,以保證RAM中的數(shù)據(jù)不丟失;ALE/P(30腳):當訪問外部存儲器時,ALE(允許地址鎖存信號)以每機器周期兩次的信號輸出,用于鎖存出現(xiàn)在P0口的低位數(shù)據(jù);PSEN(29腳):片外程序存儲器讀選通輸出端,低電平有效,當從外部程序存儲器讀取指令或常數(shù)期間,每個機器周期PESN兩次有效,以通過數(shù)據(jù)總線口讀回指令或常數(shù),當訪問外部數(shù)據(jù)存儲器期間,PESN信號將不出現(xiàn);EA/Vpp(31腳):EA為訪問外部程序儲器控制信號,低電平有效,當EA端保持高電平時,單片機訪問片內程序存儲器4KB,若超出該范圍時,自動轉去執(zhí)行外部程序存儲器的程序,當EA端保持低電平時,無論片內有無程序存儲器,均只訪問外部程序存儲器。2)輸入/輸出(I/O)引腳P0口、P1口、P2口及P3口P0.0~P0.7(39腳~32腳)統(tǒng)稱為P0口,當不接外部存儲器與不擴展I/O接口時,它可作為準雙向8位輸入/輸出接口,當接有外部程序存儲器或擴展I/O口時,P0口為地址/數(shù)據(jù)分時復用口,它分時提供8位雙向數(shù)據(jù)總線;P1.0~P1.7(1腳~8腳)統(tǒng)稱為P1口,可作為準雙向I/O接口使用,對于MCS—52子系列單片機,P1.0和P1.1還有第2功能(P1.0口用作定時/計數(shù)器2的計數(shù)脈沖輸入端T2,P1.1用作定時/計數(shù)器2的外部控制端);P2.0~P2.7(21腳~28腳)統(tǒng)稱為P2口,一般可作為準雙向I/O接口。當接有外部程序存儲器或擴展I/O接口且尋址范圍超過256個字節(jié)時,P2口用于高8位地址總線送出高8位地址;P3.0~P3.7(10腳~17腳)統(tǒng)稱為P3口,它為雙功能口,可以作為一般的準雙向I/O接口,也可以將每1位用于第2功能,而且P3口的每一條引腳均可獨立定義為第1功能的輸入輸出或第2功能。P3口的第2功能見下表[6]:表2.1單片機P3管腳第二功能含義引腳第2功能P3.0RXD(串行口輸入端0)P3.1TXD(串行口輸出端)P3.2INT0(外部中斷0請求輸入端,低電平有效)P3.3INT1(中斷1請求輸入端,低電平有效)P3.4T0(時器/計數(shù)器0計數(shù)脈沖端)P3.5T1(時器/計數(shù)器1數(shù)脈沖端)P3.6WR(外部數(shù)據(jù)存儲器寫選通信號輸出端,低電平有效)P3.7RD(外部數(shù)據(jù)存儲器讀選通信號輸出端,低電平有效)綜上所述,MCS—51系列單片機的引腳作用可歸納為兩點:單片機功能多,引腳數(shù)少,因而許多引腳具有第2功能;單片機對外呈3總線形式,由P2、P0口組成16位地址總線;由P0口分時復用作為數(shù)據(jù)總線。AT89S51單片機在眾多嵌入式控制應用系統(tǒng)中得到廣泛應用,而且價格便宜,其外部晶振為12MHz,一個指令周期為1μs。使用該單片機完全可以完成設計任務,故本次設計選用AT89S51型單片機。2.2.2復位電路設計本系統(tǒng)復位電路設計如圖2.2所示。功能:在復位過程中,控制CPU的復位狀態(tài),這段時間內讓CPU保持復位狀態(tài),而不是一上電或剛復位完畢就工作,防止CPU發(fā)出錯誤的指令、執(zhí)行錯誤操作。還可以提高電池兼容性能?;緩臀环绞剑菏謩影粹o復位,上電復位。為便于控制這里選用手動按鈕復位,圖2.2復位電路圖工作原理:如圖2.2,復位信號輸入單片機RESET引腳,復位信號為高電平有效。VCC上電時,電容充電,在10K電阻上出現(xiàn)電壓,使得單片機復位,幾個毫秒后,電容充滿,10K電阻上電流降為零,電壓也為零,使得單片機進入工作狀態(tài)。工作期間,按下按鍵,電容放電,松手,電容又充電,在10K電阻上出現(xiàn)電壓,使得單片機復位。幾個毫秒后,單片機進入工作狀態(tài)。電容、電阻設計參考值:復位電平持續(xù)時間最好大于10個機器周期,機器周期是晶振頻率12分頻的倒數(shù),故電容、電阻可取值如:,R3=1K,R2=10K[7]。2.2.3時鐘電路設計本系統(tǒng)時鐘電路設計如圖2.3所示。其中XTAL1(AT89S5119腳):接外部石英晶體的一端。在單片機內部,它是一個反相放大器的輸入端,這個放大器構成采用外部時鐘時,對于HMOS單片機,該引腳接地;對于CHOMS單片機,該引腳作為外部振蕩信號的輸入端。XTAL2(AT89S5118腳):接外部晶體的另一端。在單片機內部,接至片內振蕩器的反相放大器的輸出端。當采用外部時鐘時,對于HMOS單片機,該引腳作為外部振蕩信號的輸入端。對于CHMOS芯片,該引腳懸空不接。本設計晶振取11.0592MHZ(可以準確的得到9600波特率和19200波特率,用于有串口通信的場合),12MHZ(產生精確的us級時歇,方便定時操作)。對于晶振的電容,取值大會穩(wěn)定一些,但是會降低晶振精度,取值小又會降低抗干擾性,所以一般取10到30PF級別的電容作為起振作用[7]。圖2.3時鐘電路圖一個機器周期由6個時鐘周期(12個振蕩周期)組成。單片機時鐘電路是用來配合外部晶體實現(xiàn)振蕩的電路,可以為單片機提供運行時鐘脈沖,如果運行時鐘為0,單片機不工作,超出單片機的工作頻率的時鐘也會導致單片機不工作。在時鐘脈沖的推動下,CPU能夠順序的取指、分析和執(zhí)行指令。2.3系統(tǒng)電源電路設計本系統(tǒng)電源模塊采用電源穩(wěn)壓芯片LM7805構成穩(wěn)壓5V電源電路,可用于給單片機及其它模塊供電。2.3.1電源穩(wěn)壓芯片LM7805三端穩(wěn)壓集成電路LM7805。電子產品中,常見的三端穩(wěn)壓集成電路有正電壓輸出的LM78XX系列和負電壓輸出的LM79XX系列。三端IC是指這種穩(wěn)壓用的集成電路,只有三條引腳輸出,分別是輸入端、接地端和輸出端。它的樣子像是普通的三極管,TO-220的標準封裝,也有LM9013樣子的TO-92封裝。用LM78/LM79系列三端穩(wěn)壓IC來組成穩(wěn)壓電源所需的外圍元件極少,電路內部還有過流、過熱及調整管的保護電路,使用起來可靠、方便,而且價格便宜。該系列集成穩(wěn)壓IC型號中的LM78或LM79后面的數(shù)字代表該三端集成穩(wěn)壓電路的輸出電壓,如LM7806表示輸出電壓為正6V。因為三端固定集成穩(wěn)壓電路的使用方便,電子制作中經常采用。在實際應用中,應在三端集成穩(wěn)壓電路上安裝足夠大的散熱器(當然小功率的條件下不用)。當穩(wěn)壓管溫度過高時,穩(wěn)壓性能將變差,甚至損壞。LM7805內部結構如圖2.4所示。圖2.4LM7805內部結構圖2.3.25V穩(wěn)壓電源模塊原理圖(1)5V穩(wěn)壓電源模塊組成、功能穩(wěn)壓電源模塊由電源變壓器B,橋式整流電路D1~D4,濾波電容,防止自激電容,固定式三端穩(wěn)壓器7805構成。其功能主要是輸出+5V電壓,1.5A電流,完成交流電壓到直流電壓的轉換,為系統(tǒng)各模塊提供所需直流電壓。5V穩(wěn)壓電源模塊原理圖[10]:如圖2.5所示。圖2.55V穩(wěn)壓電源模塊電路(2)5V穩(wěn)壓電源模塊工作原理220V交流電通過電源變壓器變換成交流低壓,經橋式整流電路和濾波電容的整流和濾波,在LM7805的Vin和GND兩端形成一個并不十分穩(wěn)定的直流電壓,經7805穩(wěn)壓和電容的濾波由Vout端產生了精度高、穩(wěn)定度好的直流輸出電壓。本穩(wěn)壓電源可作為TTL電路或單片機電路的電源。其輸出Vout接單片機電源正端Vcc(40腳)。橋式整流電路的作用:把交流電變?yōu)橹绷麟姟?.4系統(tǒng)溫濕度檢測電路設計溫濕度檢測模塊采用兩線制數(shù)字溫濕度傳感器SHT11來作為本模塊的溫濕度傳感器。傳感器輸出數(shù)據(jù)信號進10K的上拉電阻且直接接到單片機的P1.4引腳上。SHT11濕度測量范圍:0~100%RH,12位的分辨率為0.03%RH;溫度測量范圍:-40~+123.8攝氏度,14位的分辨率為0.01攝氏度。分辨率默認溫度14位,濕度12位。2.4.1數(shù)字溫濕度傳感器SHT11溫濕度的測量在倉儲管理、生產制造、氣象觀測、科學研究以及日常生活中被廣泛應用,傳統(tǒng)的模擬式濕度傳感器一般都要設計信號調理電路并需要經過復雜的校準和標定過程,因此測量精度難以保證,且在線性度、重復性、互換性、一致性等方面往往不盡人意。SHT11是瑞士公司推出的一款數(shù)字溫濕度傳感器芯片。是一款基于CMOSENSTM技術的新型溫濕度傳感器,該傳感器將CMOS芯片技術與傳感器技術結合起來,從而發(fā)揮出它們強大的優(yōu)勢互補作用。廣泛應用于暖通空調、汽車、消費電子、自動控制等領域。(1)性能特點將溫濕度傳感器、信號放大處理、A/D轉換、I2C總線接口全部集成于一個芯片(CMOSENSTM技術);可給出全校準相對濕度及溫度值輸出;帶有工業(yè)標準的I2C總線數(shù)字輸出接口;具有露點值計算輸出功能;具有卓越的長期穩(wěn)定性;濕度值輸出分辨率為14位,溫度值輸出分辨率為12位,并可編程為12位和8位;小體積(7.65*5,0.8*23.5mm),可表面貼裝;具有可靠的CRC數(shù)據(jù)傳輸校驗功能;片內裝載的校準系數(shù)可保證100%互換性;電源電壓范圍為2.4~由于將傳感器與電路部分結合在一起,因此,該傳感器具有比其它類型的溫濕度傳感器優(yōu)越得多的性能。首先是傳感器信號強度的增加增強了傳感器的抗干擾性能,保證了傳感器的長期穩(wěn)定性,而A/D轉換的同時完成,則降低了傳感器對干擾噪聲的敏感程度;其次在傳感器芯片內裝載的校準數(shù)據(jù)保證了每一只濕度傳感器都具有相同的功能,即具有100%的互換性。最后,傳感器可直接通過I2C總線與任何類型的微處理器、微控制器系統(tǒng)連接,從而減少了接口電路的硬件成本,簡化了接口方式。SHT11內部結構:如圖2.6所示圖2.6SHT11內部結構圖(2)SHT11輸出特性1)濕度值輸出SHT11可通過I2C總線直接輸出數(shù)字量濕度值,SHT11的濕度數(shù)字輸出特性呈一定的非線性,為了補償濕度傳感器的非線性,可按如下公式修正濕度值:(2-1)式中,SORH為傳感器相對濕度測量值,系數(shù)取值如下:12位:SORH:,,8位:SORH:,c2=0.648,SHT11的每一個傳感器都是在極為精確的濕度室中校準的。SHT11傳感器的校準系數(shù)預先存在OTP內存中。經校準的相對濕度和溫度傳感器與一個14位的A/D轉換器相連,可將轉換后的數(shù)字溫濕度值送給二線I2C總線器件,從而將數(shù)字信號轉換為符合I2C總線協(xié)議的串行數(shù)字信號。SHT11傳感器相對濕度數(shù)字輸出特性曲線圖:如圖2.7所示。圖2.7SHT11傳感器相對濕度數(shù)字輸出特性曲線圖2)溫度值輸出由于SHT11溫度傳感器的的線性非常好,故可用下列公式將溫度數(shù)字輸出轉換成實際溫度值:(2-2)、為待定系數(shù),為分辨率。當電源電壓為5V,且溫度傳感器的分辨率為14位時,,,當溫度傳感器的分辨率為12位時,,。2.4.2SHT11傳輸原理及I2C總線(1)SHT11傳輸原理微處理器和溫濕度傳感器通信采用串行二線接口SCK和DATA,其中SCK為串行時鐘線,DATA為雙向串行數(shù)據(jù)線。該二線串行通信協(xié)議和I2C協(xié)議是不兼容的。在程序開始,微處理器需要用一組"啟動傳輸"時序表示數(shù)據(jù)傳輸?shù)膯?,如圖2.8所示。平時當SCK時鐘為高電平時,DATA翻轉為低電平;緊接著SCK變?yōu)榈?;在SCK時鐘為高電平時,DATA再次翻轉為高電平。SHT11數(shù)據(jù)傳輸啟動時序圖:如圖2.8。圖2.8SHT11數(shù)據(jù)傳輸啟動時序圖(2)I2C總線常用擴展總線包括:I2C、單總線、SPI總線、Microwire/plus總線。SHT11是瑞士Sensirion公司生產的具有I2C總線接口的單片全校準數(shù)字式相對濕度和溫度傳感器。I2C總線是由PHILIPS公司開發(fā)的兩線式串行總線,用于連接微控制器及其外圍設備。是微電子通信控制領域廣泛采用的一種總線標準。它是同步通信的一種特殊形式,具有接口線小,控制方式簡單,器件封裝形式小,通信速率較高等優(yōu)點。具備多主機系統(tǒng)所需的包括總線裁決和高低速器件同步功能的高性能串行總線。I2C總線只有兩根雙向信號線,一根是數(shù)據(jù)線SDA,另一根是時鐘線SCL。當總線空閑時,兩根線均為高電平。連到總線上的任一器件輸出低電平,都將使總線的信號變低,即各器件的SDA及SCL都是線“與”的關系。特征:只要求兩條總線線路,一條串行數(shù)據(jù)線SDA,一條串行時鐘線SCL;每個連接到總線的器件都可以通過唯一的地址和一直存在的簡單的主機/從機關系軟件設定地址,主機可以作為主機發(fā)送器或主機接收器;它是一個真正的多主機總線,如果兩個或更多主機同時初始化,數(shù)據(jù)傳輸可以通過從機檢測和仲裁防止數(shù)據(jù)被破壞;串行的8位雙向數(shù)據(jù)傳輸位速率在標準模式下可達100Kbit/s,快速模式下可達400Kbit/s,高速模式下可達3.4Mbit/s;連接到相同總線的IC數(shù)量只受到總線的最大電容400PF限制[9]。2.4.3溫濕度檢測模塊原理圖SHT11溫濕度傳感器采用SMD(LCC)表面貼片封裝形式,其引腳結構如圖所示:圖2.9SHT11引腳圖GND為接地端;DATA是雙向串行數(shù)據(jù)線接口;SCK是串行時鐘輸入接口;VDD為0.4~5.5V電源端;NC(5~8)為空管腳。溫濕度檢測模塊原理圖:如圖2.10所示。圖2.10溫濕度檢測模塊原理圖工作原理:溫濕度傳感器SHT11將溫度感測、濕度感測、信號變換、A/D轉換和加熱器等功能集成到一個芯片上,其內部結構如圖2.7所示。該芯片包括一個電容性聚合體濕度敏感元件和一個用能隙材料制成的溫度敏感元件。這兩個敏感元件分別將濕度和溫度轉換成電信號,該電信號首先進入微弱信號放大器進行放大;然后進入一個14位的A/D轉換器;最后經過二線串行數(shù)字接口輸出數(shù)字信號。在測量過程中,校準系數(shù)會自動校準來自傳感器的信號。此外,SHT11內部還集成了一個加熱元件,加熱元件接通后可以將SHT11的溫度升高5攝氏度左右,同時功耗也會有所增加。此功能主要為了比較加熱前后的溫度和濕度值,可以綜合驗證兩個傳感器元件的性能。在高濕(>95%RH)環(huán)境中,加熱傳感器可預防傳感器結露,同時縮短響應時間,提高精度。加熱后SHT11I2C總線通過上拉電阻接正電源(上拉電阻一般為10K,原因:防止場效應管漏極開路)。該模塊可以準確的將所測環(huán)境溫、濕度值以數(shù)字信號的形式傳送給AT89S51單片機。2.5液晶顯示模塊電路設計本系統(tǒng)溫濕度采集信息采用LCD1602進行現(xiàn)場顯示。2.5.1LCD16021602液晶也叫1602字符型液晶,是一種專門用來顯示字母、數(shù)字、符號等的點陣型液晶模塊。它有若干個5*7或者5*11等點陣字符位組成,每個點陣字符位都可以顯示一個字符。每位之間有一個點距的間隔,每行之間也有間隔起到了字符間距和行間距的作用,正因為如此所以它不能顯示圖形。1602LCD是指顯示的內容為16*2,即可以顯示兩行,每行16個字符液晶模塊。目前市面上字符液晶絕大多數(shù)是基于HD44780液晶芯片的,控制原理是完全相同的,因此基于HD44780寫的控制程序可以很方便地應用于市面上大部分的字符型液晶。(1)管腳特性+5V電壓,對比度可調;內含復位電路;提供各種控制命令,如:清屏、字符閃爍、光標閃爍、顯示移位等多種功能;有80字節(jié)顯示數(shù)據(jù)存儲器DDRAM;內建有160個5*7點陣字型的字符發(fā)生器CGROM;8個可由用戶自定義的5*7的字符發(fā)生器CGRAM。(2)管腳接口信號說明1602型液晶接口信號說明如表2.2所示[9]。表2.21602液晶接口信號說明編號符號引腳說明編號符號引腳說明1Vss電源地9D2數(shù)據(jù)口2Vdd電源正極10D3數(shù)據(jù)口3VO液晶顯示對比度調節(jié)端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背光電源負極1602型液晶微功耗,體積小,顯示內容豐富,超薄輕巧,常用在袖珍式儀表和低功耗應用系統(tǒng)中。2.5.2液晶顯示模塊原理圖液晶顯示模塊原理圖如圖2.11所示:圖2.11液晶顯示模塊原理圖該模塊主要實現(xiàn)溫濕度值的現(xiàn)場顯示,AT89S51單片機將采集處理的溫濕度數(shù)據(jù)經P0口輸出送給1602的DB口,由液晶1602顯示溫濕度數(shù)值。一般的51單片機的P0口都是OC門的電路,所以需要加上上拉電阻,不過有些單片機內部有弱上拉,此時可以不接,但對于電路的完整性來說,一般都加上外部上拉電阻,因此這里經P0口接10K的上拉電阻。LCD1602的VO引腳接10K的可變電阻,可以調節(jié)液晶顯示對比度。2.6無線模塊電路設計由于高頻電路的設計在元件的擺放位置、電路的走線方法都有很高的要求,因此該模塊直接使用現(xiàn)成成品模塊—NRF24L01無線發(fā)射模塊。這樣就不用考慮高頻電路的設計問題啦。2.6.1NRF24L01無線模塊NRF24L01是Nordic公司生產的一款新型單片射頻收發(fā)器件,工作于2.4GHz~2.5GHzISM頻段,數(shù)據(jù)傳輸率:1或2Mbps。內置頻率合成器、功率放大器、晶體振蕩器、調制器等功能模塊,并融合了增強型ShockBurst技術,其中輸出功率和通信頻道可通過程序進行設置。NRF24L01功耗低,在以-6dBm的功率發(fā)射時,工作電流也只有9mA;接收時,工作電流只有12.3mA,多種低功率工作模式(掉電模式和空閑模式)使節(jié)能設計更方便。(1)主要特性GFSK調制:硬件集成OSI鏈路層;具有自動應答和自動再發(fā)射功能;片內自動生成報頭和CRC校驗碼;數(shù)據(jù)傳輸率為1Mb/s~10Mb/s;125個頻道:與其它的NRF24系列射頻器件相兼容;供電電壓為1.9V~3.6V。(2)NRF24L01模塊引腳功能定義表2.3NRF24L01模塊引腳說明引腳名稱引腳功能描述1GND電源接地2VCC電源供電電源(+1.9V~+3.6VDC)3CE數(shù)字輸入片內使能啟動接收或發(fā)射模式4CSN數(shù)字輸入SPI片選5CSK數(shù)字輸入SPI時鐘6MOSI數(shù)字輸入SPI從機數(shù)字輸入7MISO數(shù)字輸出SPI從機數(shù)字輸出8IRQ數(shù)字輸出中斷標志引腳,低電平有效SPI口為同步串行通信接口,最大傳輸速率為10Mb/s,傳輸時先傳送低位字節(jié),再傳送高位字節(jié)。但針對單個字節(jié)而言,要先送高位再送低位。與SPI相關的指令共有8個,使用時這些控制指令由NRF24L01的MOSI輸入。相應的狀態(tài)和數(shù)據(jù)信息是從MISO輸出給MCU[18]。NRF24L0l2.6.2無線模塊原理圖無線模塊原理圖如圖2.12所示。5V電壓經三個二極管(IN4007)降壓后約3V左右電壓接至無線模塊VCC端,除GND接地外,其余引腳均接單片機P2口。NRF24L01工作原理:發(fā)射數(shù)據(jù)時,首先將NRF24L01配置為發(fā)射模式,接著把接收節(jié)點地址TX_ADDR和有效數(shù)據(jù)TX_PLD按照時序由SPI口寫入NRF24L01緩存區(qū),TX_PLD必須在CSN為低時連續(xù)寫入,而TX_ADDR在發(fā)射時寫入一次即可,然后CE置為高電平并保持至少10us,延遲130us后發(fā)射數(shù)據(jù);若自動應答開啟,那么NRF24L01在發(fā)射數(shù)據(jù)后立即進入接收模式,接收應答信號(自動應答接收地址應該與接收節(jié)點地址TX_ADDR一致)。如果收到應答,則認為此次通信成功,TX_DS置高,同時TX_PLD從TXFIFO中清除;若未收到應答,則自動重新發(fā)射該數(shù)據(jù)(自動重發(fā)已開啟),若重發(fā)次數(shù)(ARC)達到上限,MAX_RT置高,TXFIFO中數(shù)據(jù)保留以便再次重發(fā);MAX_RT或TX_DS置高時,使IRQ變低,產生中斷,通知MCU。最后發(fā)射成功時,若CE為低則NRF24L01進入空閑模式1;若發(fā)送堆棧中有數(shù)據(jù)且CE為高,則進入下一次發(fā)射;若發(fā)送堆棧中無數(shù)據(jù)且CE為高,則進入空閑模式2。圖2.12無線模塊原理圖接收數(shù)據(jù)時,首先將NRF24L01配置為接收模式,接著延遲130us進入接收狀態(tài)等待數(shù)據(jù)的到來。當接收方檢測到有效的地址和CRC時,就將數(shù)據(jù)包存儲在RXFIFO中,同時中斷標志位RX_DR置高,IRQ變低,產生中斷,通知MCU去取數(shù)據(jù)。若此時自動應答開啟,接收方則同時進入發(fā)射狀態(tài)回傳應答信號。最后接收成功時,若CE變低,則NRF24L01進入空閑模式1。2.7報警電路設計本設計采用峰鳴器報警電路。峰鳴器報警接口電路的設計采用壓電式蜂鳴器,通過AT89S51的1根口線經驅動器驅動蜂鳴器發(fā)聲。壓電式蜂鳴器約需10mA的驅動電流,可以用一個晶體三極管驅動,其原理圖如圖2.13所示:圖2.13報警電路模塊原理圖在圖中,F(xiàn)M接晶體管基極輸入端。當檢測溫濕度值超過所設定上下限值時,由單片機控制FM輸出低電平“0”,晶體管導通,壓電蜂鳴器兩端獲得約+5V電壓而鳴叫;當FM輸出高電平“1”時,三極管截止,蜂鳴器停止工作。2.8小結本章硬件電路部分首先做了總體方案設計的介紹,然后對各個模塊分別介紹,主要包括:單片機核心系統(tǒng),以SHT11智能數(shù)字溫濕度傳感器為核心的溫濕度檢測模塊,1602液晶顯示模塊,以及NRF24L01無線傳輸模塊,蜂鳴器報警模塊。并對各個模塊的主用芯片進行了詳細介紹,使用PROTEL繪制了各個模塊的原理圖,敘述了其工作原理,由各個模塊共同構成一個完整的硬件系統(tǒng)。

3系統(tǒng)軟件設計3.1系統(tǒng)軟件方案設計軟件部分是控制系統(tǒng)的靈魂,軟件的完善設計不但可以更好的發(fā)揮CPU在數(shù)據(jù)處理方面的優(yōu)勢,并且可以更好的完成系統(tǒng)功能,增強系統(tǒng)可靠性。而在開發(fā)單片機應用系統(tǒng)時,常用的軟件工具有匯編語言和KeilC51編譯器。目前流行的KeilC51標準提供了C編譯器為單片機的軟件開發(fā)提供了C語言環(huán)境,同時保留了匯編代碼高效,快速的特點。為降低系統(tǒng)的開發(fā)和維護的難度,縮短開發(fā)周期,故本系統(tǒng)的軟件設計利用keil軟件采用C語言對單片機進行編程實現(xiàn)各項功能。主程序包括各模塊的初始化,溫、濕度檢測,液晶顯示,無線發(fā)射等模塊。用循環(huán)查詢方式,來顯示溫濕度測量值。系統(tǒng)各模塊軟件設計首先根據(jù)系統(tǒng)硬件原理圖對各個模塊進行分析,畫出各個模塊的程序流程圖及主程序流程圖,根據(jù)程序流程圖及各主芯片時序圖利用keil軟件對各個模塊進行編程、調試,經對各個模塊調試成功后,再根據(jù)主程序流程圖把各個模塊組合起來,不斷調試,直至成功為止,完成系統(tǒng)軟件的設計。3.2系統(tǒng)主程序流程圖系統(tǒng)主程序流程如圖3.1所示。主程序的主要功能是負責溫濕度的實時顯示、讀出并處理SHT11測量的當前溫濕度值并負責調用各子程序。初始化主要完成對單片機各功能部件及SHT11、LCD1602、NRF24L01初始狀態(tài)的配置;數(shù)據(jù)采集完成對環(huán)境溫、濕度的實時數(shù)據(jù)采集及相關處理;液晶顯示部分通過單片機控制實現(xiàn)了對溫、濕度數(shù)據(jù)的實時顯示;然后由無線發(fā)射模塊將采集到的溫濕度數(shù)據(jù)發(fā)射出去傳送給遠程設備。

開始開始LCD1602LCD1602液晶,溫、濕度傳感器SHT11初始化NRFNRF24L01配置模式數(shù)據(jù)采集和顯示數(shù)據(jù)采集和顯示將采集到的數(shù)據(jù)裝入無線模塊發(fā)射寄存器將采集到的數(shù)據(jù)裝入無線模塊發(fā)射寄存器啟動發(fā)射啟動發(fā)射發(fā)射完畢?發(fā)射完畢? N Y延時延時 圖3.1主程序流程圖3.3系統(tǒng)各模塊軟件設計3.3.1溫濕度采集子程序設計溫濕度采集子程序的主要功能包括SHT11初始化,采集溫濕度信息,溫濕度值標度變換及溫度補償,將采集到的溫濕度值寫到數(shù)據(jù)總線,啟動傳輸將數(shù)據(jù)傳送給單片機。(1)SHT11操作相關知識命令與接口時序:SHT11傳感器共有5條用戶命令,具體命令格式見表3.1所列。下面介紹一下具體的命令順序及命令時序。表3.1SHT11傳感器命令列表命令編碼說明測量溫度00011溫度測量測量濕度00101濕度測量讀寄存器狀態(tài)00111“讀”狀態(tài)寄存器寫寄存器狀態(tài)00110“寫”狀態(tài)寄存器軟啟動11110重啟芯片,清除狀態(tài)記錄器的錯誤記錄,11毫秒后進入下一個命令1)傳輸開始:初始化傳輸時,首先發(fā)出“傳輸開始命令”,該命令可在SCK為高時使DATA由高電平變?yōu)榈碗娖?,并在下一個SCK為高時將DATA升高。接下來的命令順序包含三個地址位(目前只支持“000”)和5個命令位,當DATA腳的ACK2)連接復位順序:如果與SHT11傳感器的通訊中斷,下列信號順序會使串口復位:即當DATA線處于高電平時,觸發(fā)SCK9次以上(含九次),此后接著發(fā)一個“傳輸開始”命令。3)溫濕度測量時序:當發(fā)出了溫(濕)度測量命令后,控制器就要等到測量完成。使用8/12/14/位的分辨率測量分別需要大約11/55/210ms的時間。為表明測量完成,SHT11會使數(shù)據(jù)線為低,此時控制器必須重新啟動SCK,然后傳送兩字節(jié)的測量數(shù)據(jù)與一字節(jié)CRC校驗和。控制器必須通過使DATA為低來確認每一個字節(jié),所有的量均從右算,MSB列于第一位。通訊在確認CRC數(shù)據(jù)位后停止。如果沒有用CRC-8校驗和,則控制器就會在測量數(shù)據(jù)LSB后保持ACK為高來停止通訊,SHT11在測量和通訊完成后會自動返回睡眠狀態(tài)。(2)溫濕度檢測模塊程序流程圖系統(tǒng)中溫濕度檢測模塊程序流程圖如圖3.2所示。首先對溫濕度傳感器的寄存器、讀寫命令進行初始化,發(fā)送溫濕度測量命令,然后將溫濕度檢測值進行標度變換、溫度補償,將溫濕度測量值放到數(shù)據(jù)總線上,經啟動傳輸時序,將數(shù)據(jù)總線上的值傳送給單片機。開始開始SHT11SHT11初始化采集溫濕度信息采集溫濕度信息溫濕度值標度變換、溫度補償溫濕度值標度變換、溫度補償溫濕度值寫到數(shù)據(jù)總線溫濕度值寫到數(shù)據(jù)總線啟動傳輸啟動傳輸數(shù)據(jù)總線是否被釋放數(shù)據(jù)總線是否被釋放 N Y(延時) 圖3.2溫濕度檢測模塊程序流程圖 (3)溫濕度檢測模塊子程序#include<reg52.h>#include<intrins.h>#include<math.h>//Keillibrary#defineucharunsignedchar#defineuintunsignedintsbitDATA=P1^4;sbitSCK=P1^3;uintTEMP=0,HUMI=1;uinttemp,humi;sfrDBPort=0x80;//P0=0x80,P1=0x90,P2=0xA0,P3=0xB0.數(shù)據(jù)端口/********SHT11函數(shù)聲明********/voids_connectionreset(void);//連接復位子函數(shù)聲明chars_measure(unsignedchar*p_value,unsignedchar*p_checksum,unsignedcharmode);#endif//SHT11程序(SHT11.c):#definenoACK0//繼續(xù)傳輸數(shù)據(jù),用于判斷是否結束通訊#defineACK1//結束數(shù)據(jù)傳輸;//地址命令讀/寫#defineSTATUS_REG_W0x06//00000110寫寄存器#defineSTATUS_REG_R0x07//00000111讀寄存器#defineMEASURE_TEMP0x03//00000011溫度檢測命令#defineMEASURE_HUMI0x05//00000101濕度檢測命令#defineRESET0x1e//00011110軟復位命令//寫字節(jié)程序chars_write_byte(unsignedcharvalue){unsignedchari,error=0;for(i=0x80;i>0;i>>=1)//高位為1,循環(huán)右移{if(i&value)DATA=1;//和要發(fā)送的數(shù)相與,結果為發(fā)送的位elseDATA=0;SCK=1;_nop_();_nop_();_nop_();//延時3usSCK=0;}DATA=1;//釋放數(shù)據(jù)線SCK=1;error=DATA;//檢查應答信號,確認通訊正常_nop_();_nop_();_nop_();SCK=0;DATA=1;returnerror;//error=1通訊錯誤}//讀字節(jié)程序chars_read_byte(unsignedcharack){unsignedchari,val=0;DATA=1;//釋放數(shù)據(jù)線for(i=0x80;i>0;i>>=1)//高位為1,循環(huán)右移{SCK=1;if(DATA)val=(val|i);//讀一位數(shù)據(jù)線的值SCK=0;}DATA=!ack;//如果是校驗,讀取完后結束通訊;SCK=1;_nop_();_nop_();_nop_();//延時3usSCK=0;_nop_();_nop_();_nop_();DATA=1;//釋放數(shù)據(jù)線returnval;}//啟動傳輸voids_transstart(void){DATA=1;SCK=0;//數(shù)據(jù)為1,SCK=0,準備_nop_();//延時1umSCK=1;//第一個脈沖_nop_();DATA=0;//數(shù)據(jù)跌落_nop_();SCK=0;//完成一個脈沖_nop_();_nop_();_nop_();SCK=1;//再一個脈沖_nop_();DATA=1;//數(shù)據(jù)變?yōu)? _nop_();SCK=0;//完成該脈沖 }//連接復位voids_connectionreset(void)//復位{unsignedchari;//定義一個變量DATA=1;SCK=0;//準備for(i=0;i<9;i++)//DATA保持高,SCK時鐘觸發(fā)9個脈沖,發(fā)送啟動傳輸,通迅即復位{SCK=1;SCK=0;}s_transstart();//啟動傳輸}//軟復位程序chars_softreset(void){unsignedcharerror=0;s_connectionreset();//啟動連接復位error+=s_write_byte(RESET);//發(fā)送復位命令returnerror;//error=1通訊錯誤}//讀狀態(tài)寄存器chars_read_statusreg(unsignedchar*p_value,unsignedchar*p_checksum){unsignedcharerror=0;s_transstart();//傳輸開始error=s_write_byte(STATUS_REG_R);//向傳感器發(fā)送命令*p_value=s_read_byte(ACK);//讀8位狀態(tài)寄存器*p_checksum=s_read_byte(noACK);//讀檢查結果returnerror;//如果沒有回復信號error=1}//寫狀態(tài)寄存器chars_write_statusreg(unsignedchar*p_value){unsignedcharerror=0;s_transstart();//傳輸開始error+=s_write_byte(STATUS_REG_W);//向傳感器發(fā)送命令error+=s_write_byte(*p_value);//向寄存器送變量值returnerror;//傳感器無回復信號則返回error>=1}//溫濕度測量chars_measure(unsignedchar*p_value,unsignedchar*p_checksum,unsignedcharmode)//進行溫度或者濕度轉換,由參數(shù)mode決定轉換內容;{unsignederror=0;unsignedinti;s_transstart();//啟動傳輸switch(mode)//選擇發(fā)送命令{caseTEMP:error+=s_write_byte(MEASURE_TEMP);break;//測量溫度caseHUMI:error+=s_write_byte(MEASURE_HUMI);break;//測量濕度default:break;}for(i=0;i<65535;i++)if(DATA==0)break;//等待測量結束if(DATA)error+=1;//如果長時間數(shù)據(jù)線沒有拉低,說明測量錯誤*(p_value)=s_read_byte(ACK);//讀第一個字節(jié),高字節(jié)(MSB)*(p_value+1)=s_read_byte(ACK);//讀第二個字節(jié),低字節(jié)(LSB)*p_checksum=s_read_byte(noACK);//readCRC校驗碼returnerror;//error=1通訊錯誤}//溫濕度值標度變換及溫度補償voidcalc_sth11(float*p_humidity,float*p_temperature){constfloatC1=-4.0;//12位濕度精度修正公式constfloatC2=+0.0405;//12位濕度精度修正公式constfloatC3=-0.0000028;//12位濕度精度修正公式constfloatT1=+0.01;//14位溫度精度5V條件修正公式constfloatT2=+0.00008;//14位溫度精度5V條件修正公式floatrh=*p_humidity;//rh:12位濕度floatt=*p_temperature;//t:14位溫度floatrh_lin;//rh_lin:濕度linear值floatrh_true;//rh_true:濕度ture值floatt_C;//t_C:溫度℃t_C=t*0.01-40;//補償溫度rh_lin=C3*rh*rh+C2*rh+C1;//相對濕度非線性補償rh_true=(t_C-25)*(T1+T2*rh)+rh_lin;//相對濕度對于溫度依賴性補償if(rh_true>100)rh_true=100;//濕度最大修正if(rh_true<0.1)rh_true=0.1;//濕度最小修正*p_temperature=t_C;//返回溫度結果*p_humidity=rh_true;//返回濕度結果valuehumi_val,temp_val;//定義兩個共同體,一個用于濕度,一個用于溫度ucharerror;//用于檢驗是否出現(xiàn)錯誤ucharchecksum;//用于檢驗CRCs_connectionreset();//啟動連接復位while(1){error=0;//初始化error=0,即沒有錯誤error+=s_measure((unsignedchar*)&temp_val.i,&checksum,TEMP);//溫度測量error+=s_measure((unsignedchar*)&humi_val.i,&checksum,HUMI);//濕度測量if(error!=0)s_connectionreset();//如果發(fā)生錯誤,系統(tǒng)復位else{humi_val.f=(

溫馨提示

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

評論

0/150

提交評論