HC-05模块与51单片机_控制LED

1. HC-05模块

HC05模块是一款高性能主从一体蓝牙串口模块,可以不用知道太多蓝牙相关知识就可以很好的上手。说白了,只是个蓝牙转串口的设备,你只要知道串口怎么编程使用,就可以了,实现了所谓的透明传输。

1.1 HC-05模块的引脚

HC-05模块引脚
常用的引脚有
RXD
TXD
GND
VCC
在接线时我们需要遵循一个原则:在正常模式使用时RXD->TXD TXD->RXD,而在配置时需要RXD->TXD TXD->RXD

配置模式

用于配置蓝牙模块的模式
我们可以使用USB-TTL或者单片机与HC-05连接.接线之后先按住模块上的小按钮,再上电,此时模块的LED会已两秒为间隔闪烁
此时打开串口助手,波特率设置为38400(这是配置模式的固定波特率),勾选发送新行
此时发送AT,应该会返回OK,如果不是的话请仔细检查线路,是否进入配置模式(LED两秒闪烁一次)
在这里插入图片描述

开始配置CH-05

AT+ROLE=0(蓝牙模式设置为从机,此时只能被搜索)
AT+CMODE=1(可以和任何设备连接)
AT+UART=9622,0,0(设置波特率9600,看清楚是英文逗号)
AT+NAME=HC05(设置蓝牙名称)
AT+PSWD=“1234”(设置连接密码,""不能省略)
以上操作,蓝牙均会返回OK
此时断电,转到正常模式的接线

测试蓝牙模块

此次使用手机上的SPP蓝牙串口APP,搜索到HC05连接输入密码,即可连接成功

编写代码

#include <REGX52.H>


/*
实验目的:调试蓝牙串口
实验时间:2022/12/06
实验要求:使用蓝牙控制LED的量灭
*/

typedef unsigned int uint;
typedef unsigned char uchar;
uint pass = 0;//数据位

void UART_Init()
{
	TMOD = 0x20;
	TH1 = 0xfd;
	TL1 = 0xfd;//设置波特率,本单片机采用的是11.0592MHz的晶振
	SM0 = 0;
	SM1 = 1;//串口工作方式1
	REN = 1;//串口允许接收
	TR1 = 1;
	EA = 1;
	ES = 1;//串口中断
}

void main()
{
	UART_Init();//串口初始化
	while(1)
	{
		P2 = pass;//传输的16进制数赋值给LED,我的LED在P2引脚,自行查看引脚图
	}
}

void UART_INTERRUPT() interrupt 4
{
	pass = SBUF;
	RI = 0;
	SBUF = pass;
	while(!TI);
	TI = 0;
}

效果

发送数据:00
00
发送数据:ffff

  • 4
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
要使用HC-05模块51单片机上进行数据传输,需要进行以下步骤: 1. 首先,将HC-05模块单片机通过UART串口进行连接。在HC-05模块上,将TXD引脚连接单片机的RXD引脚,将RXD引脚连接单片机的TXD引脚,同时将GND引脚连接单片机的GND引脚,将VCC引脚连接单片机的5V引脚。 2. 接下来,需要在单片机上编写相应的程序,以便与HC-05模块进行通信。可以使用51单片机的UART模块来实现这一点。具体实现过程可以参考以下代码: ```c #include <reg52.h> sbit LED = P1^0; //定义LED灯的控制引脚 void UART_Init() //初始化UART串口 { TMOD = 0x20; //定时器1工作在模式2,8位自动重装载 TH1 = 0xFD; //设置波特率为9600 TL1 = 0xFD; TR1 = 1; //启动定时器1 SCON = 0x50; //设置串口为工作在模式1,允许接收 ES = 1; //开启串口中断 EA = 1; //开启总中断 } void UART_SendByte(unsigned char dat) //发送一个字节数据 { SBUF = dat; //将待发送的数据放到发送缓冲区 while(!TI); //等待发送完成 TI = 0; //清除发送完成标志位 } void main() { UART_Init(); //初始化UART串口 while(1) { if(SBUF == '1') //当接收到'1'时,LED亮 { LED = 0; UART_SendByte('1'); //回复一个'1'表示已经收到数据 } else if(SBUF == '0') //当接收到'0'时,LED灭 { LED = 1; UART_SendByte('0'); //回复一个'0'表示已经收到数据 } } } void UART_ISR() interrupt 4 //UART串口中断 { if(RI) //接收中断 { RI = 0; //清除接收中断标志位 } if(TI) //发送中断 { TI = 0; //清除发送中断标志位 } } ``` 在上面的程序中,我们通过UART串口接收单片机上的数据,并根据不同的数据控制LED灯的亮灭。同时,我们也可以通过UART串口向HC-05模块发送数据,实现数据的双向传输。 3. 最后,需要在HC-05模块上进行相应的配置,以便与单片机进行通信。具体配置过程可以参考HC-05模块的资料手册。通常情况下,需要设置模块的波特率与单片机相同,并将模块设置为主动模式或从动模式中的一种。在通信时,需要注意单片机发送的数据格式与HC-05模块所期望的数据格式相匹配。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿坤的

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值