51与JDY31蓝牙模块通讯,51驱动JDY31蓝牙APP点灯

51与JDY31蓝牙模块通讯,51驱动JDY31蓝牙APP点灯

  • JDY31蓝牙模块简介
  • 串口配置
  • 主要代码
  • 实验接线
  • 手机APP配置
  • 实验现象
  • 总结
  • JDY31蓝牙模块简介

    本次实验用到是JDY31蓝牙模块,JDY-31 蓝牙基于蓝牙 3.0 SPP 设计,

    点击图片购买

    蓝牙模块是串口通讯,单片机也有串口通讯,我们只需要配置好既可以实现单片机于蓝牙通讯,甚至是实现更多的功能,本文对刚学习51需要制作蓝牙小车的帮助很大

    串口配置

    STC89C52的UART有四种工作模式:
    模式0:同步移位寄存器
    模式1:8位UART,波特率可变(常用)
    模式2:9位UART,波特率固定
    模式3:9位UART,波特率可变
    本次实验配置的是模式1; 8位自动重装

    具体的程序的程序配置可以借助STC官方的下载器,下载器自带一个波特率计算器,按下面的图配置生成复制代码就行

    蓝牙模块默认波特率是9600,所以这里要选择4800倍速

    主要代码

    串口初始化代码:89C52单片机没有AUXR,可以去掉这两句程序,再打开EA和ES中断

    /**
       * @brief					串口初始化9600bps@11.0592MHz
       * @param					无
       * @retval				无
       */
    void UART_Init()		
    {
    	SCON=0x50; 			//8位数据,可变波特率
    	PCON |=0x80; 		//使能波特率倍速位SMOD	
    	TMOD &= 0x0F;		//设置定时器模式
    	TMOD |= 0x20;		//设置定时器模式
    	TL1 = 0xFA;		//设置定时初始值
    	TH1 = 0xFA;		//设置定时重载值
    	ET1 = 0;		//禁止定时器%d中断
    	TR1 = 1;		//定时器1开始计时
    	EA=1;           //开启总中断
    	ES=1;			//开启串口中断
    }
    

    串口发送数据:SBUF是串口数据缓冲寄存器,

    **
       * @brief				串口发送一个字节数据
       * @param				Byte 	要发送一个字节数据
       * @retval			无
       */
    void UART_SendByte(unsigned char Byte)
    {
    	SBUF=Byte;
    	while(TI==0);
    	TI=0;
    }
    

    主要代码

    void main ()
    {
    	UART_Init();  			 //串口初始化
    	while(1)
    	{		
    	}
    }
    
    void UART_Routine() interrupt 4    //串口中断号
    {
    	if(RI==1)
    	{
    		P1=SBUF;			   //接收数据控制P1
    		RI=0;                  //串口接收寄存器置零
    	}	
    }
    

    实验接线

    单片机下载的时候不要连接蓝牙,要先下载程序再连接,否则下载会失败

    单片机 蓝牙模块
    5V VCC
    P3.0 TX
    P3.1 RX
    GND GND

    手机APP配置

    1,在手机商店下载SPP蓝牙串口,本蓝牙模块苹果手机不可用,
    2,点开APP右上角连接对应的蓝牙
    3,在开关这个地方自定义一个按钮,配置如下图:

    配置好之后即可开始操作

    实验现象

    总结

    蓝牙传输的数据存在SBUF寄存器中,对接收到的数据进行处理就可以进行各种操作控制,本文相当于一个串口通讯模板,需要完整工程的可以下方留言

    物联沃分享整理
    物联沃-IOTWORD物联网 » 51与JDY31蓝牙模块通讯,51驱动JDY31蓝牙APP点灯

    发表回复