版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、傳感器與檢測技術課程設計摘要生活上,合適的空氣濕度有益于人們的身體健康;工業(yè)上,芯片的封裝,設備的維護以及工廠的裝配等,都需要在合適的濕度下進行。該課題對空氣的濕度進行研究,采用單片機和濕度模塊組成的濕度控制系統(tǒng),對環(huán)境的濕度進行數(shù)據(jù)采集、處理。系統(tǒng)通過測量當前環(huán)境的絕對濕度,及時、精確地了解空氣濕度的變化,并將當時絕對濕度值與預設的上下限值進行比較,如果不在合適的空氣濕度范圍內(nèi),系統(tǒng)會自動發(fā)出報警。關鍵詞:單片機;濕度傳感器;DHT11濕度傳感器AbstractLife, moderate air humidity is beneficial to people's health;
2、industrial, chip packaging, equipment maintenance and factory assembly, under the appropriate humidity. The subject of air humidity research, uses the monolithic integrated circuit and the humidity modules of humidity control system, the environment humidity data acquisition and processing. The syst
3、em is adopted to measure the absolute humidity of the environment, timely, accurately understanding changes in the humidity of the air, and then the absolute humidity value with a preset upper and lower limit values are compared, if not in the range of suitable air humidity, the system will alarm au
4、tomatically.Key words: single chip microcomputer; humidity sensor; DHT11 humidity sensorI目錄1緒論51.1 目的及意義51.2 發(fā)展狀況52 系統(tǒng)的整體設計52.1 設計內(nèi)容52.2 系統(tǒng)完成的技術指標62.3 系統(tǒng)構成與框圖62.4 系統(tǒng)設計73 硬件設計73.1 STC89C52簡介73.2 DHT11濕度檢測模塊93.2.1 濕度檢測模塊選擇思路93.2.2DHT11濕度模塊93.3 液晶顯示模塊103.4 報警模塊113.5 按鍵輸入模塊123.6 電路的排版連線設計124 軟件設計134.1 總
5、程序流程圖134.1.1 溫濕度DHT11程序144.1.2 LCD1602液晶程序154.2 程序設計154.3 串口通信154.4 上位機的程序設計164.4.1面向對象的編程164.4.2 上位機圖形窗口164.4.3 上位機流程174.4.4 主要程序代碼175 系統(tǒng)調(diào)試175.1 硬件調(diào)試175.2 軟件調(diào)試17參考文獻18附錄19附錄一 程序19附錄二 上位機程序34附錄三 串口通信程序38附錄四 元器件清單41附錄五 硬件原理圖42附錄六 仿真圖43附錄七 PCB版圖44附錄八 上位機圖形窗口4531緒論1.1 目的及意義在工農(nóng)業(yè)生產(chǎn)和日常生活中,對濕度的測量及控制始終占據(jù)著重要
6、地位。在現(xiàn)代農(nóng)業(yè)大棚種植或是室內(nèi)畜牧業(yè)、氣象、環(huán)保、國防、科研、航天以及現(xiàn)代生活的各個方面,經(jīng)常需要對環(huán)境濕度進行測量及控制。本設計就在此基礎上,設計一種基于STC89C52單片機控制的智能濕度檢測系統(tǒng)。1.2 發(fā)展狀況進入21世紀后,特別在我國加入WTO后,國內(nèi)產(chǎn)品面臨巨大挑戰(zhàn)。各行業(yè)特別是傳統(tǒng)產(chǎn)業(yè)都急切需要應用電子技術、自動控制技術進行改造和提升。例如紡織行業(yè),溫濕度是影響紡織品質量的重要因素,但紡織企業(yè)對溫濕度的測控手段仍很粗糙,十分落后,絕大多數(shù)仍在使用干濕球濕度計,采用人工觀測,人工調(diào)節(jié)閥門、風機的方法,其控制效果可想而知。制藥行業(yè)里也基本如此。而在食品行業(yè)里,則基本上憑經(jīng)驗,很少有
7、人使用濕度傳感器。值得一提的是,隨著農(nóng)業(yè)向產(chǎn)業(yè)化發(fā)展,許多農(nóng)民意識到必需擺脫落后的傳統(tǒng)耕作、養(yǎng)殖方式,采用現(xiàn)代科學技術來應付進口農(nóng)產(chǎn)品的挑戰(zhàn),并打進國外市場。各地建立了越來越多的新型溫室大棚,種植反季節(jié)蔬菜,花卉;養(yǎng)殖業(yè)對環(huán)境的測控也日感迫切。但目前,在濕度測試領域大部分濕敏元件性能還只能使用在通常溫度環(huán)境下。在需要特殊環(huán)境下測濕的應用場合大部分國內(nèi)包括許多國外濕度傳感器都會“皺起眉頭”!例如在上面提到紡織印染行業(yè),食品行業(yè),耐高溫材料行業(yè)等,都需要在高溫情況下測量濕度。一般情況下,印染行業(yè)在紗錠烘干中,溫度能達到120攝氏度或更高溫度;在食品行業(yè)中,食物的烘烤溫度能達到80-200攝氏度左右
8、;耐高溫材料,如陶瓷過濾器的烘干等能達到200攝氏度以上。在這些情況下,普通的濕度傳感器是很難測量的。2 系統(tǒng)的整體設計2.1 設計內(nèi)容本次設計分為兩個內(nèi)容:硬件部分、軟件部分。硬件以單片機為核心,配以濕度模塊電路、鍵盤電路、數(shù)模轉換電路、顯示電路和報警電路。主要實現(xiàn)以下功能:(1)通過濕度模塊電路對環(huán)境的濕度進行數(shù)據(jù)采集;(2)通過單片機對采集的數(shù)據(jù)進行處理;(3)當環(huán)境濕度低于或者高于設置濕度時啟動報警。濕度檢測系統(tǒng)是一個智能化的系統(tǒng),它的軟件主要實現(xiàn)功能:(1)單片機能夠控制濕度模塊對空氣的濕度進行采樣;(2)把采集的數(shù)據(jù)通過單片機處理,再以十進制的形式顯示出來;(3)按鍵和顯示電路可對
9、設置的報警上下限值進行更改,并通過顯示電路顯示出來。2.2 系統(tǒng)完成的技術指標(1)實時顯示絕對濕度,系統(tǒng)的精度為10mg/L;(2)采用3位數(shù)碼管進行濕度顯示;(3)顯示報警上限值為180mg/L,下限值為90mg/L;(4)濕度超過上下限濕度時進行報警;(5)數(shù)碼管采用動態(tài)顯示方式。2.3 系統(tǒng)構成與框圖本次設計的系統(tǒng)框圖見圖1.1所示。圖1.1系統(tǒng)框圖單片機控制濕度模塊AM1001對環(huán)境的濕度進行檢測并通過單片機處理用數(shù)碼管顯示出來,鍵盤電路可設置報警的上下限值,當環(huán)境濕度高于上限或者低于下限報警值時,啟動報警電路,即蜂鳴器響。2.4 系統(tǒng)設計(1)設計之前,查找資料。先對濕度的概念進行
10、了解,并了解一些濕度傳感器的工作原理??諝鉂穸仁侵缚諝獬睗竦某潭龋捎孟鄬穸?RH)表示。相對濕度是指空氣實際所含水蒸氣密度和同溫下飽和水蒸氣密度的百分比值。人體在室內(nèi)感覺舒適的最佳相對濕度是,495l,相對濕度過低或過高,對人體都不適甚至有害。 絕對濕度是一定體積的空氣中含有的水蒸氣的質量,一般其單位是克/立方米。絕對濕度的最大限度是飽和狀態(tài)下的最高濕度。絕對濕度只有與溫度一起才有意義,因為空氣中能夠含有的濕度的量隨溫度而變化,在不同的溫度中絕對濕度也不同,因為隨著溫度的變化空氣的體積也要發(fā)生變化。但絕對濕度越靠近最高濕度,它隨溫度的變化就越小。 (2)分析系統(tǒng)的主要性能; (3)對整個電
11、路的流程進行分析; (4)硬件的準備以及焊接; (5)用c語言進行軟件的編寫并仿真; (6)將硬件和軟件進行系統(tǒng)仿真直至完成設計。3 硬件設計3.1 STC89C52簡介圖 1.2 STC89C52本次設計所使用的單片機如圖1.2所示。STC89C52是一個低電壓,高性能CMOS 8位單片機,片內(nèi)含8k bytes的可反復擦寫的Flash只讀程序存儲器和256 bytes的隨機存取數(shù)據(jù)存儲器(RAM),器件采用ATMEL公司的高密度、非易失性存儲技術生產(chǎn),兼容標準MCS-51指令系統(tǒng),片內(nèi)置通用8位中央處理器和Flash存儲單元,功能強大的STC89C52單片機可為您提供許多較復雜系統(tǒng)控制應用
12、場合。 STC89C52有40個引腳,32個外部雙向輸入/輸出(I/O)端口,同時內(nèi)含2個外中斷口,3個16位可編程定時計數(shù)器,2個全雙工串行通信口,2個讀寫口線。STC89C52有PDIP、PQFP/TQFP及PLCC等三種封裝形式,以適應不同產(chǎn)品的需求。 主要功能特性uu(1)兼容MCS51指令系統(tǒng)u u(2)8k可反復擦寫(>1000次)Flash ROM uu(3)32個雙向I/O口 u(4)256x8bit內(nèi)部RAM uu(5)3個16位可編程定時/計數(shù)器中斷u(6)時鐘頻率0-24MHz uu(7)2個串行中斷uu(8)可編程UART串行通道 uu(9)2個外部中斷源uu(1
13、0)共8個中斷源 uu(11)2個讀寫中斷口線 uu(12)3級加密位 uu(13)低功耗空閑和掉電模式u(14)軟件設置睡眠和喚醒功能引腳簡介: (1)VCC(40腳),接5V電源正端 GND(20腳),接5V電源地端 (2)XTAL1(19腳),接外部晶振的一個引腳。在單片機內(nèi)部,它是一個反相放大器的輸入端。當采用外部振蕩器時,此引腳應接地。 XTAL2(18腳),接外部晶振的另一個引腳。在片內(nèi)接至反相放大器的輸出端和內(nèi)部時鐘電路的輸入端。當采用外部振蕩器時,此腳接外部振蕩器的輸出端。 (3)控制信號線 RESET(9腳):復位信號輸入端,復位/掉電時內(nèi)部RAM的備用電源輸入端。 ALE(
14、30腳):地址鎖存允許/編程脈沖輸入,用ALE鎖存從P0口輸出的低8位地址。在對片內(nèi)EPROM編程時,編程脈沖由此輸入。 PSEN(29腳):外部程序存儲器讀選通信號,低電平有效。 EA(31腳):訪問外部存儲器允許/編程電壓輸入。EA為高電平時,訪問內(nèi)部存儲器;低電平時,訪問外部存儲器。3.2 DHT11濕度檢測模塊圖 1.3 DHT11濕度模塊檢測模塊如圖1.3所示。3.2.1 濕度檢測模塊選擇思路要對當前環(huán)境濕度進行檢測,并且需要和單片機結合,最好便是用傳感器來檢測環(huán)境濕度,通過單片機進行數(shù)據(jù)處理后顯示出來。傳感器的選擇需要精度高,而且便于單片機控制。3.2.2DHT11濕度模塊本次設計
15、使用DHT11濕度傳感器。DHT11濕度模塊,是一款含有已校準數(shù)字信號輸出的溫濕度復合傳感器。它應用專用的數(shù)字模塊采集技術和溫濕度傳感技術,確保產(chǎn)品具有極高的可靠性與卓越的長期穩(wěn)定性。傳感器包括一個電阻式感濕元件和一個NTC測溫元件,并與一個高性能8位單片機相連接。因此該產(chǎn)品具有品質卓越、超快響應、抗干擾能力強、性價比極高等優(yōu)點。每個DHT11傳感器都在極為精確的濕度校驗室中進行校準。校準系數(shù)以程序的形式儲存在OTP內(nèi)存中,傳感器內(nèi)部在檢測信號的處理過程中要調(diào)用這些校準系數(shù)。單線制串行接口,使系統(tǒng)集成變得簡易快捷。超小的體積、極低的功耗,信號傳輸距離可達20米以上,使其成為各類應用甚至最為苛刻
16、的應用場合的最佳選則。引腳說明: (1)Pin1:(VDD),電源引腳,供電電壓為3-5.5V。 (2)Pin2:(DATA),串行數(shù)據(jù),單總線。 (3)Pin3:(NC),空腳,懸浮。 (4)Pin4(VDD),接地端,電源負極。 3.3 液晶顯示模塊圖 1.4 液晶模塊本系統(tǒng)顯示采用了工業(yè)字符型液晶模塊1602,如圖1.4所示??娠@示2行16個字符,能方便顯示英文字母大小寫、阿拉伯數(shù)字、常用符號等。通過自定義還可顯示簡單的漢字。本液晶模塊的電路的連接圖如圖3-3所示,第1腳和第2腳分別接到了電路的GND和VCC,這2個腳是液晶工作的電源輸入腳。第3腳通過一個10K的電位器連接到地端,可通過
17、調(diào)節(jié)該電位器來調(diào)節(jié)液晶的對比度。第4腳是液晶的寄存器控制腳,接到了單片機的P12腳上。第5腳是液晶的讀寫控制腳,接到了單片機的P13腳上。第6腳是液晶的使能腳,接到了單片機的P14腳上。第7腳到第14腳是液晶的數(shù)據(jù)/地址8位總線,接到了單片機的P0口上。最后第15腳和第16腳是液晶的背光電源腳,直接連接系統(tǒng)VCC和GND。1602LCD主要技術參數(shù):(1)顯示容量:16×2個字符(2)芯片工作電壓:4.55.5V(3)工作電流:2.0mA(5.0V) u (4)模塊最佳工作電壓:5.0V (5)字符尺寸:2.95×4.35(W×H)mm 引腳說明:(1) VSS
18、:接地(2) VDD:接5V正電源 (3) VL:VL為液晶顯示器對比度調(diào)整的端口,對比度的強弱由接電源的不同決定,對比度的調(diào)整可以通過一個10k的電位器(4) RS:RS是寄存器選擇(5) R/W:R / W的讀和寫信號線,高水平低的讀操作,寫操作(6) E:使能端E,當E端由1至0時,液晶模塊中的命令開始被運行(7) 至(14)D0-D7:位雙向數(shù)據(jù)線(15) BLA:背光源正極(16) BLK:背光源負極3.4 報警模塊圖 1.5 蜂鳴器模塊蜂鳴器是一種一體化結構的電子訊響器,采用直流電壓供電,廣泛應用于計算機、打印機、復印機、報警器、電子玩具、汽車電子設備、電話機、定時器等電子產(chǎn)品中作
19、發(fā)聲器件。報警電路的要求是電路器件簡單,易于控制。所以報警模塊選擇單片機設計中最常使用的有源蜂鳴器。本設計利用單片機的I/O控制三極管的開關狀態(tài),進而達到控制蜂鳴器的報警。由于蜂鳴器工作時,需要的電流比較大,單片機的IO口輸出的電流又比較小,所以這里利用三極管的開關管功能來控制蜂鳴器發(fā)音,本設計選用的三極管型號是PNP三極管S8550,而且本設計選用的蜂鳴器屬于有源蜂鳴器,即在蜂鳴器內(nèi)部已經(jīng)內(nèi)置了震蕩電路,單片機無需連續(xù)發(fā)出高低電平來驅動它,而只要輸出高(或低)電平即可,這大大簡化了單片機程序的設計。由于選用的是PNP型而單片機上電IO口默認是高電平的,所以上電時蜂鳴器是不會發(fā)出鳴叫的。3.5
20、 按鍵輸入模塊圖 1.6 按鍵輸入模塊在單片機應用中鍵盤用得最多的形式是獨立鍵盤及矩陣鍵盤。它們各有自己的特點,其中獨立鍵盤硬件電路簡單,而且在程序設計上也不復雜,一般用在對硬件電路要求不高的簡單電路中;矩陣鍵盤與獨立鍵盤有很大區(qū)別,首先在硬件電路上它要比獨立鍵盤復雜得多,而且在程序算法上比它要煩瑣,但它在節(jié)省端口資源上有優(yōu)勢得多,因此它更適合于多按鍵電路。本設計中由于采用的按鍵數(shù)量較少,只有3個按鍵,分別是“設置”、“減”、“加”,故采用了獨立鍵盤的方式。3.6 電路的排版連線設計電路元器件的排版和連線影響到電路的美觀和功能的實現(xiàn),本設計采用protel軟件進行排版設計。制作流程:(1)將生
21、成的pcb圖打印; (2)按照打印的圖紙在板子上進行刻錄聯(lián)系; (3)將刻錄的連線部分用錫進行覆蓋; (4)用蝕銅液把多余的銅腐蝕掉; (5)打孔,焊接。4 軟件設計4.1 總程序流程圖 圖 1.7 程序流程圖程序流程圖實現(xiàn)步驟:本系統(tǒng)的軟件流程圖如圖1.8所示,最開始先進行液晶的初始化,包括液晶功能初始化和液晶顯示內(nèi)容初始化,接著就開始進行溫濕度的檢測,然后判斷讀取到的溫濕度是否在報警的范圍之內(nèi),如果超出范圍,則蜂鳴器鳴叫,且對應的指示燈亮。檢測完溫濕度數(shù)據(jù)后,就判斷是否有按鍵被按下(第一個),有的話,則進入了報警范圍設置界面,否則進行一段時間的延時后,就進入下一個循環(huán),從新檢測溫濕度數(shù)據(jù)。
22、4.1.1 溫濕度DHT11程序圖 1.8 溫濕度DHT11程序流程圖該軟件部分的實現(xiàn)步驟為:(1)DHT11發(fā)出讀取命令,讀取濕度和溫度數(shù)據(jù)以及校驗和;(2)檢測數(shù)據(jù)是否出錯;(3)若數(shù)據(jù)出錯,則丟棄當前數(shù)據(jù);若數(shù)據(jù)符合,則數(shù)據(jù)被采用,進行下一個程序。4.1.2 LCD1602液晶程序圖1.9 LCD1602液晶程序該程序的實現(xiàn)步驟為:(1)液晶進行初始化后,對行列坐標進行定位;(2)顯示一個字符;(3)數(shù)據(jù)是否顯示完成,若否,則重新顯示字符;若是,則進行下一個程序。 4.2 程序設計利用C51語言進行編程可以把程序進行模塊化編寫,然后在主函數(shù)里進行調(diào)用即可,這樣分工明確,框架清晰,給人一目
23、了然的感覺。程序詳見附錄一。4.3 串口通信串口程序如附錄三所示。單片機要與計算機通信,必須通過MAX232(或其他)芯片。這是因為計算機串口上的電平執(zhí)行的是RS-232標準,它定義的高低電平和單片機的TTL邏輯電平不兼容。而MAX232芯片加上幾個電解電容,能完成電壓的加倍和反相,實現(xiàn)TTL電平和RS-232電平的轉換。單片機的串行口TXD與MAX232的一組電平轉換器的TTL輸入端(管腳12)相連,經(jīng)過MAX232轉換后,RS-232標準輸出端(管腳14)輸出的信號進入計算機串口的RXD。同樣計算機串口的TXD與MAX232的RS-232標準輸入端(管腳13)相連,經(jīng)過電平轉換后,由TTL
24、輸出端(管腳11)輸出到單片機的RXD上DHT11的供電電壓為35.5V。傳感器上電后,要等待1s 以越過不穩(wěn)定狀態(tài)在此期間無需發(fā)送任何指令。電源引腳(VDD,GND)之間可增加一個100nF 的電容,用以去耦濾波。DATA 用于微處理器與DHT11之間的通訊和同步,采用單總線數(shù)據(jù)格式,一次通訊時間4ms左右,數(shù)據(jù)分小數(shù)部分和整數(shù)部分,具體格式在下面說明,當前小數(shù)部分用于以后擴展,現(xiàn)讀出為零.操作流程如下:一次完整的數(shù)據(jù)傳輸40bit,高位先出。數(shù)據(jù)格式:8bit濕度整數(shù)數(shù)據(jù)+8bit濕度小數(shù)數(shù)據(jù)+8bi溫度整數(shù)數(shù)據(jù)+8bit溫度小數(shù)數(shù)據(jù)+8bit校驗和用戶MCU發(fā)送一次開始信號后,DHT11
25、從低功耗模式轉換到高速模式,等待主機開始信號結束后,DHT11發(fā)送響應信號,送出40bit的數(shù)據(jù),并觸發(fā)一次信號采集,用戶可選擇讀取部分數(shù)據(jù).從模式下,DHT11接收到開始信號觸發(fā)一次溫濕度采集,如果沒有接收到主機發(fā)送開始信號,DHT11不會主動進行溫濕度采集.采集數(shù)據(jù)后轉換到低速模式。4.4 上位機的程序設計4.4.1面向對象的編程面向對象(Object Oriented,OO)是軟件開發(fā)方法。面向對象的概念和應用已超越了程序設計和軟件開發(fā),擴展到如數(shù)據(jù)庫系統(tǒng)、交互式界面、應用結構、應用平臺、分布式系統(tǒng)、網(wǎng)絡管理結構、CAD技術、人工智能等領域。面向對象是一種對現(xiàn)實世界理解和抽象的方法,是計
26、算機編程技術發(fā)展到一定階段后的產(chǎn)物。4.4.2 上位機圖形窗口上位機是一臺可以發(fā)出特定操控命令的計算機,通過操作預先設定好的命令,將命令傳遞給下位機,通過下位機來控制設備完成各項操作。圖形窗口見附錄六。4.4.3 上位機流程圖 2.0 主線程流程圖4.4.4 主要程序代碼程序代碼詳見附錄二5 系統(tǒng)調(diào)試5.1 硬件調(diào)試(1)在焊接之前對各元器件的好壞進行測試,用萬用表進行測量。(2)檢測電路焊接的正確性,是否存在漏焊等。(3)用萬用表的電阻檔測量各焊點是否存在虛焊。5.2 軟件調(diào)試軟件采用keil c51軟件進行編寫程序并進行仿真運行,如圖2.2所示。圖 2.1 軟件編譯圖(1)在軟件中編輯程序
27、。(2)編輯結束后對軟件的正確性進行仿真。(3)直至出現(xiàn)以上的結果即沒有錯誤,沒有警告。參考文獻 1 董慧敏溫濕度控制系統(tǒng)設計J 實驗科學與技術,2008,(05):2427 2 PIC單片機與單片機入門J電子制作, 2005, (10):10153 劉守義單片機技術基礎M西安電子科技大學出版社,20074 牛余朋,牛傲其51單片機C語言的編程技巧J.電子制作, 20075 王東峰單片機C語言應用100例M電子工業(yè)出版社,2009(04):22276 周韌研,商斌.Visual C+串口通信開發(fā)入門與編程實踐,2009.(05):33377 李江全,張榮華,李偉等.Visual Studio串
28、口通信與測控應用編程實踐.8 李朝青.PC機及單片機數(shù)據(jù)通信技術.附錄附錄一 程序#include <reg51.h> #include <intrins.h>typedef unsigned char uchar;typedef unsigned int uint;sfr ISP_DATA = 0xe2;/ 數(shù)據(jù)寄存器sfr ISP_ADDRH = 0xe3;/ 地址寄存器高八位sfr ISP_ADDRL = 0xe4;/ 地址寄存器低八位sfr ISP_CMD = 0xe5;/ 命令寄存器sfr ISP_TRIG = 0xe6;/ 命令觸發(fā)寄存器sfr ISP_CO
29、NTR = 0xe7;/ 命令寄存器sbit LCD_RS = P12; / LCD1602液晶的RS管腳 sbit LCD_RW = P13; / LCD1602液晶的RW管腳 sbit LCD_EN = P14; / LCD1602液晶的EN管腳sbit DHT11_D = P10; / 溫濕度傳感器DHT11數(shù)據(jù)接入sbit LED_HL = P36;/ 濕度過低報警指示燈sbit LED_HH = P37;/ 濕度過高報警指示燈sbit Buzzer_D = P11; / 蜂鳴器sbit Key_Set = P15;/ 設置按鍵的管腳sbit Key_Down = P16;/ 減按鍵的
30、管腳sbit Key_Up = P17;/ 加按鍵的管腳uchar SHIDU; / 保存濕度uchar T; / 保存溫度uchar Alarm_HL; / 濕度下限報警值uchar Alarm_HH; / 濕度上限報警值/* 關閉ISP&IAP*/void ISP_Disable()ISP_CONTR = 0x00;ISP_CMD = 0x00;ISP_TRIG = 0x00;/* 從單片機內(nèi)部EEPROM讀一個字節(jié),從0x2000地址開始*/uchar EEPROM_Read(uint add)EA = 0;ISP_CONTR = 0x81;ISP_CMD = 0x01;ISP_
31、ADDRH = (uchar)(add>>8);ISP_ADDRL = (uchar)(add&0xff);/ 對STC89C52系列來說,每次要寫入0x46,再寫入0xB9,ISP/IAP才會生效ISP_TRIG = 0x46; ISP_TRIG = 0xB9;_nop_();ISP_Disable();EA = 1;return ISP_DATA;/* 往單片機內(nèi)部EEPROM寫一個字節(jié),從0x2000地址開始*/void EEPROM_Write(uint add,uchar ch)EA = 0;ISP_CONTR = 0x81;ISP_CMD = 0x02;ISP_
32、ADDRH = (uchar)(add>>8);ISP_ADDRL = (uchar)(add&0xff);ISP_DATA = ch;ISP_TRIG = 0x46;ISP_TRIG = 0xB9;_nop_();ISP_Disable();EA = 1;/* 擦除單片機內(nèi)部EEPROM的一個扇區(qū) 寫8個扇區(qū)中隨便一個的地址,便擦除該扇區(qū),寫入前要先擦除*/void Sector_Erase(uint add) EA = 0;ISP_CONTR = 0x81;ISP_CMD = 0x03;ISP_ADDRH = (uchar)(add>>8);ISP_ADDR
33、L = (uchar)(add&0xff);ISP_TRIG = 0x46;ISP_TRIG = 0xB9;_nop_();ISP_Disable();EA = 1;/* 毫秒級延時函數(shù)*/void Delay_Ms(uint time)uint i,j;for(i=0;i<time;i+)for(j=0;j<112;j+);/* LCD1602液晶寫指令函數(shù)*/void Lcd_Write_Cmd(uchar cmd) LCD_RS = 0; LCD_RW = 0; LCD_EN = 0; P0 = cmd;Delay_Ms(2); LCD_EN = 1; Delay_M
34、s(2); LCD_EN = 0;/* LCD1602液晶寫數(shù)據(jù)函數(shù)*/void Lcd_Write_Data(uchar dat) LCD_RS = 1; LCD_RW = 0; LCD_EN = 0; P0 = dat;Delay_Ms(2); LCD_EN = 1; Delay_Ms(2); LCD_EN = 0;/* LCD1602液晶初始化函數(shù)*/void Lcd_Init() Lcd_Write_Cmd(0x38); / 16*2顯示,5*7點陣,8位數(shù)據(jù)口 Lcd_Write_Cmd(0x0C); / 開顯示,不顯示光標 Lcd_Write_Cmd(0x06); / 地址加1,當
35、寫入數(shù)據(jù)后光標右移 Lcd_Write_Cmd(0x01); / 清屏/* LCD1602液晶輸出字符串函數(shù)*/void Lcd_Show_String(uchar *str) while(*str!='0') / 判斷當前字符是否為空字符 Lcd_Write_Data(*str+);/* LCD1602液晶輸出數(shù)字*/void Lcd_Show_Num(uchar num)Lcd_Write_Data(num/10+48);/ 十位Lcd_Write_Data(num%10+48); / 個位/* LCD1602液晶顯示內(nèi)容的初始化*/void Lcd_Show_Init()
36、Lcd_Write_Cmd(0x80);Lcd_Show_String(" DHT11 SYSTEM "); / 第1行的顯示內(nèi)容Lcd_Write_Cmd(0xC0);Lcd_Show_String(" SHIDU= %RH "); / 第2行的顯示內(nèi)容 /* 10us級延時程序*/void Delay_10us()_nop_();/ 執(zhí)行一條指令,延時1微秒_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();/* 讀取DHT11單總線上的一個字節(jié)*/uchar
37、 Read_Dht_Byte() uchar j;uchar dat = 0;for(j=0;j<8;j+) while(!DHT11_D);/ 等待低電平結束Delay_10us();/ 延時等待30usDelay_10us();Delay_10us();if(DHT11_D) / 判斷數(shù)據(jù)線是高電平還是低電平dat=dat|0x01;while(DHT11_D); elsedat=dat|0x00;dat=dat<<1; / 循環(huán)左移一位 return dat; /* 讀取DHT11的一幀數(shù)據(jù),濕度高、濕度低、校驗碼*/void Read_Dht_Data() uchar
38、 Shidu_H;/ 濕度高檢測值uchar Shidu_L; / 濕度低檢測值 uchar Tem_H;/ 溫度高檢測值uchar Tem_L;/ 溫度低檢測值 uchar check;/ 校驗字節(jié) DHT11_D = 0;/ 主機拉低20msDelay_Ms(20);DHT11_D = 1;/ DATA總線由上拉電阻拉高 主機延時40usDelay_10us(); / 延時等待30usDelay_10us();Delay_10us();while(!DHT11_D);/ 等待DHT的低電平結束while(DHT11_D);/ 等待DHT的高電平結束/ 進入數(shù)據(jù)接收狀態(tài)Shidu_H = R
39、ead_Dht_Byte(); / 濕度高8位Shidu_L = Read_Dht_Byte(); / 濕度低8位,總為0Tem_H = Read_Dht_Byte(); / 溫度高8位 Tem_L = Read_Dht_Byte(); / 溫度低8位,總為0 check = Read_Dht_Byte();/ 8位校驗碼,其值等于讀出的四個字節(jié)相加之和的低8位DHT11_D = 1;/ 拉高總線if(check=Shidu_H + Shidu_L + Tem_H + Tem_L) / 如果收到的數(shù)據(jù)無誤SHIDU = Shidu_H;/ 將濕度的檢測結果賦值給全局變量SHIDU/* 報警判斷
40、*/void Alarm_Judge()uchar i;if(SHIDU>Alarm_HH) / 濕度過高,低電平顯示LED_HH = 0; LED_HL = 1;else if(SHIDU<Alarm_HL)/ 濕度過低,低電平顯示LED_HL = 0;LED_HH = 1;else / 濕度正常,都為高電平LED_HH = 1;LED_HL = 1;if(!LED_HH)|(!LED_HL) / 蜂鳴器判斷,只要至少1個報警燈亮,蜂鳴器就報警for(i=0;i<3;i+)Buzzer_D = 0;Delay_Ms(100);Buzzer_D = 1;Delay_Ms(10
41、0);/* 按鍵掃描,用于設置濕度報警范圍*/void Key_Scan()if(!Key_Set)/ 判斷設置按鍵是否被按下/*將液晶顯示改為設置頁面的*/Lcd_Write_Cmd(0x80);Lcd_Show_String(" Alarm Set "); / 第一行顯示內(nèi)容Lcd_Write_Cmd(0xC0);Lcd_Show_String(" - "); / 第二行顯示內(nèi)容 Lcd_Write_Cmd(0xC0+5); / 在液晶上填充濕度的下限值Lcd_Show_Num(Alarm_HL);Lcd_Write_Cmd(0xC0+8); / 在
42、液晶上填充濕度的上限值Lcd_Show_Num(Alarm_HH); Lcd_Write_Cmd(0xC0+6); / 光標定位到第2行第7列Lcd_Write_Cmd(0x0F); / 光標閃爍Delay_Ms(10); / 去除按鍵按下的抖動while(!Key_Set); / 等待按鍵釋放Delay_Ms(10); / 去除按鍵松開的抖動/*設置濕度的下限值*/while(Key_Set) / “設置鍵” 沒有被按下,則一直處于濕度下限的設置if(!Key_Down) / 判斷 “減按鍵“ 是否被按下 if(Alarm_HL>0) / 當濕度下限值大于0時,自減Alarm_HL-;
43、 Lcd_Write_Cmd(0xC0+5); / 重新刷新顯示更改后的濕度下限值 Lcd_Show_Num(Alarm_HL);Lcd_Write_Cmd(0xC0+6); / 重新定位閃爍的光標位置Delay_Ms(350);if(!Key_Up) / 判斷 “加按鍵“ 是否被按下if(Alarm_HL<99) / 當濕度下限值小于99時,自加Alarm_HL+;Lcd_Write_Cmd(0xC0+5); / 重新刷新顯示更改后的濕度下限值Lcd_Show_Num(Alarm_HL);Lcd_Write_Cmd(0xC0+6); / 重新定位閃爍的光標位置Delay_Ms(350)
44、; / 延時Lcd_Write_Cmd(0xC0+9); / 定位到濕度上限的位置閃爍Delay_Ms(10); / 去除按鍵按下的抖動while(!Key_Set); / 等待按鍵釋放Delay_Ms(10); / 去除按鍵松開的抖動/*設置濕度的上限值*/ while(Key_Set) / “設置鍵” 沒有被按下,則一直處于濕度上限的設置if(!Key_Down) / 判斷 “減按鍵” 是否被按下if(Alarm_HH>0) / 當濕度上限值大于0時,自減Alarm_HH-;Lcd_Write_Cmd(0xC0+8); / 重新刷新顯示更改后的濕度上限值Lcd_Show_Num(Al
45、arm_HH); Lcd_Write_Cmd(0xC0+9); / 重新定位閃爍的光標位置Delay_Ms(350);if(!Key_Up) / 判斷 “加按鍵“ 是否被按下if(Alarm_HH<99) / 當濕度上限值小于99時,自加Alarm_HH+;Lcd_Write_Cmd(0xC0+8); / 重新刷新顯示更改后的濕度上限值Lcd_Show_Num(Alarm_HH); Lcd_Write_Cmd(0xC0+9); / 重新定位閃爍的光標位置Delay_Ms(350); / 延時Lcd_Write_Cmd(0x0C); / 取消光標閃爍Lcd_Show_Init(); / 液晶顯示為檢測界面的Delay_Ms(10); / 去除按鍵按下的抖動while(!Key_Set); / 等待按鍵釋放Delay_Ms(10); / 去除按鍵松開的抖動Sector_Erase(0x2000); / 存儲之前必須先擦除EEPROM_Write(0x2000,Alarm_HL); / 把濕度下限存入到EEPROM的0x2000這個地址EEPROM_Write(0x2001,Alarm_HH);
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年智慧城市廠房委托出租與城市管理服務合同3篇
- 2025年度紡織行業(yè)供應鏈金融服務合同范本3篇
- 二零二四年養(yǎng)老院活動指導員聘用合同(老年文化活動策劃與執(zhí)行)3篇
- 二零二五版安保服務合同糾紛處理條款3篇
- 二零二四年度“石油化工”項目投資合同
- 二零二五年度疫情期間電子商務平臺運營與推廣合同3篇
- 2024注冊不良資產(chǎn)處置公司協(xié)議轉讓
- 2024版用房產(chǎn)抵押借款合同
- 2025年度玫瑰花采摘與加工服務外包合同4篇
- 年度高壓液壓閥產(chǎn)業(yè)分析報告
- T-SDLPA 0001-2024 研究型病房建設和配置標準
- (人教PEP2024版)英語一年級上冊Unit 1 教學課件(新教材)
- 全國職業(yè)院校技能大賽高職組(市政管線(道)數(shù)字化施工賽項)考試題庫(含答案)
- 2024胃腸間質瘤(GIST)診療指南更新解讀 2
- 光儲電站儲能系統(tǒng)調(diào)試方案
- 2024年二級建造師繼續(xù)教育題庫及答案(500題)
- 小學數(shù)學二年級100以內(nèi)連加連減口算題
- 建設單位如何做好項目管理
- 三年級上遞等式計算400題
- 一次性餐具配送投標方案
- 《中華民族多元一體格局》
評論
0/150
提交評論