关于esp8226与51单片机的通讯的问题,求大神。
时间:10-02
整理:3721RD
点击:
#include "reg51.h"
#include <intrins.h>
#include <string.h>
unsigned char *receive='0';
sbit LED0=P1^0;
sbit LED1=P1^1;
void DelayMS(unsigned char x)
{
unsigned char a,b;
for(b=102*x;b>0;b--)
for(a=3;a>0;a--);
}
void UartInit()
{
SCON=0X50;
TMOD=0X20;
PCON=0X80;
TH1=0XF3;
TL1=0XF3;
TR1=1;
EA=1;
ES=1;
}
void SendByte(unsigned char dat)
{
SBUF = dat;
while(!TI);
TI = 0;
}
void SendString(unsigned char *s)
{
while(*s!='\0')
{
ES=0;
SendByte(*s);
s++;
ES=1;
}
}
bit Hand(unsigned char *a)
{
if(strstr(receive,a)==NULL) return 0;
else return 1;
}
void clear_receive()
{
int i;
for(i=0;i<strlen(receive)+1;i++)
*(receive+i)='0';
}
void ESP8266_Sent(unsigned char *puf)
{
SendString("AT+CIPSEND=0,4");
while(*puf!='\0')
{
SendByte(*puf);
DelayMS(50);
puf++;
}
DelayMS(50);
SendByte('\n');
DelayMS(50);
}
void main()
{
UartInit();
DelayMS(8000);
SendString("AT+RST\r\n");
DelayMS(9000);
SendString("AT+CWMODE=2\r\n");
DelayMS(9000);
SendString("AT+RST\r\n");
DelayMS(9000);
SendString("AT+CIOBAUD=4800\r\n");
DelayMS(9000);
SendString("AT+CWSAP=\"WIFI\",\"1234567890\",1,3\r\n");
DelayMS(9000);
SendString("AT+CIPMUX=1\r\n");
DelayMS(9000);
SendString("AT+CIPSERVER=1,5000\r\n");
DelayMS(9000);
LED1=0;
while (1)
{
DelayMS(1000);
if(Hand("321"))
{
clear_receive();
LED1 = ~LED1;
ESP8266_Sent("OK");
}
else if(Hand("123"))
{
clear_receive();
LED0=~LED0;
ESP8266_Sent("ko");
}
}
}
void Uart() interrupt 4
{
static unsigned char i=0;
if(RI=1)
{
RI=0;
*(receive+i)=SBUF;
i++;
if(*(receive+(i-1))=='\0') i=0;
}
else TI=0;
}
问一下,这样的程序烧录进51单片机,ESP8226的WiFi模块,但是为什么不能产生WiFi信号热点,硬件是单片机的TX,RX接ESP8226的RX,TX,vcc,ch接3.3v,gnd接地。功能是简单地无线控制LED灯。
#include <intrins.h>
#include <string.h>
unsigned char *receive='0';
sbit LED0=P1^0;
sbit LED1=P1^1;
void DelayMS(unsigned char x)
{
unsigned char a,b;
for(b=102*x;b>0;b--)
for(a=3;a>0;a--);
}
void UartInit()
{
SCON=0X50;
TMOD=0X20;
PCON=0X80;
TH1=0XF3;
TL1=0XF3;
TR1=1;
EA=1;
ES=1;
}
void SendByte(unsigned char dat)
{
SBUF = dat;
while(!TI);
TI = 0;
}
void SendString(unsigned char *s)
{
while(*s!='\0')
{
ES=0;
SendByte(*s);
s++;
ES=1;
}
}
bit Hand(unsigned char *a)
{
if(strstr(receive,a)==NULL) return 0;
else return 1;
}
void clear_receive()
{
int i;
for(i=0;i<strlen(receive)+1;i++)
*(receive+i)='0';
}
void ESP8266_Sent(unsigned char *puf)
{
SendString("AT+CIPSEND=0,4");
while(*puf!='\0')
{
SendByte(*puf);
DelayMS(50);
puf++;
}
DelayMS(50);
SendByte('\n');
DelayMS(50);
}
void main()
{
UartInit();
DelayMS(8000);
SendString("AT+RST\r\n");
DelayMS(9000);
SendString("AT+CWMODE=2\r\n");
DelayMS(9000);
SendString("AT+RST\r\n");
DelayMS(9000);
SendString("AT+CIOBAUD=4800\r\n");
DelayMS(9000);
SendString("AT+CWSAP=\"WIFI\",\"1234567890\",1,3\r\n");
DelayMS(9000);
SendString("AT+CIPMUX=1\r\n");
DelayMS(9000);
SendString("AT+CIPSERVER=1,5000\r\n");
DelayMS(9000);
LED1=0;
while (1)
{
DelayMS(1000);
if(Hand("321"))
{
clear_receive();
LED1 = ~LED1;
ESP8266_Sent("OK");
}
else if(Hand("123"))
{
clear_receive();
LED0=~LED0;
ESP8266_Sent("ko");
}
}
}
void Uart() interrupt 4
{
static unsigned char i=0;
if(RI=1)
{
RI=0;
*(receive+i)=SBUF;
i++;
if(*(receive+(i-1))=='\0') i=0;
}
else TI=0;
}
问一下,这样的程序烧录进51单片机,ESP8226的WiFi模块,但是为什么不能产生WiFi信号热点,硬件是单片机的TX,RX接ESP8226的RX,TX,vcc,ch接3.3v,gnd接地。功能是简单地无线控制LED灯。
