标题:
51单片机控制esp8266至今没搞明白单片机是要如何才能发送指令给8266
[打印本页]
作者:
楚园客
时间:
2018-4-12 13:20
标题:
51单片机控制esp8266至今没搞明白单片机是要如何才能发送指令给8266
新手小白,初认51单片机,最近研究了有一段时间的单片机与8266之间的通信,至今没搞明白单片机是要如何才能发送指令给8266,8266又是怎么接受指令然后再发送给单片机,单片机再做下一步的动作的,求高手指点,我的邮箱
1913185018@qq.com
作者:
yzwzfyz
时间:
2018-4-12 20:33
读通两者的手册就知道了。
作者:
QIANLILI
时间:
2018-4-12 20:47
串口通讯啊。单片机发送AT指令。
根据esp8266内部定义的指令。单片机发送给esp8266就可以执行相应的功能了。
例如:
1、设置wifi模式:AT+CWMODE=2
2、重启生效:AT+RST
3、启动多连接:AT+CIPMUX=1
4、建立server:AT+CIPSERVER=1
作者:
stillwater
时间:
2018-4-14 19:00
跟单片机通过串口通讯,单片机有专门的针脚,51是P30和P31用来进行串口通信的
作者:
yangchao526
时间:
2018-4-14 22:45
esp8266是串口WIFI模块,就是把接收到的信号通过串口跟单片机通讯。
作者:
1275763609
时间:
2018-6-3 22:29
就是串口通讯,把要设置的AT指令发送出去
作者:
123456LYH
时间:
2018-8-17 11:52
c51单片机,远程命令详解 ******************************************************************************/ #include <AT89X51.H> #include <stdio.h> unsigned int a; int b=1; int c =1; int d =1; int e=1; int f=0; void main(void) { unsigned char ldat; //PCON |=0X80; //是否波特率倍增 SCON=0x50; TMOD=0X20; //设置定时器1为模式2,做为波特率发生器 TL1=0xFD; //9600波特率的初值,板子使用11.592M晶振,初值=256-12000000/32/12/2400 TH1=0xFD; // TI = 1; TR1=1; //启动波特率发生 //设置串口方式2 do{ for (a=0; a<50000; a++); //延时几秒,让模块有时间启动 printf ("AT+CIPMUX=1\n"); //发送命令AT+CIPMUX=1,让模块进入多连接模式 if(RI){ //查询是否有数据接收 ldat=SBUF; //数据暂存于变量中 RI=0; if (ldat=='K')//命令执行成功,就会返回OK,这里就是查询是否有K返回,若有K返回,就说明执行成功,可以执行下一条,否则继续循环 {b=0 ; d=0;} c++; if (c==1000) {c=1; d=0;}} }while (d); }while(b) ; b=1; c =1; d =1;//b、c、d复位,便于执行下一条命令 do{ for (a=0; a<10000; a++); printf ("AT+CIPSERVER=1,7671\n"); do{ if(RI){ //查询是否有数据接收 ldat=SBUF; //数据暂存于变量中 RI=0; if (ldat=='K')//同上 {b=0 ; d=0;} c++; if (c==1000) {c=1; d=0;}} }while (d); }while(b) ; b=1; c =1; d =1; do{ for (a=0; a<10000; a++); printf ("AT+CIPSTO=50\n"); do{ if(RI){ //查询是否有数据接收 ldat=SBUF; //数据暂存于变量中 RI=0; if (ldat=='K')//同上 {b=0 ; d=0;} c++; if (c==1000) {c=1; d=0;}} }while (d); }while(b) ; b=1; c =1; d =1; //执行上述命令,模块进入服务模式,下面单片机就可以接收远程发来的数据 while(1) { if(RI){ //查询是否有数据接收 ldat=SBUF; //数据暂存于变量中 RI=0; //重新清0等待接收 //命令接收开始 if (ldat=='}') { char k[50] ;//设置接收数据缓冲 do{ if(RI){ //查询是否有数据接收 ldat=SBUF; //数据暂存于变量中 RI=0; //重新清0等待接收 k[f]=ldat;//一个个字符接收 f++ ; if(ldat==0x0A){e=0;} //若有新行字符,则结束接收,则说明命令接收完毕 } } while (e) ; printf("%s\n", k);//执行远程发来的命令 f=0; e=1; for (a=0; a<50; a++){ k[a]=0; } } //命令结束 if (ldat==']') {P1_4=1; printf ("AT+CIPSEND=0,1\n"); for (a=0; a<10000; a++); printf ("A"); } if (ldat=='-') {P1_4=!P1_4; } if (ldat=='[') {P1_4=0; printf ("AT+CIPSEND=0,1\n"); for (a=0; a<10000; a++); printf ("B"); } if (ldat=='{') { if(P1_4==0){ printf ("AT+CIPSEND=0,1\n"); for (a=0; a<10000; a++); printf ("B"); } else{ printf ("AT+CIPSEND=0,1\n"); for (a=0; a<10000; a++); printf ("A"); } } } } }
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1