大哈欠E 发表于 2013-6-13 13:25:44

关于蓝牙BC04的模块问题,大神求救啊!!

本帖最后由 大哈欠E 于 2013-6-13 19:44 编辑

最近买了一个bc04-b的蓝牙的模块,用来控制小车的,可是写好了程序,用手机软件发送 前进 后退等指令小车就是不动。小车驱动没问题,不知道是不是蓝牙出了问题,我不知道蓝牙是否接收到了数据没有,反正配对连接都成功了,我用手机蓝牙串口在未连接的状态下发送AT指令也没返回值。刚接触这个蓝牙模块,这模块我只接了电源 串行口出来 其他的管脚都没管,是怎样进入AT指令模式的,要进入这个模式得到返回值是就由手机串口软件发送指令,然后蓝牙又发送返回值给手机。。其他的串口还要管吗? 麻烦大神指点我是小白。

北小斗 发表于 2013-6-13 13:37:04

1、可能是你单片机与蓝牙串口的波特率没有匹配;
2、模块买来第一件事应该是接到电脑上用串口上位机看看能不能双向通信,而不是直接接到硬件模块上使用;

大哈欠E 发表于 2013-6-13 13:45:02

北小斗 发表于 2013-6-13 13:37 static/image/common/back.gif
1、可能是你单片机与蓝牙串口的波特率没有匹配;
2、模块买来第一件事应该是接到电脑上用串口上位机看看能 ...

我试了,我用usb转串口线与模块连接tx rx,也是不能通信,我是奇怪了,我用这条转串口线下载程序也下载不进去,我用usb下载线就能下载,这条线是借别人的,不知道是蓝牙问题,还这条现问题,还是我的操作问题。。还需大神,替我分析一下。。

北小斗 发表于 2013-6-13 13:52:46

那你就短接串口线RX、TX,通过自发自收来确定USB转串口线的好坏喽

little_Monkey 发表于 2013-6-13 13:54:58

蓝牙串口当成串口使用,最简单的测试方法是测试自收自发

大哈欠E 发表于 2013-6-13 14:06:59

北小斗 发表于 2013-6-13 13:52 static/image/common/back.gif
那你就短接串口线RX、TX,通过自发自收来确定USB转串口线的好坏喽

能够收到,看来线是没坏,我纳闷了。。。

大哈欠E 发表于 2013-6-13 14:09:47

little_Monkey 发表于 2013-6-13 13:54 static/image/common/back.gif
蓝牙串口当成串口使用,最简单的测试方法是测试自收自发

蓝牙怎么自收自发?你是说把蓝牙的 tx rx短接 然后用手机蓝牙助手发送 看是否接收到信息没有?可以这样理解吗?

大哈欠E 发表于 2013-6-13 14:11:08

蓝牙我提供的电源不死标准的3.3v 我是用一节3.7v的锂电池供电的

大哈欠E 发表于 2013-6-13 15:19:08

北小斗 发表于 2013-6-13 13:37 static/image/common/back.gif
1、可能是你单片机与蓝牙串口的波特率没有匹配;
2、模块买来第一件事应该是接到电脑上用串口上位机看看能 ...

大神你看看是不是这个问题,我晶振用的是12Mhz而蓝牙的9600 写程序时配置波特率时有误差,但是我觉得也不对啊 误差毕竟很小,总有一次对啊。。

这个是测试蓝牙的程序 就是用手机蓝牙助手发送A或B 如果单片机接收到AB 让led亮。你看看正确没有。。麻烦大神看看
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar a;

sbit light=P3^5;

void init()
   {

   TMOD=0X20;   //设置定时器1为方式2
   TH1=0xfd ;   
   TL1=0xfd ;   //装初值
   TR1=1;       //启动定时器1
   REN=1;       // 使能接收
   SM0=0;
   SM1=1;       //设置串口为工作方式1
   
   EA=1;       // 打开总中断开关
   ES=1;       // 打开串口中断开关
   }
   void main()
   {init();
    while(1);
   }
   void ser() interrupt 4
   {      ES=0;
          RI=0;   //将接受中断标志位清0;
          a=SBUF; //将接受到的数据赋值给a
                  if(a==65||a==66)
                  {
                          light=0;
                  }
            else light=1;
                   ES=1;

                  }

大哈欠E 发表于 2013-6-13 15:19:31

大神你看看是不是这个问题,我晶振用的是12Mhz而蓝牙的9600 写程序时配置波特率时有误差,但是我觉得也不对啊 误差毕竟很小,总有一次对啊。。

这个是测试蓝牙的程序 就是用手机蓝牙助手发送A或B 如果单片机接收到AB 让led亮。你看看正确没有。。麻烦大神看看
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar a;

sbit light=P3^5;

void init()
   {

   TMOD=0X20;   //设置定时器1为方式2
   TH1=0xfd ;   
   TL1=0xfd ;   //装初值
   TR1=1;       //启动定时器1
   REN=1;       // 使能接收
   SM0=0;
   SM1=1;       //设置串口为工作方式1
   
   EA=1;       // 打开总中断开关
   ES=1;       // 打开串口中断开关
   }
   void main()
   {init();
    while(1);
   }
   void ser() interrupt 4
   {      ES=0;
          RI=0;   //将接受中断标志位清0;
          a=SBUF; //将接受到的数据赋值给a
                  if(a==65||a==66)
                  {
                        light=0;
                  }
            else light=1;
                   ES=1;

                  }

大哈欠E 发表于 2013-6-13 15:23:10

串口的接法是狼牙的rx 和单片机的rx想连就可以了吗?

北小斗 发表于 2013-6-13 16:03:25

大哈欠E 发表于 2013-6-13 15:19 static/image/common/back.gif
大神你看看是不是这个问题,我晶振用的是12Mhz而蓝牙的9600 写程序时配置波特率时有误差,但是我觉得也 ...

按五楼说的,你再测试一下蓝牙模块的问题

大哈欠E 发表于 2013-6-13 17:09:12

北小斗 发表于 2013-6-13 16:03 static/image/common/back.gif
按五楼说的,你再测试一下蓝牙模块的问题

我测了 能自收自发,还要找原因

大哈欠E 发表于 2013-6-13 19:44:46

到底是哪里问题 实在是没辙了。。

zhong296887142 发表于 2013-6-14 15:54:46

大哈欠E 发表于 2013-6-13 15:19 static/image/common/back.gif
大神你看看是不是这个问题,我晶振用的是12Mhz而蓝牙的9600 写程序时配置波特率时有误差,但是我觉得也不 ...

你的在那个中断还没有赋予第二次初级,需要重复给它值的。

大哈欠E 发表于 2013-6-15 00:13:17

zhong296887142 发表于 2013-6-14 15:54 static/image/common/back.gif
你的在那个中断还没有赋予第二次初级,需要重复给它值的。

我觉得就是蓝牙没有通过串行口发送数据给单片机 所以连中断都没进入。。。
页: [1]
查看完整版本: 关于蓝牙BC04的模块问题,大神求救啊!!