找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1408|回复: 1
打印 上一主题 下一主题
收起左侧

关于51单片机和ESP8266的通信问题(只能发送AT,就没有后面了)

[复制链接]
跳转到指定楼层
楼主
ID:417938 发表于 2018-10-30 18:47 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
用51单片机和esp8266相连接, r/t连接正确。想实现通过单片机向esp8266发送指令设置成客户端,发送数据给连接到此WiFi的另一台服务器。
烧录程序只能发送AT,就没有后面了。程序如下,希望大神们帮我看看
  1. #include<reg52.h>
  2. #include <stdio.h>
  3. #include <intrins.h>              
  4. #include <string.h>
  5. #define Buf_Max 10
  6. unsigned char i=0;
  7. unsigned char j=0;
  8. unsigned char idata Rec_Buf[10];
  9. bit  Hand(unsigned char *a);
  10. char code str1[]="AT\r\n";
  11. char code str2[]="AT+CWMODE=2\r\n";                                
  12. char code str3[]="AT+RST\r\n";                  
  13. char code str4[]="AT+CIPMUX=0\r\n";                                    
  14. char code str5[]="AT+CIPSTART=\"TCP\",\"192.168.4.2\",8234\r\n";   
  15. char code str6[]="AT+CIPSEND=6\r\n";               
  16. char code str7[]="hello!\r\n";


  17. void CLR_Buf(void)
  18. {
  19. unsigned char k;
  20.     for(k=0;k<Buf_Max;k++)   
  21.      {
  22.    Rec_Buf[k] = 0;
  23.   }
  24.     //i = 0;                    
  25. }


  26. bit Hand(unsigned char *a)
  27. {  
  28.     if(strstr(Rec_Buf,a)!=NULL)
  29.      return 1;
  30. else
  31.   return 0;
  32. }


  33. void Delays(void)        //Delay500ms
  34. {
  35. unsigned char i,j,k;
  36. for(k=0;k<2;k++){
  37. for(i=0;i<255;i++)
  38. for(j=0;j<255;j++);
  39. for(i=0;i<255;i++)
  40. for(j=0;j<255;j++);
  41. for(i=0;i<255;i++)
  42. for(j=0;j<140;j++);
  43. }
  44. }

  45. void UARTInit(void)
  46. {
  47. SCON =0x50;
  48. T2CON=0x34;
  49. RCAP2L=0xD9;
  50. RCAP2H=0xFF;   //波特率9600
  51. //TR1=1;
  52. EA=1;
  53. //ES=1;
  54. }

  55. void UARTSendByte(unsigned char byte)
  56. {
  57. SBUF=byte;                 
  58. while(TI==0);              
  59. TI=0;                    
  60. }

  61. void UARTSendString(unsigned char *string)
  62. {
  63.    while(*string)
  64.     { UARTSendByte(*string++);  }
  65. }

  66. void ESP8266()
  67. {

  68. UARTSendString(str1);   
  69. while(!Hand("OK"));                          
  70.   CLR_Buf();
  71. Delays();
  72. UARTSendString(str2);   
  73. while(!(Hand("OK")))        
  74. {                        
  75. Delays();
  76. Delays();
  77. }
  78. CLR_Buf();

  79. UARTSendString(str3);      //RST
  80. while(!Hand("OK"))                           
  81. {                 
  82. Delays();
  83. Delays();
  84. }
  85. CLR_Buf();

  86. UARTSendString(str4);                                
  87. while(!Hand("OK"))                           
  88. {      
  89. Delays();
  90. Delays();
  91. }
  92. CLR_Buf();

  93. UARTSendString(str5);                     
  94.     while(!Hand("OK"))                          
  95. {        
  96. Delays();
  97. Delays();
  98. }
  99. CLR_Buf();
  100. UARTSendString(str6);     
  101. while(!Hand("ready"))                        
  102. {                          
  103. Delays();
  104. Delays();
  105. }
  106. CLR_Buf();
  107.     while(!Hand(">")){
  108. UARTSendString(str7);                        
  109. Delays();
  110. Delays();
  111.    }
  112. }  

  113. void main(void)
  114. {
  115. UARTInit();
  116. while(1)
  117. {
  118. Delays();
  119. Delays();
  120. ESP8266();
  121. Delays();
  122. }
  123. }

  124. void UARTInterrupt(void) interrupt 4
  125. {
  126.   ES = 0;
  127. if (RI)
  128.     {
  129.         RI = 0;               
  130.       Rec_Buf[j] = SBUF;
  131.   //SBUF=Rec_Buf[j];
  132.      j++;               
  133.   if(j>Buf_Max)         
  134.   {
  135.   j = 0;
  136.   }           
  137.     }
  138.     if (TI)
  139.     {
  140.       TI = 0;               
  141.     }
  142. ES =  1;
  143. }
复制代码

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:303383 发表于 2018-10-31 09:50 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表