此文记录HC05蓝牙模块在C51单片机上的学习历程
文章目录
一、硬件连接(1)配置模式下接线(2)正常模式下接线 二、配置模式操作三、正常模式四、使用蓝牙通过蓝牙调试app点灯1.单片机代码烧录与蓝牙连接2.蓝牙调试app配置
一、硬件连接
HC05一共有6个引脚,此实验一般只用到中间四个,即RXD、TXD、GND、VCC
HC05有两种模式,一是正常模式,二是配置模式,一定注意两种模式的接线方法是不同的
无论哪种模式,VCC与GND的接线方法是相同的,即VCC接单片机的5V口(供电电压为3.6V~6V,接到3.3V上是不亮的),GND接单片机的GND,如下所示
(1)配置模式下接线
在配置模式下,单片机通过串口与电脑连接,电脑通过AT指令即可完成对HC05模块的参数配置。此时接线为:
配置模式下HC05的RXD接单片机的RXD,TXD接TXD。
由于博主使用的单片机型号为STC89C52RC,查看原理图得单片机的RXD为p30口,TXD为p31口
则连接如下图所示
(2)正常模式下接线
在正常模式下HC05的RXD接单片机的TXD,TXD接RXD。
二、配置模式操作
使用配置模式接线后,将单片机通过串口连接电脑。若此时给单片机上电,在连接无误的情况下, HC05模块上有灯快速闪烁,大概1s闪两次,此时还未进入配置模式。
给单片机断电,一直按住HC05模块上的小按钮,如下图所示:
在按住按钮的同时给单片机上电,上完电后松开按钮,HC05首先会快速闪烁,在1s后进入慢闪状态,大约2s闪烁一次,此时成功进入配置模式。
打开串口助手,题主这里用的是sscom5.13.1。打开之后配置串口助手,如下图所示,
(1)首先注意串口号是否正确
(2)然后一定要将波特率设置为38400
(此波特率为配置模式的波特率,无论后面通过指令将波特率变为多少,都是调整的正常模式的波特率,配置模式的波特率为38400是不变的)
(3)勾选加回车换行选项(若使用的串口助手无此选项,手动在代码后加上\r\n,例如AT\r\n)
(4)打开串口,在输入框内输入AT,点击发送。若一切正常,则会收到OK,如下图所示。
若没有收到,请检查接线,或者中奖了,单片机/模块有问题 。
接下来可以使用AT指令对模块进行配置,部分AT指令如下
AT+ROLE=0 (蓝牙模块设为从机,此时只可以被搜索)AT+CMODE=1 (蓝牙模块可以和任意设备连接)AT+UART=9600,0,0 (设置波特率9600)AT+NAME=HC05 (设置蓝牙的名字为HC05,手机蓝牙搜索时就找这个名字)AT+PSWD=1234 (设置密码,手机蓝牙串口APP连接蓝牙模块,需要输入密码)以上,蓝牙串口通通返回OK 。
例如改变波特率为9600:
三、正常模式
将接线按照正常模式接入,即RXD对TXD,TXD对RXD。给单片机上电,HC05会快速闪烁。下载一个手机蓝牙调试app(题主使用的为Bluetooth spp pro,其他在应用市场上搜索的大部分也可以使用),搜索到自己的设备
点击连接,输入密码(一般默认为1234,可以在配置模式下通过AT指令修改自己的连接密码),然后连接成功。
四、使用蓝牙通过蓝牙调试app点灯
1.单片机代码烧录与蓝牙连接
单片机代码如下:
UART_init () 配置文件
#include <REGX52.H>void UART_init()//9600bps@11.0592MHz{PCON |= 0x80;//使能波特率倍速位SMODSCON = 0x50;//8位数据,可变波特率 TMOD &= 0x0F;//清除定时器1模式位TMOD |= 0x20;//设定定时器1为8位自动重装方式TL1 = 0xFA;//设定定时初值TH1 = 0xFA;//设定定时器重装值ET1 = 0;//禁止定时器1中断TR1 = 1;//启动定时器1ES=1;EA=1;}
.h文件
#ifndef __UART_H__#define __UART_H__void UART_init();#endif
main.c文件
#include <REGX52.H>void main(){UART_init();P2=0x00;while(1){}}void UART_Routine() interrupt 4{if (RI==1){P1=SBUF;//将SBUF值赋值给P1if (P1==0x01){P2=~0x80;RI=0;}else if (P1==0x02){P2=~0x40;RI=0;}}}
将代码烧录进单片机后,给单片机上电,此时HC05快速闪烁,打开手机app进行蓝牙连接,连接成功后HC05进入慢闪(大约5s快速闪两次)。
2.蓝牙调试app配置
连接成功后选择键盘模式,选择配置键盘值
配置两个按键的键盘值
!!! 别忘记选择IO模式,选择为hex模式
,若选错模式则实验会毫无反应
(若选择为ascii模式,则代码需要改动,例如键盘发送01给单片机,在hex模式下单片机收到的值为0x01,在ascii模式下收到的为0x0031,具体转换方法请查看acii码表)
配置结束后,点击保存键盘配置。
按下1键,单片机led D8闪烁;按下2键,单片机led D7闪烁,此时实验成功。