基于51单片机手机无线蓝牙APP控制风扇调速设计
1、系统功能介绍
-
系统构成:
- 本系统由STC89C52单片机电路+风扇控制电路+蓝牙模块电路+电源电路组成。
-
系统功能:
- 可以通过手机APP控制低速、中速、高速、停止、低速旋转1分钟后停止、中速旋转1分钟后停止、低速旋转1分钟后停止风扇。
-
可根据本篇文章完成毕业设计的开题报告、任务书、设计等
2、资料下载
- 资料下载链接:https://download.csdn.net/download/qq_39020934/89662329
- 更多设计视频: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、JDY-30蓝牙模块电路设计
- 蓝牙模块是指集成蓝牙功能的芯片基本电路集合,用于无线网络通讯。本蓝牙模块就是为了只能无线数据传输而专门打造的,本模块支持串行接口,支持SP蓝牙串口协议,具有成本低、体积小、收发灵敏性高等特点,只需配备少许的外围元件就能实现大功能。
特点:
- (1)支持蓝牙 SPP 串口协议
- (2)内置 PCB 天线
- (3)支持 UART 接口
- (4)蓝牙 Class 2
- (5)数据传输比 BLE 蓝牙快、可达到 8K 每秒以上的速率
- (6)支持与 SPP 主蓝牙模块连接通信(JDY-30 为从 SPP 蓝牙模块)
- (7)支持与电脑 SPP 蓝牙通信
- (8)支持 Android 手机 SPP 通信
电路原理图:
实物图:
3.3、5V散热风扇控制电路设计
- 散热风扇的工作原理是按能量转化来实现的,即:电能→电磁能→机械能→动能。由于单片机无法直接驱动振动风扇,故选择三极管9012来实现对散热风扇的控制,电阻为限流电阻,限流作用,以保护三极管。当单片机的相关控制引脚为低电平时,三极管导通,风扇正常工作;否则,风扇不转动。
电路原理图:
实物图
4、程序设计
4.1、系统初始化
void SYSInit()
{
Init_Timer0(); //定时器0初始化
UART_Init(); //蓝牙 串口 波特率9600
DelayMs(10); //延时有助于稳定
ShanFlag=OPEN; //风扇状态
BasicLater=0; //pwm对比时间基础
DOWNLater=7; //PWM风扇打开时间节点
UPLater=12; //pwm风扇关闭时间节点
DelayTimN=0; //延时时间记录
DelayStop=0; //延时停止状态
}
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
TL1 = TH1;
TR1 = 1; // TR1: timer 1 打开
EA = 1; //打开总中断
ES = 1; //打开串口中断
}
4.3、延时函数
/*------------------------------------------------
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);
}
}