基于單片機溫濕度測量儀設計_第1頁
基于單片機溫濕度測量儀設計_第2頁
基于單片機溫濕度測量儀設計_第3頁
基于單片機溫濕度測量儀設計_第4頁
基于單片機溫濕度測量儀設計_第5頁
已閱讀5頁,還剩18頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、單片機課程設計報告單片機課程設計報告題目:基于單片機的溫濕度儀表設計班 級: 智能科學與技術1201班 學 生 姓 名: 曹文波 學 號: 120407130 指 導 教 師 : 朱建光 成 績 : 沈陽工業(yè)大學摘要溫度和濕度是兩個最基本的環(huán)境參數(shù),人們生活與溫濕度息息相關。在日常生活、工業(yè)、醫(yī)學、環(huán)境保護、化工、石油等領域,經(jīng)常需要對環(huán)境溫度和濕度進行測量和控制。準確測量溫濕度在生物制藥食品加工、造紙等行業(yè)更是至關重要。因此,研究溫濕度的測量方法和裝置具有重要的意義。隨著科技的不斷發(fā)展,單片機技術已經(jīng)普及到我們的工作、生活、科研等各個領域。已經(jīng)成為一種比較成熟的技術。由于單片機集成度高、功能

2、強、可靠性高、體積小、功耗低、使用方便等優(yōu)點,目前已經(jīng)滲透到我們工作和生活的方方面面。本設計STC89C52為主要控制器件,以DHT11為數(shù)字溫度傳感器的新型數(shù)字溫濕度計。本設計主要包括硬件電路的設計和系統(tǒng)軟件的設計。目錄第一章 目標及主要任務··················3第二章 硬件設計··········&

3、#183;··········3 2.1系統(tǒng)設計方案 ·······················3 2.2 STC89C52介紹 ···········&#

4、183;··········4 2.3 DHT11數(shù)字傳感器介紹 ··················5 2.4電路設計 ················

5、83;·······7第3章 軟件設計·····················11 3.1 系統(tǒng)軟件主程序流程 ·················&

6、#183;·113.2 DHT11數(shù)據(jù)采集流程 ····················13第4章 結論與調(diào)試····················13附錄(程序清單)·

7、3;··················14參考文獻························22第一章 目標及主要任務在本次課程設計中,為實現(xiàn)對溫濕度的檢測與顯示,主要利用

8、以STC89C52為核心構架硬件電路,DHT11溫濕度傳感器采集環(huán)境溫度及濕度信息(溫度檢測范圍:0至+50。測量精度:2.;濕度檢測范圍:20%-90%RH檢測精度:5%RH),數(shù)碼管直接顯示溫度和濕度(顯示方式:溫度:兩位顯示;濕度:兩位顯示);同時利用C語言編程實現(xiàn)溫濕度信息的顯示功能。擴展功能:可設置溫濕度報警值,溫濕度超過設置的響應報警值,會發(fā)出報警信號。第二章 硬件設計2.1系統(tǒng)設計方案 本方案使用STC89C52作為控制核心,一直能溫濕度傳感器DHT11作為溫濕度測量元件,顯示電路采用4位數(shù)碼管顯示,采用單片機最小系統(tǒng)。系統(tǒng)硬件電路設計框圖如下圖2-1。數(shù)碼管顯示電路時鐘復位電路

9、DHT11溫濕度傳感器數(shù)據(jù)采集按鍵電路STC89C52單片機圖2-1系統(tǒng)硬件電路設計框圖2.2 STC89C52介紹STC89C52是STC公司生產(chǎn)的一種低功耗、高性能CMOS8位微控制器,具有 8K 在系統(tǒng)可編程Flash存儲器。STC89C52使用經(jīng)典的MCS-51內(nèi)核,但做了很多的改進使得芯片具有傳統(tǒng)51單片機不具備的功能。在單芯片上,擁有靈巧的8 位CPU 和在系統(tǒng)可編程Flash,使得STC89C52為眾多嵌入式控制應用系統(tǒng)提供高靈活、超有效的解決方案圖2-2 STC89C52引腳圖 標準功能:具有以下標準功能: 8k字節(jié)Flash,512字節(jié)RAM, 32 位I/O 口線,看門狗電

10、路,內(nèi)置4KB EEPROM,MAX810復位電路,3個16 位定時器/計數(shù)器,4個外部中斷,一個7向量4級中斷結構(兼容傳統(tǒng)51的5向量2級中斷結構),全雙工串行口。另外 STC89C52 可降至0Hz 靜態(tài)邏輯操作,支持2種軟件可選擇節(jié)電模式。空閑模式下,CPU 停止工作,允許RAM、定時器/計數(shù)器、串口、中斷繼續(xù)工作。掉電保護方式下,RAM內(nèi)容被保存,振蕩器被凍結,單片機一切工作停止,直到下一個中斷或硬件復位為止。最高運作頻率35MHz。器件參數(shù):1.增強型8051單片機,6 時鐘/機器周期和12 時鐘/機器周期可以任意 選擇,指令代碼完全兼容傳統(tǒng)8051.2 2. 工作電壓:5.5V3

11、.3V(5V單片機)/3.8V2.0V(3V 單片機)3.工作頻率范圍:040MHz,相當于普通8051 的080MHz,實際工作 頻率可達48MHz4. 用戶應用程序空間為8K字節(jié)5. 片上集成512 字節(jié)RAM6. 通用I/O 口(32 個),復位后為:P0/P1/P2/P3 是準雙向口/弱上拉, P0 口是漏極開路輸出,作為總線擴展用時,不用加上拉電阻,作為 I/O 口用時,需加上拉電阻。7. ISP(在系統(tǒng)可編程)/IAP(在應用可編程),無需專用編程器,無 需專用仿真器,可通過串口(RxD/P3.0,TxD/P3.1)直接下載用戶程 序,數(shù)秒即可完成一片8. 具有EEPROM 功能9

12、. 共3 個16 位定時器/計數(shù)器。即定時器T0、T1、T210.外部中斷4 路,下降沿中斷或低電平觸發(fā)電路,Power Down 模式可 由外部中斷低電平觸發(fā)中斷方式喚醒11. 通用異步串行口(UART),還可用定時器軟件實現(xiàn)多個UART12. 工作溫度范圍:-40+85(工業(yè)級)/075(商業(yè)級)13. PDIP封裝2.3 DHT11數(shù)字傳感器介紹 DHT11數(shù)字溫濕度傳感器是一款含有已校準數(shù)字信號輸出的溫濕度復合傳感器。它應用專用的數(shù)字模塊采集技術和溫濕度傳感技術,確保產(chǎn)品具有極高的可靠性與卓越的長期穩(wěn)定性。傳感器包括一個電阻式感濕元件和一個NTC測溫元件,并與一個高性能8位單片機相連接

13、。因此該產(chǎn)品具有品質(zhì)卓越、超快響應、抗干擾能力強、性價比極高等優(yōu)點。每個DHT11傳感器都在極為精確的濕度校驗室中進行校準。校準系數(shù)以程序的形式儲存在OTP內(nèi)存中,傳感器內(nèi)部在檢測信號的處理過程中要調(diào)用這些校準系數(shù)。單線制串行接口,使系統(tǒng)集成變得簡易快捷。超小的體積、極低的功耗,信號傳輸距離可達20米以上,使其成為各類應用甚至最為苛刻的應用場合的最佳選則。產(chǎn)品為4 針單排引腳封裝。連接方便,特殊封裝形式可根據(jù)用戶需求而提供。1.引腳說明DHT11有四個引腳,3號引腳一般懸空,如圖2-3所示。DHT11的供電電壓為 35.5V。傳感器上電后,要等待1s以越過不穩(wěn)定狀態(tài)在此期間無需發(fā)送任何指令。電

14、源引腳(VDD,GND)之間可增加一個100nF的電容,用以去耦濾波。建議連接線長度短于20米時用5K上拉電阻,大于20米時根圖2-3 DHT11典型電路據(jù)實際情況使用合適的上拉電阻。2.技術參數(shù)供電電壓: 3.35.5V DC輸 出: 單總線數(shù)字信號測量范圍: 濕度20-90%RH, 溫度050測量精度: 濕度+-5%RH, 溫度+-2分 辨 率: 濕度1%RH, 溫度1互 換 性: 可完全互換 ,長期穩(wěn)定性: <±1%RH/年3.串行接口(單線雙向) DATA 引腳用于微處理器與DHT11之間的通訊和同步,采用單總線數(shù)據(jù)格式,一次通訊時間4ms左右,數(shù)據(jù)分小數(shù)部分和整數(shù)部分

15、,具體格式在下面說明,當前小數(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校驗和 數(shù)據(jù)傳送正確時校驗和數(shù)據(jù)等于“8bit濕度整數(shù)數(shù)據(jù)+8bit濕度小數(shù)數(shù)據(jù)+8bi溫度整數(shù)數(shù)據(jù)+8bit溫度小數(shù)數(shù)據(jù)”所得結果的末8位。 用戶MCU發(fā)送一次開始信號后,DHT11從低功耗模式轉(zhuǎn)換到高速模式,等待主機開始信號結束后,DHT11發(fā)送響應信號,送出40bit的數(shù)據(jù),并觸發(fā)一次信號采集,用戶可選擇讀取部分數(shù)據(jù).從模式下,DHT11接收到開始信號觸發(fā)一次溫濕度采集

16、,如果沒有接收到主機發(fā)送開始信號,DHT11不會主動進行溫濕度采集.采集數(shù)據(jù)后轉(zhuǎn)換到低速模式。1. 通訊過程如圖1所示圖2-4 通信過程 如圖2-5,總線空閑狀態(tài)為高電平,主機把總線拉低等待DHT11響應,主機把總線拉低必須大于18毫秒,保證DHT11能檢測到起始信號。DHT11接收到主機的開始信號后,等待主機開始信號結束,然后發(fā)送80us低電平響應信號.主機發(fā)送開始信號結束后,延時等待20-40us后, 讀取DHT11的響應信號,主機發(fā)送開始信號后,可以切換到輸入模式,或者輸出高電平均可, 總線由上拉電阻拉高。圖2-5 主機喚醒從機響應過程 總線為低電平,說明DHT11發(fā)送響應信號,DHT1

17、1發(fā)送響應信號后,再把總線拉高80us,準備發(fā)送數(shù)據(jù),每一bit數(shù)據(jù)都以50us低電平時隙開始,高電平的長短定了數(shù)據(jù)位是0還是1.格式見下面圖示.如果讀取響應信號為高電平,則DHT11沒有響應,應檢查線路是否連接正常.當最后一bit數(shù)據(jù)傳送完畢后,DHT11拉低總線50us,隨后總線由上拉電阻拉高進入空閑狀態(tài)。數(shù)字0信號表示方法如圖4所示圖2-6 數(shù)字0信號數(shù)字1信號表示方法.如圖5所示圖2-6 數(shù)字1信號2.4電路設計1.單片機系統(tǒng)電路圖2-7 單片機系統(tǒng)2.數(shù)碼管電路注:數(shù)碼管前兩位顯示濕度,后兩位顯示溫度圖2-8 數(shù)碼管電路3.報警燈電路注:D27為濕度超(上限)報警信號燈D26為溫度度

18、超(上限)報警信號燈圖2-9 LED報警電路4.按鍵電路按鍵1為加按鍵2為減按鍵6為設置圖2-10 按鍵電路5.總體電路圖圖2-11 總體電路圖第3章 系統(tǒng)軟件設計 系統(tǒng)程序主要包括主程序、DHT11控制模塊程序、延時子程序、中斷服務子程序,整體程序見附錄。3.1 系統(tǒng)軟件主程序流程 程序開始后,先對單片機進行初始化(開中斷),通過延時一秒等待DHT11溫濕度傳感器啟動。主程序分為三個不同的模式,通過中斷次數(shù)進行選擇。模式一:溫濕度測量模式 DHT11溫濕度傳感器啟動后,對其進行數(shù)據(jù)初始化后,進行溫濕度信息的采集、轉(zhuǎn)化、處理,最后通過數(shù)碼管讀出,并判斷溫濕度是否超過報警值以產(chǎn)生報警信號。DHT

19、11溫濕度傳感器經(jīng)過一次數(shù)據(jù)采集和處理后,需返回次延時程序處理來重新初始化DHT11后采集溫濕度數(shù)據(jù)。模式二:濕度報警值設定模式掃描按鍵1和按鍵2,若按鍵按下對濕度相應的加1減一,并通過數(shù)碼管顯示。模式二:溫度報警值設定模式掃描按鍵1和按鍵2,若按鍵按下對溫度相應的加1減一,并通過數(shù)碼管顯示。程序流程圖如下:開始 單片機初始化延時1秒While(1)m=? = 0 =1 =2掃描按鍵掃描按鍵DHT11初始化濕度加1或減1濕度閃爍濕度加1或減1讀取溫濕度值 濕度閃爍 顯示溫濕度并報警中斷服務m=m+1Ym=3?Nm=m+1中斷返回圖3-1 程序流程圖3.2 DHT11數(shù)據(jù)采集流程DHT11溫濕度

20、傳感器有嚴格的思緒要求,程序一定要遵循其與主機通信的步驟。其溫濕度數(shù)據(jù)采集流程圖如下:主機發(fā)出開始信號主機設置為輸入模式NDHT11是否響應跳出Y等待80us高電平結束接收數(shù)據(jù)拉低總線,延時50us釋放總線圖3-2 DHT數(shù)據(jù)采集流程圖第4章 調(diào)試與結論 作品實現(xiàn)了課設的所有要求,并添加了擴展功能溫濕度報警。硬件上選擇DHT11作為溫濕度傳感器,使電路簡單,容易讀數(shù),簡化了設計。軟件上,在DHT11與主機通信上遇到困難,查了很多資料。鍵盤和數(shù)碼管閃爍上也經(jīng)過了多次調(diào)試才取得成功。附錄程序清單:#include <reg51.h>#include <intrins.h>

21、/typedef unsigned char U8; /* defined for unsigned 8-bits integer variable 無符號8位整型變量 */typedef signed char S8; /* defined for signed 8-bits integer variable 有符號8位整型變量 */typedef unsigned int U16; /* defined for unsigned 16-bits integer variable 無符號16位整型變量 */typedef signed int S16; /* defined for sign

22、ed 16-bits integer variable 有符號16位整型變量 */#define uchar unsigned char#define uint unsigned int#define Data_0_time 4/-/-IO口定義區(qū)-/-/sbit P2_0= P20 ;/-/-定義區(qū)-/-/U8 U8FLAG;U8 U8temp;U8 U8T_data_H,U8T_data_L,U8RH_data_H,U8RH_data_L,U8checkdata;U8 U8T_data_H_temp,U8T_data_L_temp,U8RH_data_H_temp,U8RH_data_L_

23、temp,U8checkdata_temp;U8 U8comdata;U8 str4;U8 k,m=0;U8 i,j;S8 rb,tb;uchar table=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90; void Delay(U16 j) U8 i; for(;j>0;j-) for(i=0;i<27;i+); void Delay_10us(void) U8 i; i-; i-; i-; i-; i-; i-; void COM(void) U8 i; for(i=0;i<8;i+) U8FLAG=2; while(

24、!P2_0)&&U8FLAG+);Delay_10us(); Delay_10us();Delay_10us(); U8temp=0; if(P2_0)U8temp=1; U8FLAG=2; while(P2_0)&&U8FLAG+); /超時則跳出for循環(huán) if(U8FLAG=1)break; /判斷數(shù)據(jù)位是0還是1 / 如果高電平高過預定0高電平值則數(shù)據(jù)位為 1 U8comdata<<=1; U8comdata|=U8temp; /0 /rof /-/-濕度讀取子程序 -/-/-以下變量均為全局變量-/-溫度高8位= U8T_data_H-/-

25、溫度低8位= U8T_data_L-/-濕度高8位= U8RH_data_H-/-濕度低8位= U8RH_data_L-/-校驗 8位 = U8checkdata-/-調(diào)用相關子程序如下-/- Delay();, Delay_10us();,COM(); /-void st(U8 a,U8 b) str0=tablea/10; str1=tablea%10; str2=tableb/10; str3=tableb%10; void RH(void) /主機拉低18ms P2_0=0; Delay(180); P2_0=1; /總線由上拉電阻拉高 主機延時20us Delay_10us(); D

26、elay_10us(); Delay_10us(); Delay_10us(); /主機設為輸入 判斷從機響應信號 P2_0=1; /判斷從機是否有低電平響應信號 如不響應則跳出,響應則向下運行 if(!P2_0) /T ! U8FLAG=2; /判斷從機是否發(fā)出 80us 的低電平響應信號是否結束 while(!P2_0)&&U8FLAG+); U8FLAG=2; /判斷從機是否發(fā)出 80us 的高電平,如發(fā)出則進入數(shù)據(jù)接收狀態(tài) while(P2_0)&&U8FLAG+); /數(shù)據(jù)接收狀態(tài) COM(); U8RH_data_H_temp=U8comdata;

27、COM(); U8RH_data_L_temp=U8comdata; COM(); U8T_data_H_temp=U8comdata; COM(); U8T_data_L_temp=U8comdata; COM(); U8checkdata_temp=U8comdata; P2_0=1; /數(shù)據(jù)校驗 U8temp=(U8T_data_H_temp+U8T_data_L_temp+U8RH_data_H_temp+U8RH_data_L_temp); if(U8temp=U8checkdata_temp) U8RH_data_H=U8RH_data_H_temp; U8RH_data_L=U8

28、RH_data_L_temp; U8T_data_H=U8T_data_H_temp; U8T_data_L=U8T_data_L_temp; U8checkdata=U8checkdata_temp; st(U8RH_data_H,U8T_data_H);int0()interrupt 0+m;if(m=3)m=0;Delay(2000);/-/main()/-void main()EA=1;IT0=1;EX0=1; /開中斷0P2=0xff;P3=0xff;rb=60;tb=20;Delay(10000); /延時1swhile(1)if(rb>99)rb=0;if(rb<0)rb=99;if(tb>50)tb=0;if(tb<0)tb=50;switch(m) ca

溫馨提示

  • 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論