蓝牙模块学习笔记(1)

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