标题:
51单片机通过发送AT指令WIFI模块的HTTP通信程序
[打印本页]
作者:
瓜洲111
时间:
2019-11-20 20:24
标题:
51单片机通过发送AT指令WIFI模块的HTTP通信程序
简单的学习了WIFI模块和相关AT指令,配置WiFi模组工作模式为单STA模式,并把配置保存在flash 中,然后自动发送指令连接网络和连接服务器,最终即可发送数据。因为做的时候还没有后端对接,相关的GET和POST请求没有写完
具体代码参考附件。
单片机源程序如下:
#include <reg52.h>
#include <string.h>
#include <intrins.h>
typedef unsigned char u8;
typedef unsigned int u16;
unsigned char Usart_Receive[20]={0};
unsigned char Usart_Cnt=0;
bit Usart_AT_flage;
u8 dat;
void Init(void)
{
TMOD = 0x20;
SCON = 0x50;
TH1 = 0xFD;
TL1 = TH1;
PCON = 0x00;
EA = 1;
ES = 1;
TR1 = 1;
}
void delay5ms(void) //误差 -0.000000000001us
{
unsigned char a,b;
for(b=15;b>0;b--)
for(a=152;a>0;a--);
}
void delay1s(void) //误差 -0.000000000227us
{
unsigned char a,b,c;
for(c=13;c>0;c--)
for(b=247;b>0;b--)
for(a=142;a>0;a--);
_nop_(); //if Keil,require use intrins.h
}
void Sent_ZF(u8 dat) //发送一个字节
{
ES = 0;
TI=0;
SBUF = dat;
while(!TI);
TI = 0;
ES = 1;
}
void AT_Send_String(u8 *string) //发送字符串
{
while(*string)
{
Sent_ZF(*string++);
delay5ms();
}
}
void ESP8266_Init()
{
while(1)
{
AT_Send_String("AT\r\n");
delay1s();
delay1s();
if(Usart_AT_flage ==1)
{
if(strstr(Usart_Receive, "OK"))
{
Usart_AT_flage = 0;
AT_Send_String("OK\r\n");
break;
}
}
}
while(1)
{
AT_Send_String("AT+CWMODE=1\r\n"); //配置WiFi模组工作模式为单STA模式,并把配置保存在flash
delay1s();
delay1s();
if(Usart_AT_flage ==1)
{
if(strstr(Usart_Receive, "OK"))
{
Usart_AT_flage = 0;
AT_Send_String("OK\r\n");
break;
}
}
}
while(1)
{
AT_Send_String("AT+CWJAP=\"guazhou\",\"123456789\"\r\n"); //!连接网络
delay1s();
delay1s();
if(Usart_AT_flage ==1)
{
if(strstr(Usart_Receive, "OK"))
{
Usart_AT_flage = 0;
AT_Send_String("OK\r\n");
break;
}
}
}
while(1)
{
AT_Send_String("AT+CIPSTART=\"TCP\",\"192.110.43.11\",8080\r\n"); //连接服务器
delay1s();
delay1s();
delay1s();
if(Usart_AT_flage ==1)
{
if(strstr(Usart_Receive, "OK"))
{
Usart_AT_flage = 0;
AT_Send_String("OK\r\n");
break;
}
}
}
while(1)
{
AT_Send_String("AT+CIPMODE=1\r\n"); //设置透传
delay1s();
delay1s();
delay1s();
if(Usart_AT_flage ==1)
{
if(strstr(Usart_Receive, "OK"))
{
Usart_AT_flage = 0;
AT_Send_String("OK\r\n");
break;
}
}
}
while(1)
{
AT_Send_String("AT+CIPSEND\r\n"); //启动发送
delay1s();
delay1s();
delay1s();
if(Usart_AT_flage ==1)
{
if(strstr(Usart_Receive, "OK"))
{
Usart_AT_flage = 0;
AT_Send_String("OK\r\n");
break;
}
}
}
//get请求/post请求略,可参看截图写出
}
void main()
{
Init();
ESP8266_Init();
while(1);
}
void InterruptUART(void) interrupt 4
{
if(RI)
{
RI=0;
Usart_Receive[Usart_Cnt]=SBUF;
Usart_Cnt++;
if(Usart_Receive[Usart_Cnt-2]=='\r'&&Usart_Receive[Usart_Cnt-1]=='\n') //检测倒数一二位
{
Usart_Cnt=0;
Usart_AT_flage=1;
}
else if(Usart_Cnt>20)
{
Usart_Cnt=0;
}
}
else
TI=0;
}
复制代码
所有资料51hei提供下载:
WiFi HTTP通信.zip
(26.12 KB, 下载次数: 44)
2019-11-20 20:20 上传
点击文件名下载附件
下载积分: 黑币 -5
作者:
admin
时间:
2019-11-20 21:09
本帖需要重新编辑补全电路原理图,源码,详细说明与图片即可获得100+黑币(帖子下方有编辑按钮)
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1