89C52单片机ESP8266 与 TCP Server 建立通信
一、物理配置
ESP8266-01S 3.3v电源:给Esp8266提供3.3v电源 单片机的Rx/Tx引脚分别为P3.0,P3.1二、通信之前,双方的比特率必须保持一致。
1.ESP8266使用AT指令调整波特率到9600
AT+UART=9600,8,1,0,0
AT+UART_CUR=9600,8,1,0,0
AT+UART_EDF=9600,8,1,0,0
AT指令集详解:
1.PNG 2.PNG 3.PNG
2.单片机89c52单片机采用串行口方式1编程实现
(1)串口方式1
4.PNG
(2)单片机串口初始化
5.PNG 6.PNG
(3)代码实现
- 初始化特殊寄存器
void uart_init()//初始化波特率为9600
{
TMOD = 0X20;
TH1 = 0xfd;
TL1 = 0xfd;
TR1 = 1;
REN = 1;
SM0 = 0;
SM1 = 1;
EA = 1;
ES = 1;
}
- (进阶)初始化特殊寄存器
void uart_init_X(int baudrate)//设置单片机串口波特率
{
TMOD = 0X20;
if(baudrate == 4800){
TH1 = 0xfa;
TL1 = 0xfa;
}
if(baudrate == 9600){
TH1 = 0xfd;
TL1 = 0xfd;
}
if(baudrate == 2400){
TH1 = 0xf4;
TL1 = 0xf4;
}
if(baudrate == 1200){
TH1 = 0xe8;
TL1 = 0xe8;
}
TR1 = 1;
REN = 1;
SM0 = 0;
SM1 = 1;
EA = 1;
ES = 1;
}
- 串口中断函数,中断号4
void ser() interrupt 4
{
RI = 0;
rec = SBUF;
uart_flag = 1;
}
二、单片机发送给ESP的AT指令
所用到的AT指令
-
查询本地IP地址
CIFSR.png
-
设置多连接
CIPMUX.png -
设置传输模式
CIPMODE.png
4.保存透传到flash
SAVETRANSLINK.pngvoid initESP()
{
Delay500ms();
send_str("AT\r\n");
Delay500ms();
send_str("AT\r\n");
Delay500ms();
send_str("AT+CWMODE=3\r\n");
delay();
send_str("AT+CWSAP_CUR=\"ESP\",\"88888888\",4,4\r\n");// 回车加换行
delay();
send_str("AT+CIPSTART=\"TCP\",\"192.168.4.2\",1111\r\n");
delay();
send_str("AT+CIPMUX=0\r\n");//设置连接模式,0代表单一连接,1代表多连接
delay();
send_str("AT+CIPMODE=1\r\n");////设置为透传模式
delay();
send_str("AT+CIPSEND\r\n");
delay();
send_str("OK\r\n");
Delay500ms();
send_str("OK\r\n");
Delay500ms();
send_str("OK\r\n");
Delay500ms();
send_str("OK\r\n");
}
网友评论