OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4232|回复: 6

串口助手可以和51单片机通信,手机与蓝牙通信不能控制流水灯?通过串口助手能看见手机发给蓝牙的信息,这什么情况啊?

[复制链接]

106

主题

418

帖子

0

精华

高级会员

Rank: 4

积分
764
金钱
764
注册时间
2016-7-26
在线时间
123 小时
发表于 2017-1-5 22:09:04 | 显示全部楼层 |阅读模式
1金钱
本帖最后由 慕名兰 于 2017-1-5 22:11 编辑

我用串口助手发送数据控制流水灯,当用手机与蓝牙通信控制流水灯时,在串口助手上可以看见手机发送给蓝牙的信息,但是就是控制不了单片机啊????

最佳答案

查看完整内容[请看2#楼]

解决了,原因是波特率的问题,手机,单片机,蓝牙的波特率都要一样,如果是9600的话,那单片机的晶振必须是11.0592,不能为12M,否则数据必错
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

106

主题

418

帖子

0

精华

高级会员

Rank: 4

积分
764
金钱
764
注册时间
2016-7-26
在线时间
123 小时
 楼主| 发表于 2017-1-5 22:09:05 | 显示全部楼层
解决了,原因是波特率的问题,手机,单片机,蓝牙的波特率都要一样,如果是9600的话,那单片机的晶振必须是11.0592,不能为12M,否则数据必错
回复

使用道具 举报

106

主题

418

帖子

0

精华

高级会员

Rank: 4

积分
764
金钱
764
注册时间
2016-7-26
在线时间
123 小时
 楼主| 发表于 2017-1-5 23:06:46 | 显示全部楼层
本帖最后由 慕名兰 于 2017-1-5 23:57 编辑

程序是这样的:
#include <reg52.h>
#define uchar unsigned char
uchar a;                                                                                            
sbit led1   = P1^0;
sbit led2   = P1^1;
void main()
{
  TMOD = 0X20;
  PCON &= ~(1<<7);
  TH1  = 0XFD;
  TL1  = 0XFD;
  TR1  = 1;
  REN  = 1;
  SM0  = 0;
  SM1  = 1;
  SM2  = 0;
  EA   = 1;
  ES   = 1;
  while(1) ;
}
  void ser() interrupt 4
  {
           RI = 0;
        a  = SBUF ;
        if(a=='8') led2 = 0;        
        if(a=='9') led2 = 1;

}
现象1:手机给单片机发送字符8灯总是不亮???这是什么原因啊??
现象2:我程序没有写手机发送数据到蓝牙并通过串口助手查看,但是串口助手总是出现手机发给蓝牙的数据??????
回复

使用道具 举报

0

主题

0

帖子

0

精华

新手入门

积分
9
金钱
9
注册时间
2018-11-12
在线时间
5 小时
发表于 2017-1-6 09:49:39 | 显示全部楼层
你是不是把蓝牙模块的串行通信接口TX、RX接反了呀!
回复

使用道具 举报

106

主题

418

帖子

0

精华

高级会员

Rank: 4

积分
764
金钱
764
注册时间
2016-7-26
在线时间
123 小时
 楼主| 发表于 2017-1-6 10:26:51 | 显示全部楼层
dlyc 发表于 2017-1-6 09:49
你是不是把蓝牙模块的串行通信接口TX、RX接反了呀!

没有
回复

使用道具 举报

106

主题

418

帖子

0

精华

高级会员

Rank: 4

积分
764
金钱
764
注册时间
2016-7-26
在线时间
123 小时
 楼主| 发表于 2017-1-6 10:29:26 | 显示全部楼层
本帖最后由 慕名兰 于 2017-1-6 10:31 编辑
dlyc 发表于 2017-1-6 09:49
你是不是把蓝牙模块的串行通信接口TX、RX接反了呀!

我用手机发数据给蓝牙,蓝牙没回数据,是不是表示蓝牙没接受啊??程序如下:
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int

sbit led = P1^1 ;
uchar a;
void init()
{
TMOD=0X20;
SCON=0X50;
TH1=0Xfd;
TL1=0Xfd;
EA=1;
ES=1;
TR1=1;
}
void main()
{
init();
while(1);
}
void ser() interrupt 4
{
ES=0;
RI=0;
a=SBUF;
switch(a)
{
  case 65:led=0;    //发送的是A
     break;
  case 66:led=1;    //发送的是B
     break;
  default:break;
}
           SBUF =a;     //蓝牙发数据到手机
           while(!TI);   //蓝牙发数据到手机
           TI  = 0;       //蓝牙发数据到手机
       ES=1;
}




回复

使用道具 举报

106

主题

418

帖子

0

精华

高级会员

Rank: 4

积分
764
金钱
764
注册时间
2016-7-26
在线时间
123 小时
 楼主| 发表于 2017-1-6 10:35:42 | 显示全部楼层
dlyc 发表于 2017-1-6 09:49
你是不是把蓝牙模块的串行通信接口TX、RX接反了呀!

我用的蓝牙是HC-05,手机能与它链接,是不是说明两个波特率是对的???
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-26 13:22

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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