全球最实用的IT互联网信息网站!

AI人工智能P2P分享&下载搜索网页发布信息网站地图

当前位置:诺佳网 > 电子/半导体 > 接口/总线/驱动 >

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

时间:2023-06-25 15:38

人气:

作者:admin

导读:基于51单片机的蓝牙模块控制模拟舵机-该模块与单片机采用串口通信,手机连接蓝牙模块,通过无线信号发送数据给蓝牙模块,蓝牙模块收到数据后会把数据通过串口发送给单片机,单...

一、实验原理(如下图)

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

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

图片

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

二、关键代码

/*串口初始化程序*/
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;            //接收中断标志位软件清零
  }
}
温馨提示:以上内容整理于网络,仅供参考,如果对您有帮助,留下您的阅读感言吧!
相关阅读
本类排行
相关标签
本类推荐

CPU | 内存 | 硬盘 | 显卡 | 显示器 | 主板 | 电源 | 键鼠 | 网站地图

Copyright © 2025-2035 诺佳网 版权所有 备案号:赣ICP备2025066733号
本站资料均来源互联网收集整理,作品版权归作者所有,如果侵犯了您的版权,请跟我们联系。

关注微信