当前位置:   article > 正文

笔记学习:关于如何使用ESPwifi模块与51单片机通信_esp015wifi模块

esp015wifi模块

首先准备号ESP模块和51单片机,把两个模块的RXT和TXD交叉连接,然后通电,但是ESP模块只能使用3.3V免得电流5V会烧毁。

然后把ESP模块的波特率设置为9600,一般默认是115200的,由于单片机的波特率最高只能是9600.因为需要通信,所以波特率必须一致,利用串口软件与ESP连接这个时候需要USB转TTL连接然后把串口软件的波特率也设置好于ESP模块的波特率一样,发送AT显示OK则是一样波特率,如果不一样可以更换波特率逐个尝试。这个时候波特率设置一样了,就可以发送AT+UART_DEF=9600,8,1,0,0这串指令更改波特率就行了。

顶部代码:

  1. #include <regx52.h>
  2. #include <string.h>
  3. #include <stdio.h>
  4. #include "uart.h"
  5. #include "ESP8266.h"
  6. #include "led.h"
  7. sbit LED0=P2^0;
  8. sbit LED1=P3^3;
  9. sbit Sand=P3^2;
  10. /*****************相关变量**************/
  11. unsigned char Recive_table[20]=""; //用于接收wifi模块反馈到MCU上的数据
  12. char Recive_state = 0; //当前状态是否可以接收
  13. void ESP_Flag();
  14. void ESP_Sand();

接好之后就编写代码:利用keil软件编写51单片机烧录的代码,这里是初始化串口的模式以及工作方式,,也可以用STC_ISP软件直接生成波特率,只有设置好工作方式就可以

  1. void UartInit(void) //9600bps@11.0592MHz
  2. {
  3. TMOD &= 0x0F; //清除定时器1模式位
  4. TMOD |= 0x20; //设定定时器1为8位自动重装方式
  5. TL1 = 0xFD; //设定定时初值 //4800bps
  6. TH1 = 0xFD; //设定定时器重装值
  7. REN=1; //打开中断允许
  8. SM0=0; // 设置串口工作方式
  9. SM1=1; //设置串口工作方式
  10. ET1 = 0; //禁止定时器1中断
  11. TR1 = 1; //启动定时器1
  12. ES=1; //开启串口中断
  13. EA=1;
  14. }

下面就可以编写与ESP模块通信的代码了:这里是利用c语言的stdio库函数里面的printf打印。

也可以用模块的SBUF利用指针输出字符串

  1. void ESP_Init()
  2. {
  3. ES=0;
  4. TI=1;
  5. printf("AT+RST\r\n"); //复位
  6. LED();
  7. delay(1000); 延迟1s
  8. printf("AT+CWMODE=3\r\n"); //设置模式
  9. LED();
  10. delay(1000);
  11. printf("AT+CWSAP=\"ESP8266\",\"88888888\",1,3\r\n"); //设置WIFI名称和密码
  12. LED();
  13. delay(1000);
  14. printf("AT+CIFSR\r\n"); //查看接入设置
  15. LED();
  16. delay(1000);
  17. printf("AT+CIPMUX=1\r\n"); //设置多链接模式
  18. LED();
  19. delay(1000);
  20. printf("AT+CIPSERVER=1,8080\r\n"); //设置一个服务器端口
  21. LED();
  22. delay(1000);
  23. while(!TI);//判断串口发送中断标志位是否为1,若为1则单片机发送数据缓存寄存器给PC端串口调试助手发送数据结束。为什么在此编写while(!TI)?由于需要把单片机发送数据缓存寄存器保存的数据发送给PC端串口调试助手。
  24. TI=0; //TI(即串口发送中断标志位)=0,表示单片机发送数据缓存寄存器可重新给PC端串口调试助手发送数据,不可申请串口中断
  25. ES=1; //打开串口中断允许位,允许进入串口中断服务程序。
  26. }

这里是定时器中断判断代码:需要放在mian.c里面即是mian函数的下方,这个是用来判断单片机接收到ESPwifi模块AT指令反馈回来的函数。

  1. void Uart_Interrupt() interrupt 4
  2. {
  3. static unsigned char i=0;
  4. if(RI==1)
  5. {
  6. ES=0;
  7. RI=0;
  8. Recive_table[i]=SBUF; //MCU接收wifi模块反馈回来的数据
  9. i++;
  10. if(Recive_table[i-1]=='\n')
  11. {
  12. Recive_table[i]='\0';
  13. i=0; //遇到换行 重新装值
  14. Recive_state = 1;
  15. }
  16. ES = 1;
  17. }else TI=0;
  18. }

接下来就是与手机通信的代码,这里是判断Recive_state的响应标志位。如果是1的时候我才可以执行手机发送过来的识别标志。

  1. void ESP_Flag() //手机发送数字让WiFi控制单片机亮灯
  2. {
  3. if(Recive_state == 1)
  4. {
  5. ES=0; //进入状态串口中断关闭等待操作完下一个中断的到来
  6. if((Recive_table[0]=='+')&&(Recive_table[1]=='I')&&(Recive_table[2]=='P'))//MCU接收到的数据为+IPD时进入判断控制0\1来使小灯亮与灭
  7. {
  8. if((Recive_table[3]=='D')&&(Recive_table[6]==','))
  9. {
  10. if(Recive_table[9]=='0') //这里的标志是接到的标志是否与协议的标志一致
  11. {
  12. LED0=1;//0 灯灭
  13. }
  14. else if (Recive_table[9]=='1')
  15. {
  16. LED0=0; //1 灯亮
  17. }
  18. }
  19. }
  20. memset(Recive_table,'\0',20); //接收完情况等待下一个标志
  21. Recive_state=0; //状态重新设置
  22. ES=1; //打开串口中断允许位,允许进入串口中断服务程序。
  23. }
  24. }

当烧录代码进去之后打开手机的的网络调试软件,首先在TCP server激活ESPwifi设置的端口。这里是8080,然后点到TCP client添加ESPwifi模块的IP地址和端口号,IP地址在手机连接ESPWiFi之后点击热点连接那里就可以看到。添加成功之后就可以在发送1和0之间控制灯亮灭,

同时这个代码是比较重要的,用来判断手机发过来的指令来控制IO口,同时也可以在这个代码上修改需要执行的操作,利用灯,各个IO口。各种指令操作等等,

  1. void ESP_Flag() //手机发送数字让WiFi控制单片机亮灯
  2. {
  3. if(Recive_state == 1)
  4. {
  5. ES=0; //进入状态串口中断关闭等待操作完下一个中断的到来
  6. if((Recive_table[0]=='+')&&(Recive_table[1]=='I')&&(Recive_table[2]=='P'))//MCU接收到的数据为+IPD时进入判断控制0\1来使小灯亮与灭
  7. {
  8. if((Recive_table[3]=='D')&&(Recive_table[6]==','))
  9. {
  10. if(Recive_table[9]=='0') //这里的标志是接到的标志是否与协议的标志一致
  11. {
  12. LED0=1;//0 灯灭
  13. }
  14. else if (Recive_table[9]=='1')
  15. {
  16. LED0=0; //1 灯亮
  17. }
  18. }
  19. }
  20. memset(Recive_table,'\0',20); //接收完情况等待下一个标志
  21. Recive_state=0; //状态重新设置
  22. ES=1; //打开串口中断允许位,允许进入串口中断服务程序。
  23. }
  24. }

这里有个比较少见用的函数memset,是设置字符串的初始化修改值得,第一个参数得字符串的首地址,第二个是需要初始化得值或修改得值,第三个是修改多少位

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/163482
推荐阅读
相关标签
  

闽ICP备14008679号