hc06蓝牙模块接51单片机点亮LED

C语言代码:

/*-----------------------------------------------------------------------------
* 实 验 名  :  串口通信试验 - 蓝牙HC06模块
* 实验说明  :  单片机串口接收数据控制灯亮灭
* 注   意  :  该试验使用的晶振是11.0592
* 接   口  :  单片机的P3^1(TXD)接HC06的RXD  单片机P3^0(RXD)接HC06的TXD  
			  HC06的VCC接3.3V  				HC06的GND接单片机的GND
*******************************************************************************/

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

#define uchar unsigned char
#define uint  unsigned int

uchar over[10] = {0x73,0x75,0x63,0x63,0x65,0x73,0x73,0x66,0x75,0x6c};

//--定义使用的IO--//

sbit LED=P2^0;
sbit LED1=P2^1;


//--声明全局函数--//   
void UsartConfiguration();
void Delay_1ms(uint i);


/********************************************************************
* 名称 : Com_Int()
* 功能 : 串口中断子函数
* 输入 : 无 * 输出 : 无
***********************************************************************/
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
		{
				LED1 =0; //其他情况灯灭
		}
		
	}
		
	for(i=0; i<10; i++)
	{
		SBUF = over[i];   //将要发送的数据放入到发送寄存器
		while(!TI);		    //等待发送数据完成
		TI=0;			        //清除发送完成标志位
		Delay_1ms(1);
	}
	EA = 1;
}

/*******************************************************************************
* 函 数 名       : main
* 函数功能		   : 主函数
* 输    入       : 无
* 输    出       : 无
*******************************************************************************/

void main()
{

	UsartConfiguration();//初始化串口
	
	while(1);	
}
	
/*******************************************************************************
* 函 数 名       : UsartConfiguration()
* 函数功能		   : 设置串口
* 输    入       : 无
* 输    出       : 无
*******************************************************************************/

void UsartConfiguration()
{	
	SCON=0X50;			//设置为工作方式1,8位数据,可变波特率
	TMOD=0X20;			//设置计数器工作方式2
	PCON=0X00;			//波特率不加倍
	TH1=0XFd;		    //计数器初始值设置,9600@11.0592MHz
	TL1=0XFd;
	TR1=1;				//打开计数器
	ES = 1;         	//开串口中断
  	EA = 1;         	//开总中断
}


/********************************************************************
* 名称 : Delay_1ms()
* 功能 : 延时子程序,延时时间为 1ms
* x * 输入 : x (延时一毫秒的个数)
* 输出 : 无
***********************************************************************/
void Delay_1ms(uint i)//1ms延时
{
  uchar x,j;
  
  for(j=0;j<i;j++)
    for(x=0;x<=148;x++);
}

ERROR

上述代码在测试时出现以下错误:

总体上匹配成功,数据也可以发送接收成功,但是发现一个奇怪的问题,有时候发送一个一字节的数据,低四位正常接收,高四位接受异常。
比如HC06发送0x10 ,手机接受为0x30;HC06发送0x73,手机接受为0xb3

别人的解决方法:

我不太清楚那个是对的,我也不知道解决方法。

其他的HC06说明:
https://www.basemu.com/ble_hc_06_pinout.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值