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

QQ登錄

只需一步,快速開(kāi)始

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

基于51單片機(jī)的dht11溫濕度數(shù)碼管顯示proteus仿真與程序源碼

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:389447 發(fā)表于 2019-1-9 23:45 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
仿真原理圖如下




按button1可以切換模式
模式0 只顯示溫度
模式1 只顯示濕度
模式2 動(dòng)態(tài)顯示溫度和濕度,每5s切換一次


實(shí)物如下
溫度顯示




濕度顯示  小數(shù)

微信圖片_20190109232507.jpg (1.64 MB, 下載次數(shù): 108)

濕度顯示

濕度顯示

資料.png (13.6 KB, 下載次數(shù): 279)

資料.png

評(píng)分

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

查看全部評(píng)分

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

使用道具 舉報(bào)

沙發(fā)
ID:389447 發(fā)表于 2019-1-9 23:49 | 只看該作者
模式選擇,自動(dòng)顯示切換濕度和溫度,只顯示溫度,只顯示濕度。

單片機(jī)源程序如下:
  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重載值的高字節(jié)
  8. unsigned char T0RL = 0;  //T0重載值的低字節(jié)
  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;   //數(shù)碼管小數(shù)點(diǎn)


  23. void delay(unsigned char x)   //延時(shí)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;            //開(kāi)總中斷
  37.     ConfigTimer0(10);  //T0定時(shí)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)  //數(shù)碼管刷新頻率
  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;         //標(biāo)志位清零
  68.                           }
  69.                           else if(st==1){

  70.                           str = DHT[0] ;  //濕度
  71.                   Display_hum(&str);
  72.                                   flag1s =0;         //標(biāo)志位清零
  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. /* 配置并啟動(dòng)T0,ms-T0定時(shí)時(shí)間 */
  105. void ConfigTimer0(unsigned int ms)
  106. {
  107.     unsigned long tmp;  //臨時(shí)變量
  108.    
  109.     tmp = 11059200 / 12;      //定時(shí)器計(jì)數(shù)頻率
  110.     tmp = (tmp * ms) / 1000;  //計(jì)算所需的計(jì)數(shù)值
  111.     tmp = 65536 - tmp;        //計(jì)算定時(shí)器重載值
  112.     tmp = tmp + 12;           //補(bǔ)償中斷響應(yīng)延時(shí)造成的誤差
  113.     T0RH = (unsigned char)(tmp>>8);  //定時(shí)器重載值拆分為高低字節(jié)
  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;        //啟動(dòng)T0
  121. }
  122. /* T0中斷服務(wù)函數(shù),完成1秒定時(shí) */
  123. void InterruptTimer0() interrupt 1
  124. {

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

  130.         if(tmr10ms>=1)           //  數(shù)碼管刷新頻率
  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 數(shù)據(jù)更新頻率
  148.     {
  149.         tmr1s = 0;
  150.         flag1s = 1;
  151.         }

  152.    
  153. }
復(fù)制代碼

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


回復(fù)

使用道具 舉報(bào)

板凳
ID:466071 發(fā)表于 2019-1-10 20:40 | 只看該作者
謝謝!
回復(fù)

使用道具 舉報(bào)

地板
ID:445069 發(fā)表于 2019-2-23 15:43 | 只看該作者
DHT11的data口,好像沒(méi)有接4.7K的上拉電阻?
回復(fù)

使用道具 舉報(bào)

5#
ID:567779 發(fā)表于 2019-6-20 12:47 | 只看該作者
靈魂9527 發(fā)表于 2019-1-9 23:49
模式選擇,自動(dòng)顯示切換濕度和溫度,只顯示溫度,只顯示濕度。

單片機(jī)源程序如下:

謝謝大佬。
回復(fù)

使用道具 舉報(bào)

6#
ID:338716 發(fā)表于 2019-6-25 06:15 | 只看該作者
感謝你的分享
回復(fù)

使用道具 舉報(bào)

7#
ID:591640 發(fā)表于 2019-8-5 10:35 | 只看該作者
非常感謝,
回復(fù)

使用道具 舉報(bào)

8#
ID:605988 發(fā)表于 2019-9-21 15:04 | 只看該作者
非常感謝
回復(fù)

使用道具 舉報(bào)

9#
ID:283883 發(fā)表于 2019-10-26 12:20 | 只看該作者
是共陰數(shù)碼管還是共陽(yáng)的
回復(fù)

使用道具 舉報(bào)

10#
ID:389447 發(fā)表于 2019-12-1 10:05 | 只看該作者
周栩樂(lè) 發(fā)表于 2019-10-26 12:20
是共陰數(shù)碼管還是共陽(yáng)的

共陰   
回復(fù)

使用道具 舉報(bào)

11#
ID:299519 發(fā)表于 2019-12-10 14:39 | 只看該作者
東東不錯(cuò)
回復(fù)

使用道具 舉報(bào)

12#
ID:492212 發(fā)表于 2019-12-22 16:36 | 只看該作者
為什么我用你的程序數(shù)碼管只顯示88
回復(fù)

使用道具 舉報(bào)

13#
ID:362692 發(fā)表于 2019-12-26 15:03 來(lái)自觸屏版 | 只看該作者
如果在此基礎(chǔ)上,加上一個(gè)溫度報(bào)警好做嗎
回復(fù)

使用道具 舉報(bào)

14#
ID:561156 發(fā)表于 2019-12-27 22:42 | 只看該作者
在這上面加個(gè)控制器設(shè)計(jì)好做嗎
回復(fù)

使用道具 舉報(bào)

15#
ID:673920 發(fā)表于 2019-12-28 12:40 | 只看該作者
靈魂9527 發(fā)表于 2019-1-9 23:49
模式選擇,自動(dòng)顯示切換濕度和溫度,只顯示溫度,只顯示濕度。

單片機(jī)源程序如下:

剛剛學(xué)習(xí),先復(fù)制源代碼試試,
回復(fù)

使用道具 舉報(bào)

16#
ID:673920 發(fā)表于 2019-12-28 13:01 | 只看該作者
靈魂9527 發(fā)表于 2019-1-9 23:49
模式選擇,自動(dòng)顯示切換濕度和溫度,只顯示溫度,只顯示濕度。

單片機(jī)源程序如下:

謝謝!調(diào)試通過(guò)!
回復(fù)

使用道具 舉報(bào)

17#
ID:150208 發(fā)表于 2020-1-7 17:24 | 只看該作者
為什么把你的程序沒(méi)有更改,只是重新編譯一下,就只會(huì)很閃的顯示88,但不重新編譯,直接用你之前的.hex文件,又顯示正常呢?
回復(fù)

使用道具 舉報(bào)

18#
ID:150208 發(fā)表于 2020-1-7 17:25 | 只看該作者
為什么用你的程序沒(méi)有任何改動(dòng)只是重新編譯一下,會(huì)顯示不了,只會(huì)顯示閃的88
回復(fù)

使用道具 舉報(bào)

19#
ID:707289 發(fā)表于 2020-3-19 15:55 | 只看該作者
挺好的,希望大佬繼續(xù)分享dht12.
回復(fù)

使用道具 舉報(bào)

20#
ID:412517 發(fā)表于 2020-3-24 15:40 | 只看該作者
感謝分享!正需要學(xué)習(xí)!
回復(fù)

使用道具 舉報(bào)

21#
ID:752951 發(fā)表于 2020-5-15 22:23 來(lái)自觸屏版 | 只看該作者
仿真原理圖為什么我的p2.1、p2.4、p1.1,為紅色
回復(fù)

使用道具 舉報(bào)

22#
ID:754108 發(fā)表于 2020-5-17 16:35 來(lái)自觸屏版 | 只看該作者
為什么我編譯,出現(xiàn)delay:missing function-prototype和 delay:requires-style prototype
回復(fù)

使用道具 舉報(bào)

23#
ID:752951 發(fā)表于 2020-5-23 14:17 來(lái)自觸屏版 | 只看該作者
unsigned int tmr1s = 0; unsigned int tmr10ms = 0;是什么意思
回復(fù)

使用道具 舉報(bào)

24#
ID:752674 發(fā)表于 2020-5-23 21:25 | 只看該作者
仿真的時(shí)候除了把proteus和keil 保存在同一文件夾下 還有什么要求嗎
回復(fù)

使用道具 舉報(bào)

25#
ID:545457 發(fā)表于 2020-5-26 18:02 | 只看該作者
靈魂9527 發(fā)表于 2019-1-9 23:49
模式選擇,自動(dòng)顯示切換濕度和溫度,只顯示溫度,只顯示濕度。

單片機(jī)源程序如下:

樓主程序非常有用哦
回復(fù)

使用道具 舉報(bào)

26#
ID:556974 發(fā)表于 2020-6-2 10:44 | 只看該作者
謝謝大佬
回復(fù)

使用道具 舉報(bào)

27#
ID:782184 發(fā)表于 2020-6-17 16:10 | 只看該作者
原件屬性是什么
回復(fù)

使用道具 舉報(bào)

28#
ID:782184 發(fā)表于 2020-6-17 16:11 | 只看該作者
我想問(wèn)問(wèn)原件屬性是什么,仿真沒(méi)結(jié)果
回復(fù)

使用道具 舉報(bào)

29#
ID:92810 發(fā)表于 2020-6-28 11:37 | 只看該作者
謝謝樓主分享了,下載學(xué)習(xí)學(xué)習(xí)
回復(fù)

使用道具 舉報(bào)

30#
ID:797084 發(fā)表于 2020-7-4 12:47 | 只看該作者
有沒(méi)有原理圖的文件
回復(fù)

使用道具 舉報(bào)

31#
ID:839306 發(fā)表于 2020-11-29 20:46 | 只看該作者
想問(wèn)一下仿真中R1 1k的電阻是哪一個(gè)?在元件中叫什么
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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