《2023年蓝牙模块学习笔记.pdf》由会员分享,可在线阅读,更多相关《2023年蓝牙模块学习笔记.pdf(13页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、学习好资料 欢迎下载 蓝牙模块学习 刚拿到蓝牙模块,心中有点小激动啊;民用级: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、模 块的通信需要至少 2 个条件:1、必须是主机与从机之间 2、必须密码一致 (密码:1234)主机:记忆最后一次配对过的从机,并只与该从机配对,直到 KEY(26 脚)高电平触发时放弃记忆,26 脚默认应该接低电平。配对方式:主机自动搜索从设备进行配对。典型方式:在一定条件下,主从之间自动配对 AT 模式:配对前就是 AT 模式,配对完毕后透明通信 学习好资料 欢迎下载 图 1 是 HC-06 图片及主要引脚 现在你手中拿到的 HC-06引出了四个引脚,分别为 VCC、GND、TXD、RXD。四个引脚分别对应单片机的电源 5V 或 3.3V;GND 接地;TXD、RXD 交叉连接(对应单片机
3、的P30,P31)。连接好,单片机上电,此时蓝牙模块上 led 闪烁,表示尚未连接其他蓝牙设备。此时用手机蓝牙搜索,可以搜索到 HC-06.点击连接,输入 pin 密码则可以连接。连接好后,利用蓝牙串口助手就可以对蓝牙模块通信了,编程也就可以把蓝牙当作普通串口来对待。注意编写好程序后,向单片机烧录时,必须将 TXD、RXD 拔出才能烧写!问题:串口发送字符串时,最后没有标志可寻。可以将字符串接收到数组中,发送数据到12864,检测是否到 0 ,如果检测得到,将标识符 flag 置为 1;串口中断服务程序中,检测到 flag 为 1 时,这证明数据显示成功。此时应当清屏!清屏方法:while(T
4、emi!=0)Temi=;i+;数命名的型号出厂时就确定了是从机或者是主机并无法更改奇数命名的至少个条件必须是主机与从机之间必须密码一致密码主机记忆最一次配对模式配对前就是模式配对完毕透明通信学习好资料欢迎下载图是图片学习好资料 欢迎下载 /*STC89C52RC 与 HC-06蓝牙连线:RXD TXD TXD RXD 其他连线:P2.0、P2.1、P2.3 分别接一个指示灯*/#include#include unsigned char tmp;unsigned int c=0;sbit led1=P10;/指示灯 0 sbit led2=P11;/指示灯 1 sbit led3=P12;/
5、指示灯 2 sbit beep=P32;/蜂鸣器 void init();/串口初始化 void send(unsigned char a);/单字节发送函数 void ctrl();/接收处理函数 void delay(unsigned int x)unsigned int i,j;for(i=x;i0;i-)for(j=110;j0;j-);void main()init();while(1)if(RI=1)/是否有数据到来 RI=0;tmp=SBUF;/暂存接收到的数据 ctrl();数命名的型号出厂时就确定了是从机或者是主机并无法更改奇数命名的至少个条件必须是主机与从机之间必须密码一致
6、密码主机记忆最一次配对模式配对前就是模式配对完毕透明通信学习好资料欢迎下载图是图片学习好资料 欢迎下载 void init()/串口初始化 ES=0;/关中断 SCON=0 x50;/REN=1 允许串行接受状态,串口工作模式 1,/10 位 UART(1 位起始位,8 位数据位,1 位停止位,无奇偶校验),波特率可变 TMOD=0 x20;/定时器 1 工作于方式 2,8 位自动重载模式,用于产生波特率 TH1=TL1=0 xFD;/波特率 9600(本次测试采用晶振为 11.0592)PCON&=0 x7f;/波特率不倍增 TR1=1;/定时器 1 开始工作,产生波特率 /发送标志位置 0
7、 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端接上拉电阻。本次测试需要接上拉电阻 TI=0;SBUF=a;while(TI=0);TI=0;if(c%2)/发送指示灯标志,每接收一次,此灯亮灭交替 led3=1;else led3=0;c+;void ctrl()/接收处理函数 数命名的型号出厂时就确定了是从机或者是主机并无法更改奇数命名的至少个条件必须是主机与从机之间
8、必须密码一致密码主机记忆最一次配对模式配对前就是模式配对完毕透明通信学习好资料欢迎下载图是图片学习好资料 欢迎下载 switch(tmp)case 1:led1=1;/收到字符 1,指示灯 0 灭 send(tmp);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=
9、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;delay(500);数命名的型号出厂时就确定了是从机或者是主机并无法更改奇数命名的至少个条件必须是主机与从机之间必须密码一致密码主机记忆最一次配对模式配对前就是模式配对完毕透明通信学习好资料欢迎下载图是图片学习好资料 欢迎下载 以下是蓝牙接收字符串并向 12864 显示程序 /*8*任广俊*日期:12.17*蓝牙接收并显示在 12864 上,1,
10、2,3 控制发光二极管*4,5 控制继电器*/#include#include#define uint unsigned int#define uchar unsigned char#define LCD_data P0 sbit LCD_EN=P34;/液晶使能 1 使能,0 使不能 sbit LCD_RS=P35;/寄存器选择 1 数据,0 命令 sbit LCD_RW=P36;/液晶读写控制 1 读出,0 写入 sbit LCD_PSB=P37;/串行口控制 1 并行,0 串行 sbit led1=P10;sbit led2=P11;sbit led3=P12;sbit beep=P32
11、;/蜂鸣器 sbit jdq=P16;/继电器 uchar code dis1=I Love MCU!;uchar code dis2=单片机学习;uchar Tem20;uchar dis38;unsigned char a=0;/定义临时变量 uchar flag,flag2=0;uchar temp,i,c;void delay(uint x)uint m,n;for(m=x;m0;m-)数命名的型号出厂时就确定了是从机或者是主机并无法更改奇数命名的至少个条件必须是主机与从机之间必须密码一致密码主机记忆最一次配对模式配对前就是模式配对完毕透明通信学习好资料欢迎下载图是图片学习好资料 欢迎
12、下载 for(n=110;n0;n-);/*12864 液晶显示*/写指令:RS=L;RW=L;E=高脉冲;D0-D7=指令码 void write_cmd(uchar cmd)LCD_RS=0;LCD_RW=0;LCD_EN=0;P0=cmd;delay(5);LCD_EN=1;delay(5);LCD_EN=0;/写数据到 LCD:RS=H;RW=L;E=高脉冲 D0-D7数据 void write_dat(uchar dat)LCD_RS=1;LCD_RW=0;LCD_EN=0;P0=dat;delay(5);LCD_EN=1;delay(5);LCD_EN=0;/设定显示位置 void
13、 lcd_pos(uchar x,uchar y)uchar pos;if(x=0)x=0 x80;else if(x=1)x=0 x90;else if(x=2)x=0 x88;else if(x=3)x=0 x98;数命名的型号出厂时就确定了是从机或者是主机并无法更改奇数命名的至少个条件必须是主机与从机之间必须密码一致密码主机记忆最一次配对模式配对前就是模式配对完毕透明通信学习好资料欢迎下载图是图片学习好资料 欢迎下载 pos=x+y;write_cmd(pos);/显示地址 void lcd_init()/lcd 初始化 LCD_PSB=1;/并口方式 write_cmd(0 x30);
14、/基本指令喜僮?delay(5);write_cmd(0 x0C);/显示开关光标 delay(5);write_cmd(0 x01);/清除 lcd 显示内容 delay(5);/*/void BT_init()/蓝牙串口初始化 ES=0;/关中串口中断 SCON=0 x50;/REN=1 允许串口接收状态,串口工作方式 1 /10 位 UART(1 起始位,8 数据位,1停止位?,无奇偶校检 TMOD=0 x20;/定时器 1,工作方式 2 TH1=TL1=0 xFD;/设置波特率 9600 PCON&=0 x7f;/波特率不倍增 TR1=1;/允许串口中断 TI=0;/发送标志 0 RI
15、=0;/接收标志 0 ES=1;EA=1;/开总中断 led1=0;/初始化为全亮 led2=0;led3=0;void send(unsigned char a)/单字节数据发送 数命名的型号出厂时就确定了是从机或者是主机并无法更改奇数命名的至少个条件必须是主机与从机之间必须密码一致密码主机记忆最一次配对模式配对前就是模式配对完毕透明通信学习好资料欢迎下载图是图片学习好资料 欢迎下载 TI=0;SBUF=a;while(TI=0);TI=0;write_dat(a);if(c%2)/发送指示灯 led3=1;delay(500);led3=0;c+;void main()BT_init();
16、/Bluetooth 初始化 lcd_init();/液晶显示初始化 while(1)/*液晶显示区*/write_cmd(0 x01);/清除 lcd 显示内容 lcd_pos(0,0);/向第一行首位置写数据 i=0;while(dis1i!=0)write_dat(dis1i);i+;lcd_pos(1,0);/向第二行首位子写数据 i=0;数命名的型号出厂时就确定了是从机或者是主机并无法更改奇数命名的至少个条件必须是主机与从机之间必须密码一致密码主机记忆最一次配对模式配对前就是模式配对完毕透明通信学习好资料欢迎下载图是图片学习好资料 欢迎下载 while(dis2i!=0)write_
17、dat(dis2i);i+;delay(10);lcd_pos(2,0);/向第二行首位子写数据 i=0;while(Temi!=0)write_dat(Temi);i+;flag=1;/void UART_SER(void)interrupt 4/串口中断服务程序 while(RI)/接收到数据 if(flag=1)/字符串发送完毕 flag=0;a=0;/数据标志清零 i=0;/数据清零 while(Temi!=0)/向 lcd 写空格 Temi=;i+;数命名的型号出厂时就确定了是从机或者是主机并无法更改奇数命名的至少个条件必须是主机与从机之间必须密码一致密码主机记忆最一次配对模式配对前
18、就是模式配对完毕透明通信学习好资料欢迎下载图是图片学习好资料 欢迎下载 RI=0;/清除标志位 Tema+=SBUF;/读取缓冲区的值 AT 指令集 进入AT 指令的方法:给模块上电,不配对的情况下,就是AT 模式了。指令间隔1S 左右。以上的RXD和TXD接错了,P30连接TXD,P3。1连接RXD 数命名的型号出厂时就确定了是从机或者是主机并无法更改奇数命名的至少个条件必须是主机与从机之间必须密码一致密码主机记忆最一次配对模式配对前就是模式配对完毕透明通信学习好资料欢迎下载图是图片学习好资料 欢迎下载 出厂参数:波特率9600N81,名字linvor,密码1234 1、测试通讯 发送:AT
19、(返回OK,一秒左右发一次)返回:OK 2、改蓝牙串口通讯波特率 发送:AT+BAUD1 返回:OK1200 发送:AT+BAUD2 返回:OK2400 1-1200 2-2400 3-4800 4-9600(默认就是这个设置)5-19200 6-38400 7-57600 8-115200 9-230400 A-460800 数命名的型号出厂时就确定了是从机或者是主机并无法更改奇数命名的至少个条件必须是主机与从机之间必须密码一致密码主机记忆最一次配对模式配对前就是模式配对完毕透明通信学习好资料欢迎下载图是图片学习好资料 欢迎下载 B-921600 C-1382400 设置超过115200 后
20、用电脑无法使用,要用单片机编程于高于115200 才能使用此波特 率和重新发AT 命令设低波特率 用 AT 命令设好波特率后,下次上电使用不需再设,可以掉电保存波特率 3、改蓝牙名称 发送:AT+NAMEname 返回:OKname 参数name:所要设置的当前名称,即蓝牙被搜索到的名称。20 个字符以内。例:发送AT+NAMEbill_gates 返回OKname 这时蓝牙名称改为bill_gates 参数可以掉电保存,只需修改一次。PDA 端刷新服务可以看到更改后的蓝牙名称,名字 不可超过20 个字符。4、改蓝牙配对密码 发送:AT+PINxxxx 返回:OKsetpin 参数xxxx:所
21、要设置的配对密码,4 个数字,此命令可用于从机或主机。从机是适配器或手 机弹出要求输入配对密码窗口时,手工输入此参数就可以连接从机。主蓝牙模块搜索从机后,如果密码正确,则会自动配对,主模块除了可以连接配对从模块外,其他产品包含从模块的 时候也可以连接配对,比如含蓝牙的数码相机,蓝牙GPS,蓝牙串口打印机,等等,特别地,蓝牙GPS 为典型例子 例:发送:AT+PIN8888 返回:OKsetpin 这时蓝牙配对密码改为8888,模块在出厂时的默认配对密码是1234。参数可以掉电保存,只需修改一次。5、无校验设置指令:(V1.5 版后支持)AT+PN(默认就是这个设置)6、偶校验设置指令:(V1.5 版后支持)AT+PE 7、奇校验设置指令:(V1.5 版后支持)AT+PO 8、获取AT 指令版本命令:AT+VERSION 返回 LinvorV1.n 则为正品 数命名的型号出厂时就确定了是从机或者是主机并无法更改奇数命名的至少个条件必须是主机与从机之间必须密码一致密码主机记忆最一次配对模式配对前就是模式配对完毕透明通信学习好资料欢迎下载图是图片
限制150内