久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

DHT11溫濕度模塊在OLED液晶上顯示不了正確的數(shù)值

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:190152 發(fā)表于 2023-9-8 10:54 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
兩個代碼拼接起來的,現(xiàn)在溫度顯示8,濕度顯示19不知道上什么原因和真實溫濕度相差很遠(yuǎn)
  1. //////////////////////////////////////////////////////////////////////////////////         
  2. //本程序只供學(xué)習(xí)使用,未經(jīng)作者許可,不得用于其它任何用途

  3. //  文 件 名   : main.c
  4. //  版 本 號   : v2.0
  5. //  作    者   : HuangKai
  6. //  生成日期   : 2014-0101
  7. //  最近修改   :
  8. //  功能描述   : OLED 4接口演示例程(51系列)
  9. //              說明:
  10. //              ----------------------------------------------------------------
  11. //              GND    電源地
  12. //              VCC  接5V或3.3v電源
  13. //              D0   P1^0(SCL)
  14. //              D1   P1^1(SDA)
  15. //              RES  接P12
  16. //              DC   接P13
  17. //              CS   接P14               
  18. //              ----------------------------------------------------------------
  19. // 修改歷史   :
  20. // 日    期   :
  21. //All rights reserved
  22. //******************************************************************************/
  23. #include "REG51.h"
  24. #include "oled.h"
  25. #include "bmp.h"

  26. sbit DHT=P3^5;//DHT11模塊
  27. void Delay30us();
  28. void Delay20ms();
  29. void Delay1s();
  30. void DHT_Collect();

  31. unsigned int Temperature[3]={1,1,1};//前兩位為整數(shù)部分,后一位為小數(shù)部分
  32. unsigned int Humidity[2]={1,1};//傳回的濕度數(shù)據(jù)只有整數(shù)部分

  33. unsigned char Data_Receive[5];

  34. int main(void)
  35. {        
  36.         while(1)
  37.         {        
  38.                 OLED_Init();                        //初始化OLED         
  39.                 OLED_Clear();
  40.                 OLED_ShowCHinese(0,4,0);//溫
  41.                 OLED_ShowCHinese(16,4,2);//度
  42.                 OLED_ShowCHinese(0,6,1);//濕
  43.                 OLED_ShowCHinese(16,6,2);//度
  44.                 OLED_ShowString(6,0,"0.96' OLED TEST",16);//
  45.                 DHT_Collect();//DHT11數(shù)據(jù)采集
  46.                 Delay1s();
  47.                 Delay1s();//注意:長時間的延時必須要有,不然會讀出0
  48.                 OLED_ShowNum(32,4,Temperature,3,16);//溫度顯示
  49.                 OLED_ShowNum(32,6,Humidity,3,16);//濕度顯示
  50.                 delay_ms(8000);
  51.         }         
  52.         
  53. }

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

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

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

  120. void Delay30us()//@12.000MHz
  121. {
  122.         unsigned char i;
  123.         i=87;
  124.         while(--i);
  125. }

  126. void Delay20ms()//@12.000MHz
  127. {
  128.         unsigned char i,j,k;
  129.         i=1;
  130.         j=234;
  131.         k=113;
  132.         do
  133.         {
  134.                 do
  135.                 {
  136.                         while(--k);
  137.                 }while(--j);
  138.         }while(--i);
  139. }

  140. void Delay1s()//@12.000MHz
  141. {
  142.         unsigned char i,j,k;
  143.         i=46;
  144.         j=153;
  145.         k=245;
  146.         do
  147.         {
  148.                 do
  149.                 {
  150.                         while(--k);
  151.                 }while(--j);
  152.         }while(--i);
  153. }
  154.         
復(fù)制代碼


OLED顯示溫濕度錯誤.zip

94.17 KB, 下載次數(shù): 9

評分

參與人數(shù) 1黑幣 +12 收起 理由
wjq050325 + 12 絕世好帖!

查看全部評分

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

使用道具 舉報

沙發(fā)
ID:584814 發(fā)表于 2023-9-8 17:51 | 只看該作者
1、先用別的顯示出正常的溫度;
2、調(diào)試好OLED液晶上的顯示;
3、集成。
回復(fù)

使用道具 舉報

板凳
ID:190152 發(fā)表于 2023-9-9 14:04 來自手機(jī) | 只看該作者
已經(jīng)解決了OLED_ShowNum(32,4,Temperature,3,16);/
回復(fù)

使用道具 舉報

地板
ID:190152 發(fā)表于 2023-9-9 14:08 來自手機(jī) | 只看該作者
man1234567 發(fā)表于 2023-9-8 17:51
1、先用別的顯示出正常的溫度;
2、調(diào)試好OLED液晶上的顯示;
3、集成。

已經(jīng)解決了OLED_ShowNum(32,4,Temperature,3,16);/
改成
OLED_ShowNum(32,4,Temperature[1],3,16);/少了個中括號中間數(shù)字表示數(shù)據(jù)位
回復(fù)

使用道具 舉報

5#
ID:1063664 發(fā)表于 2024-4-1 10:09 | 只看該作者
樓主你那個dht11模塊使用的是哪種啊
回復(fù)

使用道具 舉報

6#
ID:190152 發(fā)表于 2024-11-5 15:26 | 只看該作者
wjq050325 發(fā)表于 2024-4-1 10:09
樓主你那個dht11模塊使用的是哪種啊

藍(lán)色便宜的那種
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 欧美成年人| 亚洲激情第一页 | 97国产精品| 亚洲激精日韩激精欧美精品 | 毛片韩国 | 国产男女猛烈无遮掩视频免费网站 | 国产日韩一区二区 | 91综合网 | 精品国产一区二区三区久久 | 欧美国产日韩一区二区三区 | 午夜影院在线观看 | 成人性视频在线播放 | 蜜月aⅴ国产精品 | 国产精品高潮呻吟久久 | 精品视频一区二区三区 | 亚洲人成网站777色婷婷 | 国产欧美在线观看 | 亚洲国产高清免费 | 欧美freesex黑人又粗又大 | 91在线一区二区 | 伊人免费网 | 91色啪 | 国产在线拍偷自揄拍视频 | 午夜免费观看网站 | 91精品国产一区二区 | 亚洲天堂av在线 | 色婷婷综合在线观看 | 亚洲人成人一区二区在线观看 | 九九热精品视频 | 91精品久久久久久久久久入口 | 国产高清免费视频 | h视频在线免费 | 国产色网 | 免费看91| 久久久久久久av | 国产区一区二区三区 | 99色播| 一区二区日韩精品 | 国产精品久久久久久一级毛片 | 一级二级三级黄色 | 亚洲成人精品一区 |