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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2931|回復: 3
收起左側(cè)

51單片機onenet協(xié)議 總是數(shù)據(jù)上不去 用的是mqtt協(xié)議,一直搞不懂

[復制鏈接]
ID:700054 發(fā)表于 2022-4-2 21:27 | 顯示全部樓層 |閱讀模式
50黑幣
為什么這里程序沒問題,總是數(shù)據(jù)上不去 用的是mqtt協(xié)議,一直搞不懂
  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;        //存放整數(shù)溫度
  13. uchar sdatahum;        //存放整數(shù)濕度
  14. unsigned char rec_dat[13];//用于保存接收到的數(shù)據(jù)組

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

  48. void DHT11_receive()      //接收40位的數(shù)據(jù)
  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.         /*數(shù)據(jù)處理,方便顯示*/
  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;        //存放整數(shù)溫度
  128. uchar sdatahum;        //存放整數(shù)濕度
  129. unsigned char rec_dat[13];//用于保存接收到的數(shù)據(jù)組

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

  163. void DHT11_receive()      //接收40位的數(shù)據(jù)
  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.         /*數(shù)據(jù)處理,方便顯示*/
  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, 下載次數(shù): 8

回復

使用道具 舉報

ID:157274 發(fā)表于 2024-4-7 01:27 來自手機 | 顯示全部樓層
不懂就問 51單片機能用8266.h嗎
回復

使用道具 舉報

ID:879348 發(fā)表于 2024-4-7 08:04 | 顯示全部樓層
數(shù)據(jù)上傳是esp8266的事,你的固件得對,串口數(shù)據(jù)要確定符合要求
回復

使用道具 舉報

ID:453974 發(fā)表于 2024-4-7 08:56 | 顯示全部樓層
風雪殘留 發(fā)表于 2024-4-7 01:27
不懂就問 51單片機能用8266.h嗎

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

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 久久久性色精品国产免费观看 | 美女福利视频 | 91久久精品国产 | 91精品在线播放 | 中文在线a在线 | 成年人免费网站 | 亚洲导航深夜福利涩涩屋 | 日韩精品一区二区三区视频播放 | 欧美久久久久久久久 | 国产一级淫片a直接免费看 免费a网站 | 欧美亚洲国产精品 | 欧美日韩亚 | 亚洲欧美日韩国产 | 久久精品伊人 | 欧美大片黄 | 国产视频中文字幕 | 亚洲国产精品久久久久秋霞不卡 | 精品国产一区二区三区日日嗨 | 久久久久久久久久久一区二区 | 国产91丝袜在线18 | 国产精品日日摸夜夜添夜夜av | 国产精品久久久爽爽爽麻豆色哟哟 | aaa国产大片 | 久久久精品一区 | 国产欧美一区二区三区久久手机版 | 久久久视频在线 | 成人日韩av | 欧美日韩亚洲一区 | 91极品欧美视频 | 午夜影院在线观看免费 | 国产精品视频网 | 国产精品久久久 | 在线观看成人小视频 | 黄网站免费观看 | 99久久久久 | 国产精品爱久久久久久久 | 日本污视频| 羞羞视频在线观看 | 欧美日韩在线免费 | 国产一二三视频在线观看 | 国产99久久久国产精品下药 |