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

標題: 51單片機onenet協議 總是數據上不去 用的是mqtt協議,一直搞不懂 [打印本頁]

作者: WYJ@123    時間: 2022-4-2 21:27
標題: 51單片機onenet協議 總是數據上不去 用的是mqtt協議,一直搞不懂
為什么這里程序沒問題,總是數據上不去 用的是mqtt協議,一直搞不懂
  1. #include <REG52.H>
  2. #include "LCD1602.h"
  3. #include "intrins.h"
  4. #include "esp8266.h"
  5. #include "timer0.h"
  6. #include "usart.h"

  7. //typedef unsigned char uchar;
  8. //typedef unsigned int uint;
  9.        
  10. //定義變量

  11. sbit Data=P3^6;
  12. uchar sdata;        //存放整數溫度
  13. uchar sdatahum;        //存放整數濕度
  14. unsigned char rec_dat[13];//用于保存接收到的數據組

  15. void DHT11_delay_us(unsigned char n)
  16. {
  17.     while(--n);
  18. }

  19. void DHT11_delay_ms(unsigned int z)
  20. {
  21.    unsigned int i,j;
  22.    for(i=z;i>0;i--)
  23.       for(j=110;j>0;j--);
  24. }

  25. void DHT11_start()
  26. {
  27.    Data=1;
  28.    DHT11_delay_us(2);
  29.    Data=0;
  30.    DHT11_delay_ms(20);   //延時18ms以上
  31.    Data=1;
  32.    DHT11_delay_us(30);
  33. }

  34. unsigned char DHT11_rec_byte()      //接收一個字節
  35. {
  36.    unsigned char i,dat=0;
  37.   for(i=0;i<8;i++)    //從高到低依次接收8位數據
  38.    {         
  39.       while(!Data);   //等待50us低電平過去
  40.       DHT11_delay_us(8);     //延時60us,如果還為高則數據為1,否則為0
  41.       dat<<=1;           //移位使正確接收8位數據,數據為0時直接移位
  42.       if(Data==1)    //數據為1時,使dat加1來接收數據1
  43.          dat+=1;
  44.       while(Data);  //等待數據線拉低   
  45.     }  
  46.     return dat;
  47. }

  48. void DHT11_receive()      //接收40位的數據
  49. {
  50.     unsigned char R_H,R_L,T_H,T_L,RH,RL,TH,TL,revise;
  51.     DHT11_start();
  52.     if(Data==0)
  53.     {
  54.         while(Data==0);   //等待拉高     
  55.         DHT11_delay_us(40);  //拉高后延時80us
  56.         R_H=DHT11_rec_byte();    //接收濕度高八位  
  57.         R_L=DHT11_rec_byte();    //接收濕度低八位  
  58.         T_H=DHT11_rec_byte();    //接收溫度高八位  
  59.         T_L=DHT11_rec_byte();    //接收溫度低八位
  60.         revise=DHT11_rec_byte(); //接收校正位

  61.         DHT11_delay_ms(25);    //結束

  62.         if((R_H+R_L+T_H+T_L)==revise)      //校正
  63.         {
  64.             RH=R_H;
  65.             RL=R_L;
  66.             TH=T_H;
  67.             TL=T_L;
  68.         }
  69.                
  70.        
  71.         /*數據處理,方便顯示*/
  72.         rec_dat[0]=RH/10+'0';
  73.         rec_dat[1]=(RH%10)+'0';
  74.         rec_dat[7]=(TH/10)+'0';
  75.         rec_dat[8]=(TH%10)+'0';
  76.                                 sdata=rec_dat[7]*10+rec_dat[8]*1;
  77.                                 sdatahum=rec_dat[0]*10+rec_dat[1]*1;
  78.     }
  79. }
  80. //void Timer0(void) //interrupt 1
  81. //{
  82. //        static uint count = 0;
  83. //    TL0 = (65536 - 20000)%256;    //裝初值,低8位初值是1000即1ms
  84. //    TH0 = (65536 - 20000)/256;    //高8位

  85. //        count++;
  86. //        if(count >= 75) //20*50
  87. //        {
  88. //                count = 0;
  89. //                ESP_Send_Data("tem",sdata);
  90. //                ESP_Send_Data("hum",sdatahum);
  91. //        }
  92. //       
  93. //}


  94. void main()
  95. {
  96.          LCD_Init();
  97.         Timer0_Init();
  98.         UART_init();
  99.         ESP_Init();
  100.         while(1)
  101.         {
  102. //                Timer0();
  103.                 DHT11_receive();
  104.                 LCD_ShowChar(1,2,rec_dat[0]);
  105.                 LCD_ShowChar(1,3,rec_dat[1]);
  106.                 LCD_ShowString(1,4,"%RH");
  107.                 LCD_ShowChar(1,9,rec_dat[7]);
  108.                 LCD_ShowChar(1,10,rec_dat[8]);
  109.                 LCD_ShowString(1,11,"^CLH");
  110.                 ESP_Send_Data("temp",sdata);
  111.                 ESP_Send_Data("hum",sdatahum);
  112.                 DHT11_delay_ms(1000);
  113.                
  114.         }
  115. }
  116. #include <REG52.H>
  117. #include "LCD1602.h"
  118. #include "intrins.h"
  119. #include "esp8266.h"
  120. #include "timer0.h"
  121. #include "usart.h"

  122. //typedef unsigned char uchar;
  123. //typedef unsigned int uint;
  124.        
  125. //定義變量

  126. sbit Data=P3^6;
  127. uchar sdata;        //存放整數溫度
  128. uchar sdatahum;        //存放整數濕度
  129. unsigned char rec_dat[13];//用于保存接收到的數據組

  130. void DHT11_delay_us(unsigned char n)
  131. {
  132.     while(--n);
  133. }

  134. void DHT11_delay_ms(unsigned int z)
  135. {
  136.    unsigned int i,j;
  137.    for(i=z;i>0;i--)
  138.       for(j=110;j>0;j--);
  139. }

  140. void DHT11_start()
  141. {
  142.    Data=1;
  143.    DHT11_delay_us(2);
  144.    Data=0;
  145.    DHT11_delay_ms(20);   //延時18ms以上
  146.    Data=1;
  147.    DHT11_delay_us(30);
  148. }

  149. unsigned char DHT11_rec_byte()      //接收一個字節
  150. {
  151.    unsigned char i,dat=0;
  152.   for(i=0;i<8;i++)    //從高到低依次接收8位數據
  153.    {         
  154.       while(!Data);   //等待50us低電平過去
  155.       DHT11_delay_us(8);     //延時60us,如果還為高則數據為1,否則為0
  156.       dat<<=1;           //移位使正確接收8位數據,數據為0時直接移位
  157.       if(Data==1)    //數據為1時,使dat加1來接收數據1
  158.          dat+=1;
  159.       while(Data);  //等待數據線拉低   
  160.     }  
  161.     return dat;
  162. }

  163. void DHT11_receive()      //接收40位的數據
  164. {
  165.     unsigned char R_H,R_L,T_H,T_L,RH,RL,TH,TL,revise;
  166.     DHT11_start();
  167.     if(Data==0)
  168.     {
  169.         while(Data==0);   //等待拉高     
  170.         DHT11_delay_us(40);  //拉高后延時80us
  171.         R_H=DHT11_rec_byte();    //接收濕度高八位  
  172.         R_L=DHT11_rec_byte();    //接收濕度低八位  
  173.         T_H=DHT11_rec_byte();    //接收溫度高八位  
  174.         T_L=DHT11_rec_byte();    //接收溫度低八位
  175.         revise=DHT11_rec_byte(); //接收校正位

  176.         DHT11_delay_ms(25);    //結束

  177.         if((R_H+R_L+T_H+T_L)==revise)      //校正
  178.         {
  179.             RH=R_H;
  180.             RL=R_L;
  181.             TH=T_H;
  182.             TL=T_L;
  183.         }
  184.                
  185.        
  186.         /*數據處理,方便顯示*/
  187.         rec_dat[0]=RH/10+'0';
  188.         rec_dat[1]=(RH%10)+'0';
  189.         rec_dat[7]=(TH/10)+'0';
  190.         rec_dat[8]=(TH%10)+'0';
  191.                                 sdata=rec_dat[7]*10+rec_dat[8]*1;
  192.                                 sdatahum=rec_dat[0]*10+rec_dat[1]*1;
  193.     }
  194. }
  195. //void Timer0(void) //interrupt 1
  196. //{
  197. //        static uint count = 0;
  198. //    TL0 = (65536 - 20000)%256;    //裝初值,低8位初值是1000即1ms
  199. //    TH0 = (65536 - 20000)/256;    //高8位

  200. //        count++;
  201. //        if(count >= 75) //20*50
  202. //        {
  203. //                count = 0;
  204. //                ESP_Send_Data("tem",sdata);
  205. //                ESP_Send_Data("hum",sdatahum);
  206. //        }
  207. //       
  208. //}


  209. void main()
  210. {
  211.          LCD_Init();
  212.         Timer0_Init();
  213.         UART_init();
  214.         ESP_Init();
  215.         while(1)
  216.         {
  217. //                Timer0();
  218.                 DHT11_receive();
  219.                 LCD_ShowChar(1,2,rec_dat[0]);
  220.                 LCD_ShowChar(1,3,rec_dat[1]);
  221.                 LCD_ShowString(1,4,"%RH");
  222.                 LCD_ShowChar(1,9,rec_dat[7]);
  223.                 LCD_ShowChar(1,10,rec_dat[8]);
  224.                 LCD_ShowString(1,11,"^CLH");
  225.                 ESP_Send_Data("temp",sdata);
  226.                 ESP_Send_Data("hum",sdatahum);
  227.                 DHT11_delay_ms(1000);
  228.                
  229.         }
  230. }
復制代碼


比賽 - 副本.rar

61.96 KB, 下載次數: 8


作者: 風雪殘留    時間: 2024-4-7 01:27
不懂就問 51單片機能用8266.h嗎
作者: wufa1986    時間: 2024-4-7 08:04
數據上傳是esp8266的事,你的固件得對,串口數據要確定符合要求
作者: 累不死的狗    時間: 2024-4-7 08:56
風雪殘留 發表于 2024-4-7 01:27
不懂就問 51單片機能用8266.h嗎

.h是頭文件,里面包含了一些其他的函數體,一般封裝一下硬件(ESP8266)固定驅動程序,所以和51自身的函數不沖突




歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 国产一区二区三区四区在线观看 | 日韩久久网 | 日韩视频在线免费观看 | 全部免费毛片在线播放网站 | 久久99精品国产 | 91社区在线观看播放 | 色男人的天堂 | 五月婷婷 六月丁香 | 亚洲午夜电影 | 国产日批| 永久免费av | 国产精品久久久久久久久久免费看 | 亚洲欧美日本在线 | 国产91在线观看 | 91成人午夜性a一级毛片 | 久久免费精品 | 日韩另类 | 午夜视频一区二区 | 天天看天天操 | 国产成人综合在线 | 国产美女在线免费观看 | 欧美日韩视频 | 欧美一区二区三区在线视频 | 亚洲视频免费观看 | 免费网站在线 | 成年人视频在线免费观看 | 国产一区二区视频在线观看 | 最新伦理片 | 中文字幕在线观看视频网站 | 国产视频中文字幕 | 亚洲人成人一区二区在线观看 | 国产97色 | 一级黄在线观看 | 日本激情视频中文字幕 | jvid精品资源在线观看 | 涩涩视频在线播放 | 韩国精品在线观看 | 国产精品久久久久久久久久99 | 天堂中文资源在线 | 欧美色a v | 欧美精品久久久久久久久久 |