C51单片机用esp8266点亮led灯(含源码)

article/2025/10/11 18:24:55

大家好,我是一个单片机新手,也是一个兴趣者,我以前想用c51单片机用esp8266模块的热点控制led小灯的,实验,可是网上的资料很少,所以今天来给新生,老手也好,想出一个教程,希望给大家一点点帮助。

准备材料:

1.c51单片机开发板(最小系统板也可以,可是要自己准备led灯和小电阻,分好阳极和阴极)
2.esp8266模块(测试待一会儿讲)
3.ttl转usb线(开发板不需要ttl转换模块)

注意:以下一样接线,esp才能正常工作。

1.esp8266的管脚和接线:

esp8266模块管脚图
TXD-接单片机或ttl模块的RXD
RXD-接单片机或ttl模块的RXDvcc-接3.3v(接5v可能烧坏esp的mcu)
gnd-接地线,接单片机的GND或ttl的GNDgpio0-不用接
gpio1-不用接
ch_pd-默认为高电平,和3.3v短接即可

2.开发板接线图:

单片机开发板串口

提示:如图有红色标记的是,单片机的开发板串口。分别是:usb的串口和单片机的串口。

3.3v-接模块的3.3v(接5v会烧坏esp8266)
ch-pd-也接3.3v
GND-接GND
RXD-接TXDTXD-接RXD

3.ttl转usb线:

ttl转换模块
3.3v-接模块的3.3
vch-pd-也接3.3v
GND-接GND
RXD-接TXD
TXD-接RXD

4.最小系统板:(没有图片)

3.3v-接模块的3.3
vch-pd-也接3.3v
GND-接GND
RXD-接P3.0
TXD-接P3.1

测试wifi模块:

(关于AT指令,如果不会,去百度看看)
打开xcon软件,接好线,然后选择波特率。wifi模块的波特率一般在115200,选好波特率后点击打开串口,发送输入框,输入下命令并发送。

发送:AT(必须大写)
响应:ok(测试成功)
响应:error(很可能固件失效,重刷固件)
AT测试
回复ok,模块正常
在发送:AT+CIOBAUD=9600 (波特率改9600)

因为单片机的波特率跑不了那么高,所以改9600。
下次打开串口的时候波特率选9600

这次我们要看模块的ip地址:命令:AT+CIFSR成功图:
ip测试

测试手机通信:

(1)需要下载网络调式工具,百度搜出的一批,随便下一个。然后用xcon软件给esp发送建服务器命令
命令1:AT+CIPMUX=1(打开多连接服务)
响应:ok
命令2:AT+CIPSERVER=1,8080(开启服务器模式,端口号8080)
响应:ok
(2)连上esp模块的热点。打开网络调式软件点击tcp链接,然后输入模块ip和端口号,链接,链接成功xcon(串口调式软件)会有成功的字符。随便发个字符会出现电脑的软件上。
数据格式:+IPD,0,1:1测试成功。
tcp

单片机通信(程序编写和下载)

提示:下载完程序以后再接esp8266,然后单片机复位。

步骤:连上热点,打开网络调式软件发送1,灯亮,发送2,灯灭。代码块:


#include "public.h"	
#include "temp.h" 
sbit led1=P2^0;  //定义管脚
sbit led2=P2^1;
#define RELOAD_COUNT 0xFA //宏定义波特率发生器的载入值 9600
#if 
1u8 RecBuf[50];
u8 recFlagOK=0;
#endif
u8 tempData[9];
void UART_Init()
{	
SCON=0X50;			//设置为工作方式1	TMOD=0X20;			//设置计数器工作方式2	PCON=0X80;			//波特率加倍	TH1=RELOAD_COUNT;	//计数器初始值设置	TL1=TH1;	
ES=0;				//关闭接收中断	
EA=1;				//打开总中断	
TR1=1;				//打开计数器}
void UART_SendByte(u8 dat)
{	
ES=0; //关闭串口中断	
TI=0; //清发送完毕中断请求标志位	
SBUF=dat; //发送	
while(TI==0); 
//等待发送完毕	
TI=0; //清发送完毕中断请求标志位	
ES=1; //允许串口中断
}
void ESP8266_SendCmd(u8 *pbuf)
{	
while(*pbuf!='\0') //遇到空格跳出循环		
{		
UART_SendByte(*pbuf);		d
elay_10us(5);		
pbuf++;		
}	
delay_10us(5);	
UART_SendByte('\r');//回车	
delay_10us(5);	
UART_SendByte('\n');//换行	delay_ms(1000);}//ESP8266-WIFI模块工作模式初始化
void ESP8266_ModeInit(void)
{	

后续

ESP8266_SendCmd("AT+CWMODE=2");//设置路由器模式 1 staTIon模式 2 AP点 路由器模式 3 station+AP混合模式	ESP8266_SendCmd("AT+CWSAP=\"PRECHIN\",\"prechin168\",11,0"); //设置WIFI热点名及密码	ESP8266_SendCmd("AT+CIPAP=\"192.168.4.1\"");//重新启动wifi模块	ESP8266_SendCmd("AT+RST");//重新启动wifi模块	ESP8266_SendCmd("AT+CIPMUX=1");	//开启多连接模式,允许多个各客户端接入	ESP8266_SendCmd("AT+CIPSERVER=1,8080");	//启动TCP/IP 端口为8080 实现基于网络控制}void main(){		u16 i=0;	led1=led2=1;	UART_Init(); //串口初始化	ESP8266_ModeInit();	ES=1; //允许串口中断	while(1)	{	}		
}
#if 1
void Usart() interrupt 4
{	
static u8 i=0;	if(RI)	
{		
RecBuf[i++]=SBUF;	
if(RecBuf[i-1]=='\n')		
{			
i=0;			
recFlagOK=1;			
RecBuf[11]='\0';		
}				
if(recFlagOK==1)		
{			
recFlagOK=0;			
if(RecBuf[9]=='1')			
{						
led1=0;										
}					
if(RecBuf[9]=='2')					
{						
led1=1;									
}					
}				i
f(RecBuf[9]=='3')	//led控制				
{						
led2=0;											
}					
if(RecBuf[9]=='4')					
{						
led2=1;					
}					
RI=0;					
}				
}					
#endif

http://chatgpt.dhexx.cn/article/TYmVPnhK.shtml

相关文章

C51---PWM 脉冲宽度调制

1.PWM:脉冲宽度调制,它是通过一系列脉冲宽度进行调制,等效出所需要的波形(包含形状以及幅值)。对模拟信号电平进行数字编码。也就是说通过调节占空比的变化来调节信号、能量等的变化,占空比就是指在一个周期内,信号处于…

基于51单片机的手机电话拨号盘模拟proteus仿真

功能: 0.本项目采用STC89C52作为单片机系统的控制MCU 1.采用4X4矩阵键盘实现号码输入,并在LCD液晶上显示 2.按下enter键,显示calling…,并且蜂鸣器模拟电话拨号发声 3.按下*键,退格,按下#键,清楚…

基于51单片机的简易自动灌溉系统

基于51单片机的简易自动灌溉系统如下图所示。 系统的主要构成 主控核心:AT89C51. 显示器:LCD1602. 输入设备:独立按键(4个). 水泵控制:继电器控制. 外部数据存储:EEPROM. 温湿度传感器&am…

51单片机期末课程作业之蓝牙、操控、测速、里程小车

文章底部附源码 课程设计报告 学 科: 单片机原理及应用 项 目: 里程记录仪 学 院: 专业、年级: 指导老师: 摘要 设计首先实现对…

【超详细】C51单片机与HC-05蓝牙模块实现手机点灯

此文记录HC05蓝牙模块在C51单片机上的学习历程 文章目录 一、硬件连接(1)配置模式下接线(2)正常模式下接线 二、配置模式操作三、正常模式四、使用蓝牙通过蓝牙调试app点灯1.单片机代码烧录与蓝牙连接2.蓝牙调试app配置 一、硬件连接 HC05一共有6个引脚,此实验一般…

【单片机】C51中的I2C操作-Proteus+Keil4+C语言实现

51单片机中I2C读写操作 开发板:普中51-单核-A2; I2C器件-EEPROM:AT24C02、FM24C02(仿真EEPROM); 仿真软件:proteus; 开发环境:Keil4; 参考资料:开发板所附视频; 如有错误…

51单片机 智能小车

主函数中extern char speed 是在整个工程中与别处的speed共用一个内存 sprintf字串格式化命令,主要功能是把格式化的数据写入某个字符串中。 一、小车组装、用面包板供电、单片机也可以用面包板供电,必须共地、分文件(模块化编程&#xff09…

C51单片机 SIM900A 手机给门禁解锁 智能家居 【C程序代码已开源,更新至Ver4.0】...

为何要实施这个项目? 一般小区楼下,每幢都会有一个门禁系统, 可以使用钥匙打开门禁, 有的可以使用刷卡打开门禁, 有的可以使用密码打开门禁, 但是,长期下来,因为小区人多,锁的钥匙孔会被捅坏,物业修起来也很怠慢 使用密码按键解锁门禁,按键也会失灵 每家都会安装一个…

基于STC89C51单片机,CH340芯片的下载电路

前几天看到了卓晴公众号写的三篇关于STC系列单片机的下载电路,然后结合了其他的文章,对下载电路有了更加深入的了解,在这里我梳理一下自己的学习过程,附上完整的资料,方便日后查看,也方便有兴趣的同学交流讨…

C51单片机简易密码锁(课程设计)

已经过测试,全部可用。手机好像不能发博客,相册提取图片代码粘黏复制可用。 本密码锁用于开门关门。绿灯保持常亮状态,表示一直通电状态。如果处于开门状态,则红灯也会亮起。(单片机上无法显示红绿灯,仿真…

51单片机的架构与原理(STC89C51)

前言 学习单片机,不管怎么学都是要走一些弯路的,有的人弯路走得多,有多人弯路走得少,有些人中途就放弃了,也有不少人成功上岸,掌握了各式各样的单片机、处理器。用51单片机来学习是最合适不过的&#xff0c…

C51单片机利用HC-05蓝牙模块实现手机点灯

蓝牙通信,实现手机端远程(15米)控制单片机,这听起来对于初学者的我来说,是那么不可思议,经过不断地实验,阅读其他大佬的文章,终于实现了。 在有基础的通信原理知识的前提下,知,HC-05…

基于C51单片机的ESP8266Wifi模块(ESP-01s)编程(详细)

1、模块简介 ESP-01S 是由安信可科技开发的 Wi-Fi 模块,该模块核心处理器为ESP8266。ESP8266 拥有完整的且自成体系的 Wi-Fi 网络功能,既能够独立应用,也可以作为从机搭载于其他主机 MCU 运行。当 ESP8266 独立应用时,能够直接从外…

(可远程)开源手机app控制c51单片机,附微信小程序控制

开源手机app控制c51单片机 第一 、先上效果图第二、原理讲解第三、下载程序到c51第四 app inventor 开发第五、微信小程序开发第六 可能遇到的一些小问题 第一 、先上效果图 第二、原理讲解 原理简述:利用发布订阅模式。第一步,新建主题,第二…

java实例内部类

内部类:可以将一个类定义在另一个类或者一个方法的内部。描述一个事物的一个完整结构的描述。内部类包括:实例内部类(普通内部类),静态内部类,局部内部类(定义在方法里,几乎不用&…

Java内部类介绍 - 局部内部类和匿名内部类

文章目录 内部类局部内部类匿名内部类匿名内部类介绍常见的使用形式开发中使用场景 内部类 局部内部类 局部内部类 (鸡肋语法,了解即可) 局部内部类, 在方法、代码块、构造器等执行体中创建一个类, 称为为局部内部类(但是我们一般都不会这样…

夯实Java基础系列8:深入理解Java内部类及其实现原理

本系列文章将整理到我在GitHub上的《Java面试指南》仓库,更多精彩内容请到我的仓库里查看 https://github.com/h2pl/Java-Tutorial 喜欢的话麻烦点下Star、Fork、Watch三连哈,感谢你的支持。 文章首发于我的个人博客: www.how2playlife.c…

初识JAVA内部类

1 内部类概述 如果一个类存在的意义就是为指定的另一个类,可以把这个类放入另一个类的内部。 就是把类定义在类的内部的情况就可以形成内部类的形式。 A类中又定义了B类,B类就是内部类,B类可以当做A类的一个成员看待: 2 特点 1) 内部类可以直接访问外…

java 内部类怎么调用成员变量_JAVA内部类之成员内部类

JAVA有一个特殊的类形式——内部类(这个词有点为难普通话不好的南方朋友)。今天我们就来聊聊内部类的一种:成员内部类。 如何定义成员内部类 那要如何定义成员内部类呢。 既然叫成员内部类,说明和成员变量是有类似的地方。从代码的层次结构上来看他是和成…

Java内部类(匿名内部类)

Java内部类(匿名内部类) 一、内部类二、静态内部类三、成员内部类四、局部内部类(了解即可)五、匿名内部类(重要) 一、内部类 1、概述 内部类就是一个定义在一个类里面的类,里面的类可以理解为…