手机与52单片机通过蓝牙JDY-31模块实现串口通信

什么是串口通信?

就是可以同时收发的通信方式,就比如:

        A,B栋有两扇门,T门,R门,T门只能出不进,R门只进不出。

有两座桥把他们交叉连接起来了,那如果我要从A栋去B栋怎么去呢?

是不是就要在A栋从T门出来再到B栋R门进去?

那我从B栋去A栋是不是也是这样?

对!

R门就是串口通信中的===RXD

T门就是串口通信中的===TXD

发接收,收连发,一发一收,一收一发互不干扰!这就是串口通信!

那单片机怎么与蓝牙模块串口通信呢?

JDY-31蓝牙模块:

        小桥精悍!它能干什么,当手机或者其他设备连接上了它,当告诉他你要发送什么数据的时候,他就会自动把数据接收并发给单片机!

52单片机:

那它如何接收数据?

单片机中自带一个UART!那又什么东西呢?

        当接收到数据会把数据自动存在一个位置,当要发一个数据只需要将要发的数据放到一个位置他便会自动发送!

知道这些那手机与单片机是不是就很容易实现了?

第一:配置好蓝牙模块

        JDY—31信号蓝牙模块在默认状态下基本上不用配置,直接连接即可(密码1234)

如果需要配置的话,将蓝牙模块与出口调试助手

第二:JDY—31将蓝牙模快与52单片机串口连接好

如图:RXD与TXD相连接

 

8d8607ca84654220a0a3a72304f3591a.jpeg

 

第三:配置好单片机UART定时器

如图:使用STC-ISP软件找到波特率计算器然后会自动计算好并配置好

8711a637a7ce4064bec7f0baafec16ad.png

 当接收到数据后UART会触发中断,然后需要响应,进行接收数据读取

void UART_Routine() interrupt 4
{
	//因为接收数据发送数据都会触发中断
	//所以需要进行判断是接收中断再触发程序
	if(RI==1)
	{
		RI=0;
		RI_Byte=SBUF;	//将接收到的数据给一个变量就行数据处理	
	}
}

第4:手机连接蓝牙,再下载一个软件蓝牙调试器,

注意!当以上步骤完成后,蓝牙模块led在闪烁时,将手机蓝牙打开,

        并打开蓝牙调试助手,然后去手机设置里使用手机蓝牙搜索模块蓝牙,当搜索到后不要点连接!!!切换到蓝牙调试助手,这时软件才会出现模块蓝牙,然后连接后切换到对话模式那个界面发送数据,单片机便可以接收了。

         因为看不到单片机数据,所以可以使用STC调试器软件里面的串口调试助手进行观察,是否接收到数据。

d8f6fbc60807484a857c252c6fdaba81.jpeg

 

4步即可完成!

注意!注意!注意!

手机蓝牙调试器发送的数据是ASCII码数据,在进行数据判断时不能直接进行判断,需要进行数据转换,或者判断条件改变!!!

完整代码如下:

#include <REGX52.H>
#include "delay.h"

unsigned char RI_Byte;

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

//发送一位数据
void Uart_SendByte(unsigned char Byte)
{
	SBUF=Byte;			//将要发送的数据放在缓存区(SBUF)
	while(TI==0);		//因为数据不是立刻发送,所以需要检查是是否发送了数据
	TI=0;				//已经发送了数据就关闭标志位额,也就是软件置零
}

void main()
{
	Uart_Init();
	while(1)
	{
		if(RI_Byte==0x31){P2=0;}		//进行数据判断符合并作出反应
		if(RI_Byte==0x32){P2=0xFF;}
	}
}

void UART_Routine() interrupt 4
{
	//因为接收数据发送数据都会触发中断
	//所以需要进行判断是接收中断再触发程序
	if(RI==1)
	{
		RI=0;
		RI_Byte=SBUF;	//将接收到的数据给一个变量就行数据处理	
	}
}

 

 

物联沃分享整理
物联沃-IOTWORD物联网 » 手机与52单片机通过蓝牙JDY-31模块实现串口通信

发表评论