找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 6018|回复: 13
收起左侧

手机连接hc05蓝牙后乱码问题

[复制链接]
ID:687992 发表于 2020-3-2 16:39 | 显示全部楼层 |阅读模式
我用的时hc05想和stc15通讯,配置了
TMOD = 0X11;
TH0=0XD8;  //T0初值
TL0=0XF0;
TH1=0;   //T1初值
TL1=0;
EA=1;  //开启总中断
TR0=1;
ET0=1;  //允许T0中断
ET1=1;  //允许T1中断
ES=1;  //允许串口中断
  SCON=0X50;   //蓝牙
  PCON=0X80;  //蓝牙
SM0=0;
SM1=1;




还弄了个中断
void zhongduan() interrupt 4
{
i=SBUF;
RI=0;
}

但手机连接的时候却接收到了很多乱码,想知道咋回事,看了些帖子也没有我这种情况的......
回复

使用道具 举报

ID:88256 发表于 2020-3-2 17:19 | 显示全部楼层
蓝牙模块发送接收的数值是hex的还是ASCII的?这两个没设置对的话绝对乱码
回复

使用道具 举报

ID:697917 发表于 2020-3-2 17:31 | 显示全部楼层
波特率配置看看是否一致。
回复

使用道具 举报

ID:481073 发表于 2020-3-2 17:37 | 显示全部楼层
检查下波特率错了没,波特率错了是会乱码的
回复

使用道具 举报

ID:687992 发表于 2020-3-3 09:12 | 显示全部楼层
黎明初至 发表于 2020-3-2 17:31
波特率配置看看是否一致。

我是用的手机蓝牙串口,蓝牙也是默认9600波特率
回复

使用道具 举报

ID:687992 发表于 2020-3-3 09:12 | 显示全部楼层
流星2019 发表于 2020-3-2 17:37
检查下波特率错了没,波特率错了是会乱码的

我是用的手里蓝牙串口,蓝牙是默认9600波特率
回复

使用道具 举报

ID:687992 发表于 2020-3-3 09:13 | 显示全部楼层
hhdsdy 发表于 2020-3-2 17:19
蓝牙模块发送接收的数值是hex的还是ASCII的?这两个没设置对的话绝对乱码

我想发的是16进制,发过去的也是0x01啥的
回复

使用道具 举报

ID:687992 发表于 2020-3-3 09:41 | 显示全部楼层
hhdsdy 发表于 2020-3-2 17:19
蓝牙模块发送接收的数值是hex的还是ASCII的?这两个没设置对的话绝对乱码

额我在手机上设置的发送16进制,接收16进制
回复

使用道具 举报

ID:687992 发表于 2020-3-3 09:46 | 显示全部楼层
啊啊啊我知道为什么了,RXD和TXD接反了
回复

使用道具 举报

ID:407089 发表于 2020-3-3 10:29 | 显示全部楼层
检查一下你代码中下面两组数据,很可能不对,要不你把Focs提供一下。
TH0=0XD8;
TL0=0XF0;
回复

使用道具 举报

ID:679425 发表于 2020-3-3 10:31 | 显示全部楼层
蓝牙模块发送接收的数值是hex的还是ASCII的
回复

使用道具 举报

ID:687992 发表于 2020-3-3 21:18 | 显示全部楼层
brew9 发表于 2020-3-3 10:29
检查一下你代码中下面两组数据,很可能不对,要不你把Focs提供一下。
TH0=0XD8;
TL0=0XF0;

#include "REG51.h"
#include "oled.h"
#include "bmp.h"
unsigned char i;  //蓝牙变量

int main(void)
{       
         
        TMOD = 0X11;
        TH0=0XD8;  //T0初值
        TL0=0XF0;
        TH1=0;   //T1初值
        TL1=0;
        EA=1;  //开启总中断
        TR0=1;
        ET0=1;  //允许T0中断
        ET1=1;  //允许T1中断
        ES=1;  //允许串口中断
        SCON=0X50;   //蓝牙
      PCON=0X80;         //蓝牙
        SM0=0;
        SM1=1;
}

void zhongduan() interrupt 4
{
        i=SBUF;
        RI=0;
        SBUF=i;
        while(!TI);
        TI=0;
}
这是我的完整程序,前面多出来两个头文件是OLED的,TL1是超声波的,没用上
回复

使用道具 举报

ID:407089 发表于 2020-3-7 10:57 | 显示全部楼层
STC15单片机默认用T2做波特率发生器,你这程序寄存器配置不对。
要想把问题搞明白,你还得提供内部晶振工作频率(Focs)。

另外,
SCON=0X50;   //蓝牙
上面这句已经包含了SM0=0; SM1=1;
回复

使用道具 举报

ID:691449 发表于 2020-3-7 15:41 | 显示全部楼层
stc15单片机串口是默认用T2定时器的,用T0需要另外设置,这些手册上都有,stc-isp软件上也有例程,stc15的串口和以前的不太一样。
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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