目录
一、配置成路由器模式
Esp8266-01s作为路由器时用指令:AT+CIFSR查询ip地址。
1、路由器配置
AT + CWMODE = 2 //2.路由器Response : OK //结果
2、使能多链接
AT + CIPMUX = 1 //指令Response : OK //结果
3、建立TCPServer
AT+CIPSERVER=1 // 默认port = 333Response : 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、直接上代码
#include "reg52.h"
#include<intrins.h>
#include<string.h>
#define SIZE 12
sbit led1=P3^7;
sfr AUXR=0x8E;
char buffer[SIZE];
char PZSM[] ="AT+CWMODE=2\r\n";//1 配置路由器
char SNDLJ[]="AT+CIPMUX=1\r\n";//2 使能多个连接
char JLFWQ[] ="AT+CIPSERVER=1\r\n";//3 建立TCPServer
char FSSJ[]="AT+CIPSEND=0,5\r\n"; //4 发送数据
char AT_OK_Flag=0;
char AT_Connect_Net_flag=0;
char Client_Connect_flag=1;
void Delay1000ms() //@11.0592MHz
{
unsigned char i, j, k;
_nop_();
i = 8;
j = 1;
k = 243;
do
{
do
{
while (--k);
} while (--j);
} while (--i);
}
void UartInit(void) //9600bps@11.0592MHz
{
SCON=0x50;//配置串口方式1,REN使
TMOD &= 0xF0;
TMOD|=0x20;//配置定时器1模式8位自动
TH1 =0xFD;
TL1 =0xFD;//9600的波特率
TR1=1;//启动定时器
AUXR=0x01;
EA=1;//打开总中断
ES=1;//打开串口中断
}
void sendByte(char data_msg)
{
SBUF=data_msg;
while(TI==0);//发送中断
TI=0;
}
void sendstring(char *str)
{
while(*str!='\0')
{
sendByte(*str);
str++;
}
}
void main()
{
int mark=0;
led1=1;//灭灯状态
//配置C51串口的通信方式
UartInit();
Delay1000ms();//给wifi模块上电时间
//发送路由器模式指令并等待成功
sendstring(PZSM);
while(!AT_OK_Flag);
AT_OK_Flag = 0;
//发送使能多个连接指令并等待成功
sendstring(SNDLJ);
while(!AT_OK_Flag);
AT_OK_Flag=0;
//发送建立TCPServer指令并等待成功
sendstring(JLFWQ);
while(!AT_OK_Flag);
AT_OK_Flag=0;
//发送数据传输指令并等待成功
while(Client_Connect_flag)
{led1=0;//点亮led1,等待clinet连接
}
sendstring(FSSJ);
while(!AT_OK_Flag);
if(AT_OK_Flag)
{
led1=0;//点亮led1,代表建立服务器成功,同时可以发数据
Delay1000ms();
Delay1000ms();
led1=1;
}
while(!Client_Connect_flag)
{
Delay1000ms();
//往发送缓冲区写入数据,就完成数据得发送
Delay1000ms();
Delay1000ms();
sendstring("hello\r\n");
Delay1000ms();
Delay1000ms();
}
}
void Uart_Handler() interrupt 4
{
char tmp;
static int i=0;//静态变量,被初始化一次
if(RI)//中断处理函数中,对于接收中断的响应
{
RI=0;
tmp=SBUF;//一个字母一个字母的输入
//tmp=='W'||tmp=='O'||tmp=='L'||tmp=='F'
if(tmp=='O'|| tmp=='0'||tmp=='P')
{
i=0;
}
buffer[i++]=tmp;
//OK返回值指令的判断
if(buffer[0]=='O'&& buffer[1]=='K')
{
AT_OK_Flag=1;
memset(buffer,'\0',SIZE);
}
if(buffer[0]=='0'&& buffer[2]=='C')
{
Client_Connect_flag =0;
led1=1;//表示Clinet连接
memset(buffer,'\0',SIZE);
}
//灯控指令
if(buffer[0]=='P'&& buffer[1]=='1')
{
led1=0;//点亮了led1
memset(buffer, '\0', SIZE);
}
if(buffer[0]=='P'&& buffer[1]=='2')
{
led1=1;//熄灭led1
memset(buffer, '\0', SIZE);
}
if(i==12)
{
i=0;
}
}
}