基于51单片机的手机蓝牙控制8位LED灯亮灭设计

发布于:2025-08-16 ⋅ 阅读:(13) ⋅ 点赞:(0)

1 系统功能介绍

本设计基于 STC89C52 单片机,实现了手机蓝牙控制的 8 位 LED 灯亮灭及亮度调节功能。系统通过蓝牙模块接收手机发送的指令,控制 8 路 LED 灯的状态及亮度档位,实现智能化照明控制。系统具有操作便捷、响应快速和亮度分级调节等特点,适合家庭、实验室及智能照明应用。

主要功能包括:

  1. 蓝牙远程控制:通过手机 APP 控制 8 路 LED 灯的开关和亮度。
  2. 多档亮度控制:每个 LED 灯可设置三档亮度,满足不同光照需求。
  3. 全亮全灭控制:通过发送 ON 和 SN 指令可控制所有灯全亮或全灭。
  4. 独立灯控制:通过发送 Ax、Bx、Cx 指令独立控制每个灯的亮度。
  5. 实时反馈与响应:单片机实时解析蓝牙指令并执行控制操作,响应迅速。

2 系统电路设计

系统采用模块化设计,核心模块包括单片机核心电路、LED 灯驱动模块、蓝牙通信模块及电源模块。

2.1 单片机核心电路

STC89C52 单片机作为系统控制核心,负责接收蓝牙指令、解析指令并控制 LED 灯状态和亮度。

设计要点:

  • 供电:VCC 接 5V 稳压电源,GND 接地。

  • 晶振电路:外接 11.0592MHz 晶振,保证单片机稳定运行。

  • 复位电路:上电复位和手动复位按键,保证系统正常启动。

  • I/O 管脚分配

    • LED 灯控制线接 8 个 GPIO 输出。
    • 蓝牙模块 TX、RX 与单片机串口 UART 连接,用于指令收发。

2.2 LED 灯驱动模块

LED 灯模块用于实现 8 路灯的亮灭控制及亮度分级控制。

设计要点:

  • 驱动方式

    • 使用三档 PWM 控制亮度。
    • 每个 LED 由单片机 I/O 通过限流电阻驱动。
  • 亮度档位设计

    • 一档:低亮度
    • 二档:中亮度
    • 三档:高亮度
  • 电流保护:每个 LED 串联限流电阻,避免过流损坏。

2.3 蓝牙模块电路

蓝牙模块用于接收手机 APP 指令并传递给单片机进行解析。

设计要点:

  • 模块类型:常用 HC-05 或 HC-06 蓝牙模块。

  • 供电:5V DC。

  • 串口通信

    • TXD 接单片机 RXD,RXD 接单片机 TXD。
    • 波特率配置为 9600。
  • 指令解析:单片机接收指令后,通过解析字符判断控制动作。

2.4 电源模块

电源模块为单片机、蓝牙模块及 LED 灯提供稳定直流电源。

设计要点:

  • 单片机和蓝牙模块:5V 稳压电源。

  • LED 灯

    • LED 灯采用限流电阻串联驱动。
    • 稳定供电保证亮度档位的准确性。
  • 保护措施:采用滤波电容和过流保护,确保系统稳定运行。


3 程序设计

程序设计采用模块化方法,包括系统初始化、蓝牙通信处理、指令解析、LED 控制及亮度管理模块。

3.1 系统初始化模块

初始化单片机、串口、LED 灯及电源模块。

void system_init(void) {
    stc89c52_init();
    uart_init(9600); // 串口初始化,波特率9600
    led_init();      // LED端口初始化
}

3.2 蓝牙通信模块

负责接收手机发送的蓝牙指令并存入缓冲区。

char bluetooth_receive(void) {
    char data;
    if(uart_data_ready()) {
        data = uart_read();
        return data;
    }
    return '\0';
}

3.3 指令解析模块

解析蓝牙指令,实现全亮、全灭或单灯亮度控制。

void parse_command(char *cmd) {
    if(strcmp(cmd, "ON") == 0) {
        led_all_on();
    } else if(strcmp(cmd, "SN") == 0) {
        led_all_off();
    } else {
        char level = cmd[0]; // A/B/C
        int led_num = cmd[1] - '1'; // 灯号1-8
        set_led_level(led_num, level);
    }
}

3.4 LED 控制模块

控制 LED 灯亮灭及亮度分档。

void set_led_level(int led_num, char level) {
    switch(level) {
        case 'A': pwm_set(led_num, 33); break;  // 一档亮度33%
        case 'B': pwm_set(led_num, 66); break;  // 二档亮度66%
        case 'C': pwm_set(led_num, 100); break; // 三档亮度100%
    }
}

void led_all_on(void) {
    for(int i = 0; i < 8; i++) {
        pwm_set(i, 100);
    }
}

void led_all_off(void) {
    for(int i = 0; i < 8; i++) {
        pwm_set(i, 0);
    }
}

3.5 主循环

主循环中,持续监听蓝牙指令,并根据指令控制 LED 灯。

int main(void) {
    char cmd[3];
    system_init();
    
    while(1) {
        char ch = bluetooth_receive();
        if(ch != '\0') {
            cmd[0] = ch;
            cmd[1] = bluetooth_receive();
            cmd[2] = '\0';
            parse_command(cmd);
        }
    }
}

4 总结

本设计通过 STC89C52 单片机 实现手机蓝牙对 8 路 LED 灯的智能控制,支持亮灭控制及三档亮度调节。系统模块化设计包括单片机核心控制、LED 灯驱动、蓝牙通信和电源模块,通过蓝牙指令解析实现实时控制,操作简单且响应快速。该设计不仅提高了智能化操作体验,也能够节省能源并满足不同场景的照明需求。


网站公告

今日签到

点亮在社区的每一天
去签到