单片机交流
直播中

李辉

7年用户 1323经验值
私信 关注
[问答]

如何实现51单片机与HC-05蓝牙模块之间的通讯?

如何实现51单片机与HC-05蓝牙模块之间的通讯?

回帖(1)

孔德羲

2021-10-21 16:18:02
我也是刚刚实现单片机和蓝牙模块简单通讯,现在趁热打铁一步一步详细记载我是怎么实现得。废话不多说 冲!!!
知识储备:
首先实现他们之间的通讯只需要会串口通讯就行了。
基本原理:

就是手机给蓝牙发数据 蓝牙在通过TXD给单片机 单机用串口RXT到命令
如何接线

我所用的蓝牙模块是HC-05 一共有6个引脚 在我实现通讯只用了4引脚(RXD,TXD,GND,VCC)好的 这个蓝牙模块里面有两种模式,两种模式,两种模式,这两种模式的连接线是不一样的





- 蓝牙设置模式
第一种模式是蓝牙设置模式:简单的说就是给设置名字 密码 波特率等等
接线:VCC–VCC GND–GND RXD–单片机的RXD(P3.0) TXD–单片机的TXD(P3.1).就完成了。
- 通讯模式
第二种模式就是通讯模式:简单的说就是我们手机给蓝牙发数据 这就是通讯模式
接线:VCC–VCC GND–GND RXD–单片机的TXD(P3.1) TXD–单片机的RXD(P3.0).就是跟上面相反。
线连接完了我们就可以通讯的 没错 就这么简单
通讯之前 还得先了解蓝牙两种模式
蓝牙两种模式

第一种模式是蓝牙设置模式



  • 蓝牙设置模式
    为了证明这个蓝牙有没有坏 我们就可以先进入设置模式
    现在进入设置模式 就是:在连接蓝牙电源之前把蓝牙上面的黑色按钮按下 按下 按下,在连接电源 这是你会发现有个蓝色的灯是2秒钟闪一次 好的 那说明你已经成功了。在需要串口调试工具提取码:xici





1.打开串口 2.勾选发送新行3.发送 AT 若返回ok 说明就很ok 若没有返回ok那恭喜你 中奖了 退货吧 前提是线要按照第一种连接方法。返回不是ok说明改下波特率就行


2.确认串行调试工具和蓝牙模块可以正常通信后,发送以下指令


AT+ROLE=0 (蓝牙模块设为从机,此时只可以被搜索)
AT+CMODE=1 (蓝牙模块可以和任意设备连接)
AT+UART=9600,0,0 (设置波特率9600)
AT+NAME=HC05 (设置蓝牙的名字为HC05,手机蓝牙搜索时就找这个名字)
AT+PSWD=1234 (设置密码,手机蓝牙串口APP连接蓝牙模块,需要输入密码)
以上,蓝牙串口通通返回OK 。


断电,再上电,进入通讯模式 注意线要按照要按照第二种接法


第二种蓝牙通信模式


通信模式


进入蓝牙模式 灯会一秒钟闪两下 手机下载一个appSPP蓝牙串口。 打开软件连接蓝牙 连接成功 灯会变成连闪两下 好的现在可以通讯了。为了看出效果 写一些逻辑代码即可


代码模块
#include
unsigned char Value;


//注意我这是11.0592MHz晶振 你们看看自己是多少兆的
void UART_init()   //9600bps@11.0592MHz
{
        PCON |= 0x80;                //使能波特率加倍       
        SCON = 0x50;                //8位数据
        TMOD &= 0x0F;                //清除定时器1模式
        TMOD |= 0x20;                //设定定时器8为自动
        TL1 = 0xFA;                        //设定初始值
        TH1 = 0xFA;                        //设定初始值
        ET1 = 0;               
    TR1 = 1;
    EA = 1;
    ES =1 ;        
}




void main()
{
        Uart_Init()        ;
        while(1)
        {
                if(Value==0x31)
                {
                        P2_1=1;
                }
        }
}
void UART_Routine()  interrupt 4
{


        if(RI==1)
        {       
                P2_1=0;
                Value=SBUF;
                RI=0;
        }
               
}


编译 下载程序即可 用实际发送任意为开灯 发送0x31是关灯 灯在P2_1口


第一次发表,经验不足,还望多多包涵,之后学习其他的一些模块也会慢慢更新,希望得到大家的支持!!!!!!你们的支持是我最大的动力!!!!!
举报

更多回帖

发帖
×
20
完善资料,
赚取积分