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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 15270|回復: 30
收起左側

基于51單片機的dht11溫濕度數碼管顯示proteus仿真與程序源碼

  [復制鏈接]
ID:389447 發表于 2019-1-9 23:45 | 顯示全部樓層 |閱讀模式
仿真原理圖如下


仿真

仿真


按button1可以切換模式
模式0 只顯示溫度
模式1 只顯示濕度
模式2 動態顯示溫度和濕度,每5s切換一次


實物如下
溫度顯示

溫度顯示

溫度顯示




濕度顯示  小數

濕度顯示

濕度顯示
資料.png

評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

回復

使用道具 舉報

ID:389447 發表于 2019-1-9 23:49 | 顯示全部樓層
模式選擇,自動顯示切換濕度和溫度,只顯示溫度,只顯示濕度。

單片機源程序如下:
  1. #include<reg51.h>

  2. bit DHT_Start();
  3. bit DHT_ByteRead(unsigned char *dat);
  4. void ConfigTimer0(unsigned int ms);
  5. void Display_hum(unsigned char *num);
  6. void Display_temp(unsigned char *num);


  7. unsigned char T0RH = 0;  //T0重載值的高字節
  8. unsigned char T0RL = 0;  //T0重載值的低字節
  9. unsigned char str=88;
  10. unsigned char DHT[5];

  11. unsigned int tmr1s = 0;
  12. unsigned int tmr10ms = 0;
  13. unsigned char st=0;
  14. unsigned int sdd=0;
  15. unsigned char td=0;
  16. unsigned char mode=0;

  17. bit flag1s = 0;
  18. bit flag10ms = 0;
  19. int x;
  20.             
  21. sbit button1=P0^0;
  22. sbit dot=P1^3;   //數碼管小數點


  23. void delay(unsigned char x)   //延時ms
  24. {
  25.     unsigned char a,b,c;
  26.         for(c=x;c>0;c--)
  27.     {
  28.                 for(b=102;b>0;b--)
  29.         for(a=3;a>0;a--);
  30.         }
  31. }
  32. void main()          
  33. {                 

  34.     bit tmp;
  35.         dot=0;
  36.     EA = 1;            //開總中斷
  37.     ConfigTimer0(10);  //T0定時10ms
  38. //        M1=0; M1=0;M2=0;M3=0;D1=0;D2=0;
  39.     DHT_Start();
  40.     delay(5);

  41.     while (1)
  42.     {


  43.         if(flag10ms)  //數碼管刷新頻率
  44.                 {
  45.                    if(st==0){
  46.                                 Display_temp(&str);
  47.                                 flag10ms=0;
  48.                         }
  49.                    else if(st==1)
  50.                    {
  51.                       Display_hum(&str);
  52.                           flag10ms=0;
  53.                         }

  54.                   
  55.                   
  56.                 }
  57.                 else if (flag1s)  //每秒更新一次溫度、濕度
  58.         {
  59.                 DHT_Start();
  60.                    tmp=DHT_ByteRead(&DHT);
  61.                    if(tmp==1)
  62.                    {

  63.                           if(st==0)
  64.                           {
  65.                             str = DHT[2] ;             //溫度
  66.                                 Display_temp(&str);                     
  67.                             flag1s =0;         //標志位清零
  68.                           }
  69.                           else if(st==1){

  70.                           str = DHT[0] ;  //濕度
  71.                   Display_hum(&str);
  72.                                   flag1s =0;         //標志位清零
  73.                           }

  74.                           

  75.                    }
  76.         }
  77.                 if(button1==0)
  78.                 {
  79.                    delay(2);
  80.                   
  81.                    if(button1==0)
  82.                    {
  83.                      
  84.                                 mode++;
  85.                                 switch(mode)
  86.                                 {
  87.                                   case 0:  st=0;      break;
  88.                                   case 1:  st=1;      break;
  89.                                   case 2:  td=1;      break;
  90.                                   default:     break;
  91.                                 }
  92.                                 if(mode>=3)
  93.                                 {
  94.                                   td=0;
  95.                                   mode=0;
  96.                                 }
  97.                                 while(button1==0)
  98.                                 {
  99.                                 }


  100.                    }

  101.                 }



  102.          }
  103. }


  104. /* 配置并啟動T0,ms-T0定時時間 */
  105. void ConfigTimer0(unsigned int ms)
  106. {
  107.     unsigned long tmp;  //臨時變量
  108.    
  109.     tmp = 11059200 / 12;      //定時器計數頻率
  110.     tmp = (tmp * ms) / 1000;  //計算所需的計數值
  111.     tmp = 65536 - tmp;        //計算定時器重載值
  112.     tmp = tmp + 12;           //補償中斷響應延時造成的誤差
  113.     T0RH = (unsigned char)(tmp>>8);  //定時器重載值拆分為高低字節
  114.     T0RL = (unsigned char)tmp;
  115.     TMOD &= 0xF0;   //清零T0的控制位
  116.     TMOD |= 0x01;   //配置T0為模式1
  117.     TH0 = T0RH;     //加載T0重載值
  118.     TL0 = T0RL;
  119.     ET0 = 1;        //使能T0中斷
  120.     TR0 = 1;        //啟動T0
  121. }
  122. /* T0中斷服務函數,完成1秒定時 */
  123. void InterruptTimer0() interrupt 1
  124. {

  125.     TH0 = T0RH;  //重新加載重載值
  126.     TL0 = T0RL;
  127.     tmr1s++;
  128.         sdd++;
  129.         tmr10ms++;

  130.         if(tmr10ms>=1)           //  數碼管刷新頻率
  131.         {
  132.                   tmr10ms=0;
  133.                 flag10ms = 1;
  134.         }
  135.         if(td==1)
  136.         {
  137.           if(sdd>=500)           //溫度顯示5s        、濕度顯示5s
  138.           {
  139.              sdd=0;
  140.              if(st==0)
  141.              {
  142.                st=1;
  143.                  }
  144.                  else st=0;
  145.           }
  146.         }
  147.     if (tmr1s >= 200)  //1s 數據更新頻率
  148.     {
  149.         tmr1s = 0;
  150.         flag1s = 1;
  151.         }

  152.    
  153. }
復制代碼

所有資料51hei提供下載:
Display_temphum.zip (112.49 KB, 下載次數: 501)


回復

使用道具 舉報

ID:466071 發表于 2019-1-10 20:40 | 顯示全部樓層
謝謝!
回復

使用道具 舉報

ID:445069 發表于 2019-2-23 15:43 | 顯示全部樓層
DHT11的data口,好像沒有接4.7K的上拉電阻?
回復

使用道具 舉報

5#
無效樓層,該帖已經被刪除
ID:567779 發表于 2019-6-20 12:47 | 顯示全部樓層
靈魂9527 發表于 2019-1-9 23:49
模式選擇,自動顯示切換濕度和溫度,只顯示溫度,只顯示濕度。

單片機源程序如下:

謝謝大佬!!
回復

使用道具 舉報

ID:338716 發表于 2019-6-25 06:15 | 顯示全部樓層
感謝你的分享
回復

使用道具 舉報

ID:591640 發表于 2019-8-5 10:35 | 顯示全部樓層
非常感謝,
回復

使用道具 舉報

ID:605988 發表于 2019-9-21 15:04 | 顯示全部樓層
非常感謝
回復

使用道具 舉報

ID:283883 發表于 2019-10-26 12:20 | 顯示全部樓層
是共陰數碼管還是共陽的
回復

使用道具 舉報

ID:389447 發表于 2019-12-1 10:05 | 顯示全部樓層
周栩樂 發表于 2019-10-26 12:20
是共陰數碼管還是共陽的

共陰   
回復

使用道具 舉報

ID:299519 發表于 2019-12-10 14:39 | 顯示全部樓層
東東不錯
回復

使用道具 舉報

ID:492212 發表于 2019-12-22 16:36 | 顯示全部樓層
為什么我用你的程序數碼管只顯示88
回復

使用道具 舉報

ID:362692 發表于 2019-12-26 15:03 來自觸屏版 | 顯示全部樓層
如果在此基礎上,加上一個溫度報警好做嗎
回復

使用道具 舉報

ID:561156 發表于 2019-12-27 22:42 | 顯示全部樓層
在這上面加個控制器設計好做嗎
回復

使用道具 舉報

ID:673920 發表于 2019-12-28 12:40 | 顯示全部樓層
靈魂9527 發表于 2019-1-9 23:49
模式選擇,自動顯示切換濕度和溫度,只顯示溫度,只顯示濕度。

單片機源程序如下:

剛剛學習,先復制源代碼試試,
回復

使用道具 舉報

ID:673920 發表于 2019-12-28 13:01 | 顯示全部樓層
靈魂9527 發表于 2019-1-9 23:49
模式選擇,自動顯示切換濕度和溫度,只顯示溫度,只顯示濕度。

單片機源程序如下:

謝謝!調試通過!
回復

使用道具 舉報

ID:150208 發表于 2020-1-7 17:24 | 顯示全部樓層
為什么把你的程序沒有更改,只是重新編譯一下,就只會很閃的顯示88,但不重新編譯,直接用你之前的.hex文件,又顯示正常呢?
回復

使用道具 舉報

ID:150208 發表于 2020-1-7 17:25 | 顯示全部樓層
為什么用你的程序沒有任何改動只是重新編譯一下,會顯示不了,只會顯示閃的88
回復

使用道具 舉報

ID:707289 發表于 2020-3-19 15:55 | 顯示全部樓層
挺好的,希望大佬繼續分享dht12.
回復

使用道具 舉報

ID:412517 發表于 2020-3-24 15:40 | 顯示全部樓層
感謝分享!正需要學習!
回復

使用道具 舉報

ID:752951 發表于 2020-5-15 22:23 來自觸屏版 | 顯示全部樓層
仿真原理圖為什么我的p2.1、p2.4、p1.1,為紅色
回復

使用道具 舉報

ID:754108 發表于 2020-5-17 16:35 來自觸屏版 | 顯示全部樓層
為什么我編譯,出現delay:missing function-prototype和 delay:requires-style prototype
回復

使用道具 舉報

ID:752951 發表于 2020-5-23 14:17 來自觸屏版 | 顯示全部樓層
unsigned int tmr1s = 0; unsigned int tmr10ms = 0;是什么意思
回復

使用道具 舉報

ID:752674 發表于 2020-5-23 21:25 | 顯示全部樓層
仿真的時候除了把proteus和keil 保存在同一文件夾下 還有什么要求嗎
回復

使用道具 舉報

ID:545457 發表于 2020-5-26 18:02 | 顯示全部樓層
靈魂9527 發表于 2019-1-9 23:49
模式選擇,自動顯示切換濕度和溫度,只顯示溫度,只顯示濕度。

單片機源程序如下:

樓主程序非常有用哦
回復

使用道具 舉報

27#
無效樓層,該帖已經被刪除
ID:556974 發表于 2020-6-2 10:44 | 顯示全部樓層
謝謝大佬
回復

使用道具 舉報

ID:782184 發表于 2020-6-17 16:10 | 顯示全部樓層
原件屬性是什么
回復

使用道具 舉報

ID:782184 發表于 2020-6-17 16:11 | 顯示全部樓層
我想問問原件屬性是什么,仿真沒結果
回復

使用道具 舉報

ID:92810 發表于 2020-6-28 11:37 | 顯示全部樓層
謝謝樓主分享了,下載學習學習
回復

使用道具 舉報

ID:797084 發表于 2020-7-4 12:47 | 顯示全部樓層
有沒有原理圖的文件
回復

使用道具 舉報

33#
無效樓層,該帖已經被刪除
34#
無效樓層,該帖已經被刪除
ID:839306 發表于 2020-11-29 20:46 | 顯示全部樓層
想問一下仿真中R1 1k的電阻是哪一個?在元件中叫什么
回復

使用道具 舉報

36#
無效樓層,該帖已經被刪除
您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表