蓝牙通信问题

2019-07-15 16:29发布

我想两块单片机之间蓝牙通信。单片机用的c52,蓝牙用的hc05和06.把程序分别下载进去之后,将两块单片机的rxd和txd直接用线反接可以达到效果。但是换成蓝牙之后就不行了,蓝牙配对正常。我不知道蓝牙的波特率是多少,两块单片机的串口波特率一致。

发送数据的单片机

#include <reg51.h>
#include <dulianjian_diceng.H>


void InitUART()
{
   SCON = 0x50;                                //串口工作方式1
   TMOD = 0x20;                                //定时器工作方式2
   PCON = 0x80;                                //波特率加倍
   TH1 = 0xF3;                                //波特率4800
   TL1 = 0xF3;                                //波特率4800
   ES=1;                                        //打开接收中断
   EA=1;                                        //打开总中断
   TR1=1;                                        //打开计数器
}       

void main ()
{
  InitUART();
  while(1)
  {
  }
}



void UARtinterrupt() interrupt 4
{
   unsigned char receivedata;

   unsigned int a;
   a=dulianjian();
   if(a==2)
   receivedata = 'b';
   if(a==3)
   receivedata = 'c';
   if(a==4)
   receivedata = 'd';

//   receivedata = SBUF;        //SBUF作为接收缓冲器
//   RI = 0;                                //接收中断标志位复位
   SBUF = receivedata;        //SBUF作为发送缓冲器

   while(!TI);                        //等待数据发送完成
   TI = 0;                                //发送中断标志位复位
}



接收数据的单片机

#include <reg51.h>
#include <7wsmg_diceng.H>

void InitUART()
{
   SCON = 0x50;                                //串口工作方式1
   TMOD = 0x20;                                //定时器工作方式2
   PCON = 0x80;                                //波特率加倍
   TH1 = 0xF3;                                //波特率4800
   TL1 = 0xF3;                                //波特率4800
   ES=1;                                        //打开接收中断
   EA=1;                                        //打开总中断
   TR1=1;                                        //打开计数器
}       

void main ()
{
  InitUART();
  while(1)
  {
  }
}

void UARTInterrupt() interrupt 4
{
   unsigned char receivedata;


   receivedata = SBUF;        //SBUF作为接收缓冲器
   while(!RI);                        //等待数据接收完成
   RI = 0;                                //接收中断标志位复位


   if(receivedata=='b')
   {
      xianshishuzi(10);          //消隐
          shuziweishu(8);          //第几位显示
      xianshishuzi(1);    //显示什么数字
      delay(50);                  //延时
   }

   if(receivedata=='c')
   {
      xianshishuzi(10);          //消隐
          shuziweishu(8);          //第几位显示
      xianshishuzi(2);    //显示什么数字
      delay(50);                  //延时
   }

   if(receivedata=='d')
   {
      xianshishuzi(10);          //消隐
          shuziweishu(8);          //第几位显示
      xianshishuzi(3);    //显示什么数字
      delay(50);                  //延时
   }

//   SBUF = receivedata;        //SBUF作为发送缓冲器

//   while(!TI);                        //等待数据发送完成
//   TI = 0;                                //发送中断标志位复位
}       

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
13条回答
格古洛
1楼-- · 2019-07-15 21:20
 精彩回答 2  元偷偷看……
望着你发槑
2楼-- · 2019-07-16 00:42
格古洛 发表于 2015-7-25 17:14
蓝牙的波特率默认9600~

蓝牙的波特率被调过
34脚是蓝牙模块的哪个脚
我用蓝牙测试软件有问题,用不了
望着你发槑
3楼-- · 2019-07-16 01:13
最新进展,现在怎么办
5U})[7B((9HUQO9)LAOB{UT.png
望着你发槑
4楼-- · 2019-07-16 05:39
xianyoudian 发表于 2015-7-25 20:00
建议用HC05或03,04、06是工业级的

我也不知道这个是零几了
一个型号是fc-114
一个型号是zs-040
百度不到啊
我用的师兄用过的,没有原始资料
望着你发槑
5楼-- · 2019-07-16 07:10
问题已经解决了
wanglumeng
6楼-- · 2019-07-16 07:19
怎么解决的可以透露一下吗?34脚是哪个脚?

一周热门 更多>