找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 10660|回復(fù): 10
打印 上一主題 下一主題
收起左側(cè)

51單片機(jī)控制的DHT11簡(jiǎn)易溫濕度檢測(cè)原理圖與源碼

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
簡(jiǎn)易溫濕度測(cè)量?jī)x,實(shí)現(xiàn)思路是通過(guò)溫濕度傳感器采集數(shù)據(jù)傳送到最小系統(tǒng)上,并由最小系統(tǒng)對(duì)采集到的數(shù)據(jù)進(jìn)行處理,隨后發(fā)送到數(shù)碼管或者液晶屏上進(jìn)行顯示,并對(duì)異常數(shù)據(jù)進(jìn)行報(bào)警。
實(shí)驗(yàn)使用器材有DHT11溫濕度傳感器、IAP15W4K58S4最小系統(tǒng)、四位數(shù)碼管、蜂鳴器以及發(fā)光二極管。通過(guò)最小系統(tǒng)發(fā)送開始信號(hào)使DHT11開始工作并采集數(shù)據(jù)判斷DHT11是否正常工作,若DHT11正常工作,將采集數(shù)據(jù)進(jìn)行校驗(yàn),若校驗(yàn)結(jié)果正確,將其保存,并通過(guò)P1口顯示到數(shù)碼管上。隨后判斷數(shù)據(jù)是否超過(guò)預(yù)警值,如超過(guò),將P2.4口電位拉高,使蜂鳴器示警,并讓LED燈熄滅來(lái)進(jìn)行警示。電路使用一個(gè)數(shù)碼管對(duì)溫濕度進(jìn)行循環(huán)顯示,相比較于使用2個(gè)數(shù)碼管進(jìn)行顯示和使用液晶屏,成本和操作難度都有所降低。
實(shí)現(xiàn)原理圖如圖所示:
程序在附件中,直接根據(jù)數(shù)據(jù)手冊(cè)進(jìn)行編寫。可以對(duì)照DHT11數(shù)據(jù)手冊(cè)進(jìn)行查看


單片機(jī)源程序如下:
  1. #include "STC15.h"
  2. #include "stdio.h"
  3. #include "Delay.h"
  4. #include "uart.h"
  5. #include "dht11.h"
  6. unsigned char temp[2],humi[2];
  7. unsigned char flag;
  8. unsigned char code Num[16]={0x3F,
  9. 0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,
  10. 0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71};
  11. int m,n,p,q;
  12. long int i;

  13. void main(void)
  14. {
  15.         P0M1 = 0;        P0M0 = 0;        //設(shè)置為準(zhǔn)雙向口
  16.         P1M1 = 0;        P1M0 = 1;        //設(shè)置為準(zhǔn)雙向口
  17.         P2M1 = 0;        P2M0 = 1;        //設(shè)置為準(zhǔn)雙向口
  18.         P3M1 = 0;        P3M0 = 0;        //設(shè)置為準(zhǔn)雙向口
  19.         P4M1 = 0;        P4M0 = 0;        //設(shè)置為準(zhǔn)雙向口
  20.         P5M1 = 0;        P5M0 = 0;        //設(shè)置為準(zhǔn)雙向口
  21.         P6M1 = 0;        P6M0 = 0;        //設(shè)置為準(zhǔn)雙向口
  22.         P7M1 = 0;        P7M0 = 0;        //設(shè)置為準(zhǔn)雙向口
  23.         
  24.         while(1)
  25.         {
  26.                 flag=DHT11_Read_Data(temp,humi);
  27.                 if(flag==0)                                //讀取成功
  28.                 {
  29.                         m=(int)temp[0]/10;
  30.                         n=(int)temp[0]%10;
  31.                         p=(int)temp[1]/10;
  32.                         i=100;
  33.                         
  34.                         if(temp[0]>50||humi[0]>90)
  35.                         {
  36.                                 P24=1;
  37.                         }
  38.                         else P24=0;
  39.                         
  40.                         while(i--)
  41.                         {
  42.                                 P23=1;
  43.                                 P1=~Num[12];
  44.                                 delay_ms(10);
  45.                                 P23=0;
  46.                                 P20=1;//P20十位供電
  47.                                 P1=~Num[m];//P1顯示
  48.                                 Delay1ms();
  49.                                 P20=0;
  50.                                 P21=1;//P21個(gè)位供電
  51.                                 P1=~(Num[n]+0x80);
  52.                                 delay_ms(10);
  53.                                 P21=0;
  54.                                 P22=1;//P22十分位供電
  55.                                 P1=~Num[p];
  56.                                 delay_ms(10);
  57.                                 P22=0;
  58.                         }
  59.                         
  60.                         m=(int)humi[0]/10;
  61.                         n=(int)humi[0]%10;
  62.                         p=(int)humi[1]/10;
  63.                         q=(int)humi[1]%10;
  64.                         i=100;
  65.                         while(i--)
  66.                         {
  67.                                 P20=1;//P20十位供電
  68.                                 P1=~Num[m];//P1顯示
  69.                                 Delay1ms();
  70.                                 P20=0;
  71.                                 P21=1;//P21個(gè)位供電
  72.                                 P1=~(Num[n]+0x80);
  73.                                 delay_ms(10);
  74.                                 P21=0;
  75.                                 P22=1;//P22十分位供電
  76.                                 P1=~Num[p];
  77. ……………………

  78. …………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………
復(fù)制代碼


所有資料51hei提供下載:
danshumaguan.zip (63.21 KB, 下載次數(shù): 142)


評(píng)分

參與人數(shù) 2黑幣 +55 收起 理由
584625123 + 5 很給力!
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏2 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:287659 發(fā)表于 2018-9-29 21:52 | 只看該作者
很給力
回復(fù)

使用道具 舉報(bào)

板凳
ID:422827 發(fā)表于 2018-11-8 10:46 | 只看該作者
謝謝樓主 很棒
回復(fù)

使用道具 舉報(bào)

地板
ID:422961 發(fā)表于 2018-11-8 13:57 | 只看該作者
謝謝樓主 很棒!
回復(fù)

使用道具 舉報(bào)

5#
ID:460586 發(fā)表于 2019-1-3 19:36 | 只看該作者
真好,我也想下載
回復(fù)

使用道具 舉報(bào)

6#
ID:481514 發(fā)表于 2019-2-27 14:39 來(lái)自手機(jī) | 只看該作者
求發(fā)1224462284@qq.com
回復(fù)

使用道具 舉報(bào)

7#
ID:445069 發(fā)表于 2019-3-1 16:58 | 只看該作者
才發(fā)現(xiàn),不是stc51單片機(jī)。
回復(fù)

使用道具 舉報(bào)

8#
ID:163730 發(fā)表于 2019-6-21 23:40 | 只看該作者
再試試這個(gè)驅(qū)動(dòng)
回復(fù)

使用道具 舉報(bào)

9#
ID:840996 發(fā)表于 2020-11-10 12:51 | 只看該作者
樓主,有全的原理圖么
回復(fù)

使用道具 舉報(bào)

10#
ID:95809 發(fā)表于 2020-11-10 17:13 來(lái)自手機(jī) | 只看該作者
ontheroad 發(fā)表于 2019-3-1 16:58
才發(fā)現(xiàn),不是stc51單片機(jī)。

那就是STC單片機(jī),可以用其他的15系列單片機(jī)代替,比如15W408
回復(fù)

使用道具 舉報(bào)

11#
ID:166284 發(fā)表于 2020-11-12 17:00 | 只看該作者
你的電路原理圖上的LED燈在哪里啊???????????????
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表