首先准备号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这串指令更改波特率就行了。

顶部代码:

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

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

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

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

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

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

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

void Uart_Interrupt() interrupt 4
{static unsigned char i=0;if(RI==1){ES=0;RI=0;Recive_table[i]=SBUF;    //MCU接收wifi模块反馈回来的数据 i++;         if(Recive_table[i-1]=='\n'){Recive_table[i]='\0';i=0;  //遇到换行 重新装值Recive_state = 1;          }ES = 1;        }else TI=0;
}

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

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

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

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

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

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

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

  1. ESP8266wifi模块与51单片机通信教程

    ** ESP8266wifi模块与51单片机通信教程 准备两个200欧左右的电阻 准备6根杜邦线 然后将ES8266通过如图这种方式连接起来 注意:必须先配置ESP8266模块,配置需要用到ESP82 ...

  2. 4g模块与51单片机通信

    本文硬件选自忆佰特的4g模块和老陈的上官一号 第一步先使用电脑配置4g模块,配置好后再与51单片机进行接线完成通信,需要提前插入SIM卡,接线如下 通电后模块右下角会亮起红灯,并且右上角四颗lcd灯会 ...

  3. 超声波测距模块(51单片机)

    超声波测距模块(51单片机) 硬件介绍 1.使用场景 2. 工作原理 讲解代码 重点 1.定义引脚 2.定义时间 3.获取时间和距离 4.主函数 5.延时函数 结尾 硬件介绍 1.使用场景 超声波测距 ...

  4. 单片机与gsm通信c语言,gsm模块如何与单片机通信?

    51单片机与GSM模块实现通信 1.检测串口线的好坏 1)将串口线插在电脑上,用短路子短接串口的2脚和3脚 2)打开串口调试助手 3)点击自动发送,在自动发送的窗口中随便发个数据,看看能不能接收到若能 ...

  5. hcsr04超声波模块在51单片机中的应用

    型号及功能 HC-SR04超声波测距模块 主要参数 1:使用电压:DC5V 2:静态电流:小于2mA 3:电平输出:+5V 4:电平输出:底0V 5:感应角度:不大于15度 6:探测距离:2cm-45 ...

  6. 通过ESP8266WIFI模块让51单片机向后端交互数据

    这一次做的是用ESP8266WIFI模块,让51单片机与后端交互数据.简单地发了一个字符串. 模块连接部分:VCC接电源,GND接地,模块的TXD接单片机的RXD,模块的RXD接单片机的TXD. 需要 ...

  7. [单片机笔记]LCD1602模块(51单片机)

    文章目录 1 LCD1602概要 1.1 介绍 2 LCD1602功能 2.1 引脚功能 2.2 控制指令集 2.3 连线方法 3 程序设计 3.1 头文件 3.2 .c程序 3.2.1 延迟函数 3 ...

  8. 51单片机的读写端口c语言,CH375_CH376 U盘读写模块在51单片机上的应用(原理图+测试程序+资料)...

    /* **************************************** **  Copyright  (C)  W.ch  1999-2004   ** *************** ...

  9. 51单片机学习笔记1 简介及开发环境

    51单片机学习笔记1 简介及开发环境 一.51单片机 1. STC89C52单片机简介 2. 命名规则 3. 封装 (1)PDIP (2)LQFP (3)PLCC (4)PQFP 二.STC8051结 ...

  10. 【TB-02模组专题⑤】微信小程序通讯TB02 模块控制 STM32 单片机LED灯

    本<安信可ble mesh蓝牙模组TB-02模组专题>系列博客学习由官方博客 CSDN安信可博客 潜心所力所写.如有不对之处,请留言,我们及时更改. 1.BLE MESH开发环境linux ...

最新文章

  1. 2017年深度学习必读31篇论文(附下载地址)
  2. 20.Android studio提示Cmake Error executing external native build for cmake...
  3. 数据库开发——MySQL——简单介绍和安装
  4. 2014年第五届蓝桥杯 - 省赛 - C/C++大学A组 - G. 蚂蚁感冒
  5. Learning to Rank算法介绍:RankSVM 和 IR SVM
  6. 计算机学校教学大纲,中等职业学校计算机应用基础教学大纲
  7. 提升普适性,阿里云官方SDK发布支持Go语言SDK
  8. [转]QT QDateTime类、QTimer类
  9. 关于使用 Python 析构函数的正确姿势
  10. go语言和python-新学语言,选GO还是Python
  11. codevs 5958 无
  12. 2019 牛客多校第三场 H Magic Line
  13. 【图像去噪】基于matlab非局部均值(NLM)滤波图像去噪【含Matlab源码 420期】
  14. 【读书笔记】-《软件测试的艺术》
  15. php mysql关键字查询_使用php mysql进行关键字搜索?
  16. Java GUI——Java图形用户界面
  17. 推荐使用的JS日期时间格式化的方法
  18. 拿得起,放得下,想得开
  19. lisp 左手钢筋_左手键配置程序
  20. 17,verilog之for循环

热门文章

  1. php微积分难吗,两句话让你学好微积分
  2. python中if语句格式_Python入门学习系列——Python中的if语句
  3. win7资源服务器未响应,win7电脑怎么设置服务器未响应
  4. java计算机毕业设计教育机构管理源码+mysql数据库+系统+lw文档+部署
  5. android ConstraintLayout布局 详解
  6. Matlab快速傅里叶变换
  7. 猜数字游戏程序,随机生成一个1~10之间的数,并让用户输入一个数字 猜测
  8. 为Raspberry Pi 2编译内核模块
  9. Python -- 网络编程 -- 抓取网页图片 -- 豆瓣妹子
  10. c语言从入门到秃头表情包,c语言从入门到放弃表情包 - c语言从入门到放弃微信表情包 - c语言从入门到放弃QQ表情包 - 发表情 fabiaoqing.com...