找回密码
 立即注册

QQ登录

只需一步,快速开始

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

用手机通过蓝牙HC-08发数据给51单片机,不知道为什么不行,不知道是不是波特率的问题

  [复制链接]
回帖奖励 10 黑币 回复本帖可获得 2 黑币奖励! 每人限 1 次
跳转到指定楼层
楼主
ID:484491 发表于 2020-5-17 23:53 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我的单片机是用12M的晶振,
程序在下,用到单片机中可以进行串口通信控制流水灯,蓝牙HC-08测试过可以和手机电脑进行通信,但用手机通过蓝牙HC-08发数据给51单片机,不知道为什么不行,不知道是不是波特率的问题,希望大家帮帮忙
#include<reg51.h>
#define uint unsigned int
#define uchar unsigned char
void main()
{
TMOD=0x20;
SM0=0;
SM1=1;
TH1=0xf9;
TL1=0xf9;
TR1=1;
REN=1;
while(1)
{
  if(RI==1)
  {
   RI=0;  
   P0=SBUF;
  }
}
}

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

使用道具 举报

来自 21#
ID:484491 发表于 2020-8-1 00:46 | 只看该作者
问题已解决,谢谢各位的解答。
1、晶振为11.0592,串口波特率9600,TH0=TL0=0xfd,波特率不加倍,没有误差
2、晶振为12.000,串口波特率4800,TH0=TL0=0xf3,波特率加倍,有误差0.16%,但不影响通信,能正常收发信息
回复

使用道具 举报

沙发
ID:283908 发表于 2020-5-18 04:48 | 只看该作者
  最好把全部程序发出来。
        看看是不是要打开 中断  
          EA = 1;           //打开总中断
          ES = 1;     //打开串口中断
       
回复

使用道具 举报

板凳
ID:482935 发表于 2020-5-18 06:45 | 只看该作者
你用那个蓝牙SSP助手试试看,我记得HC-08是蓝牙4.0的协议。那些应用商店里的蓝牙串口APP很多是蓝牙2.0协议(HC-05和HC-06)。首先你单片机串口波特率需要=蓝牙串口模块的波特率,否则出现乱码。 至于手机上蓝牙的波特率是否需要和蓝牙串口模块的波特率相同我就不知道了,应该是自适应的我觉得。(我自己用SSP助手做蓝牙实验反正没有关注手机的蓝牙波特率,只要单片机和蓝牙串口模块的波特率就行了)
回复

使用道具 举报

地板
ID:494559 发表于 2020-5-18 08:02 | 只看该作者
hc-08是4.0吧?要用厂家的串口软件测试。先保证(手机--HC08--电脑串口)成功。
回复

使用道具 举报

5#
ID:65956 发表于 2020-5-18 08:18 | 只看该作者
没有串口中断入口定义当然不行了,单片机要先有中断,然后再进行接收及数据分析,这样才是个完整的过程
回复

使用道具 举报

6#
ID:754502 发表于 2020-5-18 09:35 | 只看该作者
jituo 发表于 2020-5-18 08:02
hc-08是4.0吧?要用厂家的串口软件测试。先保证(手机--HC08--电脑串口)成功。

我的也是跟楼主同样的问题,程序没问题,单片机和电脑能正常接受,9600波特率。蓝牙模块也能手机和pc正常通信,但是蓝牙接在单片机上就不行
回复

使用道具 举报

7#
ID:600952 发表于 2020-5-18 10:27 | 只看该作者
蓝牙HC-08和手机电脑进行通信,手机通过蓝牙HC-08发数据给51单片机,不都得有11.0592MHz晶振吗?12MHz的计算准确吗?
回复

使用道具 举报

8#
ID:484491 发表于 2020-5-18 10:32 | 只看该作者
13681878016 发表于 2020-5-18 06:45
你用那个蓝牙SSP助手试试看,我记得HC-08是蓝牙4.0的协议。那些应用商店里的蓝牙串口APP很多是蓝牙2.0协议 ...

嗯嗯,那比如蓝牙的波特率为9600,单片机的晶振为12M,SMOD=1;经过计算,TH1=TL1=0xf9,误差为-6.99%,是这样吗?如果要消除误差是不是就要换晶振为11.0592才行,有没有其他方法消除误差。
回复

使用道具 举报

9#
ID:494559 发表于 2020-5-18 10:47 | 只看该作者
韩冰samuel 发表于 2020-5-18 09:35
我的也是跟楼主同样的问题,程序没问题,单片机和电脑能正常接受,9600波特率。蓝牙模块也能手机和pc正常 ...

数据未转换,16进制转ascii, 如手机发ascii,单片机收到的是16进制。不是你发“a”收到的就是"a".
回复

使用道具 举报

10#
ID:754502 发表于 2020-5-19 07:28 | 只看该作者
jituo 发表于 2020-5-18 10:47
数据未转换,16进制转ascii, 如手机发ascii,单片机收到的是16进制。不是你发“a”收到的就是"a".

发的也是16进制,电脑端能正常接收。用万用表也测过,蓝牙模块接在电脑串口和单片机串口,各针脚电压也都相同,就是不知道问题在哪,换了两个蓝牙模块都不行。但是单片机本身串口也能和电脑相连,正常使用
回复

使用道具 举报

11#
ID:755472 发表于 2020-5-21 15:29 | 只看该作者
没有串口中断入口定义
回复

使用道具 举报

12#
ID:745743 发表于 2020-6-10 00:07 来自手机 | 只看该作者
神蜂 发表于 2020-5-18 04:48
最好把全部程序发出来。
        看看是不是要打开 中断  
          EA = 1;           //打开总中断

他这是查询方式,不用中断
回复

使用道具 举报

13#
ID:776366 发表于 2020-6-12 09:49 | 只看该作者
需要打开中断才能查询吧,我也是小白
回复

使用道具 举报

14#
ID:777581 发表于 2020-6-12 19:53 | 只看该作者
串口中断入口定义有没
回复

使用道具 举报

15#
ID:778735 发表于 2020-6-14 10:14 | 只看该作者
打开中断查询下吧,具体啥的也不是很清楚
回复

使用道具 举报

16#
ID:484491 发表于 2020-7-15 02:45 来自手机 | 只看该作者
qujiuhe 发表于 2020-5-18 10:27
蓝牙HC-08和手机电脑进行通信,手机通过蓝牙HC-08发数据给51单片机,不都得有11.0592MHz晶振吗?12MHz的计 ...

但我上网查了,12M的也可以用蓝牙,不影响数据通信,但我没找到解决办法
回复

使用道具 举报

17#
ID:484491 发表于 2020-7-15 02:50 来自手机 | 只看该作者
神蜂 发表于 2020-5-18 04:48
最好把全部程序发出来。
        看看是不是要打开 中断  
          EA = 1;           //打开总中断

现在是可以通信,但是乱码,不能正确接收数据,虽然可以测试出乱码规律,用来控制其他模块,但我想把它搞明白,波特率难搞,不知怎么设置,设不正确
回复

使用道具 举报

18#
ID:484491 发表于 2020-7-15 02:55 来自手机 | 只看该作者
韩冰samuel 发表于 2020-5-19 07:28
发的也是16进制,电脑端能正常接收。用万用表也测过,蓝牙模块接在电脑串口和单片机串口,各针脚电压也都 ...

我现在是能通信了,但接收到的数据不正确,是乱码,虽然可以测出乱码规律,用来控制其他模块,但我想完成它能正常通信,数据正确。不知道你解决了吗?
回复

使用道具 举报

19#
ID:484491 发表于 2020-7-15 03:02 来自手机 | 只看该作者
13681878016 发表于 2020-5-18 06:45
你用那个蓝牙SSP助手试试看,我记得HC-08是蓝牙4.0的协议。那些应用商店里的蓝牙串口APP很多是蓝牙2.0协议 ...

问题就是波特率,怎么设都不对,还是乱码,还是有规律的乱码,是只能用那11.0952的晶振了吗?有没有解决的办法!
回复

使用道具 举报

20#
ID:420836 发表于 2020-7-15 08:30 | 只看该作者
原因有很多,首先,您的配置正确吗?
回复

使用道具 举报

22#
ID:484491 发表于 2020-8-1 00:47 | 只看该作者
TTQ001 发表于 2020-7-15 08:30
原因有很多,首先,您的配置正确吗?

已解决,谢谢你
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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