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

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

QQ登錄

只需一步,快速開始

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

關(guān)于單片機(jī)+DHT22讀數(shù)問題

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:366929 發(fā)表于 2019-6-5 10:34 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
以下是DHT22和nRF24L01無線組合,并且DHT22通過2片CD4067的16選一模擬通道實(shí)現(xiàn)32個(gè)傳感器2個(gè)單總線的多點(diǎn)測(cè)量,問題就是,上位機(jī)讀取時(shí),數(shù)據(jù)可以正常顯示,但是過一會(huì)兒后數(shù)據(jù)消失,要等幾輪才能再讀取到數(shù)據(jù)。(上位機(jī)緩存數(shù)據(jù)直到有新數(shù)據(jù)存入替換,但是偶爾數(shù)據(jù)存入為零),想知道有看法的人能解決一下嗎。
  1. #include "AM2302.h"
  2. #include "reg52.h"
  3. #include "delay.h"
  4. #define uchar unsigned char  //無符號(hào)字符型 宏定義 變量范圍0~255
  5. #define uint  unsigned int  //無符號(hào)整型 宏定義 變量范圍0~65535
  6. uchar U8FLAG,U8temp;
  7. uchar COM(uchar a)
  8. {  uchar i,U8comdata=0;
  9.     switch(a){
  10.    case 0:
  11. {

  12.     for(i=0;i<8;i++)   
  13.     {
  14.      U8FLAG=2;  
  15.      while((!DHT220)&&U8FLAG++);
  16.      Delay_10us();
  17.      Delay_10us();
  18.   Delay_10us();
  19.        U8temp=0;
  20.        if(DHT220)U8temp=1;
  21.        U8FLAG=2;
  22.      while((DHT220)&&U8FLAG++);        
  23.      if(U8FLAG==1)break;
  24.       U8comdata<<=1;
  25.         U8comdata|=U8temp;
  26.      }
  27.   }
  28. break;
  29.   case 1:
  30. {
  31.     for(i=0;i<8;i++)   
  32.     {
  33.      U8FLAG=2;  
  34.      while((!DHT221)&&U8FLAG++);
  35.      Delay_10us();
  36.      Delay_10us();
  37.   Delay_10us();
  38.        U8temp=0;
  39.        if(DHT221)U8temp=1;
  40.        U8FLAG=2;
  41.      while((DHT221)&&U8FLAG++);        
  42.      if(U8FLAG==1)break;
  43.       U8comdata<<=1;
  44.         U8comdata|=U8temp;
  45.      }
  46.   }
  47. break;
  48. }
  49. return  U8comdata;
  50. }
  51. void Read_TRH(int *x,int *y,uchar i)
  52. {
  53. uint T_data=0;
  54. uint RH_data=0;
  55.   static uchar U8T_data_H,U8T_data_L,U8RH_data_H,U8RH_data_L,U8checkdata;
  56.   static uchar U8T_data_H_temp,U8T_data_L_temp,U8RH_data_H_temp,U8RH_data_L_temp,U8checkdata_temp;
  57.   switch(i){
  58.   case 0:
  59.   {
  60.     DHT220=0;
  61.     Delay_ms(5);
  62.     DHT220=1;
  63.     Delay_10us();
  64.     Delay_10us();
  65.     Delay_10us();
  66.     Delay_10us();
  67.     DHT220=1;
  68.     if(!DHT220)
  69.   {   
  70.      U8FLAG=2;
  71.      while((!DHT220)&&U8FLAG++);
  72.      U8FLAG=2;
  73.      while(DHT220&&U8FLAG++);
  74.      U8RH_data_H_temp=COM(0);
  75.      U8RH_data_L_temp=COM(0);
  76.      U8T_data_H_temp=COM(0);
  77.      U8T_data_L_temp=COM(0);
  78.      U8checkdata_temp=COM(0);
  79.     DHT220=1;   
  80.    U8temp=(U8T_data_H_temp+U8T_data_L_temp+U8RH_data_H_temp+U8RH_data_L_temp);
  81.      if(U8temp==U8checkdata_temp)
  82.      {
  83.          U8RH_data_H=U8RH_data_H_temp;
  84.          U8RH_data_L=U8RH_data_L_temp;
  85.       U8T_data_H=U8T_data_H_temp;
  86.          U8T_data_L=U8T_data_L_temp;
  87.          U8checkdata=U8checkdata_temp;
  88.      }   
  89.    RH_data=U8RH_data_H*255+U8RH_data_L;
  90.    T_data=U8T_data_H*255+U8T_data_L;
  91.   }
  92.   *x=RH_data;
  93.   *y=T_data;
  94. }break;
  95. case 1:
  96.   {
  97.    DHT221=0;
  98.     Delay_ms(5);
  99.     DHT221=1;
  100.     Delay_10us();
  101.     Delay_10us();
  102.     Delay_10us();
  103.     Delay_10us();
  104.     DHT221=1;
  105.     if(!DHT221)
  106.   {   
  107.      U8FLAG=2;
  108.      while((!DHT221)&&U8FLAG++);
  109.      U8FLAG=2;
  110.      while(DHT221&&U8FLAG++);
  111.      U8RH_data_H_temp=COM(1);
  112.      U8RH_data_L_temp=COM(1);
  113.      U8T_data_H_temp=COM(1);
  114.      U8T_data_L_temp=COM(1);
  115.      U8checkdata_temp=COM(1);
  116.     DHT221=1;
  117.    U8temp=(U8T_data_H_temp+U8T_data_L_temp+U8RH_data_H_temp+U8RH_data_L_temp);
  118.      if(U8temp==U8checkdata_temp)
  119.      {
  120.          U8RH_data_H=U8RH_data_H_temp;
  121.          U8RH_data_L=U8RH_data_L_temp;
  122.          U8T_data_H=U8T_data_H_temp;
  123.          U8T_data_L=U8T_data_L_temp;
  124.          U8checkdata=U8checkdata_temp;
  125.      }
  126.    
  127.      RH_data=U8RH_data_H*255+U8RH_data_L;
  128.    T_data=U8T_data_H*255+U8T_data_L;
  129.   }
  130.   *x=RH_data;
  131.   *y=T_data;
  132. }break;
  133. }
  134. }

  135. 以下是主程序的各函數(shù)
  136. void dht22(uchar i)
  137. {
  138.   Read_TRH(&r,&t,i);//讀取數(shù)據(jù)
  139. }
  140. int choiceCH(uchar ch)
  141. {
  142. switch(ch)
  143. {
  144.   case 0:{S0=0;S1=0;S2=0;S3=0;};break;  //channel 0
  145.   case 1:{S0=1;S1=0;S2=0;S3=0;};break;  //channel 1
  146.   case 2:{S0=0;S1=1;S2=0;S3=0;};break;  //channel 2
  147.   case 3:{S0=1;S1=1;S2=0;S3=0;};break;  //channel 3
  148.   case 4:{S0=0;S1=0;S2=1;S3=0;};break;  //channel 4
  149.   case 5:{S0=1;S1=0;S2=1;S3=0;};break;  //channel 5
  150.   case 6:{S0=0;S1=1;S2=1;S3=0;};break;  //channel 6
  151.   case 7:{S0=1;S1=1;S2=1;S3=0;};break;  //channel 7
  152.   case 8:{S0=0;S1=0;S2=0;S3=1;};break;  //channel 8
  153.   case 9:{S0=1;S1=0;S2=0;S3=1;};break;  //channel 9
  154.   case 10:{S0=0;S1=1;S2=0;S3=1;};break;  //channel 10
  155.   case 11:{S0=1;S1=1;S2=0;S3=1;};break;  //channel 11
  156.   case 12:{S0=0;S1=0;S2=1;S3=1;};break;  //channel 12
  157.   case 13:{S0=1;S1=0;S2=1;S3=1;};break;  //channel 13
  158.   case 14:{S0=0;S1=1;S2=1;S3=1;};break;  //channel 14
  159.   case 15:{S0=1;S1=1;S2=1;S3=1;};break;  //channel 15
  160. }
  161. }
  162. /******************主程序**********************/   
  163. void main()
  164. { int i,n,m;
  165. CE=0;     //2.4G無線模塊IO口初始化
  166. SCK=0;
  167. CSN=1;
  168. chEN1 = 0;
  169. chEN2 = 0;
  170. TX_Mode();
  171. delay_1ms(600);
  172. while(1)
  173. {   
  174.   for(m=0;m<2;m++)
  175.      for(n=0;n<4;n++)
  176.    {
  177.    switch(4*m+n)
  178.     {
  179.      case 0: Tx_Buf[0] = 0x01; break;
  180.      case 1: Tx_Buf[0] = 0x02; break;
  181.      case 2: Tx_Buf[0] = 0x03; break;
  182.      case 3: Tx_Buf[0] = 0x04; break;
  183.      case 4: Tx_Buf[0] = 0x05; break;
  184.      case 5: Tx_Buf[0] = 0x06; break;
  185.      case 6: Tx_Buf[0] = 0x07; break;
  186.      case 7: Tx_Buf[0] = 0x08; break;
  187.     }
  188.      for(i=0;i<4;i++)
  189.      {
  190.       choiceCH(4*n+i);
  191.       delay_1ms(10);
  192.       dht22(m);
  193.       Tx_Buf[4*i+1] = t% 256;  
  194.       Tx_Buf[4*i+2] = t / 256;  
  195.       Tx_Buf[4*i+3] = r% 256;  
  196.       Tx_Buf[4*i+4] = r / 256;
  197.       delay_1ms(10);
  198.      }
  199.      led = 0;
  200.      Transmit(Tx_Buf);
  201.      delay_1ms(10);
  202.      sta=SPI_Read(READ_REG +  STATUS);
  203.      if(TX_DS)  //當(dāng)前STATUS狀態(tài)  發(fā)送中斷應(yīng)使bit5 = 1
  204.      {
  205.       SPI_RW_Reg(WRITE_REG + STATUS,sta);
  206.      }
  207.      if(MAX_RT)  //如果是發(fā)送超時(shí)
  208.      {
  209.      SPI_RW_Reg(WRITE_REG + STATUS,sta);
  210.      }
  211.      led = 1;
  212.    
  213.     delay_1ms(1500);
  214.     }
  215.   }
  216. }
復(fù)制代碼



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

使用道具 舉報(bào)

沙發(fā)
ID:94031 發(fā)表于 2019-6-5 15:47 | 只看該作者
這種問題都要分步來解決,先單獨(dú)試DHT22采集長時(shí)間有無問題,再加無線,不能眉毛胡子一把抓。
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 精品区| 欧美视频 | 久久久亚洲综合 | 国产精品久久久久久福利一牛影视 | 日韩在线欧美 | 久草资源在线视频 | 国产日产精品一区二区三区四区 | 国产精品视频在线观看 | 一级毛片免费看 | 三a毛片| 日韩精品成人 | 日韩精品免费看 | 亚洲精品国产成人 | 久久精品亚洲精品国产欧美 | 欧美 日韩 国产 成人 在线 91 | 久精品久久 | 超碰在线国产 | 网站国产 | 久久精品成人 | 午夜视频网站 | 欧美性另类| 在线欧美视频 | 午夜资源| 一区二区三区不卡视频 | 中文字幕国产精品 | 国产高清视频一区 | 一级毛片免费完整视频 | 中国美女一级黄色片 | 色网在线观看 | 精品一区在线免费观看 | 亚洲超碰在线观看 | 狠狠久久久 | 91伊人 | 成人三级在线观看 | 亚洲一区二区三区免费视频 | 日本不卡免费新一二三区 | 日本aⅴ中文字幕 | 欧美在线精品一区 | 美日韩免费视频 | 欧美一区二区在线 | 欧美成人免费电影 |