基于51单片机智能台灯无线WIFI控制LED灯亮灭亮度APP设计
1、系统功能介绍
-
系统构成:
- 本设计由STC89C52单片机核心电路+LED灯指示电路+WIFI模块ESP8266电路+按键电路+电源电路组成。
-
系统功能:
- 通过手机APP控制3个LED灯的亮灭和亮度
-
可根据本篇文章完成毕业设计的开题报告、任务书、设计等
2、资料下载
- 资料下载链接:https://download.csdn.net/download/qq_39020934/89666053
- 更多设计视频:https://space.bilibili.com/3537120073353692
3、系统电路介绍
3.1、STC89C52单片机核心系统电路设计
- STC89C52RC是STC公司生产的一种低功耗、高性能CMOS8位微控制器,具有8K字节系统可编程Flash存储器。STC89C52使用经典的MCS-51内核,但是做了很多的改进使得芯片具有传统51单片机不具备的功能。在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。具有以下标准功能:8k字节Flash,512字节RAM, 32 位I/O 口线,看门狗定时器,内置4KB EEPROM,MAX810复位电路,3个16 位定时器/计数器,4个外部中断,一个7向量4级中断结构(兼容传统51的5向量2级中断结构),全双工串行口。另外 STC89C52 可降至0Hz 静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU 停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。最高运作频率35MHz,6T/12T可选。
STC89C52主要特性如下:
- (1)8K字节程序存储空间;
- (2)512字节数据存储空间;
- (3)内带4K字节EEPROM存储空间;
- (4)可直接使用串口下载
单片机最小系统电路图如下图所示
实物图:
3.2、高亮LED灯照明电路(高电平有效)设计
- 超高亮LED是比一般LED发光二极管的亮度高近百倍的新型LED,其外壳是无色透明树脂封装,其发光体本身就能发出某一波长的光,从而呈现出某一种颜色。在本设计中,选择白色高亮LED灯作为照明灯使用。
特点:
- (1)寿命长,可靠耐用,维护费用极为低廉,可连续使用105h,比普通白炽灯泡长100倍;
- (2)高效率,其发光效率可达80%~90%,LED比节能灯还要节能1/4;
- (3)点亮速度快。
电路原理图:
实物图:
3.3、5V转3.3V电源电路设计
- AMS1117-3.3是一种输出电压为3.3V的正向低压降稳压器,适用于高效率线性开关电源稳压器。其输出电流为1A,系统电路简单,工作稳定。本电路中,通过AMS1117-3.3芯片将5V直流电压降为3.3V,给系统的特定模块电路供电。
芯片参数:
- (1)工作结温范围:-40~125°C
- (2)最大输入电压:15V
- (3)焊接温度(25秒):265°C
- (4)存储温度:- 65~150°C
- (5)输出电压:3.267~3.333V
- (6)纹波抑制(最小):60dB
电路原理图:
3.3、ESP8266WIFI模块电路设计电路设计
- 串口WIFI模块是新一代嵌入式WiFi模块,体积小,功耗低。采用UART接口。串口wifi模块是基于通用串行接口特性,符合IEEE802.11 协议栈网络标准,内置TCP/IP协议栈,使传统串口设备更好的加入无线网络。
- ESP8266是一款超低功耗的模块,拥有业内极富竞争力的封装尺寸和超低能耗技术,专为移动设备和互联网的应用设计,可将用户的物理设备连接到WIFI无线网络上,进行互联网或局域网通信,实现联网功能。
- ESP8266可广泛应用于智能电网、智能交通、智能家具、手持设备、工业控制等领域。
电路原理图:
实物图:
4、程序设计
4.1、系统初始化
void SYSInit()
{
Init_Timer0(); //定时器0初始化
UART_Init();
for(i=0;i<45;i++) //延时有助于稳定
{DelayMs(100);}
uartSendStr("AT+CIPMUX=1\r\n",13); //打开多连接
for(i=0;i<10;i++)
{DelayMs(100);}
uartSendStr("AT+CIPSERVER=1,8080\r\n",21);
}
4.2、串口初始化
void UART_Init(void)
{
SCON = 0x50; // SCON: 模式 1, 8-bit UART, 使能接收
TMOD |= 0x20; // TMOD: timer 1, mode 2, 8-bit 重装
TH1 = 0xFD; // TH1: 重装值 9600 波特率 晶振 11.0592MHz
TR1 = 1; // TR1: timer 1 打开
EA = 1; //打开总中断
ES = 1; //打开串口中断
}
4.3、通过WIFI发送数据
void uartSendByte(unsigned char dat)
{
unsigned char time_out;
time_out=0x00;
SBUF = dat; //将数据放入SBUF中
while((!TI)&&(time_out<100)) //检测是否发送出去
{time_out++;DelayUs2x(10);} //未发送出去 进行短暂延时
TI = 0; //清除ti标志
}
void uartSendStr(unsigned char *s,unsigned char length)
{
unsigned char NUM;
NUM=0x00;
while(NUM<length) //发送长度对比
{
uartSendByte(*s); //放松单字节数据
s++; //指针++
NUM++; //下一个++
}
}
4.4、延时函数
/*------------------------------------------------
uS延时函数,含有输入参数 unsigned char t,无返回值
unsigned char 是定义无符号字符变量,其值的范围是
0~255 这里使用晶振12M,精确延时请使用汇编,大致延时
长度如下 T=tx2+5 uS
------------------------------------------------*/
void DelayUs2x(unsigned char t)
{
while(--t);
}
/*------------------------------------------------
mS延时函数,含有输入参数 unsigned char t,无返回值
unsigned char 是定义无符号字符变量,其值的范围是
0~255 这里使用晶振12M,精确延时请使用汇编
------------------------------------------------*/
void DelayMs(unsigned char t)
{
while(t--)
{
//大致延时1mS
DelayUs2x(245);
DelayUs2x(245);
}
}