文章目录
文章目录
一、连线
二、配置模式
三、代码编写
一、连线
文章目录
一、连线
二、配置模式
三、代码编写
一般我们只用VCC,GND,TXD,RXD这几个接口
VCC->5V
GND->GND
TXD->RXD
RXD->TXD
我们需要遵循一个原则,交叉连接,TXD和RXD连接,RXD和TXD连接
其他接口可用可不用
二、配置模式
蓝牙模块HC-05有两种模式:
(1)配置模式:用来设置主从机、波特率、密码、连接等一系列信息(使用AT指令);其中需要我们设置的是波特率,主从机以及密码。其具有断电保存的功能,所以我们一般只需要配置一次。
我们刚拿到HC-05蓝牙模块就需要配置模式,我们可以使用USB-TTL或单片机与HC-05蓝牙模块连接,两种连接方式与上面相同。
连接好线后按住上面的小按钮上电,进入配置模式,如果进入配置模式后,HC-05蓝牙模块的LED会2s闪一次。
打开串口助手sscom32,波特率设置38400,勾选发送新行。我们发送AT,如果发回了OK那么你的板子是好的,如果不是的话先检查,线是否连接正确,是否进入了配置模式(2s闪一次),检查后还是一样的情况,那么恭喜你中奖了,板子时坏的!
确认串行调试工具和蓝牙模块可以正常通信后,发送以下指令
-
AT+ROLE=0 (蓝牙模块设为从机,此时只可以被搜索)
AT+CMODE=1 (蓝牙模块可以和任意设备连接)
AT+UART=9600,0,0 (设置波特率9600)
AT+NAME=HC05 (设置蓝牙的名字为HC05,手机蓝牙搜索时就找这个名字)
AT+PSWD=”1234“ (设置密码,手机蓝牙串口APP连接蓝牙模块,需要输入密码,后面一定要带上”“)
以上,蓝牙串口通通返回OK 。
此时,配置到这里,我们已经可以完成本次实验的功能了。
断电,再上电,进入正常模式,使用手机端蓝牙串口APP我推荐 SPP蓝牙串口,大家自由下载,具体操作也相同:开蓝牙串口,搜索到HC05,然后点击连接,输入1234的密码,然后连接成功。
串口助手sscom32自取链接:https://pan.baidu.com/s/1lqZkXvAxcnpZM3LXn061zw
提取码:1234
(2)正常模式
设置完配置模式一系列参数后,我们便可以进入正常模式,将蓝牙模块和另一个拥有蓝牙模块的设备进行通信,从而传递数据。文章来源:https://uudwc.com/A/XZNo
三、代码编写
1.简单的红外控制LED灯
代码如下(示例):文章来源地址https://uudwc.com/A/XZNo
// 51单片机
#include<reg52.h>
typedef unsigned int uint;
typedef unsigned char uchar;
sbit led1 = P2^1; //根据各位实际的单片机上的小灯硬件连接,随便选择一个即可
uint pass = 0; //传递数据位
void UART_init() //设置串行通信 本晶振为11.0592MHZ,其他的就自己算一下应该设置多少
{
TMOD = 0x20;
TH1 = 0xfd;
TL1 = 0xfd; //波特率9600
SM0 = 0;
SM1 = 1; // 串口工作方式1 10位异步
REN = 1; //串口允许接收
TR1 = 1;
EA = 1;
ES =1 ; //串口中断
}
int main()
{
UART_init(); //波特率9600
while(1)
{
if(pass == 0x31)
led1 = 0; //本单片机P2^1为小灯
else
led1 = 1;
if(pass == 0x41)
P2 = 00; //本单片机P2^1为小灯
else
led1 = 1;
}
}
void UART_INTERRUPT() interrupt 4
{
pass = SBUF;
RI = 0;
SBUF = pass; //手机和蓝牙模块通讯时,我们可以打开电脑串口调试工具查看我们的发送值)
while(!TI);
TI = 0;
}
代码如下(示例):文章来源地址https://uudwc.com/A/XZNo
// 51单片机
#include<reg52.h>
typedef unsigned int uint;
typedef unsigned char uchar;
sbit led1 = P2^1; //根据各位实际的单片机上的小灯硬件连接,随便选择一个即可
uint pass = 0; //传递数据位
void UART_init() //设置串行通信 本晶振为11.0592MHZ,其他的就自己算一下应该设置多少
{
TMOD = 0x20;
TH1 = 0xfd;
TL1 = 0xfd; //波特率9600
SM0 = 0;
SM1 = 1; // 串口工作方式1 10位异步
REN = 1; //串口允许接收
TR1 = 1;
EA = 1;
ES =1 ; //串口中断
}
int main()
{
UART_init(); //波特率9600
while(1)
{
if(pass == 0x31)
led1 = 0; //本单片机P2^1为小灯
else
led1 = 1;
if(pass == 0x41)
P2 = 00; //本单片机P2^1为小灯
else
led1 = 1;
}
}
void UART_INTERRUPT() interrupt 4
{
pass = SBUF;
RI = 0;
SBUF = pass; //手机和蓝牙模块通讯时,我们可以打开电脑串口调试工具查看我们的发送值)
while(!TI);
TI = 0;
}