控制C51单片机与HC-05蓝牙模块实现手机控制灯光:超详尽指南

此文记录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;		//使能波特率倍速位SMOD
    	SCON = 0x50;		//8位数据,可变波特率  
    	TMOD &= 0x0F;		//清除定时器1模式位
    	TMOD |= 0x20;		//设定定时器1为8位自动重装方式
    	TL1 = 0xFA;		//设定定时初值
    	TH1 = 0xFA;		//设定定时器重装值
    	ET1 = 0;		//禁止定时器1中断
    	TR1 = 1;		//启动定时器1
    	ES=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值赋值给P1
    			
    			if (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闪烁,此时实验成功。

    物联沃分享整理
    物联沃-IOTWORD物联网 » 控制C51单片机与HC-05蓝牙模块实现手机控制灯光:超详尽指南

    发表评论