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

本文详细介绍了如何将ESP8266配置为路由器模式,包括设置IP地址、启用多链接、建立TCP服务器并发送/接收数据,以及与STC51单片机连接实现LED灯控制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

一、配置成路由器模式

   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、直接上代码

#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;
			}
		}
			
		}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值