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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

51單片機通過發送AT指令WIFI模塊的HTTP通信程序

[復制鏈接]
跳轉到指定樓層
樓主
ID:467553 發表于 2019-11-20 20:24 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
簡單的學習了WIFI模塊和相關AT指令,配置WiFi模組工作模式為單STA模式,并把配置保存在flash 中,然后自動發送指令連接網絡和連接服務器,最終即可發送數據。因為做的時候還沒有后端對接,相關的GET和POST請求沒有寫完
具體代碼參考附件。

單片機源程序如下:
  1. #include <reg52.h>
  2. #include <string.h>
  3. #include <intrins.h>

  4. typedef unsigned char u8;
  5. typedef unsigned int u16;

  6. unsigned char Usart_Receive[20]={0};
  7. unsigned char Usart_Cnt=0;
  8. bit Usart_AT_flage;

  9. u8 dat;

  10. void Init(void)
  11. {
  12.         TMOD = 0x20;
  13.     SCON = 0x50;
  14.     TH1 = 0xFD;
  15.     TL1 = TH1;
  16.     PCON = 0x00;
  17.     EA = 1;
  18.     ES = 1;
  19.     TR1 = 1;
  20. }

  21. void delay5ms(void)   //誤差 -0.000000000001us
  22. {
  23.     unsigned char a,b;
  24.     for(b=15;b>0;b--)
  25.         for(a=152;a>0;a--);
  26. }

  27. void delay1s(void)   //誤差 -0.000000000227us
  28. {
  29.     unsigned char a,b,c;
  30.     for(c=13;c>0;c--)
  31.         for(b=247;b>0;b--)
  32.             for(a=142;a>0;a--);
  33.     _nop_();  //if Keil,require use intrins.h
  34. }

  35. void Sent_ZF(u8 dat)  //發送一個字節
  36. {
  37.         ES = 0;
  38.         TI=0;
  39.         SBUF = dat;
  40.         while(!TI);
  41.         TI = 0;
  42.         ES = 1;
  43. }

  44. void AT_Send_String(u8 *string)  //發送字符串
  45. {
  46.   while(*string)
  47.   {
  48.     Sent_ZF(*string++);
  49.                 delay5ms();
  50.   }
  51. }

  52. void ESP8266_Init()
  53. {
  54.         while(1)
  55.         {
  56.                 AT_Send_String("AT\r\n");
  57.                 delay1s();
  58.                 delay1s();
  59.                 if(Usart_AT_flage ==1)
  60.                 {
  61.                         if(strstr(Usart_Receive, "OK"))
  62.                         {
  63.                                 Usart_AT_flage = 0;
  64.                                 AT_Send_String("OK\r\n");
  65.                                 break;
  66.                         }        
  67.                 }
  68.         }
  69.         while(1)
  70.         {
  71.                 AT_Send_String("AT+CWMODE=1\r\n");    //配置WiFi模組工作模式為單STA模式,并把配置保存在flash
  72.                 delay1s();
  73.                 delay1s();
  74.                 if(Usart_AT_flage ==1)
  75.                 {
  76.                         if(strstr(Usart_Receive, "OK"))
  77.                         {
  78.                                 Usart_AT_flage = 0;
  79.                                 AT_Send_String("OK\r\n");
  80.                                 break;
  81.                         }        
  82.                 }
  83.         }
  84.         while(1)
  85.         {
  86.                 AT_Send_String("AT+CWJAP=\"guazhou\",\"123456789\"\r\n");           //!連接網絡
  87.                 delay1s();
  88.                 delay1s();
  89.                 if(Usart_AT_flage ==1)
  90.                 {
  91.                         if(strstr(Usart_Receive, "OK"))
  92.                         {
  93.                                 Usart_AT_flage = 0;
  94.                                 AT_Send_String("OK\r\n");
  95.                                 break;
  96.                         }        
  97.                 }
  98.         }
  99.         while(1)
  100.         {
  101.                 AT_Send_String("AT+CIPSTART=\"TCP\",\"192.110.43.11\",8080\r\n");                  //連接服務器
  102.                 delay1s();
  103.                 delay1s();
  104.                 delay1s();
  105.                 if(Usart_AT_flage ==1)
  106.                 {
  107.                         if(strstr(Usart_Receive, "OK"))
  108.                         {
  109.                                 Usart_AT_flage = 0;
  110.                                 AT_Send_String("OK\r\n");
  111.                                 break;
  112.                         }        
  113.                 }
  114.         }        
  115.         while(1)
  116.         {
  117.                 AT_Send_String("AT+CIPMODE=1\r\n");                  //設置透傳
  118.                 delay1s();
  119.                 delay1s();
  120.                 delay1s();
  121.                 if(Usart_AT_flage ==1)
  122.                 {
  123.                         if(strstr(Usart_Receive, "OK"))
  124.                         {
  125.                                 Usart_AT_flage = 0;
  126.                                 AT_Send_String("OK\r\n");
  127.                                 break;
  128.                         }        
  129.                 }
  130.         }
  131.         while(1)
  132.         {
  133.                 AT_Send_String("AT+CIPSEND\r\n");                  //啟動發送  
  134.                 delay1s();
  135.                 delay1s();
  136.                 delay1s();
  137.                 if(Usart_AT_flage ==1)
  138.                 {
  139.                         if(strstr(Usart_Receive, "OK"))
  140.                         {
  141.                                 Usart_AT_flage = 0;
  142.                                 AT_Send_String("OK\r\n");
  143.                                 break;
  144.                         }        
  145.                 }
  146.         }
  147.         
  148.         //get請求/post請求略,可參看截圖寫出
  149. }

  150. void main()
  151. {
  152.     Init();
  153.     ESP8266_Init();
  154.     while(1);
  155. }

  156. void InterruptUART(void) interrupt 4
  157. {
  158.         if(RI)
  159.         {
  160.                 RI=0;
  161.                 Usart_Receive[Usart_Cnt]=SBUF;
  162.                 Usart_Cnt++;
  163.                 if(Usart_Receive[Usart_Cnt-2]=='\r'&&Usart_Receive[Usart_Cnt-1]=='\n')   //檢測倒數一二位
  164.                 {
  165.                         Usart_Cnt=0;
  166.                         Usart_AT_flage=1;
  167.                                 
  168.                 }
  169.                 else if(Usart_Cnt>20)
  170.                 {
  171.                         Usart_Cnt=0;
  172.                 }
  173.         }
  174.         else
  175.                 TI=0;
  176. }
復制代碼

所有資料51hei提供下載:
WiFi HTTP通信.zip (26.12 KB, 下載次數: 44)

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

使用道具 舉報

沙發
ID:1 發表于 2019-11-20 21:09 | 只看該作者
本帖需要重新編輯補全電路原理圖,源碼,詳細說明與圖片即可獲得100+黑幣(帖子下方有編輯按鈕)
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产一区二区在线免费 | 欧美一区二区 | 91精品国产91久久久久久丝袜 | 日韩欧美在线一区 | 免费在线观看一区二区三区 | 久久国产精品一区二区三区 | 国产99久久精品一区二区永久免费 | 天天插天天操 | 欧美视频在线播放 | 欧美日韩亚洲一区 | 一区二区三区不卡视频 | 亚洲成人av | 成人不卡 | 日韩av啪啪网站大全免费观看 | 99re99| 午夜成人在线视频 | 亚洲一区二区三区在线播放 | 国产午夜精品一区二区三区四区 | 久精品久久 | 日韩免费视频一区二区 | 中文字幕 国产 | cao在线| 久久激情视频 | 中文字幕97 | 亚洲午夜在线 | 毛片网站在线观看视频 | 午夜色婷婷 | 亚洲精品视频在线播放 | 日韩精品一区二区三区 | 精品视频免费 | 欧美精品欧美精品系列 | 日韩精品在线一区 | 日日干干 | 天天看夜夜 | 欧美日韩亚洲一区 | 久久久91精品国产一区二区三区 | 北条麻妃av一区二区三区 | 久久久久久国产精品免费免费 | 欧美日韩精品中文字幕 | 久久一区二区精品 | 日本电影网站 |