目录
蓝牙介绍
HC05蓝牙模块
HC05参数
HC05引脚
各个引脚功能
HC05模块的作用
工作模式
配置模式
引脚接线
用AT指令进行配置
常用的AT指令
正常模式
测试步骤
烧录的程序
前言:
keil文件
蓝牙介绍
- 蓝牙:Bluetooth,其是低成本的、近距离的无线通信;一般距离在10m以内,其是位于固定和移动设备之间建立通信环境提供的一种无限技术连接。
- 蓝牙技术在2.4GHz的波段运行,这个波段是一种无需申请许可证的,用于工业,科技医学等领域的无线电波段。
HC05蓝牙模块
前言:
- 我们为了利用蓝牙实现无线通信,需要有一个具备蓝牙功能的模块。
- HC05是一款高性能的主从一体蓝牙串口模块,可以同各种蓝牙功能的电脑、蓝牙主机、手机等智能中端进行配对,该模块支持非常宽的波特率(4800——1382400)并兼容5V或3.3V单片机系统,使用非常灵活方便
HC05参数
注意:HC05蓝牙模块出场默认烧录的就是9600的波特率,默认为从机模式。
HC05引脚
注意:从图中可以看出,蓝牙模块一共有6个引脚,经过测试单片机只需要使用图中记得这4个引脚即可。
各个引脚功能
注意:最后一个STA引脚配对状态输出我们一般不连,因为通过手机就可以看出配对成功与否了。
HC05模块的作用
- HC05蓝牙模块相当于一个中转,手机发出的数据通过蓝牙模块接收到后又传到了51单片机的RXD串口;51单片机TXD串口发过来的数据通过蓝牙接收后又传给了手机。
- 手机和蓝牙模块利用的是蓝牙和蓝牙的无线通信,蓝牙模块和51单片机利用的是串口通信;因此,蓝牙模块的发送引脚要接单片机的接收引脚,蓝牙模块的接收引脚要接单片机的发送引脚。
工作模式
配置模式
前言:
- 配置模式用来设置主从机、波特率、密码、连接等一系列信息(使用AT指令)其中需要我们设置的是波特率,主从机以及密码。其具有断电保存的功能,所以我们一般只需要配置一次。
- 进入配置模式需要使用USB转TTL模块
引脚接线
- 蓝牙VCC:接电源(3.3V——5V)
- 蓝牙GND:接地
- 蓝牙TXD:接在usb转TTL模块的RXD
- 蓝牙RXD:接在usb转TTL模块对应的TXD上
- 蓝牙EN:接在3.3V电源
注意:进入配置模式后,灯每2秒闪烁一次。
用AT指令进行配置
前言:
- 打开安可信串口调试助手,选好自己使用的串口、将波特率设置为配置模式固定的波特率38400,将发送信行选项勾选后就可以发送AT指令了。
- 我们之后设置的波特率是正常模式的波特率,若我们再次进入配置模式,那么配置模式波特率还是38400
常用的AT指令
- AT:检查串口是否正常工作
- AT+ORGL:恢复出厂设置,若把模块设置乱了,使用此命令恢复默认值
- AT+ROLE=设置内容:设置蓝牙模块为主机/推荐从机(0为从机,1为主机)
- AT+CMODE=1:设置蓝牙模块可以与任意设备连接
- AT+UART=波特率,0,0:设置正常连接模式蓝牙波特率,一般为9600
- AT+NAME=蓝牙名称:设置蓝牙模块蓝牙名称,如HC-05
- AT+PSWD=蓝牙密码:设置蓝牙的连接密码,如1234
注意:
- 对于后面有=(也就是有配置选项的将=及后面的配置改为?就可以对该信息进行查询)
- 模块配置具有断电保存的功能,所以我们一般只需要配置一次。
- 使用该蓝牙模块时,推荐从上往下设置(将命令一步步执行)
正常模式
前言:当设置完配置模式一系列参数后,我们便可以进入正常模式,将蓝牙模块和另一个拥有蓝牙模块的设备进行通信,从而传递数据
测试步骤
- 要想使用蓝牙模块,提前你必须把程序写进单片机后,拔掉串口跳线帽后再连接蓝牙模块,因为电脑与单片机和蓝牙连接的单品机串口是同一个串口,会出现冲突
- 关于引脚接线和上面配置的引脚接线一样,只不过将usb转ttl模块换位51单片机,将蓝牙EN模块不接而已。
- 烧录好的单片机连接HC05模块接好线并打开后会出现灯一直闪烁,就表示等待连接
- 使用蓝牙配对前,先要将手机打开蓝牙,手机再打开SPP蓝牙串口软件进行搜索,找到设备后点击配对,然后输入自己设置的配对密码后和蓝牙模块配对成功
- 配对成功后的蓝牙模块的红灯不再闪亮,并且可以通过手机向单片机发送数据进而控制单片机。
烧录的程序
前言:
- 需求:利用蓝牙调试助手发送数据的方式,手机控制P2各个LED灯的亮灭,同时在调试器中展示向单片机发送的数据。
- 显示接收和发送两个部分,接收采用接收中断的行式来接收数据,当接收到数据以后我们将接收到的数据发回到上位机。
- P2接口控制LED灯,而LED等采用共阳极连接,你需要引脚给他低电平他才亮。
keil文件
#include <regx52.h>
unsigned char dat=0,flag=0;
void initscon(){
SCON=0x50; //8位异步通信方式,允许接收数据
TMOD=0x20; //配置波特率发生器T1,工作方式为2
TH1=0xFD; //重置TL1
TL1=0xFD; //设置初值
ES=1; //开启串口中断
EA=1; //开启总中断
TR1=1; //打开波特率发生器T1
}
void main(){
initscon();
while(1){
if(flag){
SBUF=dat; //向串口助手发送数据
flag=0;
}
}
}
void scon_isr() interrupt 4
{
if(TI){
TI=0; //数据发送完清TI
}
if(RI){
RI=0;
dat=SBUF; //接收串口助手发送的值
switch(dat){
case 1:P2_0=~P2_0;break;
case 2:P2_1=~P2_1;break;
case 3:P2_2=~P2_2;break;
case 4:P2_3=~P2_3;break;
case 5:P2_4=~P2_4;break;
case 6:P2_5=~P2_5;break;
case 7:P2_6=~P2_6;break;
case 8:P2_7=~P2_7;break;
default:P2=0xff;
}
flag=1;
}
}