基于51单片机的蓝牙模块控制模拟舵机

控制/MCU

1814人已加入

描述

一、实验原理(如下图)

1、该模块与单片机采用串口通信,手机连接蓝牙模块,通过无线信号发送数据给蓝牙模块,蓝牙模块收到数据后会把数据通过串口发送给单片机,单片机收到数据以后,就可以对数据进行处理,完成单片机对外设的控制。

2、此实验需要把蓝牙模块配置为从机模式,若模块出厂默认就是从机模式,就不需要配置了,(如果不知道默认是什么模式,可以询问客服),主从一体的模块,可用AT指令配置成为从机模式就可以了,过程也比较简单,B站上面有很多教程。

51单片机

大致步骤:把单片机和蓝牙模块对应的引脚用导线连接好,下载好程序,给单片机上电,就可以在手机上搜到蓝牙模块发出的无线信号了。

二、关键代码

/*串口初始化程序*/
void Uart_Init()   //9600bps@11.0592MHz
{
  PCON |= 0x80;    //使能波特率加倍  
  SCON = 0x50;    //接收8位数据
  TMOD &= 0x0F;    //清除定时器1模式
  TMOD |= 0x20;    
  TL1 = 0xFA;      //设定初始值
  TH1 = 0xFA;      //设定初始值
  ET1 = 0;    
  TR1 = 1;
  EA = 1;
  ES =1 ;   
}
/*舵机驱动中断服务函数*/
void Timer0() interrupt 1     
{


  TL0 = 0x33;    
  TH0 = 0xFE;         //重新赋计数初值为0.5ms


  count++;          //计次,每500us  count+1
  count%=40;        //周期为20ms


  if(count< PWM_count)
  {                  
    SG_PWM=1;
  }
  else
  {
    SG_PWM=0;
  }
}


/*串口中断服务函数*/
void UART_Routine()  interrupt 4  
{  
  if(RI==1)            //如果接收中断标志位为1
  {  
    P1=SBUF;             //发送的数据SBUF,赋给P1
   if(P1==0X01)           //0x01这个值可以通过蓝牙调试器编辑模式设置
   {
     PWM_count=1;
   }
   if(P1==0X02)          
   {
     PWM_count=2;
   }
   if(P1==0X03)         
   {
     PWM_count=3;
   }
   if(P1==0X04)          
   {
     PWM_count=4;
   }
   if(P1==0X05)          
   {
     PWM_count=5;
   }


    RI=0;            //接收中断标志位软件清零
  }
}
打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分