版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、<p> 摘要:溫濕度使我們生產(chǎn)生活中很重要的參數(shù),本設計為基于51單片機的溫濕度檢測與控制系統(tǒng),采用模塊化、層次化設計。如今采納新技術,使用新式智能的溫濕度傳感器DHT11來實現(xiàn)對溫度、濕度的監(jiān)測,運用DHT11來完成濕度信號的收集并將其轉換為數(shù)字式信號,接著使用單片機AT89C52分析、處置數(shù)據(jù),提供信號給顯示電路,從而完成對溫濕度的檢測與監(jiān)控。采納LCD1602液晶顯示所測得的溫濕度值。優(yōu)點是系統(tǒng)的電路簡單、集成度高、
2、運行穩(wěn)定、調試方便、檢測精度很高,有一定的實用價值。</p><p> 關鍵詞:單片機;DHT11溫濕度傳感器;LCD1602顯示</p><p><b> 目錄</b></p><p><b> 摘要:I</b></p><p><b> 目錄II</b><
3、/p><p><b> 第一章 引言1</b></p><p> 1.1 課題的研究背景1</p><p> 1.2 課題的研究內容及目標1</p><p> 1.3 本文的結構組織1</p><p> 第二章 設計要求及目的2</p><p> 2.1
4、設計目的2</p><p> 2.2 設計要求2</p><p> 第三章 系統(tǒng)方案設計及論證3</p><p> 3.1總體方案設計3</p><p> 3.2方案比較與論證3</p><p> 3.2.1溫濕度檢測3</p><p> 3.2.2處理器選擇4<
5、/p><p> 3.2.3 顯示部分4</p><p> 第四章 系統(tǒng)的硬件設計與實現(xiàn)5</p><p> 4.1 單片機介紹5</p><p> 4.1.1 單片機主要性能5</p><p> 4.1.2 單片機各引腳功能介紹5</p><p> 4.1.3 單片機特殊功能寄
6、存器介紹6</p><p> 4.2 DHT11數(shù)字溫濕度傳感器介紹7</p><p> 4.2.1 DHT11產(chǎn)品概述7</p><p> 4.2.2 串行接口7</p><p> 4.3 1602LCD液晶顯示器簡介9</p><p> 4.3.1 1602LCD的基本參數(shù)及引腳功能9&l
7、t;/p><p> 4.3.1.1 1602LCD主要技術參數(shù):10</p><p> 4.3.1.2. 引腳功能說明10</p><p> 4.3.2 1602LCD的指令說明及時序11</p><p> 4.3.3 1602LCD的一般初始化(復位)過程12</p><p> 第五章 軟件設計13&
8、lt;/p><p> 5.1主程序和中斷程序13</p><p><b> 5.2子程序13</b></p><p><b> 總 結14</b></p><p> 附錄一 電路圖17</p><p> 附錄二 程序代碼18</p><p&
9、gt;<b> 第一章 引言</b></p><p> 1.1 課題的研究背景</p><p> 溫度與濕度與人們的生活息息相關。尤其是在工農(nóng)業(yè)生產(chǎn)、氣象、國防、科研等部門,必須經(jīng)常、精確的對環(huán)境溫度進行監(jiān)測和控制。此外,在制藥,造紙準及溫濕度測量,食品加工和其他行業(yè)是必要的。比較傳統(tǒng)的溫度計使用水銀制作顯示,構造簡單、價格低廉,缺憾是精確度不高,不宜讀數(shù)。傳統(tǒng)
10、的干濕球溫度計的顯示方法,不僅復雜,測量精度不高。而選用單片機對溫濕度實施監(jiān)控和測量,不單單具有節(jié)制便利,單一靈活的特點,而且可以大大提高溫度控制的靈活性的優(yōu)點。用LED數(shù)碼管顯示溫度和濕度值,看起來更直觀。</p><p> 測量溫度和濕度最重要的就是傳感器。溫度和濕度的測量過去是分離的。傳感器的成長歷經(jīng)了三個階段:傳統(tǒng)的分立式溫度傳感器、模擬集成溫度傳感器、智能集成溫度傳感器。目前,從模擬到數(shù)字溫度傳感器的
11、模型的方向,從集成化向智能化,網(wǎng)絡化的發(fā)展。溫度傳感器也經(jīng)歷過這樣的階段走向數(shù)字化、智能化。</p><p> 1.2 課題的研究內容及目標</p><p> 溫度和濕度探測器是以AT89C52單片機為核心控制芯片,該芯片具有良好的抗干擾能力,快速響應。使用此單片機構成的溫濕度檢測儀能夠定時、無誤的監(jiān)測周圍的溫度和相對濕度。 使用高靈敏度收集濕敏電阻阻值變化,然后經(jīng)由單片機從而
12、得到相應濕度,這就是本檢測儀的硬件部份的設計;DHT11數(shù)字溫度傳感器對溫度的實時采集和直接控制監(jiān)測。并用LCD顯示屏作為顯示設備的硬件設計方案。軟件部分選用模塊化的方式分成幾個個體,一個個進行程序設計,最后連接各部分一起協(xié)調工作,從而實現(xiàn)實時監(jiān)測周圍溫濕度的目的。</p><p> 1.3 本文的結構組織</p><p> 本文的組織結構安排如下:</p><p&
13、gt; 第一章引言,扼要闡明本課題的研究背景、研究目的、研究意義,以及要實現(xiàn)的目標。</p><p> 第二章設計的要求及目的,闡述要實現(xiàn)的功能,以及主要的參數(shù)。</p><p> 第三章系統(tǒng)設計方案及論證,通過分析論證,選出最合適的設計方案,介紹總體方案。</p><p> 第四章主要講述整個體系硬件的設計及實現(xiàn),包括單片機的選擇、溫濕度傳感器的選擇以及顯
14、示電路的設計。</p><p> 第五章是軟件設計,基于前面的硬件系統(tǒng),設計程序。</p><p> 第二章 設計要求及目的</p><p><b> 2.1 設計目的</b></p><p> 溫度、濕度是工業(yè)和農(nóng)業(yè)生產(chǎn)的主要環(huán)境參數(shù)。是否能夠及時、準確地測量很重要。如果單片機來對溫度進行控制,利用高精度的溫度
15、,濕度控制,強濕功能,體積小,價格低,簡單靈活,很好的滿足工藝要求。</p><p><b> 2.2 設計要求</b></p><p> 1、實現(xiàn)溫度和濕度的測量;</p><p> 2、按電源鍵進行測量;</p><p> 3、濕度的測量范圍: 0%~100%RH;溫度的測量范圍:-40~+85℃;</
16、p><p> 4、濕度測量精度:±2.0%RH;溫度測量精度:±0.2℃;</p><p> 5、在LCD顯示屏上顯示數(shù)據(jù)和結果;</p><p> 第三章 系統(tǒng)方案設計及論證</p><p><b> 3.1總體方案設計</b></p><p> 根據(jù)課題要求實現(xiàn),該系
17、統(tǒng)由采集系統(tǒng)和顯示系統(tǒng)組成,以AT89C52單片機為核心,設計如圖3-1:</p><p><b> 圖3-1系統(tǒng)圖</b></p><p> 3.2方案比較與論證</p><p> 3.2.1溫濕度檢測</p><p> 方案一:使用AM2301數(shù)字溫濕度傳感器。該型溫濕度傳感器,采用3.3-6V直流電源供電,
18、它的各部分參數(shù):濕度測量的范圍為20%~90%RH;溫度測量的范圍為0~+50℃;濕度測量精度為±5.0%RH;溫度測量精度為±2.0℃。雖然它的價格比較便宜,但測溫的范圍和測濕的范圍太小,溫度的精度和濕度的精度太低,不符合設計的要求。</p><p> 方案二:使用AM2302電容式數(shù)字溫濕度傳感器。它的各部分參數(shù)如下:由于傳感器參數(shù):濕度0% ~ 100%相對濕度的測量范圍;溫度測量范圍
19、為40 ~ + 80℃;濕度的測量精度為±3.0%RH溫度的測量精度:±0.5℃。價格也比較適合,基本可以滿足設計要求。</p><p> 方案三:使用數(shù)字溫濕度傳感器DHT11。濕度測量范圍: 0%~100%RH;溫度測量范圍:40 ~ + 85℃;濕度測量精度:±2%相對濕度±0.2℃溫度測量精度。該傳感器價格很便宜。溫度和濕度都達到或超過了標題的精度要求,屬于低功率
20、傳感器。</p><p> 經(jīng)過比較,從系統(tǒng)技術參數(shù)要求和低功耗方面考慮,選用方案三。</p><p> 3.2.2處理器選擇</p><p> 方案一:采用AT89C51單片機作為處理器,雖能達到要求,但其內存過小,處理精度過低,不是最好的選擇;</p><p> 方案二:采用AT89C52單片機,既經(jīng)濟又有較大的內存,能很好的達到
21、設計要求,是本次設計的主選;</p><p> 方案三:采用TI公司的各種單片機,雖然能很好的達到設計的要求,但其成本過高,且程序較復雜,不適宜與本次設計。</p><p> 通過對比,方案二的AT89C52的功能完全能夠符合題目的各個部分和發(fā)揮部分的設計,故選用方案二。</p><p> 3.2.3 顯示部分</p><p> 方案
22、一:采用LED數(shù)碼管,其操作簡單,顯示直觀。不僅程序的設計簡易,而且對周圍的環(huán)境要求很低,方便維護。但是數(shù)碼管只可以顯示阿拉伯數(shù)字,不能顯示漢字。而且硬件設計也相當繁復。不適用于本設計。</p><p> 方案二:使用LCD液晶,它具有體積小、低功耗、顯示豐富等優(yōu)點。電路連接簡單,價格也便宜。</p><p> 總的來說,LCD液晶顯示更多的內容,所以本設計選用LCD液晶顯示程序。&l
23、t;/p><p> 第四章 系統(tǒng)的硬件設計與實現(xiàn)</p><p><b> 4.1 單片機介紹</b></p><p> 4.1.1 單片機主要性能</p><p> AT89C52是由ATMEL公司生產(chǎn)的51單片機的一個型號。它具有高性能CMOS8位、低電壓的優(yōu)點,使用了該公司的高密度、非易失性存儲技術生產(chǎn),完美兼
24、容MCS-51指令系統(tǒng),包括8位中央處理器和Flash存儲單元,AT89C52功能強大、試用范圍非常廣。</p><p><b> 主要功能特性:</b></p><p> 引腳完全兼容MCS-51產(chǎn)品</p><p> 具有8K字節(jié)的可重擦寫Flash閃存</p><p><b> 1000次擦寫周期
25、</b></p><p><b> 2個讀寫中斷口線</b></p><p> 全靜態(tài)操作:0Hz-24MHz</p><p><b> 三級加密程序存儲器</b></p><p> 256*8字節(jié)內部RAM</p><p> 32可編程雙向I/O線&l
26、t;/p><p> 3個16位定時器/計數(shù)器</p><p> 2個外部中斷源,共6個中斷源</p><p> 可編程串行UART通道</p><p> 低功耗的空間和掉電模式</p><p> 軟件設置睡眠和喚醒功能</p><p> 4.1.2 單片機各引腳功能介紹</p>
27、;<p> AT89C52由40 腳雙列直插包裝的8 位通用微處理器組成,使用常用的C51內核,它主要用于會聚調整功能的控制。功能主要有對會聚主IC 內部寄存器、數(shù)據(jù)RAM及外部接口等部件的初始化,會聚調整控制,會聚測試圖控制,紅外遙控信號IR的接收解碼及與主板CPU通信等。</p><p> ·P0 口:P0 口是8 位的漏極開路型雙向的I/O 口,即為地址/數(shù)據(jù)總線復用口。如果被當
28、作輸出口,每位可以吸收電流的形式驅動8 個TTL邏輯門電路,對端口P0 寫“1”時,起作用變?yōu)楦咦杩馆斎搿.斝枰L問外部數(shù)據(jù)存儲器或程序存儲器時,這組口線分時轉換地址(低8 位)和數(shù)據(jù)總線復用,期間可以激活內部上拉電阻。在Flash 編程時,P0 口負責接受指令字節(jié),但是在程序校驗的時候,需要輸出指令字節(jié),校驗時需要外接上拉電阻?! ?lt;/p><p> ·P1 口:P1 是一個帶在內部上拉電阻的8 位
29、的雙向I/O 口, P1 的輸出緩沖級可驅動(吸取或輸出電流)4 個TTL 邏輯門電路。對端口寫“1”,經(jīng)過里面 的上拉電阻把端口拉至高電平,就可作輸入口使用。作輸入口用時,因為里面存在上拉電阻,某引腳被外部的信號拉低時會輸出一個電流(IIL)。與AT89C51 不同之處是,P1.0 和P1.1 還有作為定時/計數(shù)器2 的外部計數(shù)輸入(P1.0/T2)和輸入(P1.1/T2EX)的功能,F(xiàn)lash 編程和程序校驗的時候,P1 接收低8
30、位地址?!?lt;/p><p> ·P2 口:P2 是一個帶有上拉電阻的8 位雙向的I/O 口,P2 的輸出緩沖級能夠驅動(吸收或輸出電流)4 個TTL 邏輯門電路。將端口P2寫“1”,通過內部的上拉電阻來港的高水平,此時,可作為輸入,作為輸入使用時,因為內部上拉電阻,如果某個引腳被外部信號拉低的時候就會輸出一個電流(IIL)。當訪問外部程序存儲器或16 位地址的外部數(shù)據(jù)存儲器時,P2 口送出高8 位的地
31、址數(shù)據(jù)。當訪問8 位地址的外部數(shù)據(jù)存儲器時,P2 口輸出P2 鎖存器的內容。編程或檢查,P2也獲得了很高的地址和控制信號。</p><p> ·P3 口:P3 口是一組帶有內部上拉電阻的8 位雙向I/O 口。P3 口輸出緩沖級可驅動(吸收或輸出電流)4 個TTL 邏輯門電路。對P3 口寫入“1”時,它們被內部上拉電阻拉高并可作為輸入端口。此時,被外部拉低的P3 口將用上拉電阻輸出電流(IIL)。P3
32、口除了作為一般的I/O 口線外,此外,它的第二功能P3 口還接收一些可以用于Flash 閃速存儲器編程與程序校驗的控制信號才是最重要的。</p><p> 4.1.3 單片機特殊功能寄存器介紹</p><p> ·數(shù)據(jù)存儲器:AT89C52 有256 個字節(jié)內部RAM,80H-FFH 高128 個字節(jié)與特殊功能寄存器(SFR)地址是重復的,雖然物理上分開,但是高128字節(jié)的R
33、AM 與特殊功能寄存器的地址相同。當一條指令訪問7FH 以上地址單元的時候,指令中使用不同的尋址方式,即為究竟是訪問高128 字節(jié)RAM 還是訪問特殊功能寄存器是由尋址方式?jīng)Q定的。直接尋址方式對應的是訪問特殊功能寄存器。</p><p> ·定時器0和定時器1:AT89C52的定時器0和定時器1 的工作方式與AT89C51 相同。</p><p> ·2定時器:定時
34、器2是一個16位定時器/計數(shù)器。不僅僅可以當定時器用,而且可用作外部事件計數(shù)器,特殊功能的寄存器T2CON的C/T2 位負責選擇它的工作方式。定時器2一共有三種工作方式:捕獲方式,向上或向下計數(shù)方式以及波特率發(fā)生器方式,T2CON 的控制位來決定其工作方式。</p><p> 4.2 DHT11數(shù)字溫濕度傳感器介紹</p><p> 4.2.1 DHT11產(chǎn)品概述</p>
35、<p> DHT11數(shù)字溫濕度傳感器是一種復合傳感器,它包含已校準數(shù)字信號輸出。通過特殊的數(shù)字模塊采集技術和溫濕度傳感技術,以確保產(chǎn)品擁有相當高的可靠性和卓越的長期穩(wěn)定性。傳感器由一個電阻式感濕元件與一個NTC測溫元件組成,跟一個高性能的8位單片機相連接。因此,產(chǎn)品品質優(yōu)良,響應速度快,抗干擾能力強,性價比很高。而且它的每次校準都在及其標準的溫濕度實驗室中進行。將所測的校準系數(shù)用程序存儲在OTP內存中,當需要處理檢測到的
36、信號時,傳感器會自動調用這些標準系數(shù)。單線串行接口,很容易和快速的系統(tǒng)集成。它的優(yōu)點是體積小、低功耗、最高20米以上的遠距離信號傳遞,使它能夠在最為嚴格的場合使用。</p><p> 4.2.2 串行接口</p><p> 微處理器與 DHT11之間的聯(lián)系與同步通過DATA來實現(xiàn),它選用單總線的數(shù)據(jù)格式,一次通話時間大約在4ms左右,數(shù)據(jù)包括小數(shù)部分和整數(shù)部分,具體格式會在下文中詳細介
37、紹, 如果有擴張的小數(shù)部分,我們讀作零。操作流程如下:</p><p> 一次完整的數(shù)據(jù)傳輸為40bit,高位先出。</p><p> 數(shù)據(jù)格式: bit濕度整數(shù)數(shù)據(jù)+8bit濕度小數(shù)數(shù)據(jù)+8bi溫度整數(shù)數(shù)據(jù)+8bit溫度小數(shù)數(shù)據(jù)+8bit校驗和</p><p> 數(shù)據(jù)傳遞精確時校驗和數(shù)據(jù)等于“8bit濕度整數(shù)數(shù)據(jù)+8bit濕度小數(shù)數(shù)據(jù)+8bi溫度整數(shù)數(shù)據(jù)+8
38、bit溫度小數(shù)數(shù)據(jù)”其結果末8位。</p><p> 當用戶MCU傳送一次開始的信號后,DHT11就會自動從低功耗模式變換成高速模式,然后等待主機開始信號結束后,DHT11就會傳送響應信號,送出40bit的數(shù)據(jù), 觸發(fā)信號的采集,用戶可以選擇讀數(shù)據(jù)。在從模式下,當DHT11接收到開始信號就會自動觸發(fā)一次溫濕度收集,當接收到主機發(fā)送開始信號的時候,他就不會主動進行溫濕度的收集.完成收集數(shù)據(jù)后會自動轉換到低速模式。
39、</p><p> 1.通訊過程如圖4-1所示:</p><p> 圖 4-1 通訊過程圖</p><p> 總線空閑時候的狀態(tài)為高電平,主機會把總線降低然后等著DHT11響應,主機把總線拉低要大于18毫秒,以確保DHT11可以檢測到起始的信號。當DHT11收到主機的開始的信號后,就會等待主機的開始信號結束,然后發(fā)送80us低電平響應信號.主機發(fā)送開始信號結束
40、后,延時等待20-40us后, 讀取DHT11的響應信號,主機發(fā)送開始信號后,可以切換至輸入模式,或者是輸出高電平, 總線由上拉電阻拉高。</p><p> 總線如果為低電平,說明DHT11發(fā)送響應信號,DHT11發(fā)送響應信號后,再把總線拉高80us,準備發(fā)送數(shù)據(jù),每一bit數(shù)據(jù)都會以50us低電平時隙開始,高電平的長短定了數(shù)據(jù)位是0還是1.格式如圖4-2所示.收到高電平響應信號,則DHT11不會響應,檢查一下
41、電路連接是否正常.當最后一bit數(shù)據(jù)傳送結束后,DHT11拉低總線50us,然后總線由上拉電阻拉高轉為空閑狀態(tài)。</p><p><b> 圖 4-2</b></p><p> 0數(shù)字信號表示,如圖4-3所示:</p><p><b> 圖 4-3</b></p><p> 1數(shù)字信號表示。
42、如圖4-4所示:</p><p><b> 圖4-4</b></p><p> 4.3 1602LCD液晶顯示器簡介</p><p> 4.3.1 1602LCD的基本參數(shù)及引腳功能</p><p> 1602LCD分為帶背光和不帶背光兩種,基控制器大部分為HD44780,帶背光的比不帶背光的厚,是否帶背光在應
43、用中并無差別,兩者尺寸差別如下圖4-5所示:</p><p> 圖4-5 LCD尺寸圖</p><p> 4.3.1.1 1602LCD主要技術參數(shù):</p><p> 顯示容量:16×2個字符</p><p> 芯片工作電壓:4.5—5.5V</p><p> 工作電流:2.0mA(5.0V)&
44、lt;/p><p> 模塊最佳工作電壓:5.0V</p><p> 字符尺寸:2.95×4.35(W×H)mm</p><p> 4.3.1.2. 引腳功能說明</p><p> 1602LCD采用標準的14腳(無背光)或16腳(帶背光)接口,各引腳接口說明如表4-6所示:</p><p>&l
45、t;b> 表4-6</b></p><p> 4.3.2 1602LCD的指令說明及時序</p><p> 1602液晶模塊內部的控制器共有11條控制指令,如表4-7所示:</p><p><b> 表4-7</b></p><p> 與HD44780相兼容的芯片時序表4-8如下:</p
46、><p><b> 表4-8</b></p><p> 讀寫操作時序如圖4-9和圖4-10所示:</p><p> 圖4-9. 讀操作時序</p><p> 圖4-10. 寫操作時序</p><p> 4.3.3 1602LCD的一般初始化(復位)過程</p><p>
47、; 寫指令38H:顯示模式設置</p><p> 寫指令08H:顯示關閉</p><p> 寫指令01H:顯示清屏</p><p> 寫指令06H:顯示光標移動設置</p><p> 寫指令0CH:顯示開及光標設置</p><p><b> 第五章 軟件設計</b></p>
48、<p> 5.1主程序和中斷程序</p><p> 圖5-1顯示主程序流程,實現(xiàn)了溫濕度數(shù)據(jù)的顯示與接收,并通過LCD液晶顯示屏顯示所測的的溫濕度。</p><p> 圖5-1 主程序流程圖</p><p><b> 5.2子程序</b></p><p> 子程序主要是一個DHT11和LCD160
49、2的程序。程序的流程圖如圖5-2所示。目的是實現(xiàn)DHT11和LCD1602的初始化及其數(shù)據(jù)處理。</p><p> 圖5-2子程序流程圖 </p><p><b> 總 結</b></p><p> 通過不懈的努力,終于完成了我的課程設計。在我開始做課程設計之前,我一直片面的覺得課程設計只是對大學這幾年來所學的專業(yè)知識的簡單的總結,但是在
50、實踐的過程中我發(fā)現(xiàn)我錯了,因為畢業(yè)設計不僅是對前面所學知識的一種檢驗,而且也是對自己能力的以一種提高。</p><p> 通過課程設計使我明白了我學到的知識只是知識寶庫中的冰山一角,還有許多要學習的地方。原來我總是感覺到已經(jīng)把所有的東西都學到手了,什么都明白了,有些眼高手低。通過我在課程設計的實踐過程,我懂得了活到老學到老這句名言的真正意義,學習是一個循序漸進的過程,不可能一蹴而就,不管是在以后的工作中、或者生
51、活中都不能停止學習,不斷的用知識武裝自己,讓自己全面發(fā)展,更能適應這個科技文化高速發(fā)展的世界。</p><p> 課程設計的過程,讓我養(yǎng)成了獨立思考的習慣,培養(yǎng)了我實在實際操作中動手的能力,我領悟到了在實踐過程中摸索的困難與最終成功時的喜悅,這些對于我的信心或者是工作能力來說都是極大的鼓勵與肯定,相信這些會對未來的工作和生活中有非常重要的影響。雖然我的課程設計是有些缺陷的,但我覺得在此過程中我收獲了很多,最大的
52、收獲就是在課程設計的設計過程中所學到的財富,他會是我終身受益。</p><p> 在課程設計實踐的過程中,我還深深體會到交流和相互討論的重要性。向老師請教,就能夠時刻確保在大的方向上我是朝對的方向走;與同學討論,可以集思廣益、可以迸發(fā)靈感,收獲新方法。思想和信息的傳遞,確保了我的課程設計得以順利完成。另外,我還總結出一個結論:知識要想實現(xiàn)其價值,必須由實踐來完成!</p><p><
53、;b> 參考文獻</b></p><p> [1] 謝光忠、蔣亞東等. 溫濕度智能數(shù)據(jù)采集控制系統(tǒng)的研制:傳感器技術 20004.[2] 丁元杰.單片微機原理及應用.北京:機械工業(yè)出版社.1993.[3] 喻評,郭文川.單片機原理與接口技術.北京:化學工業(yè)出版社,2006.[4] 李剛.51系列單片機系統(tǒng)設計與應用技巧.北京:北京航空航天大學出版社.2004.[5] 余永權.MCS-
54、51系列單片機應用技術.北京:北京航空航天出版社.2002.</p><p> [6] 劉勇.數(shù)字電路.北京電:子工業(yè)出版社.2004.[7] 王法能.單片機原理及應用(簡明修訂版). 北京:科學出版社.2001. [8] 趙偉軍.PROTEL 99 SE 教程.北京:人民郵電出版社.2004.[9] 黃 強.模擬電子技術》北京:科學出版社.20
55、03.[10] 徐正惠,胡海影.單片機原理與應用實訓教程.北京:京科學出版社.2004. [11] 陳曉文.電子電路課程設計.北京:北京電子工業(yè)出版社. 2004.</p><p><b> 附錄一 電路圖</b></p><p><b> 附錄二 程序代碼</b></p&
56、gt;<p> #include <REG52.h> </p><p> #include <intrins.h> </p><p> #include <math.h> </p><p> #include <stdio.h> </p><p> #inclu
57、de <LCD1602.c></p><p> #define uchar unsigned char</p><p> #define uint unsigned int</p><p> typedef union </p><p><b> { uint i;</b></p>&l
58、t;p><b> float f;</b></p><p><b> } value;</b></p><p> int tem,humi,x,y,z,m;</p><p> enum {TEMP,HUMI};</p><p> sbit DATA = P2^7;</p>
59、<p> sbit SCK = P2^6;</p><p> #define noACK 0</p><p> #define ACK 1</p><p> #define STATUS_REG_W 0x06 </p><p> #define STATUS_REG_R 0x07 </p>&l
60、t;p> #define MEASURE_TEMP 0x03 </p><p> #define MEASURE_HUMI 0x05 </p><p> #define RESET 0x1e </p><p> uchar jgh[10]={"000%c"};</p><p> /
61、/----------------------------------------------------------------------------------</p><p> char s_write_byte(uchar value)</p><p> //-----------------------------------------------------------
62、-----------------------</p><p><b> { </b></p><p> uchar i,error=0; </p><p> for (i=0x80;i>0;i/=2) </p><p> { if (i & value) DATA=1;
63、 </p><p> else DATA=0; </p><p> SCK=1; </p><p> _nop_();_nop_();_nop_(); </p><p><b> SCK=0;</b&
64、gt;</p><p><b> }</b></p><p> DATA=1; </p><p> SCK=1; </p><p> error=DATA; <
65、;/p><p> SCK=0; </p><p> return error; </p><p><b> }</b></p><p> //-------------------------------------------------------------
66、---------------------</p><p> char s_read_byte(uchar ack)</p><p> //----------------------------------------------------------------------------------</p><p><b> { </b&g
67、t;</p><p> uchar i,val=0;</p><p> DATA=1; </p><p> for (i=0x80;i>0;i/=2) </p><p> { SCK=1; </p&g
68、t;<p> if (DATA) val=(val | i); </p><p> SCK=0; </p><p><b> }</b></p><p> DATA=!ack; </p><p> SCK=1;
69、 </p><p> _nop_();_nop_();_nop_(); </p><p> SCK=0; </p><p> DATA=1; </p><p> return val;</p>&l
70、t;p><b> }</b></p><p> //----------------------------------------------------------------------------------</p><p> void s_transstart(void)</p><p><b> { <
71、/b></p><p> DATA=1; SCK=0; </p><p><b> _nop_();</b></p><p><b> SCK=1;</b></p><p><b> _nop_();</b></p>
72、<p><b> DATA=0;</b></p><p><b> _nop_();</b></p><p><b> SCK=0; </b></p><p> _nop_();_nop_();_nop_();</p><p><b> SCK
73、=1;</b></p><p><b> _nop_();</b></p><p> DATA=1; </p><p><b> _nop_();</b></p><p> SCK=0; </p><p><b> }</
74、b></p><p> //----------------------------------------------------------------------------------</p><p> void s_connectionreset(void)</p><p> //--------------------------------
75、--------------------------------------------------</p><p><b> { </b></p><p><b> uchar i; </b></p><p> DATA=1; SCK=0; </p><p&g
76、t; for(i=0;i<9;i++) </p><p><b> { SCK=1;</b></p><p><b> SCK=0;</b></p><p><b> }</b></p><p> s_transstart();
77、 </p><p><b> }</b></p><p> //----------------------------------------------------------------------------------</p><p> char s_measure(uchar *p_valu
78、e, uchar *p_checksum, uchar mode)</p><p> //----------------------------------------------------------------------------------</p><p><b> { </b></p><p> unsigned erro
79、r=0;</p><p><b> uint i;</b></p><p> s_transstart(); </p><p> switch(mode){ </p><p> case TEMP : error+=s_write_byte
80、(MEASURE_TEMP); break;</p><p> case HUMI : error+=s_write_byte(MEASURE_HUMI); break;</p><p> default : break; </p><p><b> }</b></p><p> for (i=0;i<65
81、535;i++) if(DATA==0) break; </p><p> if(DATA) error+=1; </p><p> *(p_value) =s_read_byte(ACK); </p><p> *(p_value+1)=s_read_byte(ACK); </p><p>
82、 *p_checksum =s_read_byte(noACK);</p><p> return error;</p><p><b> }</b></p><p> /**********************************</p><p><b> 數(shù)據(jù)計算處理</b>&l
83、t;/p><p> **********************************/</p><p> void calc_sth11(float *p_humidity ,float *p_temperature)</p><p> { const float C1=-4.0; </p><p> cons
84、t float C2=+0.0405; </p><p> const float C3=-0.0000028; </p><p> const float T1=+0.01; </p><p> const float T2=+0.00008; </p><p>
85、 float rh=*p_humidity; </p><p> float t=*p_temperature; </p><p> float rh_lin; </p><p> float rh_true; </p><
86、p> float t_C; </p><p> t_C=t*0.01 - 40; </p><p> rh_lin=C3*rh*rh + C2*rh + C1; </p><p> rh_true=(t_C-25)*(T1+T2*rh)+rh_lin; </p
87、><p> if(rh_true>100)rh_true=100; </p><p> if(rh_true<0.1)rh_true=0.1; </p><p> *p_temperature=t_C; </p><p> *p_humidity=rh_true;
88、 </p><p><b> }</b></p><p> //--------------------------------------------------------------------</p><p> float calc_dewpoint(float h,float t)</p><p&
89、gt; //--------------------------------------------------------------------</p><p> { float logEx,dew_point;</p><p> logEx=0.66077+7.5*t/(237.3+t)+(log10(h)-2);</p><p> dew_point
90、 = (logEx - 0.66077)*237.3/(0.66077+7.5-logEx);</p><p> return dew_point;</p><p><b> }</b></p><p> /**********************************</p><p><b>
91、主函數(shù)</b></p><p> **********************************/</p><p> void main()</p><p><b> {</b></p><p> value humi_val,temp_val;</p><p> fl
92、oat dew_point;</p><p> unsigned char error,checksum;</p><p> LCD_Initial();</p><p> GotoXY(0,0);</p><p> Print("TEMP: %C");</p><p> Goto
93、XY(0,1);</p><p> Print("HUMI: RH");</p><p> s_connectionreset();</p><p><b> while(1)</b></p><p><b> {</b></p><p>
94、<b> error=0;</b></p><p> error+=s_measure((unsigned char*) &humi_val.i,&checksum,HUMI);</p><p> error+=s_measure((unsigned char*) &temp_val.i,&checksum,TEMP); <
95、/p><p> if(error!=0) s_connectionreset(); </p><p><b> else</b></p><p> { humi_val.f=(float)humi_val.i; </p><p> temp_val.f=
96、(float)temp_val.i; </p><p> calc_sth11(&humi_val.f,&temp_val.f); </p><p> dew_point=calc_dewpoint(humi_val.f,temp_val.f); </p><p> tem=temp_va
97、l.f*10;</p><p> humi=humi_val.f*10;</p><p> GotoXY(5,0);//液晶字符顯示位置</p><p> x=tem/1000;</p><p><b> x+=0x30;</b></p><p><b> jgh[0]=x;&
98、lt;/b></p><p> y=tem%1000/100;</p><p><b> y+=0x30;</b></p><p><b> jgh[1]=y;</b></p><p> z=tem%1000%100/10;</p><p><b>
99、 z+=0x30;</b></p><p><b> jgh[2]=z;</b></p><p><b> m=tem%10;</b></p><p><b> m+=0x30;</b></p><p> jgh[3]=0x2E;</p>&l
100、t;p><b> jgh[4]=m;</b></p><p> Print(jgh);</p><p> GotoXY(5,1);//液晶字符顯示位置 </p><p> x=humi/1000;</p><p><b> x+=0x30;</b></p><p&
101、gt;<b> jgh[0]=x;</b></p><p> y=humi%1000/100;</p><p><b> y+=0x30;</b></p><p><b> jgh[1]=y;</b></p><p> z=humi%1000%100/10;</
102、p><p><b> z+=0x30;</b></p><p><b> jgh[2]=z;</b></p><p> m=humi%10;</p><p><b> m+=0x30;</b></p><p> jgh[3]=0x2E;</p
103、><p><b> jgh[4]=m;</b></p><p> Print(jgh);</p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p>
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 室內溫濕度傳感器
- 溫濕度傳感器.rar
- 溫濕度傳感器.rar
- 常用溫濕度傳感器
- 溫濕度傳感器設計方案
- 室內外溫濕度傳感器
- 管道式溫濕度傳感器
- 高精度溫濕度傳感器
- 電壓型溫濕度傳感器
- 大棚溫濕度傳感器選型
- 溫濕度傳感器的畢業(yè)設計
- 溫濕度傳感器集成系統(tǒng)設計.pdf
- MEMS溫濕度傳感器集成系統(tǒng)設計.pdf
- 溫濕度傳感器畢業(yè)設計----基于51單片機的溫濕度傳感器的設計與制作
- dht11數(shù)字溫濕度傳感器設計
- zigbee溫濕度傳感器設計(優(yōu))(含代碼)
- ZigBee溫濕度傳感器設計畢業(yè)論文.doc
- 數(shù)字溫濕度傳感器dht11
- 無線溫濕度傳感器測量模塊設計-開題報告
- 濕度傳感器課程設計
評論
0/150
提交評論