固件的烧写

既然要使用WiFi模块,那首先要进行固件的烧写
已经烧写好固件的可以直接跳过看模块的初始化
WiFi模块使用的是自带CH340驱动的NodeMCU开发板
固件烧录工具采用固件烧写\flash_download_tool_v3.8.5\flash_download_tool_v3.8.5.exe
原安信可AT固件51+ESP8266\固件烧写\v1.3.0.2 AT Firmware.bin

选择第一项

然后选择ESP8266 DownloadTool

第一行选择你保存的bin文件的位置,后面的0x00000可能需要自己手动输入,然后COM选择自己的端口号(需要电脑安装有CH340驱动,以及用USB线连接电脑和模块)参数改成上图一样的

点击START然后等待下方进度条跑满

到这里固件就烧写完毕了,下面开始WiFi模块的初始化

模块的初始化

接下来使用串口调试助手来用AT指令对WiFi模块进行初始化
同样用USB线连接模块
打开51+ESP8266\串口调试助手\XCOM V2.6.exe

选择自己的串口号

不知道的可以在设备管理器上查看,如果没有就重新插拔一下WiFi模块,波特率默认选择115200
然后发送

AT+CWMODE=2

设置模块工作方式为模式2:AP模式 这种模式下模块发出WiFi信号,用手机或电脑连接
WiFi模块作为TCP server(服务器) 手机或电脑作为TCP client(客户端)

AT+CWSAP="Esp8266","0123456789",11,3

设置的WiFi热点的账号和密码
然后发送

AT+RST

重启模块


因为后面要用到WiFi模块与51单片机交互数据,但是51单片机支持的最高波特率是9600
所以要把WiFi模块的波特率改成9600

AT+CIOBAUD=9600

改完把右上角的波特率也改成9600,以便正常通信


然后设置建⽴ TCP server

AT+CIPMUX=1
AT+CIPSERVER=1,8080

这两行的含义分别是开启模块的多连接(即可以连接多个 TCP client)
设置端口号为8080 (后面TCP client连接需要用到)
:上面两行代码每次启动模块都需要重新写入,后面会在单片机代码里添加相应的代码
在启动单片机的时候自动写入


然后用

AT+CIFSR

查询WiFi模块的IP地址

IP地址默认是

192.168.4.1

这时用手机安装51+ESP8266\手机TCP软件\TCP.apk
安装完成打开WiFi连接上面步骤设置的WiFi

名称:Esp8266
密码:0123456789


然后打开前面安装的TCP

点击右上角的连接输入IP地址和端口号

192.168.4.1
8080


连接成功在下方会有弹窗提示,到这里模块的初始化就大功告成了。


单片机及模块的连线

使用的是普中51-单核-A5单片机

因为单片机内部已经对RX和TX进行连线 P30即单片机的RX端 P31为TX端
所以将J39端子的UTXD和P30R以及 URXD和P31T用跳线帽连接
然后用杜邦线连接

单片机 WiFi模块
P30 TX
P31 RX
3.3V 3V
GND G
3.3V EN
3.3V RST


注:记得把单片机晶振换为11.0592MHZ,否则通信将不成功

代码部分

代码部分

  • 数据类型定义
  • 延时函数
  • 串口初始化
  • 发送函数
  • WiFi模块初始化
  • main函数
  • 串口中断服务函数
#include "reg51.h"#define uint unsigned int
#define uchar unsigned charsbit led2 = P1^1;uchar Recive_table[15];     //存放接收到的数据uint i;
uint j;
void delay_ms(uint ms)
{uchar i,j;for(i=ms;i>0;i--)for(j=120;j>0;j--);
}void delay_us(uchar us)
{while(us--);
}void Usart_Init()//初始化51单片机
{SCON = 0x50;//串行口中断方式一,且启动串行口接受(REN=1)TMOD = 0x20;//计数器1工作方式2,自动重装载TH1 = 0xfd;//设置波特率与esp8266达成一致TL1 = TH1;PCON = 0;//波特率不加倍TR1 = 1;//启动计数器EA = 1;//开总中断
}void SENT_At(uchar *At_Comd)//指针指向At指令
{ES = 0;//关闭串口中断while(*At_Comd!='\0'){SBUF = *At_Comd;while(!TI);//等待该字节发送完毕,发送完后硬件自动置一TITI = 0;//硬件之以后必须软件置零才能进行下一次数据传送delay_us(5);At_Comd++;//指向下一个字节}
}
void WIFI_Init()//通过单片机配置AT指令
{SENT_At("AT+CIPMUX=1\r\n");//多连接模式delay_ms(1000);SENT_At("AT+CIPSERVER=1,8080\r\n");//设置端口号delay_ms(1000);ES = 1;
}void main()
{   Usart_Init();WIFI_Init(); delay_ms(450); //大约延时 450mswhile(1){//在这里放入你想执行的代码}
}
void Uart() interrupt 4 //中断程序
{   if(RI==1)//接受一帧完成后由硬件置一{RI = 0;//软件清零,防止下次未接收完成就执行程序Recive_table[i] = SBUF; //将接受数据存入数组if(Recive_table[0]=='+')i++;elsei = 0;if(i>10){if((Recive_table[0]=='+')&&(Recive_table[1]=='I')&&(Recive_table[2]=='P')&&(Recive_table[3]=='D')){if(Recive_table[9]=='0'){led2 = 1;    //led灯灭}     if(Recive_table[9]=='1'){led2 = 0;    //led灯亮}}i = 0;//如果不清零 就无法达到变化}}elseTI = 0;
}

通过修改中断服务函数中的

if(Recive_table[9]=='0'){led2 = 1;  //led灯灭}

判断条件以及相应语句来实现控制不同器件


通过手机通过TCP连接来发送数据控制led灯的亮灭
可直接烧录51+ESP8266\esp8266\51+esp8266.hex
然后按照上文的连接方式连线,以及将P1^1端口连接任意的led灯
程序的烧录这里不做赘述
说明中提到的工具及代码
百度网盘链接
提取码:6666

51单片机+ESP8266实现手机控制单片机(点亮LED灯)相关推荐

  1. ESP8266入门教程03:点亮LED灯

    一.工作原理 ESP8266默认是高电平工作,所以想要点亮LED只需要给相应的引脚设置低电平即可. 二.代码解析 第11行:使用pinMode(pin, mode)来设置GPIO口工作模式,pin取值 ...

  2. 寄存器 控制STM32F103C8T6 点亮LED灯

    关于 编译生成的 文件类型介绍: .hex 可用串口i进行 烧录 的 16进制 文件. .axf 是通过 link 方式 进行直接仿真 下载的 文件. .sct 是编译过程中 生成的 加载.分载文件. ...

  3. 51单片机点亮LED灯以及实现2盏LED灯的交替闪烁

    点亮LED灯,根据单片机原理图 将LED灯1和LED灯2介入单片机的口设为低电平即可 代码如下: #include "reg52.h" sbit led1= P3^7; void ...

  4. STC89C52单片机 点亮LED灯

    点亮LED灯 一.什么是LED LED全称为半导体发光二极管,采用半导体材料制成的,以直接将电能转化为光能,电号转换成光信号的发光器件:其特点是功耗低.高亮度.色彩艳丽.坑振动.寿命长(正常发光8-1 ...

  5. C51单片机之点亮LED灯

    文章目录 C51单片机之点亮LED灯 1. 了解普通发光二极管的参数,掌握限流电阻的计算方法. 2. 理解单片机最小系统,单片机外围电路,Flash,RAM 和 SFR 这些概念. 3. 了解 Kei ...

  6. 单片机第一个程序----点亮LED灯

    单片机第一个程序----点亮LED灯 准备: 安装Keil软件 软件官网 单片机实验板(某宝可以买到) 简单的C语言编程能力 单片机C语言教程 简单介绍下keil软件的使用方法: 第一步:新建工程,这 ...

  7. 单片机stm32LED流水灯C语言,STM32单片机入门 篇二:单片机编程:从点亮LED灯开始(二)...

    STM32单片机入门 篇二:单片机编程:从点亮LED灯开始(二) 2019-04-26 13:21:48 19点赞 73收藏 19评论 写在前面的话:本篇是承接上一篇文章,属于小白向. 没看过的朋友点 ...

  8. 单片机C语言-1-点亮LED灯

    单片机C语言-1-点亮LED灯 #include "stm32f10x.h" //引入头文件//高低电平 //低电平 GND 0V //高电平 VCC 单片机的VCC供电电压//I ...

  9. stm32f103c8t6控制蓝牙模块实现led灯亮灭

    stm32f103c8t6控制蓝牙模块实现led灯亮灭 之前利用蓝牙模块是用arduino控制板的,现在已经渐渐接触stm32,所以,这次想着用stm32来控制蓝牙模块. 首先的话,需要配置蓝牙模块的 ...

最新文章

  1. [转载]用数据说话 Pytorch详解NLLLoss和CrossEntropyLoss
  2. JSP页面元素的解析顺序
  3. SPOJ - PHRASES Relevant Phrases of Annihilation —— 后缀数组 出现于所有字符串中两次且不重叠的最长公共子串...
  4. swd脱机烧录器及上位机源码_通用上位机框架HwLib.Automation(C#)
  5. 动态规划算法分析和理解:最长公共子序列、公共子字符串
  6. pandas修改数据类型_如何正确在pandas里使用inplace参数
  7. IDEA创建SpringBoot
  8. 【AI视野·今日CV 计算机视觉论文速览 第183期】28 Apr 2020
  9. Python常用模块集锦
  10. [Java 基础]控制语句
  11. leetcode python3 简单题202. Happy Number
  12. 职责链(Chain of Responsibility)模式
  13. 写给非网工的CCNA教程(3)聊聊ping命令后的原理
  14. ASP.NET 学习路线图
  15. 酷站60个漂亮可用的外文站点欣赏(经典推荐)
  16. 跟着团子学SAP PS后台篇——项目编码配置 OPSJ/OPSK
  17. cf为什么一直连接服务器失败,为什么cf连接服务器失败的解决方法
  18. 攻防世界-MISC-练习区12题解
  19. 国科大 - 自然语言处理(刘洋)- 期末复习
  20. doris安装部署-通过docker部署doris集群

热门文章

  1. [二维DP] 洛谷P1736 创意吃鱼法(预处理)
  2. “孔乙己的长衫”:学历究竟成为敲门砖还是枷锁
  3. 21世纪最伟大的学习法——顺便学习法
  4. 破项目,已经折腾三年了!我是乙方项目经理……
  5. 发现同义词 python_python – 使用WordNet查找同义词,定义和例句
  6. 骨架屏 之 Vue SSR(快捷简易版本解决方案)
  7. 产品经理必备工具:SWOT、PDCA、6W2H、SMART、WBS、时间管理、二八原则
  8. 开源许可协议:GPL、LGPL、AGPL、MPL和BSD、MIT、Apache
  9. ubuntu 20 使用命令行 snd-aloop 实现内录音、录制音乐播放器的音频
  10. python登录教务系统_python+mysql实现教务管理系统