当前位置:   article > 正文

Esp8266-01s学习(二):作为路由器与stc51单片机相连点亮led灯_8266配置成路由器

8266配置成路由器

目录

一、配置成路由器模式

   1、路由器配置

    2、使能多链接

    3、建立TCPServer

    4、发送数据

     5、接收数据

     6、断开链接

      7、开关网络助手调试

二、 与stc51单片机相连点亮led灯

1、直接上代码


一、配置成路由器模式

      Esp8266-01s作为路由器时用指令:AT+CIFSR查询ip地址。

   1、路由器配置

AT + CWMODE =   //2.路由器
Response : OK        //结果

    2、使能多链接

AT + CIPMUX = //指令
Response : OK   //结果

    3、建立TCPServer

AT+CIPSERVER=1  // 默认port = 333
Response : OK    //结果

    4、发送数据

AT+CIPSEND=0,4  // 发送4个字节在连接0通道上
>abcd                      //输入数据,不带回车
Response :SEND OK   //结果

     5、接收数据

+IPD, 0, n: xxxxxxxxxx  //+IPD是固定字符串 0是通道,n是数据长度,xxx是数据

     6、断开链接

AT + CIPCLOSE = 0                //指令
Response : 0 , CLOSED OK  //结果

      7、开关网络助手调试

二、 与stc51单片机相连点亮led灯

1、直接上代码

  1. #include "reg52.h"
  2. #include<intrins.h>
  3. #include<string.h>
  4. #define SIZE 12
  5. sbit led1=P3^7;
  6. sfr AUXR=0x8E;
  7. char buffer[SIZE];
  8. char PZSM[] ="AT+CWMODE=2\r\n";//1 配置路由器
  9. char SNDLJ[]="AT+CIPMUX=1\r\n";//2 使能多个连接
  10. char JLFWQ[] ="AT+CIPSERVER=1\r\n";//3 建立TCPServer
  11. char FSSJ[]="AT+CIPSEND=0,5\r\n"; //4 发送数据
  12. char AT_OK_Flag=0;
  13. char AT_Connect_Net_flag=0;
  14. char Client_Connect_flag=1;
  15. void Delay1000ms() //@11.0592MHz
  16. {
  17. unsigned char i, j, k;
  18. _nop_();
  19. i = 8;
  20. j = 1;
  21. k = 243;
  22. do
  23. {
  24. do
  25. {
  26. while (--k);
  27. } while (--j);
  28. } while (--i);
  29. }
  30. void UartInit(void) //9600bps@11.0592MHz
  31. {
  32. SCON=0x50;//配置串口方式1,REN使
  33. TMOD &= 0xF0;
  34. TMOD|=0x20;//配置定时器1模式8位自动
  35. TH1 =0xFD;
  36. TL1 =0xFD;//9600的波特率
  37. TR1=1;//启动定时器
  38. AUXR=0x01;
  39. EA=1;//打开总中断
  40. ES=1;//打开串口中断
  41. }
  42. void sendByte(char data_msg)
  43. {
  44. SBUF=data_msg;
  45. while(TI==0);//发送中断
  46. TI=0;
  47. }
  48. void sendstring(char *str)
  49. {
  50. while(*str!='\0')
  51. {
  52. sendByte(*str);
  53. str++;
  54. }
  55. }
  56. void main()
  57. {
  58. int mark=0;
  59. led1=1;//灭灯状态
  60. //配置C51串口的通信方式
  61. UartInit();
  62. Delay1000ms();//给wifi模块上电时间
  63. //发送路由器模式指令并等待成功
  64. sendstring(PZSM);
  65. while(!AT_OK_Flag);
  66. AT_OK_Flag = 0;
  67. //发送使能多个连接指令并等待成功
  68. sendstring(SNDLJ);
  69. while(!AT_OK_Flag);
  70. AT_OK_Flag=0;
  71. //发送建立TCPServer指令并等待成功
  72. sendstring(JLFWQ);
  73. while(!AT_OK_Flag);
  74. AT_OK_Flag=0;
  75. //发送数据传输指令并等待成功
  76. while(Client_Connect_flag)
  77. {led1=0;//点亮led1,等待clinet连接
  78. }
  79. sendstring(FSSJ);
  80. while(!AT_OK_Flag);
  81. if(AT_OK_Flag)
  82. {
  83. led1=0;//点亮led1,代表建立服务器成功,同时可以发数据
  84. Delay1000ms();
  85. Delay1000ms();
  86. led1=1;
  87. }
  88. while(!Client_Connect_flag)
  89. {
  90. Delay1000ms();
  91. //往发送缓冲区写入数据,就完成数据得发送
  92. Delay1000ms();
  93. Delay1000ms();
  94. sendstring("hello\r\n");
  95. Delay1000ms();
  96. Delay1000ms();
  97. }
  98. }
  99. void Uart_Handler() interrupt 4
  100. {
  101. char tmp;
  102. static int i=0;//静态变量,被初始化一次
  103. if(RI)//中断处理函数中,对于接收中断的响应
  104. {
  105. RI=0;
  106. tmp=SBUF;//一个字母一个字母的输入
  107. //tmp=='W'||tmp=='O'||tmp=='L'||tmp=='F'
  108. if(tmp=='O'|| tmp=='0'||tmp=='P')
  109. {
  110. i=0;
  111. }
  112. buffer[i++]=tmp;
  113. //OK返回值指令的判断
  114. if(buffer[0]=='O'&& buffer[1]=='K')
  115. {
  116. AT_OK_Flag=1;
  117. memset(buffer,'\0',SIZE);
  118. }
  119. if(buffer[0]=='0'&& buffer[2]=='C')
  120. {
  121. Client_Connect_flag =0;
  122. led1=1;//表示Clinet连接
  123. memset(buffer,'\0',SIZE);
  124. }
  125. //灯控指令
  126. if(buffer[0]=='P'&& buffer[1]=='1')
  127. {
  128. led1=0;//点亮了led1
  129. memset(buffer, '\0', SIZE);
  130. }
  131. if(buffer[0]=='P'&& buffer[1]=='2')
  132. {
  133. led1=1;//熄灭led1
  134. memset(buffer, '\0', SIZE);
  135. }
  136. if(i==12)
  137. {
  138. i=0;
  139. }
  140. }
  141. }
本文内容由网友自发贡献,转载请注明出处:https://www.wpsshop.cn/w/喵喵爱编程/article/detail/900063
推荐阅读
相关标签
  

闽ICP备14008679号