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
#include #define uchar unsigned char
#define uint unsigned intuchar 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; //设置计数器工作方式2PCON=0X00; //波特率不加倍TH1=0XFd; //计数器初始值设置,9600@11.0592MHzTL1=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
别人的解决方法:
- 解释1
- 解释2
我不太清楚那个是对的,我也不知道解决方法。
其他的HC06说明:
https://www.basemu.com/ble_hc_06_pinout.html
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
