找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 611|回复: 3
打印 上一主题 下一主题
收起左侧

hc-06蓝牙+stc15w204s串口控制灯

[复制链接]
跳转到指定楼层
楼主
ID:492177 发表于 2025-11-4 11:56 来自触屏版 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
使用hc-06蓝牙+stc15w204s串口控制p3.3口上的灯。蓝牙串口连接电脑串口助手和单片机连接电脑串口都能正常发送接收。蓝牙连接单片机就不行,没有接收反馈。求大师帮我看看程序哪里有问题。附程序。
#include <STC15W204S.h>

// 定义引脚
sbit LED = P3^3;  // P3.3连接LED

// 串口初始化函数,波特率9600(11.0592MHz晶振)
void UART_Init() {
    SCON = 0x50;  // 8位数据,允许接收
    TMOD &= 0x0F; // 清除定时器1配置
    TMOD |= 0x20; // 定时器1工作在方式2
    TH1 = 0xFD;   // 9600波特率初值
    TL1 = 0xFD;
    TR1 = 1;      // 启动定时器1
    ES = 1;       // 允许串口中断
    EA = 1;       // 允许总中断
}

// 串口发送一个字节
void UART_SendByte(unsigned char dat) {
    SBUF = dat;
    while (!TI);  // 等待发送完成
    TI = 0;       // 清除发送标志
}

// 主函数
void main() {
    UART_Init();  // 初始化串口
    LED = 0;      // 初始LED灭
    while (1) {
        // 主循环空转,等待中断处理
    }
}

// 串口中断服务函数
void UART_ISR() interrupt 4 {
    unsigned char rec_dat;
    if (RI) {         // 接收中断标志
        RI = 0;       // 清除接收标志
        rec_dat = SBUF; // 读取接收数据
        
        // 根据接收数据控制LED
        if (rec_dat == '1') {
            LED = 1;  // 灯亮
        } else if (rec_dat == '0') {
            LED = 0;  // 灯灭
        }
        
        // 将接收的控制指令回传(发送到蓝牙)
        UART_SendByte(rec_dat);
    }
}

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:1161909 发表于 2025-11-5 17:11 | 只看该作者
你这个蓝牙怎么发送数据到单片机
回复

使用道具 举报

板凳
ID:492177 发表于 2025-11-6 13:20 来自触屏版 | 只看该作者
发表于 2025-11-5 17:11
你这个蓝牙怎么发送数据到单片机

通过串口
回复

使用道具 举报

地板
ID:1089588 发表于 2025-11-7 10:26 | 只看该作者
这个好像需要蓝牙主动给单片机发数据才会有返回值,试试把
if (rec_dat == '1') {
            LED = 1;  // 灯亮
        } else if (rec_dat == '0') {
            LED = 0;  // 灯灭
        }
改成
if (rec_dat) {
            LED = 1;  // 灯亮
        }
看看有没有接收到数据
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表