

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、<p> 畢 業(yè) 設 計 [論 文]</p><p> 題 目:基于單片機的遠程大棚溫濕度監(jiān)控系統(tǒng)</p><p> 學 院: 電氣與信息工程學院 </p><p> 專 業(yè): 電氣工程及其自動化 </p><p><b> 摘 要<
2、;/b></p><p> 本課題以遠程大棚溫濕度監(jiān)控為研究目的,數(shù)據(jù)采集部分采用51單片機和DHT11單總線數(shù)字式溫濕度傳感器,數(shù)據(jù)傳輸部分采用485總線電平標準。數(shù)據(jù)的集中處理部分采用了51單片機硬件上位機和PC軟件上位機兩種方案。51單片機上位機或PC軟件上位機通過485電平和51單片機溫濕度數(shù)據(jù)采集器通信。本課題根據(jù)市場的情況開發(fā)出了一個硬件上位機平臺,其采集到溫濕度信息后通過1602液晶進行實時
3、顯示。PC軟件上位機是本課題提供的一個額外的新方案,采用python編程語言,利用其開發(fā)速度快的優(yōu)點,在短時間內(nèi)開發(fā)出了一個簡單的軟件上位機平臺,軟件上位機可以和硬件上位機可以輕松組成一個冗余系統(tǒng)。</p><p> 關鍵字:python編程,DHT11溫濕度,51單片機</p><p><b> ABSTRACT</b></p><p>
4、 The purpose of this topic is to remote greenhouse temperature and humidity monitoring. The data collection uses 51 MCU and DHT11 single-bus digital temperature and humidity sensors. The data transmission part adopts 48
5、5-level standards. Centralized data processing part uses two programs:a microcontroller hardware by 51 MCU and PC software moniter. The 51 single host computer or PC software PC communications through 485 levels, 51 sing
6、le temperature and humidity data logger. This topic can be dev</p><p> KEY WORDS: Python , DHT11, 51MCU</p><p><b> 目 錄</b></p><p><b> 摘要I</b></p>
7、<p> ABSTRACTII</p><p><b> 目錄III</b></p><p><b> 第1章 引言1</b></p><p><b> 1.1課題背景1</b></p><p> 1.2 大棚溫濕度監(jiān)控系統(tǒng)系統(tǒng)發(fā)展現(xiàn)狀1<
8、/p><p> 1.3 本設計的主要工作2</p><p> 第2章 系統(tǒng)設計3</p><p> 2.1 主要構成3</p><p> 2.2 總體方案3</p><p> 2.3 方案說明4</p><p> 第3章 溫濕度采集點的設計5</p><p
9、> 3.1 工作原理5</p><p> 3.2 硬件原理圖6</p><p> 3.3 STC89C52單片機6</p><p> 3.3.1 簡介6</p><p> 3.3.2 引腳圖7</p><p> 3.3.3 串口通訊7</p><p> 3.4
10、DHT11數(shù)字溫濕度傳感器9</p><p> 3.4.1 簡介9</p><p> 3.4.2 在本設計中的應用10</p><p> 3.4.3 串行接口10</p><p> 3.4.4 通信過程11</p><p> 3.5 程序設計11</p><p> 3.5
11、.1 開發(fā)工具介紹11</p><p> 3.5.2 C語言介紹12</p><p> 3.5.3 C語言優(yōu)點12</p><p> 3.5.4 C程序設計13</p><p> 第4章 硬件上位機的設計21</p><p> 4.1 工作原理21</p><p>
12、4.2 LCD1602液晶22</p><p> 4.2.1 簡介22</p><p> 4.2.2 引腳圖22</p><p> 4.3 硬件原理圖23</p><p> 4.4 程序設計24</p><p> 4.4.1 設計算法24</p><p> 4.4.2 宏
13、定義和預處理24</p><p> 4.4.3 子函數(shù)設計24</p><p> 4.4.4 main函數(shù)和中斷函數(shù)設計27</p><p> 第5章 軟件上位機設計31</p><p> 5.1 工作原理31</p><p> 5.2 python語言簡介31</p><p&
14、gt; 5.3 所用庫簡介32</p><p> 5.3.1 pygame32</p><p> 5.3.2 pyserial33</p><p> 5.4 python語言特點33</p><p> 5.4.1 python 數(shù)據(jù)類型33</p><p> 5.4.2 python強制縮進34
15、</p><p> 5.5 程序設計34</p><p> 5.5.1 源代碼34</p><p> 5.5.2 exe程序制作38</p><p> 5.6 程序運行界面39</p><p> 第6章 設計總結41</p><p> 6.1 設計過程中遇到的問題及解決方法
16、41</p><p><b> 6.2 展望41</b></p><p><b> 參考文獻42</b></p><p><b> 致謝43</b></p><p><b> 附錄:44</b></p><p>&
17、lt;b> 附錄A:44</b></p><p><b> 第1章 引言</b></p><p><b> 1.1課題背景</b></p><p> 溫濕度是工業(yè)、農(nóng)業(yè)生產(chǎn)中常見的和最基本的參數(shù)之一,在生產(chǎn)過程中常常需要對溫濕度進行檢測和監(jiān)控。采用現(xiàn)代技術進行溫濕度檢測、數(shù)字顯示、信息存儲及實時
18、顯示,對于提高農(nóng)業(yè)生產(chǎn)效率和產(chǎn)品質(zhì)量、節(jié)約能源等都有重要的作用。伴隨農(nóng)業(yè)科技的發(fā)展,溫濕度測量需求越來越多,也越來越重要,但是在許多特定環(huán)境溫度檢測環(huán)境范圍大、精度要求高。這就要采用現(xiàn)場總線技術對溫濕度進行采集和控制。</p><p> 我國的農(nóng)業(yè)生產(chǎn)自改革開放以來取得了可喜可賀的成績的同時,也凸現(xiàn)出了越來越多的問題,這些問題嚴重制約我國農(nóng)業(yè)可持續(xù)發(fā)展,如果得不到及時解決,將成為發(fā)展中的瓶頸。其存在的問題有:首
19、先是我國人口眾多,其次是資源短缺,再次是我國農(nóng)業(yè)生產(chǎn)的農(nóng)產(chǎn)品成本高以及科技含量低,沒有形成規(guī)模產(chǎn)業(yè)。解決這些問題的關鍵在于我國農(nóng)業(yè)實現(xiàn)從傳統(tǒng)農(nóng)工業(yè)向以高效、優(yōu)質(zhì)、高產(chǎn)為目的的現(xiàn)代科技農(nóng)業(yè)轉(zhuǎn)型。農(nóng)業(yè)環(huán)境以高效、優(yōu)質(zhì)、高產(chǎn)為目的的科技控制手段,有利于推動溫室技術設備的大面積推廣,縮小與國外技術的差距,加快我國農(nóng)業(yè)現(xiàn)代化進程。 </p><p> 結合我國現(xiàn)在大棚種植的現(xiàn)狀,本課題研究了單片機作為核心控制器實現(xiàn)
20、對于溫濕度的實時采集、傳輸。對于大棚種植的現(xiàn)代化,智能化具有重大的意義。</p><p> 1.2 大棚溫濕度監(jiān)控系統(tǒng)系統(tǒng)發(fā)展現(xiàn)狀</p><p> 目前,大棚溫濕度監(jiān)控系統(tǒng)大多采用模擬溫度檢測傳感器,AD轉(zhuǎn)換芯片以及單片機構成的傳輸系統(tǒng),這種溫濕度度采集系統(tǒng)需要在溫室大棚內(nèi)布置大量的測溫電纜,才能把現(xiàn)場傳感器的信號送到采集卡上,安裝和拆卸繁雜,成本也高。同時線路上傳送的是模擬信號,易
21、受干擾和損耗,測量誤差也比較大。</p><p> 顯然,這種溫濕度監(jiān)控系統(tǒng)已經(jīng)滿足農(nóng)業(yè)生產(chǎn)要求了,對于現(xiàn)在的大棚溫濕度測溫系統(tǒng)我提幾種不足:</p><p> ?、?室內(nèi)布線復雜 傳統(tǒng)的溫濕度測試系統(tǒng)需要在室內(nèi)布置大量的電纜,這需要大量的耗費的人力、物力。這也間接增加了農(nóng)業(yè)生產(chǎn)成本.</p><p> ?、?傳輸不穩(wěn)定 由于傳統(tǒng)的溫濕度測試系統(tǒng)是通過模擬信號傳
22、輸?shù)?,由于模擬信號對于干擾很敏感,極易受干擾。這樣很可能導致信號在傳輸過程中失真和變形。</p><p> 1.3 本設計的主要工作</p><p> 鑒于大棚溫濕度監(jiān)控系統(tǒng)的現(xiàn)狀,本設計研究了以單片機和數(shù)字式溫濕度傳感器為核心部件的大棚溫濕度監(jiān)控系統(tǒng)。現(xiàn)給出如下的解決方案:</p><p> ?、?STC89C52作為核心控制器 8051系列單片機芯片是從
23、其誕生到目前都是一款非常常用的一款微控制器。STC是目前國內(nèi)最受歡迎的單片機生產(chǎn)商,本設計采用了STC89C52單片機,其內(nèi)部有豐富的I/O資源。STC具有串口ISP功能,可以很方便的通過串口進行flash的在線燒寫。由于其價格比較低廉、工作穩(wěn)定、抗干擾性強已經(jīng)成為了微控制器的首選產(chǎn)品</p><p> ② DHT11作為溫濕度傳感器 由于模擬溫濕度傳感器傳輸不穩(wěn)定,易受干擾,而且其需要大量的外部器件作為配合
24、才能夠完成溫濕度采集,本設計采用數(shù)字式溫濕度傳感器DHT11。其采用了單總線結構,只需要占用單片機一個I/O口,這樣就簡化了布線。由于無需A/D轉(zhuǎn)換,還為開發(fā)提供了便利。</p><p> ③ 采用串口通信 STC89C52單片機內(nèi)部有一個串口資源,可以用于串口通信。波特率采用了業(yè)內(nèi)最通用的9600bps。數(shù)據(jù)采集采用“詢問”方式,這樣可以避免了通信中產(chǎn)生沖突。</p><p>
25、本設計以以上的方案為基準進行設計,完成了兩點的溫度采集然后通過串口發(fā)送到硬件上位機端進行溫濕度的實時顯示的程序以及硬件開發(fā)。</p><p><b> 第2章 系統(tǒng)設計</b></p><p><b> 2.1 主要構成</b></p><p> 本大棚遠程溫濕度監(jiān)控系統(tǒng)主要由監(jiān)測系統(tǒng)、執(zhí)行機構、上位機平臺三大部分構
26、成。本設計以簡單的一個大棚為例進行方案的設計。</p><p> 監(jiān)測系統(tǒng):主要是溫濕度采集點、狀態(tài)控制器。</p><p> ?、?溫濕度采集點主要完成遠程溫濕度的采集然后通過485總線及時發(fā)送溫濕度信息,以供遠方上位機能夠獲取到相關信息。例如:當溫濕度采集點接收到遠方上位機發(fā)送來的請求溫濕度數(shù)據(jù)時,其會立即采集大棚內(nèi)的溫濕度信息,然后通過485總線把采集到的溫濕度信息發(fā)送給上位機。&
27、lt;/p><p> ?、?狀態(tài)控制器主要完成根據(jù)上位機的指令完成執(zhí)行機構狀態(tài)的采集和控制例如:當狀態(tài)控制器接收到遠方上位機發(fā)送來的請求大棚通風機狀態(tài)時,其會立即采集大棚通風機的狀態(tài)然后通過485總線把大棚通風機狀態(tài)發(fā)送給上位機。當狀態(tài)接收器接收到遠方上位機發(fā)送來的關閉大棚通風機指令時,其會立即終止大棚通風機的工作,然后向遠方上位機發(fā)送執(zhí)行完畢指令高速上位機指令已執(zhí)行。</p><p> 執(zhí)
28、行機構:主要由大棚通風機、透光控制單元構成。</p><p> ?、?大棚通風機主要完成大棚內(nèi)濕度的控制,當大棚通風機接收到狀態(tài)控制器的控制信息的時候,其會啟動調(diào)節(jié)大棚內(nèi)的濕度,直到接收到狀態(tài)控制器的停止指令為止。</p><p> ② 透光控制單元主要完成大棚內(nèi)溫度的調(diào)節(jié)和控制,當大棚透光控制單元接收到狀態(tài)控制器的控制信息的時候,透光控制單元開始工作,直到接收到狀態(tài)控制器的停止指令為止
29、。</p><p> 上位機平臺:主要由硬件上位機、軟件上位機組成。</p><p> ?、?硬件上位機主要進行和監(jiān)測系統(tǒng)、執(zhí)行機構的數(shù)據(jù)交互,當需求溫濕度信息的時候,向監(jiān)測系統(tǒng)發(fā)送請求溫濕度信息指令。當需要對大棚通風機進行控制的時候,向狀態(tài)控制器發(fā)送大棚通風機控制指令。</p><p> ?、?軟件上位機主要是對硬件上位機進行互補,當硬件上位機出現(xiàn)故障無法工作可
30、以切換到軟件上位機。軟件上位機擁有硬件上位機的所有功能。</p><p><b> 2.2 總體方案</b></p><p> 本大棚遠程監(jiān)控系統(tǒng)以一個單個蔬菜大棚進行方案設計,系統(tǒng)包括四個大棚通風機、一個透光控制單元、六個溫濕度采集點、兩個狀態(tài)控制器、一個硬件上位機、一個軟件上位機。其中硬件上位機和軟件上位機構成冗余系統(tǒng),正常情況下硬件上位機工作,當硬件上位機出
31、現(xiàn)故障的時候,可以切換到軟件上位機系統(tǒng)。從而保證了增強了上位機的穩(wěn)定性和容災能力。采用常規(guī)的485電平通信。</p><p> 系統(tǒng)方案圖如下圖所示:</p><p> 圖2.1 系統(tǒng)平面圖</p><p><b> 2.3 方案說明</b></p><p> 本方案主要是對單個大棚進行的溫濕度監(jiān)控系統(tǒng),內(nèi)部包含
32、了溫濕度的采集、狀態(tài)控制器對各單元的控制、通風機的工作條件等。大棚種植中最重要的兩個指標就是溫濕度,大棚溫濕度遠程監(jiān)控系統(tǒng)實際上相當于一個大棚種植自動化系統(tǒng)。 </p><p> 大棚溫濕度遠程監(jiān)控系統(tǒng)模塊眾多且內(nèi)部原理相當復雜,在短期內(nèi)靠單人能力完成整個系統(tǒng)而且能夠直接應用到大棚領域幾乎是無法完成的。所以本設計對此方案中的3個重點模塊進行了實物開發(fā),并且完成了實物,驗證
33、了可行性??梢宰鳛榇笈餃貪穸冗h程監(jiān)控系統(tǒng)相關模塊開發(fā)的一個參考。</p><p> 此三個模塊分別為溫濕度采集點、硬件上位機、軟件上位機。其中軟件上位機中率先采用了python編程語言,可以作為開發(fā)類似功能的一個參考。</p><p> 第3章 溫濕度采集點的設計</p><p><b> 3.1 工作原理</b></p>
34、<p> 溫濕度采集點采用了目前最為常用的STC89C52單片機作為微控制器,DHT11作為溫濕度監(jiān)控系統(tǒng)傳感器,DATA線連接到P2.0口,串口作為主要通信端口。串口接MAX13487芯片轉(zhuǎn)換成485電平進行遠距離傳輸。單片機串口處于監(jiān)聽通信狀態(tài),一旦串口接收到和和自己相關的特定字符串就開始一次溫濕度度采集,采集完后立即通過串口發(fā)送。溫濕度采集點1大致流程如3.1圖所示:</p><p> 圖:3
35、.1 溫濕度采集點1工作流程</p><p><b> 3.2 硬件原理圖</b></p><p> 硬件部分主要由STC89C52、DHT11溫濕度傳感器 MAX13487(485電平轉(zhuǎn)換)組成。</p><p> 溫濕度采集點原理圖如下圖所示:</p><p> 圖3.2 硬件原理圖</p>
36、<p> 3.3 STC89C52單片機</p><p><b> 3.3.1 簡介</b></p><p> STC89C52是STC公司生產(chǎn)的一種低功耗、高性能CMOS8位微控制器,具有 8K 在系統(tǒng)可編程Flash存儲器。STC89C52使用經(jīng)典的MCS-51內(nèi)核,但做了很多的改進使得芯片具有傳統(tǒng)51單片機不具備的功能。在單芯片上,擁有靈巧的8
37、 位CPU 和在系統(tǒng)可編程Flash,使得STC89C52為眾多嵌入式控制應用系統(tǒng)提供高靈活、超有效的解決方案。 具有以下標準功能: 8k字節(jié)Flash,512字節(jié)RAM, 32 位I/O 口線,看門狗定時器,內(nèi)置4KB EEPROM,MAX810復位電路,3個16 位定時器/計數(shù)器,4個外部中斷,一個7向量4級中斷結構(兼容傳統(tǒng)51的5向量2級中斷結構),全雙工串行口。另外 STC89C52 可降至0Hz 靜態(tài)邏輯操作,支持2種軟件可
38、選擇節(jié)電模式??臻e模式下,CPU 停止工作,允許RAM、定時器/計數(shù)器、串口、中斷繼續(xù)工作。掉電保護方式下,RAM內(nèi)容被保存,振蕩器被凍結,單片機一切工作停止,直到下一個中斷或硬件復位為止。最高運作頻率35MHz,6T/12T可選。</p><p><b> 3.3.2 引腳圖</b></p><p> 本模塊中用到的單片機為STC89C52,由于通信中使用了96
39、00bps的波特率,采用了11.0592Mhz晶振,其引腳如下圖所示:</p><p> 圖3.3 51單片機引腳圖</p><p> 3.3.3 串口通訊</p><p> 本次設計中,用到了大量的串口通信,采用的是8位異步串行方式,波特率為最常用的9600bps。以下對51單片機的串行口相關部分進行了詳細的介紹。</p><p>
40、 51單片機內(nèi)部有一個可編程的雙向全雙工串行通信接口,簡稱串口;該串口有4種工作方式,以適用于不同場合;其波特率由單片機內(nèi)部的定時器/計數(shù)器產(chǎn)生,可由軟件設置;接收和發(fā)送均可工作在查詢模式和中斷模式,比較靈活。</p><p> 51單片機內(nèi)部的串口擁有兩個物理上相互獨立的接收、發(fā)送緩沖器SBUF,可以同時接收和發(fā)送數(shù)據(jù);發(fā)送緩沖器只能寫入而不能讀出,接收緩沖器只能讀出而不能寫入;兩個緩沖器占用同一個地址(9
41、9H);控制MCS-51單片機串口的寄存器有兩個SCON和PCON。</p><p> 串口工作方式控制寄存器SCON(99H)如下圖所示:</p><p> 圖3.4 SCON寄存器</p><p> ?、?SM0和SM1:控制單片機的工作方式;</p><p> ?、?SM2:允許方式2和方式3進行多機通信控制位;</p>
42、<p> ?、?REN:允許串行接收控制位;1-允許接收;0-禁止接收;</p><p> ?、?TB8:用于工作在方式2和方式3時存放要發(fā)送的第9位數(shù)據(jù),根據(jù)需要,由軟件設置;</p><p> ?、?RB8:用于工作在方式2和方式3時存放接收到的第9位數(shù)據(jù);</p><p> ?、?TI:發(fā)送中斷標志位,必須由軟件清0;當發(fā)送完一幀數(shù)據(jù)時,就產(chǎn)生一
43、個中斷,此時TI被硬件自動置1,用于標記產(chǎn)生了發(fā)送中斷;</p><p> ⑦ RI:接收中斷標志位,必須由軟件清0;當接收完一幀數(shù)據(jù)時,就產(chǎn)生一個中斷,此時RI被硬件自動置1,用于標記產(chǎn)生了接收中斷;</p><p> 特殊功能寄存器PCON(87H)如下圖所示:</p><p> 圖 3.5 PCON寄存器</p><p> ?、?
44、SMOD:波特率倍增位:當SMOD=1時,波特率加倍;當SMOD=0時,波特率不加倍;</p><p> ?、?GF1和GF0:兩個通用標志,供用戶使用;</p><p> ?、?PD和IDL:CMOS型8051單片機的低功耗控制位;</p><p> 串口的工作方式有4種,由特殊功能寄存器SCON的SM0位和SM1位共同決定,當SM0 SM1取不同的值的時候,串
45、口對應不同的工作方式。</p><p> 對應關系如下圖所示:</p><p> 圖 3.6 串口的工作方式</p><p><b> ?、?方式0:</b></p><p> 該方式下串口為同步移位寄存器輸入/輸出方式,其波特率固定不變?yōu)镕osc/12;數(shù)據(jù)由RXD(P3.0)口輸入/輸出,同步移位脈沖由TXD(
46、P3.1)端輸出,發(fā)送接收的都是8位數(shù)據(jù),低位在先。</p><p><b> ?、?方式1:</b></p><p> 當SM0 SM1=01時,串口以該方式工作,此時的串口為8位異步通信接口。</p><p><b> ③ 方式2:</b></p><p> 當SM0 SM1=10時,串口
47、以該方式工作,此時發(fā)送和接收的都是一幀數(shù)據(jù),即:由11位組成,其中第1位是起始位,接下來的8位是用戶數(shù)據(jù)(低位在先),然后是1位可編程位(第9位數(shù)據(jù)),最后一位是停止位;RB8/TB8根據(jù)需要,設置成0或1,作為多機通信中的地址數(shù)據(jù)標志位或數(shù)據(jù)的奇偶檢驗位。</p><p><b> ?、?方式3:</b></p><p> 當SM0 SM1=11時,串口以該方式工
48、作,該方式是波特率可變的9位異步通信方式,除了波特率外,方式3與方式2相同。</p><p> 目前,在串口的應用中多采用8位異步串行方式,即為方式1,在本次設計中,為了保持兼容性,串口一律采用了方式1,波特率采用9600bps。</p><p> 3.4 DHT11數(shù)字溫濕度傳感器</p><p><b> 3.4.1 簡介</b>&l
49、t;/p><p> DHT11數(shù)字溫濕度傳感器是一款含有已校準數(shù)字信號輸出的溫濕度復合傳感器。它應用專用的數(shù)字模塊采集技術和溫濕度傳感技術,確保產(chǎn)品具有極高的可靠性與卓越的長期穩(wěn)定性。傳感器包括一個電阻式感濕元件和一個NTC測溫元件,并與一個高性能8位單片機相連接。因此該產(chǎn)品具有品質(zhì)卓越、超快響應、抗干擾能力強、性價比極高等優(yōu)點。每個DHT11傳感器都在極為精確的濕度校驗室中進行校準。校準系數(shù)以程序的形式儲存在OT
50、P內(nèi)存中,傳感器內(nèi)部在檢測信號的處理過程中要調(diào)用這些校準系數(shù)。單線制串行接口,使系統(tǒng)集成變得簡易快捷。超小的體積、極低的功耗,信號傳輸距離可達20米以上,使其成為各類應用甚至最為苛刻的應用場合的最佳選則。</p><p> 3.4.2 在本設計中的應用</p><p> 產(chǎn)品為4針單排引腳封裝。</p><p> DHT11的供電電壓為 3-5.5V。傳感器上
51、電后,要等待 1s 以越過不穩(wěn)定狀態(tài)在此期間無需發(fā)送任何指令。電源引腳(VDD,GND)之間可增加一個100nF 的電容,用以去耦濾波,5K的上拉電阻用于增加數(shù)據(jù)傳輸穩(wěn)定性。</p><p> 下圖中DATA1為P2.0口的網(wǎng)絡標號。</p><p> DHT11在本設計中應用如下圖:</p><p> 圖 3.7 DHT11在本設計中的應用</p>
52、;<p> 3.4.3 串行接口</p><p> DHT11的2pin為其DATA引腳,其是一個單線雙向串行接口DATA 用于微處理器與DHT11之間的通訊和同步,采用單總線數(shù)據(jù)格式,一次通訊時間4ms左右,數(shù)據(jù)分小數(shù)部分和整數(shù)部分,具體格式在下面說明,當前小數(shù)部分用于以后擴展,現(xiàn)讀出為零。操作流程如下:</p><p> 一次完整的數(shù)據(jù)傳輸為40bit,高位先出。&
53、lt;/p><p> 數(shù)據(jù)格式:8bit濕度整數(shù)數(shù)據(jù)+8bit濕度小數(shù)數(shù)據(jù)+8bit溫度整數(shù)數(shù)據(jù)+8bit溫度小數(shù)數(shù)據(jù)+8bit校驗和</p><p> 數(shù)據(jù)傳送正確時校驗和數(shù)據(jù)等于“8bit濕度整數(shù)數(shù)據(jù)+8bit濕度小數(shù)數(shù)據(jù)+8bit溫度整數(shù)數(shù)據(jù)+8bit溫度小數(shù)數(shù)據(jù)”所得結果的末8位。</p><p> 3.4.4 通信過程</p><p&
54、gt; 通信時序圖如下圖所示:</p><p> 圖 3.8 DHT11通信時序圖</p><p> 一次正常的數(shù)據(jù)讀取應該如下:</p><p><b> 初始化階段:</b></p><p> ①主機拉低總線18ms或大于18ms,DHT11模塊被喚醒。</p><p> ②主機把
55、DATA線置高電位,總線開始等待DHT11把其拉低。</p><p> ?、劭偩€被模塊拉低后,單片機等待總線被拉高。</p><p> ?、芸偩€被模塊拉高后,單片機等待總線被拉低。</p><p><b> 數(shù)據(jù)包傳輸階段:</b></p><p> ?、菘偩€被模塊拉低后開始第一位的傳輸</p><
56、p> 每一bit數(shù)據(jù)都以50us低電平時隙開始,高電平的長短定了數(shù)據(jù)位是0還是1,若高電平時間小于30us此位為0,若高電平時間大于30us此位為1。</p><p><b> 3.5 程序設計</b></p><p> 3.5.1 開發(fā)工具介紹</p><p> 本次開發(fā)所用工具為Keil UV2,其是德國Keil Softwa
57、re公司出品的51系列兼容單片機C語言軟件開發(fā)系統(tǒng),使用接近于傳統(tǒng)c語言的語法來開發(fā),與匯編相比,C語言在功能上、結構性、可讀性、可維護性上有明顯的優(yōu)勢,因而易學易用,而且大大的提高了工作效率和項目開發(fā)周期,他還能嵌入?yún)R編,您可以在關鍵的位置嵌入,使程序達到接近于匯編的工作效率。KEILC51標準C編譯器為8051微控制器的軟件開發(fā)提供了C語言環(huán)境,同時保留了匯編代碼高效,快速的特點。C51編譯器的功能不斷增強, 使你可以更加貼近CPU
58、本身,及其它的衍生產(chǎn)品。</p><p> 3.5.2 C語言介紹</p><p> C語言是一種計算機程序設計語言,它既具有高級語言的特點,又具有匯編語言的特點。它由美國貝爾實驗室的Dennis M. Ritchie于1972年推出,1978年后,C語言已先后被移植到大、中、小及微型機上,它可以作為工作系統(tǒng)設計語言,編寫系統(tǒng)應用程序,也可以作為應用程序設計語言,編寫不依賴計算機硬件
59、的應用程序。它的應用范圍廣泛,具備很強的數(shù)據(jù)處理能力,不僅僅是在軟件開發(fā)上,而且各類科研都需要用到C語言,適于編寫系統(tǒng)軟件,三維,二維圖形和動畫,具體應用比如單片機以及嵌入式系統(tǒng)開發(fā)。</p><p> C語言,是一種通用的、過程式的編程語言,廣泛用于系統(tǒng)與應用軟件的開發(fā)。具有高效、靈活、功能豐富、表達力強和較高的可移植性等特點,在程序員中備受青睞。最近25年是使用最為廣泛的編程語言。</p>&
60、lt;p> 3.5.3 C語言優(yōu)點</p><p> C語言是運行速度最快的可讀編程語言,其運行速度僅次于匯編。其在單片機開發(fā)方面具有其他編程語言不具有的優(yōu)點。不懂得單片機的指令集,也能夠編寫完美的單片機程序;無須懂得單片機的具體硬件,也能夠編出符合硬件實際的專業(yè)水平的程序;不同函數(shù)的數(shù)據(jù)實行覆蓋,有效利用片上有限的RAM空間;程序具有堅固性:數(shù)據(jù)被破壞是導致程序運行異常的重要因素。C語言對數(shù)據(jù)進行了許
61、多專業(yè)性的處理,避免了運行中間非異步的破壞;C語言提供復雜的數(shù)據(jù)類型(數(shù)組、結構、聯(lián)合、枚舉、指針等),極大地增強了程序處理能力和靈活性;提供auto、static、const等存儲類型和專門針對8051單片機的data、idata、pdata、xdata、code等存儲類型,自動為變量合理地分配地址;提供small、compact、large等編譯模式,以適應片上存儲器的大?。恢袛喾粘绦虻默F(xiàn)場保護和恢復,中斷向量表的填寫,是直接與單
62、片機相關的,都由C編譯器代辦;提供常用的標準函數(shù)庫,以供用戶直接使用;頭文件中定義宏、說明復雜數(shù)據(jù)類型和函數(shù)原型,有利于程序的移植和支持單片機的系列化產(chǎn)品的開發(fā);有嚴格的句法檢查,錯誤很少,可容易地在高級語言</p><p> 3.5.4 C程序設計</p><p> C程序設計采用模塊化結構,對DHT11采集部分進行封裝成頭文件。main函數(shù)中調(diào)用其子函數(shù)即可實現(xiàn)讀取溫濕度,這樣使
63、得程序簡單易懂,而且更具有條理性。</p><p> 01號溫濕度采集點程序用到了三個文件,分別是dht11.h、dht11.c、main.c。</p><p> 01號溫濕度采集點程序所完成的功能為:串口一直處于監(jiān)聽狀態(tài),一旦串口收到數(shù)據(jù)0x01便觸發(fā)一次溫濕度采集,采集完后立即將8位溫度數(shù)據(jù)和8位濕度數(shù)據(jù)依次發(fā)送出去。其總算法如下圖所示:</p><p>
64、 圖 3.9 溫濕度采集點1的總算法</p><p> dht11.h文件為一個聲明部分,對于程序中用到的宏定義進行聲明。其內(nèi)容如下:</p><p> #ifndef _dht11_h_ //定義一個宏,防止文件被重復include出現(xiàn)</p><p> #define _dht11_h_ //重復定義<
65、/p><p> #define OK 1 //定義一個宏OK 代表常量1</p><p> #define ERROR 0 //定義一個宏ERROR代表常量0</p><p> extern void Delay_1ms(unsigned int ms);//聲明一個外部函數(shù)Eelay_1ms()<
66、;/p><p> extern unsigned char DHT11_ReadTempAndHumi();//聲明一個外部函數(shù)</p><p><b> #endif</b></p><p> dht11.c為溫濕度讀取子函數(shù)的實現(xiàn)部分,其對溫濕度讀取子函數(shù)進行定義,以供外部調(diào)用。其主要算法如下圖所示:</p><p&g
67、t; 圖 3.10 dht11.c 溫濕度讀取子函數(shù)算法</p><p><b> C代碼內(nèi)容如下:</b></p><p> #include "dht11.h" //頭文件包含</p><p> #include <reg52.h></p><p>
68、sbit dht11=P2^0; //聲明DHT11 DATA連接線</p><p> #define NUMBER 20</p><p> #define SIZE 5</p><p> static unsigned char status; //定義全局變量</p><p> static u
69、nsigned char value_array[SIZE]; //定義數(shù)組存放DHT11一幀數(shù)據(jù)</p><p> unsigned char temp_value,humi_value; //定義兩個全局變量存放溫度 濕度</p><p> static unsigned char DHT11_ReadValue(); //聲明 數(shù)據(jù)讀取子函數(shù)</p><p&
70、gt; extern void Delay_1ms(unsigned int ms) //延時x毫秒子函數(shù)</p><p><b> {</b></p><p> unsigned int x,y;</p><p> for(x=ms;x>0;x--)</p><p> for(y=110;y>0
71、;y--);</p><p><b> }</b></p><p> static void DHT11_Delay_10us(void) //延時10us子函數(shù)</p><p><b> {</b></p><p> unsigned char a;</p><p&
72、gt; for(a=3;a>0;a--);</p><p><b> }</b></p><p> static unsigned char DHT11_ReadValue()//溫濕度采集讀取數(shù)據(jù)部分子函數(shù)</p><p><b> {</b></p><p> unsigned
73、char count,value=0,i;</p><p> status=OK;</p><p> for(i=8;i>0;i--)</p><p><b> {</b></p><p> value<<=1;</p><p><b> count=0;&l
74、t;/b></p><p> while(dht11==0); //wait up</p><p> DHT11_Delay_10us();</p><p> DHT11_Delay_10us();</p><p> DHT11_Delay_10us();</p><p> if(dht11==1)&l
75、t;/p><p><b> {</b></p><p><b> value++;</b></p><p> while(dht11==1);</p><p><b> }</b></p><p><b> }</b><
76、/p><p> return(value);</p><p><b> }</b></p><p> extern unsigned char DHT11_ReadTempAndHumi(void)//溫濕度采集子函數(shù)</p><p><b> {</b></p><p>
77、; unsigned char i=0,check_value=0,count=0; //定義一些局部變量</p><p><b> dht11=0;</b></p><p> Delay_1ms(20); //拉低DATA線20ms</p><p> dht11=1;
78、 </p><p> DHT11_Delay_10us();</p><p> DHT11_Delay_10us();</p><p> DHT11_Delay_10us();</p><p> DHT11_Delay_10us(); //拉高DATA線40us</p><p>
79、; if(dht11==1)</p><p><b> {</b></p><p> return ERROR;</p><p><b> }</b></p><p><b> else</b></p><p> { while(d
80、ht11==0); //DATA線 被DHT11拉低,等待拉低結束</p><p><b> dht11=1;</b></p><p> while(dht11==1);</p><p> for(i=0;i<SIZE;i++) //DATA線 被DHT11拉高,等待拉高結束</p><p><
81、;b> {</b></p><p> value_array[i]=DHT11_ReadValue();//調(diào)用讀取數(shù)據(jù)子函數(shù)</p><p><b> }</b></p><p> humi_value=value_array[0];//讀取到的濕度部分賦值給humi_value</p><p&g
82、t; temp_value=value_array[2];//讀取到的溫度部分賦值為temp_value</p><p><b> }</b></p><p><b> }</b></p><p> main.c為主程序,調(diào)用dht11.c中的函數(shù)完成整個溫濕度的采集,其中當串口接收到0x01時,flag為1,fl
83、ag為1觸發(fā)一次溫濕度采集。其算法如下圖:</p><p> 圖3.11 01溫濕度采集點main.c算法</p><p> main.c代碼如下:</p><p> #include"dht11.h" //導入dht11.h文件</p><p> #include"dht11.c
84、" //導入dht11.c文件</p><p> //#include<reg52.h></p><p> #include<stdio.h> //導入標準輸入輸出庫</p><p> unsigned char flag,a; //定義2個全局變量用于標識一些信息&
85、lt;/p><p> void main() //main函數(shù)</p><p> { </p><p> //dht11=1;</p><p> SCON=0x50;</p><p> TMOD=0x20;</p>
86、<p><b> TH1=0xfd;</b></p><p><b> TL1=0xfd;</b></p><p><b> TR1=1;</b></p><p><b> EA=1;</b></p><p> ES=1;
87、 //串口初始化,工作方式1,波特率9600bps</p><p> //delays(3); </p><p> while(1) //進入函數(shù)主循環(huán)</p><p><b> {</b></p><p> if(flag=
88、=1) //判斷flag是否為1</p><p> { DHT11_ReadTempAndHumi();//如果flag=1,調(diào)用溫濕度采集子函數(shù)</p><p> P1=temp_value;//將temp_value賦值為P1口,用于程序測試,可刪</p><p> flag=0; //flag置0</p&
89、gt;<p> ES=0; //關閉串口中斷</p><p> SBUF=temp_value; //發(fā)送溫度數(shù)據(jù)</p><p> while(!TI); //等待發(fā)送完畢</p><p> TI=0; //發(fā)送中斷標志置0</p><p> SBUF=humi_va
90、lue; //發(fā)送濕度數(shù)據(jù)</p><p> while(!TI); //等待發(fā)送完畢</p><p> TI=0; //發(fā)送中斷標志置0</p><p> ES=1; //打開串口中斷</p><p><b> }</b></p><p&
91、gt;<b> }</b></p><p><b> }</b></p><p> void serial()interrupt 4 //串口中斷子程序</p><p><b> {</b></p><p> RI=0; //接收中斷標志位清零</p>
92、;<p> a=SBUF; //讀取接收到的數(shù)據(jù)</p><p> if(a==0x01) //判斷接收到的數(shù)據(jù)是否為0x01</p><p> flag=1; //若接收到的數(shù)據(jù)位0x01,flag置1</p><p><b> }</b></p><p> 02號采集點程序也是用到了3個文件
93、,分別是dht11.h、dht11.c、main.c。</p><p> 02號溫濕度采集點程序所完成的功能為:串口一直處于監(jiān)聽狀態(tài),一旦串口收到數(shù)據(jù)0x02便觸發(fā)一次溫濕度采集,采集完后立即將8位溫度數(shù)據(jù)和8位濕度數(shù)據(jù)依次發(fā)送出去。</p><p> 02號溫度采集點所用到的dht11.h、dht11.c和上面的相同,只是其main.c不同,其main.c內(nèi)容算法如下圖:</p
94、><p> 圖 3.12 02溫濕度采集點main.c算法</p><p> main.c代碼如下:</p><p> #include"dht11.h" //導入 dht11.h</p><p> #include"dht11.c" //導入 dht11.c<
95、/p><p> //#include<reg52.h></p><p> #include<stdio.h> //導入標準輸入輸出庫stdio.h</p><p> unsigned char flag,a; //定義兩個全局變量</p><p> void main()
96、 //main函數(shù)</p><p> {SCON=0x50;</p><p> TMOD=0x20;</p><p><b> TH1=0xfd;</b></p><p><b> TL1=0xfd;</b></p><p><b> TR1=1;&l
97、t;/b></p><p><b> EA=1;</b></p><p> ES=1; //對串口進行初始化</p><p> while(1) //進入函數(shù)主循環(huán)</p><p><b> {</b></p>
98、;<p> if(flag==1) //判斷flag是否為1</p><p><b> {</b></p><p> DHT11_ReadTempAndHumi();//如果flag是1,調(diào)用溫濕度采集子函數(shù)</p><p> P1=temp_value; //將temp_value賦值給P1,用于程序測試,可
99、刪</p><p> flag=0; //flag置0</p><p> ES=0; //關閉串口中斷</p><p> SBUF=temp_value;//發(fā)送溫度數(shù)據(jù)</p><p> while(!TI);//等待發(fā)送完畢</p><p> TI=0; //發(fā)
100、送中斷標志清零</p><p> SBUF=humi_value;//發(fā)送濕度數(shù)據(jù)</p><p> while(!TI);//等待發(fā)送完畢</p><p> TI=0; //發(fā)送中斷標志清零</p><p> ES=1; //打開串口中斷</p><p><b> }</
101、b></p><p><b> }</b></p><p><b> }</b></p><p> void serial()interrupt 4 //串口中斷子程序</p><p><b> {</b></p><p> RI=0;
102、 //接收中斷標志清零</p><p> a=SBUF; //讀取接收到的數(shù)據(jù)</p><p> if(a==0x02) //判斷接收到的數(shù)據(jù)是否為0x02</p><p> flag=1; //若為0x02,flag置1</p><p><b>
103、}</b></p><p> 第4章 硬件上位機的設計</p><p><b> 4.1 工作原理</b></p><p> 硬件上位機采用了STC89C52單片機作為核心微控制器、串口作為通信手段、485作為通信電平標準、LCD1602作為顯示終端的設計方案。STC89C52通過串口向溫濕度采集點發(fā)送0x01采集到01溫濕度
104、采集點的溫濕度信息,然后再通過串口向溫濕度采集點發(fā)送0x02采集到02溫濕度采集點的溫濕度信息,最后通過1602液晶進行實時顯示。這樣就完成了一次溫濕度采集,如此循環(huán)下去就可以實現(xiàn)實時監(jiān)測遠方溫度。其流程圖如圖4.1所示:</p><p> 圖4.1 硬件上位機流程圖</p><p> 4.2 LCD1602液晶</p><p><b> 4.2.1
105、 簡介</b></p><p> 1602液晶也叫1602字符型液晶,它是一種專門用來顯示字母、數(shù)字、符號等的點陣型液晶模塊。它由若干個5X7或者5X11等點陣字符位組成,每個點陣字符位都可以顯示一個字符,每位之間有一個點距的間隔,每行之間也有間隔,起到了字符間距和行間距的作用,正因為如此所以它不能很好地顯示圖形(用自定義CGRAM,顯示效果也不好)。1602LCD是指顯示的內(nèi)容為16X2,即可以顯
106、示兩行,每行16個字符液晶模塊(顯示字符和數(shù)字)。市面上字符液晶大多數(shù)是基于HD44780液晶芯片的,控制原理是完全相同的</p><p><b> 4.2.2 引腳圖</b></p><p> 本模塊中用到的LCD 1602引腳圖如下所示:</p><p> 圖4.2 LCD1602引腳圖</p><p> 1
107、602采用標準的16腳接口,其中:</p><p> 第1腳:VSS為電源地</p><p> 第2腳:VCC接5V電源正極</p><p> 第3腳:V0為液晶顯示器對比度調(diào)整端,接正電源時對比度最弱,接地電源時對比度最高(對比度過高時會產(chǎn)生“鬼影”,使用時可以通過一個10K的電位器調(diào)整對比度)。</p><p> 第4腳:RS為寄
108、存器選擇,高電平1時選擇數(shù)據(jù)寄存器、低電平0時選擇指令寄存器。</p><p> 第5腳:RW為讀寫信號線,高電平1時進行讀操作,低電平0時進行寫操作。</p><p> 第6腳:E(或EN)端為使能(enable)端,高電平(1)時讀取信息,負跳變時執(zhí)行指令。</p><p> 第7~14腳:D0~D7為8位雙向數(shù)據(jù)端。</p><p&g
109、t; 第15~16腳:空腳或背燈電源。15腳背光正極,16腳背光負極。</p><p><b> 4.3 硬件原理圖</b></p><p> 硬件部分主要由STC89C52單片機、MAX13487(485電平轉(zhuǎn)換芯片)、1602液晶顯示屏組成,其中晶振采用11.0592Mhz。</p><p> 硬件上位機原理圖如下圖所示:</
110、p><p> 圖 4.3 硬件上位機原理圖</p><p><b> 4.4 程序設計</b></p><p> 4.4.1 設計算法</p><p> 單片機先進行1602初始化,然后通過串口發(fā)送0x01 延時200ms等待接收中斷,接收到數(shù)據(jù)后立即讀取到一個全局變量,再次通過串口發(fā)送0x02 延時200ms等待接
111、受中斷,接收到數(shù)據(jù)后立即讀取到一個全局變量。最后通過字符串處理手段把數(shù)據(jù)嵌入到2個數(shù)組內(nèi),然后把這兩個數(shù)組的內(nèi)容顯示到1602液晶,這樣就完成了一次溫濕度顯示。串口再次發(fā)送0x01......</p><p> 4.4.2 宏定義和預處理</p><p> 在程序的開始部分要進行位聲明,庫函數(shù)引用聲明。</p><p> #include<reg52.h
112、> //頭文件包含</p><p> sbit lcden=P2^5; //LCD 使能端引腳聲明</p><p> sbit lcdrs=P1^0; //LCD 寄存器選擇端引腳聲明</p><p> sbit dula=P2^6; //鎖存器相關引腳聲明,可刪</p><p>
113、 sbit wela=P2^7; //鎖存器相關引腳聲明,可刪</p><p> sbit lcdrw=P1^1; //LCD 讀寫端引腳聲明</p><p> 定義一些程序內(nèi)用到全局變量,用于顯示的全局數(shù)組。由于LCD顯示部分用的是8bit數(shù)據(jù),故采用了unsigned char 數(shù)據(jù)類型。也可以采用char 數(shù)據(jù)類型。</p><p&g
114、t; unsigned char aa,b,c,d,flag,num;</p><p> unsigned char table1[16]="temp: humi: ";//LCD 第一行顯示部分</p><p> unsigned char table2[16]="temp: humi: ";//LCD 第二行顯示部分&l
115、t;/p><p> 4.4.3 子函數(shù)設計</p><p> 由于程序內(nèi)部要用到大量的相同的操作,所以定義了一些經(jīng)常重復使用的函數(shù)。這樣能夠使得程序可讀性更好,更具有條理性。</p><p> 延時子函數(shù)組:要是通過for語句實現(xiàn),讓單片機一直執(zhí)行for語句的代碼塊,這樣就會消耗一定的執(zhí)行時間。根據(jù)這個原理,我們定義了一個延時子函數(shù)用于程序中需要進行延時處理的地方
116、直接調(diào)用。for語句延時常常用于毫秒級的延時,延時所用到的算法如下:</p><p> 圖 4.4 delayms算法流程圖</p><p> void delayms(unsigned char xms)//定義delayms函數(shù) 參數(shù)類型為unsigned char</p><p> { unsigned char i,j; //定義局部變量i,j
117、</p><p> for(i=xms;i>0;i--) //for循環(huán)體</p><p> for(j=110;j>0;j--);</p><p><b> }</b></p><p> 向1602液晶寫命令子函數(shù):先選擇模式為寫命令模式,然后寫入數(shù)據(jù),進行延時。再讓液晶使能端產(chǎn)生一個負跳變
118、執(zhí)行指令。程序流程如下:</p><p> 圖4.5 1602寫命令子函數(shù)流程圖</p><p> void write_com(unsigned char com)//定義write_com函數(shù)</p><p> {lcdrs=0; //lcdrs置0,選擇寫命令模式</p><p>
119、P0=com; //P0輸出數(shù)據(jù)</p><p> delayms(5); //延時5ms</p><p> lcden=1; //lcden置1</p><p> delayms(5); //延時5ms<
120、/p><p> lcden=0; //lcden置0 ,lcden完成了一個負跳變</p><p><b> }</b></p><p> 向1602液晶寫數(shù)據(jù)子函數(shù):先選擇模式為寫數(shù)據(jù)模式,然后寫入數(shù)據(jù),進行延時。再讓液晶使能端產(chǎn)生一個負跳變存儲數(shù)據(jù)。程序流程如下:</p><p&
溫馨提示
- 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 基于單片機大棚溫濕度監(jiān)控系統(tǒng)設計
- 基于單片機的大棚溫濕度光強監(jiān)測畢業(yè)設計
- 單片機溫濕度畢業(yè)設計
- 畢業(yè)設計_基于單片機的糧倉溫濕度監(jiān)控系統(tǒng)的設計
- 基于單片機的大棚溫濕度控制系統(tǒng)的設計
- 單片機無線溫濕度測量系統(tǒng)畢業(yè)設計
- 基于單片機的溫濕度控制系統(tǒng)畢業(yè)設計
- 畢業(yè)設計---基于單片機的倉庫溫濕度檢測系統(tǒng)
- 畢業(yè)設計_基于單片機的環(huán)境溫濕度檢測系統(tǒng)
- 基于單片機溫濕度監(jiān)測系統(tǒng)設計
- 基于單片機的倉庫溫濕度檢測系統(tǒng)設計畢業(yè)設計
- 單片機大棚溫濕度控制的課程設計
- 基于單片機的蔬菜大棚溫濕度智能控制系統(tǒng)設計
- 單片機大棚溫濕度控制的課程設計
- 基于單片機倉庫溫濕度的監(jiān)測系統(tǒng)的畢業(yè)設計
- 基于單片機的糧庫溫濕度監(jiān)控系統(tǒng)設計開題報告
- 基于單片機的溫濕度檢測儀【畢業(yè)設計】
- 畢業(yè)設計---基于單片機的糧倉溫濕度控制系統(tǒng)設計
- 大棚溫濕度測控系統(tǒng)畢業(yè)設計
- 基于單片機的溫濕度監(jiān)測與控制畢業(yè)設計
評論
0/150
提交評論