蓝牙通信问题

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;                                //发送中断标志位复位
}       

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。