Loading

蓝牙模块和51单片机的串口通信

蓝牙模块和51单片机的串口通信

运行环境:

❤ 操作系统:Windows 10 x64、安卓手机(含蓝牙APP)

❤ 实验板:普中51-单核-A2单片机(STC89C52RC-40I-PDIP40)

❤ 蓝牙模块:HC-05

❤ IDE:Keil uVision4

❤ 仿真器:setup_x64_2.8.exe

实验目的:通过手机端蓝牙APP控制51单片机D1的亮灭

一、蓝牙通讯

蓝牙通讯工作原理请参考...

二、蓝牙模块和51单片机的接线

蓝牙模块 51单片机 备注
RXD P31(即P3.1 TXD)
TXD P30(即P3.0 RXD)

三、51单片机串口通信

51单片机串口通讯代码

/*-----------------------------------------------------------------------------
* 实验说明     : 单片机串口接收数据控制灯亮灭
* 连接方式     : 
* 注    意     : 该试验使用的晶振是11.0592
*******************************************************************************/

#include<reg52.h>
#include<intrins.h>

#define uchar unsigned char
#define uint  unsigned int

uchar PuZh[20] = "This is ok";

//--定义使用的IO--//
sbit LED=P2^0;

void Delay_1ms(uint i)//1ms延时
{
  	uchar x,j;
  	for(j=0;j<i;j++)
    	for(x=0;x<=148;x++);
}

void Com_Int(void) interrupt 4
{
	uchar i;
  	uchar receive_data;
	
  	EA = 0;
	
  	if(RI == 1) //当硬件接收到一个数据时,RI会置位
	{ 		
		RI = 0;
		receive_data = SBUF;//接收到的数据
		if(receive_data == '1')	 
		{
			LED =0;//接收到字符'1'亮灯
		}
		else
		{
			LED =1; //其他情况灯灭
		}
		
	}
	for(i=0; i<20; i++)
	{
		SBUF = PuZh[i];   //将要发送的数据放入到发送寄存器
		while(!TI);	  //等待发送数据完成
		TI=0;		  //清除发送完成标志位
		Delay_1ms(1);
	}
	EA = 1;
}
	
void UsartConfiguration()
{	
	SCON=0X50;		//设置为工作方式1,8位数据,可变波特率
	TMOD=0X20;		//设置计数器工作方式2
	PCON=0X00;		//波特率不加倍
	TH1=0XFd;		//计数器初始值设置,9600@11.0592MHz
	TL1=0XFd;
	TR1=1;		        //打开计数器
	ES = 1;                 //开串口中断
  	EA = 1;                 //开总中断
}
	
void main()
{
	UsartConfiguration();//初始化串口
	while(1);	
}

在Keil uVision4中编译后得到.hex文件,利用烧写工具将其烧录到51单片机

四、实验结果

操作过程:手机端蓝牙APP发送字符'1',观察51单片机情况;发送其他字符,观察51单片机情况

注意:给51单片机和蓝牙模块供电

手机端蓝牙APP控制

51单片机实物结果:

当手机端蓝牙APP发出字符'1'时,以下图片是实验现象

由实验结果可知,实验现象符合实验目的,实验成功

posted @ 2022-10-30 20:58  eiSouthBoy  阅读(1806)  评论(0)    收藏  举报