esp8266与51单片机进行串口通信的keil程序源码
时间: 2023-07-31 08:08:27 浏览: 111
以下是ESP8266与51单片机进行串口通信的Keil程序源码,其中使用了ESP8266的AT指令进行通信:
```c
#include <reg51.h>
#include <string.h>
#define FREQ_OSC 11059200UL
#define BAUDRATE 9600
sbit LED = P1^0;
sbit LED2 = P1^4;
void delay(unsigned int i)
{
while(i--);
}
void init_uart()
{
TMOD = 0x20; //Timer 1, Mode 2 (Auto Reload)
TH1 = 256 - FREQ_OSC/(12*32*BAUDRATE);
SCON = 0x50; //Enable Serial Mode 1, REN=1
TR1 = 1; //Start Timer 1
}
void send_char(char c)
{
SBUF = c;
while(!TI);
TI = 0;
}
void send_string(char *str)
{
while(*str)
{
send_char(*str++);
}
}
void esp8266_init()
{
send_string("AT+RST\r\n");
delay(10000);
send_string("AT+CWMODE=3\r\n");
delay(1000);
send_string("AT+CIPMUX=1\r\n");
delay(1000);
send_string("AT+CIPSERVER=1,80\r\n");
delay(1000);
}
void main()
{
init_uart();
esp8266_init();
while(1)
{
if(RI)
{
char c = SBUF;
RI = 0;
if(c == '1')
{
LED = 1;
LED2 = 0;
}
else if(c == '2')
{
LED = 0;
LED2 = 1;
}
else if(c == '3')
{
LED = 0;
LED2 = 0;
}
}
}
}
```
在此代码中,我们使用了ESP8266的AT指令进行通信。程序的主要思路是,将ESP8266设置为服务器模式,然后通过发送数字命令来控制单片机上的LED灯。
具体来说,我们使用了串口通信来接收从ESP8266发送过来的命令。当单片机接收到字符“1”时,点亮LED1;当接收到字符“2”时,点亮LED2;当接收到字符“3”时,关闭所有LED。当然,还需要在ESP8266端编写相应的代码来与单片机进行通信。
阅读全文