• 51单片机 HC05蓝牙模块


    一、注意事项

    1、烧写程序时,要把蓝牙tx,rx信号线拔掉,对烧写程序有影响。

    2、执行HC05集命令时,均以 结尾。串口中断若选择“发送新行”时,不用添加 。原理相同。

    二、准备软硬件

    1、硬件:单片机STC89C52RC开发板,蓝牙模块HC05

    2、软件:串口工具SSCOM3.3,手机蓝牙客户端

         手机蓝牙客户端链接:http://mobile.baidu.com/simple/item?docid=5014650&source=aladdin@wise_app_13@button&from=1015530c&ala=wise_app@strong@蓝牙串口调试助手&go_bfe=1action=content&action=content

    三、蓝牙模块HC05端口定义(6引脚)

    state——蓝牙连接状态,未连接输出低,连接后输出高

    TX——信号发

    RX——信号收

    GND——地

    +5V

    EN——使能端,需要进入AT模式时接3.3V,接单片机i/o引脚即可,高电平

    四、进入AT模式进行参数和状态的设置

    两种工作模式:命令响应工作模式和自动连接工作模式

    命令响应工作模式(AT模式)

    state——接任意单片机i/o

    rx——接usb转串口的tx端,P3^0

    tx——接usb转串口的rx端,P3^1

    gnd——接地

    5v——接5V电

    en——接任意单片机i/o,高电平

    1、需要接通en,并给高电平

    2、通信线路:电脑-->usb转串口-->hc05蓝牙模块(电脑与蓝牙模块间进行串口传输)

    3、按住蓝牙模块的key键不松,单片机开发板上电,蓝牙模块指示灯进入慢闪状态,说明进入AT模式

    4、通过电脑串口工具可以设置蓝牙的工作参数与状态

    5、执行电脑串口工具SSCOM3.3,设置比特率38400,8位数据,1位停止位

    6、发送测试指令AT ,如果返回OK表示通信正常。

    7、可以执行自己所需的命令了。

    8、发送恢复默认状态指令AT+ORGL ,如果返回OK表示设置成功。

    出厂默认状态:

    ①.设备类:0

    ②.查询码:0x009e8b33

    ③.模块工作角色:Slave Mode

    ④.连接模式:指定专用蓝牙设备连接模式

    ⑤.串口参数:波特率—38400bits/s;停止位:1位;校验位:无

    ⑥.配对码:“1234”

    ⑦.设备名称:“H-C-2010-06-01”

    ..

    9、设置波特率9600与单片机串口匹配,1停止位,0校验位

    · 执行AT+UART=9600,1,0 。返回OK

    10、查看UART状态是否更改成功,执行AT+UART?,返回+UART:9600,1,0  OK

    11、参数状态设置完毕,可断电,准备进入工作模式

    五、进入自动连接工作模式进行蓝牙匹配

    state——接任意单片机i/o

    rx——接单片机的tx端,P3^1,与命令相应模式相反

    tx——接单片机的rx端,P3^0

    gnd——接地

    5v——接5V电

    en——可不接

    1、不需要接通en

    2、通信线路:手机蓝牙控制端-->hc05蓝牙模块-->单片机

    3、单片机开发板上电,蓝牙模块指示灯进入快闪状态,说明进入自动连接工作模式

    4、手机开蓝牙,即可搜到蓝牙模块,连接

    5、打开手机端蓝牙串口工具,连接成功,蓝牙模块指示灯进入双闪状态

    6、至此连接成功,准备发送数据

    #include <reg52.h>

    void main(void)

    {

    while(1);

    }

    设置参数状态,匹配测试用上述几行代码即可。

    五、利用蓝牙向单片机发送数据

    1、通信线路:手机蓝牙控制端输出字符‘0’-->hc05蓝牙模块-->单片机接收字符‘0’(单片机与蓝牙模块间进行串口传输)-->单片机控制灯1亮

    2、通信线路:手机蓝牙控制端输出字符‘1’-->hc05蓝牙模块-->单片机接收字符‘1’(单片机与蓝牙模块间进行串口传输)-->单片机控制灯2亮

    3、通信线路:手机蓝牙控制端输出其它字符-->hc05蓝牙模块-->单片机接收该字符(单片机与蓝牙模块间进行串口传输)-->单片机控制灯3亮

    4、该程序源码

    #include <reg52.h>

    typedef unsigned char u8;
    typedef unsigned int u16;
    u8 r_buf; //蓝牙接收到的字符存储缓冲区
    sbit led1 = P1^0; //灯1,当接收字符0时,灯1亮
    sbit led2 = P1^1; //灯2,当接收字符1时,灯2亮
    sbit led3 = P1^2; //灯2,当接收其它字符时,灯3亮
    sbit led4 = P1^3; //蓝牙连接状态灯,当蓝牙连通时,灯4亮
    sbit state = P3^6; //蓝牙连通的状态标志位
    void delay(u16 z) //延迟函数
    {  
    u16 x,y;  
    for(x=z;x>0;x--)   
    for(y=125;y>0;y--); 

    void InitUART() //串口初始化9600
    {
    //初始化串口定时器9600
    TMOD = 0x20;
    PCON = 0x00;
    SCON = 0x50;   
           TH1 = 0xFD;
           TL1 = 0xFD;
    TR1 = 1;
    ES = 1;
    EA = 1;
    }
    void SendOneByte(unsigned char c) //发送字符函数
    {
        SBUF = c;
        while(!TI);
        TI = 0;
    }
    void main(void)
    {
        InitUART();
    led1 = 1;
    led2 = 1;
    led3 = 1;  
    led4 = 1;
    r_buf = '2';
    while(1)
    {
    if(state == 1)//蓝牙连通状态判断
    {
    led4 = 0;    //如果蓝牙匹配成功,灯4亮
    }
    else
    {
    led4 = 1;    //如果蓝牙匹配不成功,灯4不亮
    }
    }
    }
    void UARTInterrupt(void) interrupt 4 //串口接收字符
    {
        if(RI)
        {
            RI = 0;
            //add your code here!
    r_buf = SBUF;
    if(r_buf == '0')//如果为字符‘0’,灯1亮
    {
    led1 = 0;
    delay(1000);
    led1 = 1;
    }
    if(r_buf == '1')//如果为字符‘1’,灯2亮
    {
    led2 = 0;
    delay(1000);
    led2 = 1;
    }
    else //如果为其它字符,灯3亮
    {
    led3 = 0;
    delay(1000);
    led3 = 1;
    }
       SendOneByte(r_buf);//回发该字符
        }
    }




  • 相关阅读:
    Download: Microsoft Access Database Engine 2010 Redistributable
    18大顺丰不发航空件
    北京南站不是24*7的
    360压缩虽然有占霸道,但是for free,我已经不想去找破解软件了
    VS2010、SQL Server 2008和SQL Server 2012安装详解
    【新提醒】LENOVO_WIN7_SP1_UM_64_CN_RDVD远景Windows7,Windows8,旗舰版,系统下载,主题
    原来qq下载也有类似迅雷的功能了
    如意通5元卡办理了,可以用wifi热点了
    SQLEXPR.EXE 和 SQLEXPR32.EXE的区别 挨踢人 博客园
    HTTP Proxy Support
  • 原文地址:https://www.cnblogs.com/gundan/p/8118902.html
Copyright © 2020-2023  润新知