蓝牙模块学习笔记

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
*4,5控制继电器
******************************************************************************/
连接好,单片机上电,此时蓝牙模块上led闪烁,表示尚未连接其他蓝牙设备。此时用手机蓝牙搜索,可以搜索到HC-06.点击连接,输入pin密码则可以连接。
连接好后,利用蓝牙串口助手就可以对蓝牙模块通信了,编程也就可以把蓝牙当作普通串口来对待。
注意编写好程序后,向单片机烧录时,必须将TXD、RXD拔出才能烧写!!!
beep=0;
delay(500);
break;
case '2'://收到字符2,指示灯1灭
led2=1;
send(tmp);
beep=1;
delay(500);
break;
case '3'://收到字符3,指示灯0、1亮
led1=0;
led2=0;
send(tmp);
beep=1;
delay(500);
break;
case '4'://收到字符4,指示灯0、1灭
led1=1;
led2=1;
send(tmp);
break;
case '5'://收到字符5,指示灯3亮
led3=0;
send(tmp);
break;
default: //其他,灯全灭
led1=1;
led2=1;
led3=1;
send(tmp);
主机:HC-06-M , M=master
从机:HC-06-S , S = slaver
串口模块的使用,是不需要驱动的,只要是串口就可以接入,配对完毕即可通信,模块与模
块的通信需要至少2个条件:
1、必须是主机与从机之间
2、必须密码一致(密码:1234)
主机:
记忆最后一次配对过的从机,并只与该从机配对,直到KEY(26脚)高电平触发时放弃记忆,26脚默认应该接低电平。
#include <reg52.h>
#include <intrins.h>
unsigned char tmp;
unsigned int c=0;
sbit led1=P1^0;//指示灯0
sbit led2=P1^1;//指示灯1
sbit led3=P1^2;//指示灯2
sbit beep=P3^2;//蜂鸣器
//发送标志位置0
TI=0;//接收标志位置0
RI=0;
//EA=0;
ES=1;
led1=0;//初始化设置3个指示灯全亮
led2=0;
led3=0;
}
void send(unsigned char a)//单字节数据发送
{//注意:若单片机TXD(P3.1)无上拉能力,必须在P3.1端接上拉电阻。本次测试需要接上拉电阻
}
void main()
{
init();
while(1)
{
if(RI==1) //是否有数据到来
{
RI = 0;
tmp = SBUF; //暂存接收到的数据
ctrl();
}
}
}
void init()//串口初始化
{
ES=0;//关中断
SCON = 0x50; // REN=1允许串行接受状态,串口工作模式1,
配对方式:
主机自动搜索从设备进行配对。
典型方式:在一定条件下,主从之间自动配对
AT模式:
配对前就是AT模式,配对完毕后透明通信
图1是HC-06图片及主要引脚
现在你手中拿到的HC-06引出了四个引脚,分别为VCC、GND、TXD、RXD。四个引脚分别对应单片机的电源5V或3.3V;GND接地;TXD、RXD交叉连接(对应单片机的P3^0,P3^1)。
void init(); //串口初始化
void send(unsigned char a);//单字节发送函数
void ctrl(); //接收处理函数
void delay(unsigned int x)
{
unsigned int i,j;
for(i=x;i>0;i--)
for(j=110;j>0;j--);
}
/***********************************************************
STC89C52RC与HC-06蓝牙连线:
RXD TXD
TXD RXD
其他连线:
P2.0、P2.1、P2.3分别接一个指示灯
***********************************************************/
问题:串口发送字符串时,最后没有标志可寻。可以将字符串接收到数组中,发送数据到12864,检测是否到’\0’,如果检测得到,将标识符flag置为1;串口中断服务程序中,检测到flag为1时,这证明数据显示成功。此时应当清屏!
清屏方法:while(Tem[i]!='\0')
{
Tem[i]='';
i++;
//10位UART(1位起始位,8位数据位,1位停止位,无奇偶校验),波特率可变
TMOD = 0x20; //定时器1工作于方式2,8位自动重载模式,用于产生波特率
TH1=TL1=0xFD; //波特率9600(本次测试采用晶振为11.0592)
PCON &= 0x7f; //波特率不倍增
TR1 = 1;//定时器1开始工作,Hale Waihona Puke Baidu生波特率
beep=1;
delay(500);
}
}
以下是蓝牙接收字符串并向12864显示程序
/*****************************************************************************8
*任广俊
*日期:12.17
*蓝牙接收并显示在12864上,1,2,3控制发光二极管
蓝牙模块学习
刚拿到蓝牙模块,心中有点小激动啊;
民用级:HC-05,HC-06(HC-06-M,HC-06-S)
HC-05-D,HC-06-D(是带底板的模块,主要是用户用于测试和评估)
本文介绍的为HC-06蓝牙串口模块。
蓝牙串口模块用于把串口转换为蓝牙,这种模块工作的时候分为主机和从机,其中偶数命名的型号出厂时就确定了是从机或者是主机,并无法更改。奇数命名的型号可以用户自己通过AT指令修改模块为主机或者从机。
TI=0;
SBUF=a;
while(TI==0);
TI=0;
if(c%2)//发送指示灯标志,每接收一次,此灯亮灭交替
led3=1;
else
led3=0;
c++;
}
void ctrl()//接收处理函数
{
switch(tmp)
{
case '1':
led1=1;//收到字符1,指示灯0灭
send(tmp);
相关文档
最新文档