php发送单片机命令,51单片机通过发送AT指令WIFI模块的HTTP通信程序

#include

#include

#include

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;

}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值