欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

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

QQ登錄

只需一步,快速開始

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

基于51單片機(jī)的DHT11溫度濕度采集系統(tǒng)制作 含PCB源文件與程序

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
  本人使用DHT11和51單片機(jī)制作了一個(gè)溫度濕度檢測(cè)儀,因?yàn)镈HT11傳感器主要是用于溫度的檢測(cè),所以實(shí)驗(yàn)成品溫度的精度還行,濕度可能稍微差一點(diǎn),然后很多人做溫濕度檢測(cè)器都會(huì)使用DS18B20傳感器,但我是另辟蹊徑,而且和DS18B20 一樣DHT11傳感器也是一個(gè)數(shù)字傳感器,不需要外加AD轉(zhuǎn)換模塊,可以省去較為復(fù)雜的硬件電路,但是另一方面,硬件的簡(jiǎn)化必將帶來軟件的復(fù)雜,所以如果對(duì)這個(gè)作品感興趣,歡迎大家下載,文件中包含原理圖,元件清單,AD圖,程序流程圖,程序,實(shí)物圖,基本上都有。

Altium Designer畫的原理圖和PCB圖如下:(51hei附件中可下載工程文件)


單片機(jī)源碼:
  1. #include <reg52.h>
  2. #define uint unsigned int
  3. #define uchar unsigned char
  4. #include <intrins.h>
  5. typedef bit BOOL  ;
  6. sbit io = P1^1 ;//(口線定義)
  7. sbit bee= P1^0 ;
  8. sbit rs = P2^5 ;
  9. sbit rw = P2^6 ;
  10. sbit ep = P2^7 ;
  11. sbit led =P1^5 ;
  12. bit flag_300ms ;
  13. sbit K1=P1^2;
  14. sbit K2=P1^3;
  15. sbit K3=P1^4;
  16. uchar yemian=0;//(定義變量)
  17. uchar flat=1;
  18. uchar data_byte;
  19. uchar RH,RL,TH,TL;
  20. uchar WenDu,ShiDu;//報(bào)警的溫度和濕度
  21. uchar value;
  22. /****************************延時(shí)程序****************************/
  23. void delay(uchar ms)
  24. {      //   延時(shí)子程序
  25.           uchar i ;
  26.           while(ms--)
  27.           {
  28.                for(i= 0 ; i<120;i++) ;
  29.           }
  30. }
  31. void delay1()//延時(shí)10us                        
  32. {
  33. _nop_();
  34. _nop_();
  35. _nop_();
  36. _nop_();
  37. _nop_();
  38. _nop_();
  39. }
  40. /********************報(bào)警程序部分*******************/
  41. void warn() //報(bào)警函數(shù)
  42. {
  43.          
  44.          if(TH>WenDu)  //檢測(cè)的溫度高于設(shè)定溫度報(bào)警值
  45.                                                
  46.     {
  47.      bee=0;                                      //報(bào)警
  48.            led=0;delay(10);led=~led;                         //燈快閃爍            
  49.     }      
  50.                   
  51.          if(RH>ShiDu)  //檢測(cè)的濕度高于設(shè)定濕度報(bào)警值
  52.                                                
  53.     {
  54.      bee=0;                                      //報(bào)警
  55.            led=0;delay(10);led=~led;                         //燈快閃爍
  56.     }      
  57.                   
  58.          if(TH<WenDu  &&  RH<ShiDu )
  59.     {
  60.                     bee=1;                              //停止報(bào)警
  61.                     led=1;                              //停止閃爍
  62.           }
  63.                   
  64.   
  65. }
  66. /************************LCD模塊******************************************/
  67. BOOL lcd_bz()//測(cè)試LCD忙碌狀態(tài)
  68. {     
  69.           BOOL result ;
  70.           rs = 0 ;
  71.           rw = 1 ;
  72.           ep = 1 ;
  73.           result = (BOOL)(P0 & 0x80) ;
  74.           ep = 0 ;
  75.           return result ;
  76. }
  77. void write_cmd(uchar cmd)// 寫指令
  78. {      
  79.         while(lcd_bz()) ;
  80.          rs= 0 ;
  81.          rw= 0 ;
  82.          ep= 0 ;
  83.          P0= cmd ;
  84.          ep= 1 ;
  85.          ep= 0 ;  
  86. }
  87. void write_addr(uchar addr)//寫地址
  88. {      
  89.         write_cmd(addr|0x80) ;
  90. }
  91. void write_byte(uchar dat)//寫字節(jié)
  92. {     
  93.         while(lcd_bz()) ;
  94.       rs = 1 ;
  95.       rw = 0 ;
  96.       ep = 0 ;
  97.       P0 = dat ;
  98.       ep = 1 ;
  99.       ep = 0 ;
  100. }
  101. void lcd_init()// 初始化
  102. {      
  103.           write_cmd(0x38) ;
  104.           delay(1);
  105.           write_cmd(0x08) ;  
  106.           delay(1);
  107.           write_cmd(0x01) ;
  108.           delay(1);
  109.           write_cmd(0x06) ;
  110.           delay(1);
  111.           write_cmd(0x0c) ;
  112.           delay(1);
  113. }
  114. void display(uchar addr, uchar q)//在某一地址上顯示一字節(jié)
  115. {      
  116.           delay(1) ;
  117.           write_addr(addr) ;
  118.     write_byte(q) ;
  119.           delay(1) ;
  120.          
  121. }
  122. /*********************** DHT11測(cè)試模塊***************************************/
  123. void start()//開始信號(hào)
  124. {
  125.          io=0;
  126.          delay(18);//>18ms
  127.          io=1;
  128.          delay1();//20-40us
  129.          delay1();
  130.          delay1();
  131.          delay1();
  132. }
  133. uchar receive_byte()//接收一個(gè)字節(jié)
  134. {
  135.          uchari;
  136.          for(i=0;i<8;i++)
  137.          {      
  138.              data_byte<<=1;                                                                   //循環(huán)左移
  139.                   while(!io);                                                                        //每發(fā)送一位數(shù)據(jù)間隔50us低電平
  140.                   delay1();delay1();delay1();delay1();        //延遲40us
  141.                   if(io==1)
  142.                   {
  143.                     data_byte=data_byte|0x01;
  144.                     while(io);
  145.                   }
  146.                   else
  147.                   {
  148.                    data_byte=data_byte|0x00;
  149.                   }
  150.          }
  151.          returndata_byte;
  152. }
  153. void receive()//接收數(shù)據(jù)
  154. {
  155.          ucharT_H,T_L,R_H,R_L,check;
  156.          start();//開始信號(hào)
  157.          io=1;
  158.          if(!io)//讀取DHT11響應(yīng)信號(hào)
  159.          {
  160.    while(!io) ;                                    //判斷輸出低電平
  161.    while( io) ;                                                            //判斷輸出高電平
  162.          R_H=receive_byte();      
  163.          R_L=receive_byte();
  164.          T_H=receive_byte();
  165.          T_L=receive_byte();
  166.          check=receive_byte();
  167.          io=0;                                
  168.          delay1();delay1();delay1();delay1();delay1();//拉低延時(shí)50us
  169.          io=1;
  170.          if(R_H+R_L+T_H+T_L==check)                        //矯正
  171.          {
  172.                   RH=R_H;
  173.                   RL=R_L;
  174.                   TH=T_H;
  175.                   TL=T_L;
  176.          }
  177.          }
  178. }
  179. void showw()   // 問候語函數(shù)
  180. {     
  181.             lcd_init(); //初始化
  182.             delay(10);
  183.          
  184.             display(0x01,'I');
  185.       display(0x02,' ');
  186.             display(0x03,'a');
  187.             display(0x04,'m');
  188.             display(0x05,' ');
  189.             display(0x06,'s');
  190.       display(0x07,'u');
  191.             display(0x08,'p');
  192.             display(0x09,'e');
  193.             display(0x0a,'r');
  194.             display(0x0b,'m');
  195.       display(0x0c,'a');
  196.             display(0x0d,'n');
  197.             display(0x0e,'!');
  198.             delay(250); //短暫延時(shí)
  199.             delay(250);
  200.             delay(250);
  201.             delay(250);
  202.             
  203. }
  204.             
  205. /*************定時(shí)器0初始化程序***************/
  206. void time_init()         
  207. {
  208.          TMOD= 0X01;           //定時(shí)器0、定時(shí)器1工作方式1
  209.          ET0  = 1;                   //開定時(shí)器0中斷
  210.          TR0  = 1;                   //允許定時(shí)器0定時(shí)
  211.          EA   = 1;                 //開總中斷
  212. }
  213. void caidan() //按鍵程序 選擇菜單模式
  214. {
  215.      
  216.            if(!K1)
  217.                      {  
  218.                             delay(20);
  219.                               if(!K1)
  220.                            {  
  221.                                                        while(!K1)
  222.                                                 ;
  223.                                                                yemian++;
  224.                                                                flat++;
  225.                                                                       if(yemian>=3)
  226.                                                                       {
  227.                                                                        yemian=0;
  228.                                                                       }
  229.                                                                      
  230.                  }
  231.                      }
  232.          
  233.          
  234. }
復(fù)制代碼


更多程序請(qǐng)下載文件:
基于單片機(jī)的溫度濕度采集系統(tǒng).zip (9.97 MB, 下載次數(shù): 586)

評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

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

使用道具 舉報(bào)

沙發(fā)
ID:284500 發(fā)表于 2018-5-15 15:48 | 只看該作者
這個(gè)看起來不錯(cuò)。
回復(fù)

使用道具 舉報(bào)

板凳
ID:350589 發(fā)表于 2018-7-15 08:56 | 只看該作者
康康。好東西啊
回復(fù)

使用道具 舉報(bào)

地板
ID:418649 發(fā)表于 2018-11-1 20:34 | 只看該作者
DHT11檢測(cè)土壤的溫度濕度時(shí)候,是插到把銀角放到土壤里嗎?
回復(fù)

使用道具 舉報(bào)

5#
ID:410591 發(fā)表于 2018-11-20 11:37 | 只看該作者
必須要頂啊
回復(fù)

使用道具 舉報(bào)

6#
ID:484890 發(fā)表于 2019-3-5 14:54 | 只看該作者
好棒啊啊啊啊啊啊啊啊啊 想下載 謝謝樓主喔
回復(fù)

使用道具 舉報(bào)

7#
ID:513529 發(fā)表于 2019-4-16 12:57 | 只看該作者
學(xué)習(xí)學(xué)習(xí)  好東西
回復(fù)

使用道具 舉報(bào)

8#
ID:567928 發(fā)表于 2019-6-20 14:50 | 只看該作者
想下載啊  想下載   肯定是個(gè)好東西!
回復(fù)

使用道具 舉報(bào)

9#
ID:576686 發(fā)表于 2019-7-2 20:21 | 只看該作者
好東西,想下載看一看
回復(fù)

使用道具 舉報(bào)

10#
ID:427492 發(fā)表于 2019-7-14 21:32 | 只看該作者
關(guān)于DHT11部分代碼,我找了好多個(gè)。就你的讀數(shù)據(jù)是能用的,非常感謝
回復(fù)

使用道具 舉報(bào)

11#
ID:612440 發(fā)表于 2019-10-10 22:17 | 只看該作者
很給力
回復(fù)

使用道具 舉報(bào)

12#
ID:67344 發(fā)表于 2019-10-24 21:11 | 只看該作者
上面有人說就這個(gè)能用嗎?下載來
回復(fù)

使用道具 舉報(bào)

13#
ID:470971 發(fā)表于 2020-4-10 11:15 | 只看該作者
照著操作后溫濕度傳感器沒反應(yīng)時(shí)什么原因呢,求大神告知
回復(fù)

使用道具 舉報(bào)

14#
ID:764884 發(fā)表于 2020-5-30 11:09 | 只看該作者
回復(fù)

使用道具 舉報(bào)

15#
ID:761098 發(fā)表于 2020-5-31 21:07 | 只看該作者
多謝大佬,終于有數(shù)據(jù)可以用了
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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