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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

求助:dht11時序問題--溫濕度一直顯示0的問題

[復制鏈接]
跳轉到指定樓層
樓主
ID:997537 發表于 2022-5-26 13:31 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
按照時序圖改了很多次,但是總是輸出為0,有沒有大神能夠幫忙解答一下

dht11.c
  1. #include "STC8A.h"
  2. #include "time111.h"
  3. #include <string.h>
  4. #include "stdio.h"
  5. #include "dht111.h"

  6. sbit dht11=P0^3;
  7. sbit led=P2^0;
  8. sbit led1=P2^1;
  9. unsigned char s[5]=0;
  10. unsigned char rec[5]=0;


  11. void start()
  12. {
  13.         
  14.         dht11=1;
  15.         Delay1us();
  16.         Delay1us();
  17.         dht11=0;
  18.         Delay18ms();
  19.         dht11=1;
  20.         Delay30us();
  21.         //dht11=1;
  22.         while(!dht11)
  23.         {
  24.                 led=0;
  25.         }
  26. }

  27. unsigned char readbyte()
  28. {
  29.         unsigned char i,dat=0;
  30.         for(i=0;i<8;i++)    //從高到低依次接收8位數據
  31.    {         
  32.       while(!dht11);   //等待50us低電平過去
  33.       Delay50us();     //延時60us,如果還為高則數據為1,否則為0
  34.       dat<<=1;           //移位使正確接收8位數據,數據為0時直接移位
  35.       if(dht11==1)    //數據為1時,使dat加1來接收數據1
  36.          dat+=1;
  37.       while(dht11);  //等待數據線拉低   
  38.     }  
  39.          return dat;
  40. }

  41. void readall(unsigned char *rec)
  42. {

  43.         unsigned char R_H,R_L,T_H,T_L,RH,RL,TH,TL,revise;
  44.         start();
  45.         if(start==1)led1=0;
  46.         if(dht11==0)
  47.         {
  48.                 while(dht11==0);//等待拉高   
  49.                 Delay80us(); //拉高后延時80us
  50.                 R_H=readbyte();    //接收濕度高八位  
  51.     R_L=readbyte();    //接收濕度低八位  
  52.     T_H=readbyte();    //接收溫度高八位  
  53.     T_L=readbyte();    //接收溫度低八位
  54.     revise=readbyte(); //接收校正位

  55.     Delay25us();    //結束
  56.                 if((R_H+R_L+T_H+T_L)==revise)      //校正
  57.         {
  58.                                        
  59.             RH=R_H;
  60.             RL=R_L;
  61.             TH=T_H;
  62.             TL=T_L;
  63.                                         //led1=0;
  64.         }
  65.                         rec[0]=(RH)/10;
  66.       rec[1]=(RH)%10;        
  67.       rec[2]=(TH)/10;
  68.       rec[3]=(TH)%10;        
  69.                                        
  70.         }
  71.            

  72. }
復制代碼
main.c
  1. #include "STC8A.h"
  2. #include <intrins.h>
  3. #include <string.h>
  4. #include "stdio.h"
  5. #include "Uart.h"
  6. #include "time111.h"
  7. #include "dht111.h"

  8. extern unsigned char s[5];

  9. sbit led1=P2^0;

  10. void main()
  11. {
  12.         
  13.         Uart1Init();
  14.         EA=1;//開啟總中斷


  15.         while(1)
  16.         {
  17.                 char send[2]={'O','k'};
  18.                 char dht11_data[4]=0;
  19.                 start();
  20.                
  21.     send_string(send);
  22.                
  23.                 readall(dht11_data);
  24.     sprintf(s,"%d",dht11_data);
  25.                 send_string(s);
  26.                 Delay2000ms();
  27.         }
  28. }
復制代碼
dht11時序圖



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

使用道具 舉報

沙發
ID:735831 發表于 2022-5-26 15:29 | 只看該作者
校驗位不一定有效果可以試著屏蔽編譯校驗位檢測看看結果,我之前調的時候也是校驗位的問題。如果上述無效果的話,可能是延時問題,有示波器確定發出的時序的話會好確認很多,建議用stc isp自帶的延時工具調整軟件延時,還有,你這里顯示是用數碼管還是使用串口,走串口中斷的話是會影響單片機本身軟件的延時的,再試一試keil的仿真,看看延時是否符合時序?
回復

使用道具 舉報

板凳
ID:887371 發表于 2022-5-28 16:58 | 只看該作者
hzhehe 發表于 2022-5-26 15:29
校驗位不一定有效果可以試著屏蔽編譯校驗位檢測看看結果,我之前調的時候也是校驗位的問題。如果上述無效果 ...

校驗通不過還是時序問題。
樓主應該找別人寫的代碼,參考他們的時序。附上正點原子的代碼。 DHT11.rar (1.92 KB, 下載次數: 117)



我發現的坑:dht11的端口在讀取前必須持續大于100m高電平,減小上拉電阻值會有改善些。假如dht11的端口不復用其它功能可忽略這個坑。
回復

使用道具 舉報

地板
ID:735831 發表于 2022-5-30 11:38 | 只看該作者
datouyuan 發表于 2022-5-28 16:58
校驗通不過還是時序問題。
樓主應該找別人寫的代碼,參考他們的時序。附上正點原子的代碼。

謝謝大哥指點
回復

使用道具 舉報

5#
ID:997537 發表于 2022-6-12 16:20 | 只看該作者
datouyuan 發表于 2022-5-28 16:58
校驗通不過還是時序問題。
樓主應該找別人寫的代碼,參考他們的時序。附上正點原子的代碼。

感謝大佬!
回復

使用道具 舉報

6#
ID:997537 發表于 2022-6-12 16:21 | 只看該作者
hzhehe 發表于 2022-5-26 15:29
校驗位不一定有效果可以試著屏蔽編譯校驗位檢測看看結果,我之前調的時候也是校驗位的問題。如果上述無效果 ...

嗯嗯校驗位的我也檢查了 最后還是時序的問題 感謝指點!
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 婷婷在线免费 | 国产va | 青青久草 | 精品国产乱码久久久久久88av | 欧美在线观看黄色 | 欧洲精品一区 | 日本黄色大片免费 | 亚洲视频免费在线观看 | 国产婷婷精品av在线 | 亚洲欧美视频 | 国产精品久久 | 国产清纯白嫩初高生视频在线观看 | 亚洲久久一区 | 久久一区视频 | 天天操天天射天天舔 | 国产激情视频网址 | 日韩av高清 | 精品国产一区久久 | 日韩电影免费在线观看中文字幕 | 日韩欧美一区二区三区免费观看 | 日本 欧美 三级 高清 视频 | 欧美一级二级在线观看 | 美女亚洲一区 | av黄色国产| 国产成人在线视频 | 少妇精品久久久久久久久久 | 久久99精品久久久久久国产越南 | 九九热在线免费视频 | 日本中出视频 | 国产三级电影网站 | 久久久欧洲 | 国产馆 | 日韩中文字幕免费在线 | 免费久久久 | 精品久久成人 | 成人亚洲精品 | 亚洲成人一区二区 | 黄色在线观看网址 | 国产精品a久久久久 | 成人免费在线播放视频 | 99免费在线观看 |