標(biāo)題: 單片機(jī)DHT11溫濕度傳感器實(shí)戰(zhàn) 小型氣象站源程序 [打印本頁(yè)]
作者: fvsaegawgarg 時(shí)間: 2021-1-5 10:56
標(biāo)題: 單片機(jī)DHT11溫濕度傳感器實(shí)戰(zhàn) 小型氣象站源程序
小型氣象站
一、實(shí)驗(yàn)?zāi)康?/strong>
1. 了解溫濕度傳感器工作原理
2. 了解光強(qiáng)大氣壓力傳感器工作原理
3. 學(xué)會(huì)使用DHT11溫濕度傳感器檢測(cè)環(huán)境溫濕度
4. 學(xué)會(huì)使用光敏電阻檢測(cè)環(huán)境光強(qiáng)度
5. 會(huì)使用1602液晶顯示模塊顯示氣象參數(shù)
二、實(shí)驗(yàn)設(shè)備
1. 51單片機(jī)實(shí)驗(yàn)板,以及電源線、下載線、杜邦線等
2. DHT11溫濕度傳感器、光敏電阻、PCF8591數(shù)模轉(zhuǎn)換模塊、1602液晶顯示模塊
三、實(shí)驗(yàn)項(xiàng)目要求
請(qǐng)?jiān)O(shè)計(jì)一個(gè)小型的氣象監(jiān)測(cè)站,檢測(cè)溫濕度、光強(qiáng)等參數(shù),并顯示在1602液晶顯示屏上。
1602液晶顯示示例:

請(qǐng)按要求設(shè)計(jì)一個(gè)可行方案,包括設(shè)備選型、系統(tǒng)連接圖等,并編寫(xiě)程序?qū)崿F(xiàn)上述功能。
四、實(shí)驗(yàn)步驟
1. 設(shè)計(jì)方案
①方案:采用dht11溫濕度傳感器來(lái)采集溫濕度,光敏電阻來(lái)采集光強(qiáng)情況,然后把檢測(cè)到的信息送給單片機(jī)處理,并在1602液晶顯示屏上顯示。
②設(shè)備選型:
1、DHT11溫濕度傳感器
DHT11 數(shù)字溫濕度傳感器是一款含有已校準(zhǔn)數(shù)字信號(hào)輸出的溫濕度復(fù)合傳感
器。它應(yīng)用專用的數(shù) 字模塊采集技術(shù)和溫濕度傳感技術(shù),
確保產(chǎn)品具有枀高的可靠性與卓越的長(zhǎng)期穩(wěn)定性。傳感器
包括一個(gè)電阻式感濕元件和一個(gè) NTC 測(cè)溫元件,并與一個(gè)高性能 8 位單片機(jī)相連接 
接線說(shuō)明
1 VCC 外接3.3V-5V
2 GND 外接GND
3 DATA 小板開(kāi)關(guān)數(shù)字量輸出接口接單片機(jī)IO 口
光敏傳感器
PCF8591是一個(gè)單獨(dú)供電、低功耗、
具有I2C總線接口的8位A/D及D/A 轉(zhuǎn)
換器。它有4路A/D轉(zhuǎn)換輸入(A/D轉(zhuǎn)
換為逐次比較型),1路D/A 模擬輸
出,電源電壓典型值為5V。采用8位的DAC時(shí),分辨率為5V/256=19.5mV。
3、TX51單片機(jī)實(shí)驗(yàn)板(帶LCD1602、蜂鳴器)
③系統(tǒng)連接圖:

2. 編寫(xiě)源程序,編譯,生成hex文件
源程序:
//本工程基于普中單片機(jī)開(kāi)發(fā)板,晶振12MHz
- #include <config.h>
- #include <dht11.h>
- #include <PCF8591.h>
- #include <I2C.h>
- #include <1602.h>
- #include <led.h>
- float value;
- u8 print1[20];
- u8 DATA[3];
- u8 RHum=0,Temp=0;
- u8 print[20];
- void delay_us(u8 n)//微秒延時(shí)
- {
- while(--n);
- }
-
- void delay_ms(u16 x)//毫秒延時(shí)函數(shù)
- {u16 i,j;
- for(i=0;i<x;i++)
- for(j=0;j<115;j++);
- }
-
- void main()
- {
- u8 i;
- TMOD=TMOD&0x0F;//清除定時(shí)器T1原有工作方式,T0工作方式不變
- TMOD=TMOD|0xA0;//設(shè)置定時(shí)器T1為工作方式2,硬啟動(dòng);T0工作方式不變
-
- TL1=0x48;//晶振11.0592MHz,定時(shí)200us對(duì)應(yīng)計(jì)數(shù)值184,計(jì)數(shù)初值72
- TH1=0x48;//自動(dòng)重裝初值
-
- EA=1 ; //總中斷允許
- ET1=1 ; //T1中斷允許
- TR1=1;
- LCD1602_Init(); //1602初始化
- while(1)
- {
- DATA[0]=Pcf8591_AD(0);//通道0:光敏
- DATA[1]=Pcf8591_AD(1);//通道1:熱敏
- DATA[2]=Pcf8591_AD(3);//通道3:可調(diào)電阻
- value=(float)DATA[1]*5/256;
- value=100/value;
- sprintf(print1,"light:%.1f",value);
- LCD1602_disstr(print1,1,0);//輸出到1602液晶顯示屏
-
- }
- }
- void ET1_INT() interrupt 3 // T1中斷服務(wù)程序
- //
- {
- u16 c;
- c++;
- //中斷次數(shù)加1,每200us中斷一次,中斷5000次即為1秒
- if(c==750){
- DHT11_receive(&RHum,&Temp); //讀取傳感器傳送過(guò)來(lái)的溫濕度數(shù)據(jù)
-
- sprintf(print,"Temp:%bd;RHum:%bd%%",Temp,RHum);
- LCD1602_disstr(print,0,0);//輸出到1602液晶顯示屏
- }
- }
復(fù)制代碼
3. 將hex文件下載到實(shí)驗(yàn)板運(yùn)行,描述實(shí)驗(yàn)現(xiàn)象
實(shí)驗(yàn)現(xiàn)象:
DHT11溫濕度,光照強(qiáng)度等情況分別顯示在單片機(jī)的1602液晶顯示屏上。
實(shí)驗(yàn)總結(jié)
通過(guò)本次實(shí)驗(yàn)知道了如何使用DHT11溫濕度傳感器,學(xué)會(huì)使用光敏電阻檢測(cè)環(huán)境光強(qiáng)度,也學(xué)會(huì)使用1602液晶顯示模塊顯示氣象參數(shù)。
作者: 新昌小徐 時(shí)間: 2022-6-24 18:01
#include <config.h>
#include <dht11.h>
#include <PCF8591.h>
#include <I2C.h>
#include <1602.h>
#include <led.h>
以上的文件呢?
作者: tplin 時(shí)間: 2022-11-30 10:07
要是有完整文件就好啦!
作者: sdlyyy 時(shí)間: 2023-3-14 22:55
思路全面完整,好好學(xué)習(xí)。
歡迎光臨 (http://www.torrancerestoration.com/bbs/) |
Powered by Discuz! X3.1 |