找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 8019|回復: 23
打印 上一主題 下一主題
收起左側

基于DHT11和2.2寸液晶屏的溫濕計設計 超簡單

  [復制鏈接]
跳轉到指定樓層
樓主
ID:362076 發(fā)表于 2019-2-26 19:25 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
本帖最后由 凌凈清河 于 2019-2-26 19:27 編輯

本帖子中DHT11的驅動函數(shù)和我另一個設計中的函數(shù)相同,直接copy過來的。

http://www.torrancerestoration.com/bbs/dpj-127755-1.html

DHT11溫濕計模塊是廣大畢設者相當熟悉的了,最近有朋友需要,隨手做了一個最簡單的溫濕計。
設計采用176X220 2.2寸TFT屏、STC12C5A60S2核心板以及DHT11等組成。


設計使用的TFT樣式如下所示:



由于核心板上提供這款TFT的直插接口,故只需要連接DHT11到任一未占用的IO上即可。就像這樣:

需要注意的是,DHT11的數(shù)據(jù)線需要上拉10K電阻,這個電阻我焊在了DHT11的引腳上,并用熱縮管罩住了。


顯示部分的程序參照淘寶上店家的例程,很方便就能夠進行需要的顯示,但是我的程序中對TFT驅動程序還是做了一定程度的精簡,沒有使用到的功能都刪除了,為了節(jié)省flash,移植也方便。

程序主函數(shù):

  1. #include<STC12C5A60S2.H>
  2. #include "GUI.c"
  3. sbit DHT=P2^7;//DHT11模塊
  4. //運行數(shù)組
  5. unsigned char disp[5]={0,0,0,0,0};//溫度每一位、濕度每一位
  6. //運行變量
  7. unsigned char Data_Receive[5];

  8. /************************************************************
  9. 名稱:基于2.2寸屏和DHT11的溫濕計
  10. 平臺:STC12C5A60S2核心板

  11. 簡介:顯示采用2.2寸TFT 176X220彩色液晶顯示溫度和濕度;
  12.         測量部分采用DHT11模塊,模塊信息如下:
  13.         ASAIR
  14.         -----
  15.         NA:DHT11
  16.         OC:3.3-5.5V
  17.         U1:5-95%RH
  18.         U2:-20-60℃
  19.         U3:±5%RH±2℃
  20.         SN:8180H3985

  21. 程序編寫:凌凈清河
  22. 硬件制作:凌凈欣羽
  23. 文稿排版:凌凈欣羽

  24. 日期:2019年2月26日
  25. 注意:設計僅做正溫度處理。
  26. 注意:核心板上的晶振頻率為11.0592MHz,移植時注意修改延時。
  27. 所屬:新礦城學習基地#2019
  28. ************************************************************/

  29. void Delay20ms()                //@11.0592MHz
  30. {
  31.         unsigned char i, j, k;

  32.         i = 1;
  33.         j = 216;
  34.         k = 35;
  35.         do
  36.         {
  37.                 do
  38.                 {
  39.                         while (--k);
  40.                 } while (--j);
  41.         } while (--i);
  42. }

  43. void Delay30us()                //@11.0592MHz
  44. {
  45.         unsigned char i;

  46.         i = 80;
  47.         while (--i);
  48. }

  49. void sys_init()
  50. {
  51.         Lcd_Init();
  52.         LCD_LED=1;
  53.         Lcd_Clear(BLACK);
  54. }

  55. void DHT_Collect()//溫度采集函數(shù)
  56. {
  57.         unsigned char i,j;//for循環(huán)變量
  58.         unsigned char t;//超時判斷
  59.         unsigned char dat8=0;//一次讀取的8位數(shù)據(jù),需要讀5次
  60.         unsigned int CheckValue=0;//校驗和
  61.         
  62.         DHT=0;//主機發(fā)起始信號
  63.         Delay20ms();//主機拉低總線至少18ms
  64.         DHT=1;//主機拉高總線20~40us
  65.         Delay30us();
  66.         
  67.         t=80;//設置超時等待時間
  68.         while(DHT&&t--);//等待DHT11拉低總線
  69.         if(t==0)//超時
  70.         {
  71.                 DHT=1;
  72.         }
  73.         t=250;//設置超時等待時間
  74.         while(!DHT&&t--);//等待DHT11拉高總線
  75.         if(t==0)//超時
  76.         {
  77.                 DHT=1;
  78.         }
  79.         t=250;//設置超時等待時間
  80.         while(DHT&&t--);//等待DHT11拉低總線
  81.         if(t==0)//超時
  82.         {
  83.                 DHT=1;
  84.         }

  85.         for(j=0;j<5;j++)//5次讀取
  86.         {
  87.                 for(i=0;i<8;i++)//1次8個位
  88.                 {
  89.         //等待50us開始時隙
  90.                         t=150;//設置超時等待時間
  91.                         while(!DHT&&t--);//等待DHT11拉高總線
  92.                         if(t==0)//超時
  93.                         {
  94.                                 DHT=1;
  95.                         }
  96.                         t=0;//記錄時間清零
  97.                         while(DHT&&++t);//等待并記錄高電平持續(xù)時間
  98.                         dat8<<=1;
  99.                         if(t>30)//高電平持續(xù)時間較長(70us)
  100.                         dat8+=1;//傳輸值為1
  101.                 }
  102.                 Data_Receive[j]=dat8;
  103.         }
  104.         
  105.         Delay30us();//等待DHT11拉低50us
  106.         Delay30us();
  107.         DHT=1;

  108.         for(i=0;i<4;i++)
  109.         {
  110.                 CheckValue+=Data_Receive[i];//計算校驗值
  111.         }
  112.         if((unsigned char)CheckValue==Data_Receive[4])//比對
  113.         {
  114.                 disp[0]=Data_Receive[2]/10;
  115.                 disp[1]=Data_Receive[2]%10;
  116.                 disp[2]=Data_Receive[3]%10;
  117.                 disp[3]=Data_Receive[0]/10;
  118.                 disp[4]=Data_Receive[0]%10;
  119.         }
  120. }

  121. void main()
  122. {
  123.         sys_init();
  124.         GUI_BOX_K(0,0,219,175,GRAY0);
  125.         GUI_BOX_K(4,4,215,171,BLUE);
  126.         Gui_DrawFont_GBK24(39,8,YELLOW,BLACK,"無線溫濕度計");
  127.         Gui_DrawLine(35,34,185,34,BLUE);
  128.         Gui_DrawFont_GBK16(5,36,WHITE,BLACK,"    本作品使用DHT11模塊和");
  129.         Gui_DrawFont_GBK16(5,54,WHITE,BLACK,"彩色液晶模塊,完成溫濕度采");
  130.         Gui_DrawFont_GBK16(5,72,WHITE,BLACK,"集和顯示。");
  131.         GUI_BOX_K(8,90,211,167,BLUE);
  132.         
  133.         Gui_DrawFont_GBK24(10,100,YELLOW,BLACK,"溫度");
  134.         GUI_Char24(58,100,YELLOW,BLACK,CChar4);//:
  135.         
  136.         Gui_DrawFont_GBK24(10,130,YELLOW,BLACK,"濕度");
  137.         GUI_Char24(58,130,YELLOW,BLACK,CChar4);//:
  138.         while(1)
  139.         {
  140.                 DHT_Collect();
  141.                
  142.                 GUI_Num24(82,100,GREEN,BLACK,disp[0]);
  143.                 GUI_Num24(106,100,GREEN,BLACK,disp[1]);
  144.                 GUI_Char24(130,100,GREEN,BLACK,CChar2);//.
  145.                 GUI_Num24(154,100,GREEN,BLACK,disp[2]);
  146.                 GUI_Char24(178,100,YELLOW,BLACK,CChar1);//℃
  147.                
  148.                 GUI_Char24(82,130,YELLOW,BLACK,CChar0);//空格
  149.                 GUI_Num24(106,130,GREEN,BLACK,disp[3]);
  150.                 GUI_Num24(130,130,GREEN,BLACK,disp[4]);
  151.                 GUI_Char24(154,130,YELLOW,BLACK,CChar0);//空格
  152.                 GUI_Char24(178,130,YELLOW,BLACK,CChar3);//%
  153.         }
  154. }
復制代碼


歡迎進群:873434536,雖人數(shù)暫時較少,但群內(nèi)氛圍很好,有任何關于51學習中的問題,來一起討論吧~!

資料下載:
【程序】
基于DHT11和2.2寸液晶屏的溫濕計設計 凌凈清河.zip (70.42 KB, 下載次數(shù): 104)
【DHT11資料】
DHT11中文數(shù)據(jù)手冊.pdf (677.52 KB, 下載次數(shù): 56)
【屏幕資料(來自淘寶)】

QDtech_2.2寸SPI串口176X220_9225模塊.zip (13.48 MB, 下載次數(shù): 76)

請注意,為了方便黑幣較少的人也能夠下載附件,回復本帖,任何時候我看到,均會給出最高評分作為黑布補貼!

評分

參與人數(shù) 1黑幣 +100 收起 理由
admin + 100 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報

來自 2#
ID:362076 發(fā)表于 2019-3-1 17:22 | 只看該作者
對了,才想起來,設計原本是打算做無線的,但是后來需求變了,改為有線測量,標題就沒換回來,這個算是設計的BUG,看到的情知悉。
回復

使用道具 舉報

板凳
ID:64089 發(fā)表于 2019-2-27 09:05 | 只看該作者
占個沙發(fā),學習點1:DTH11的學習;2:液晶顯示的學習,不錯。

評分

參與人數(shù) 1黑幣 +16 收起 理由
凌凈清河 + 16 下載補貼

查看全部評分

回復

使用道具 舉報

地板
ID:487549 發(fā)表于 2019-3-9 19:09 | 只看該作者
很棒的帖子呀,對我很有用

評分

參與人數(shù) 1黑幣 +16 收起 理由
凌凈清河 + 16 下載補貼

查看全部評分

回復

使用道具 舉報

5#
ID:317383 發(fā)表于 2019-3-10 08:27 | 只看該作者
作品很棒,贊!

評分

參與人數(shù) 1黑幣 +16 收起 理由
凌凈清河 + 16 下載補貼

查看全部評分

回復

使用道具 舉報

6#
ID:284488 發(fā)表于 2019-3-11 21:25 | 只看該作者
學習了,感謝樓主的分享。并感恩樓主的仁心照顧黑幣較少的人也能夠下載附件。

評分

參與人數(shù) 1黑幣 +16 收起 理由
凌凈清河 + 16 黑幣補貼

查看全部評分

回復

使用道具 舉報

7#
ID:493495 發(fā)表于 2019-3-18 20:51 | 只看該作者
最近有一個課程設計,正好參考一下啦,拿走了

評分

參與人數(shù) 1黑幣 +16 收起 理由
凌凈清河 + 16 黑幣補貼

查看全部評分

回復

使用道具 舉報

8#
ID:337487 發(fā)表于 2019-3-18 23:20 | 只看該作者
謝謝樓主的分享,正在學習LCD顯示可以學習學習。

評分

參與人數(shù) 1黑幣 +16 收起 理由
凌凈清河 + 16 黑幣補貼

查看全部評分

回復

使用道具 舉報

9#
ID:490458 發(fā)表于 2019-3-24 16:05 | 只看該作者
謝謝樓主分享,正在學習51電子,正好參考樓主設計思路。

評分

參與人數(shù) 1黑幣 +16 收起 理由
凌凈清河 + 16 黑幣補貼

查看全部評分

回復

使用道具 舉報

10#
ID:478730 發(fā)表于 2019-3-28 09:03 | 只看該作者
作品很棒,贊!

評分

參與人數(shù) 1黑幣 +16 收起 理由
凌凈清河 + 16 黑幣補貼

查看全部評分

回復

使用道具 舉報

11#
ID:478730 發(fā)表于 2019-3-28 09:05 | 只看該作者
謝謝樓主分享,正在學習51電子,正好參考

評分

參與人數(shù) 1黑幣 +16 收起 理由
凌凈清河 + 16 黑幣補貼

查看全部評分

回復

使用道具 舉報

12#
ID:403562 發(fā)表于 2019-4-5 21:01 | 只看該作者
我是個新手,我想具體了解DHT11模塊的應用,與編程
謝謝大佬

評分

參與人數(shù) 1黑幣 +12 收起 理由
NPC-1024 + 12 黑幣補貼(小號)

查看全部評分

回復

使用道具 舉報

13#
ID:604575 發(fā)表于 2019-8-28 09:50 來自手機 | 只看該作者
樓主還在么,求補貼。
回復

使用道具 舉報

14#
ID:362076 發(fā)表于 2019-8-28 13:27 | 只看該作者
1931670332 發(fā)表于 2019-8-28 09:50
樓主還在么,求補貼。

怎么啦,需要補什么?
回復

使用道具 舉報

15#
ID:604575 發(fā)表于 2019-8-29 14:21 來自手機 | 只看該作者
凌凈清河 發(fā)表于 2019-8-28 13:27
怎么啦,需要補什么?

沒有黑幣了。。想下載附件,非常感謝

評分

參與人數(shù) 1黑幣 +7 收起 理由
凌凈清河 + 7 我給黑幣數(shù)量被限制了。。

查看全部評分

回復

使用道具 舉報

16#
ID:101205 發(fā)表于 2019-8-29 15:31 | 只看該作者
學習下,謝謝樓主
回復

使用道具 舉報

17#
ID:618778 發(fā)表于 2019-10-2 13:21 | 只看該作者
作品很棒,很適合新手學習
回復

使用道具 舉報

18#
ID:738997 發(fā)表于 2020-4-27 08:12 來自手機 | 只看該作者
樓主辛苦了,如果做了可以在手機上顯示的話就更好了
回復

使用道具 舉報

19#
ID:512651 發(fā)表于 2020-4-27 11:17 | 只看該作者
謝謝樓主分享,非常棒!
回復

使用道具 舉報

20#
ID:809501 發(fā)表于 2020-7-30 12:52 | 只看該作者
樓主,請問用STC89C52可以做這個嗎?

評分

參與人數(shù) 1黑幣 +5 收起 理由
凌凈清河 + 5 肯定可以,只是速度會慢一些

查看全部評分

回復

使用道具 舉報

21#
ID:884042 發(fā)表于 2022-4-3 22:27 | 只看該作者
檢測溫度直接用一塊彩屏?樓主有點奢侈了呀
回復

使用道具 舉報

22#
ID:1015584 發(fā)表于 2022-4-4 14:43 | 只看該作者
群里有這個資料嗎,這兒下載積分不夠
回復

使用道具 舉報

23#
ID:1017008 發(fā)表于 2022-4-9 16:11 | 只看該作者
GUI.c是??
回復

使用道具 舉報

24#
ID:824664 發(fā)表于 2023-3-14 22:10 | 只看該作者
謝謝分享,美觀使用,好好學習。
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

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

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

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