历史上的今天
返回首页

历史上的今天

今天是:2026年03月24日(星期二)

正在发生

2023年03月24日 | 51单片机 HC05蓝牙模块学习

2023-03-24 来源:zhihu

一、注意事项


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


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

二、准备软硬件


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


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


三、蓝牙模块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、发送测试指令ATrn,如果返回OK表示通信正常。


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


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


出厂默认状态:


①.设备类:0


②.查询码:0x009e8b33


③.模块工作角色:Slave Mode


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


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


⑥.配对码:“1234”


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


..


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


· 执行AT+UART=9600,1,0rn。返回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


void main(void)


{


while(1);


}


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


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


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


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


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


4、该程序源码


#include


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);//回发该字符

    }

}


推荐阅读

史海拾趣

eLED.com Corp公司的发展小趣事

面对日益激烈的市场竞争和不断变化的市场需求,eLED.com Corp始终坚持以创新驱动为发展战略。公司不断加大研发投入,积极引进新技术、新材料和新工艺,推动产品的升级换代。同时,eLED.com Corp还积极探索新的应用领域和市场空间,如智能家居、智慧城市等领域。通过不断创新和产业升级,eLED.com Corp成功实现了从传统制造业向高新技术产业的转型。

Excel Cell Electronic Co Ltd公司的发展小趣事

品质是ECE公司的生命线。公司始终坚持“品质至上”的原则,从原材料采购到生产流程控制,再到产品检验和售后服务,都严格按照国际标准执行。为了提升品质管理水平,ECE公司引进了先进的品质管理系统,加强了对生产过程的监控和评估。同时,公司还定期对员工进行品质管理培训,提高员工的质量意识和技能水平。这些措施使ECE公司的产品质量得到了显著提升,赢得了客户的广泛赞誉。

GradConn Ltd公司的发展小趣事

GradConn深知不同客户对连接解决方案的需求各不相同,因此公司特别注重提供定制化服务。通过与客户紧密合作,GradConn能够深入了解其特定需求,并据此设计出符合客户要求的定制化产品。这种服务不仅提升了客户的满意度,还增强了GradConn在市场上的竞争力。许多知名企业都选择GradConn作为其连接器和电缆组件的供应商,正是看中了其强大的定制化能力。

福建国光公司的发展小趣事

GradConn始终将技术创新作为公司发展的核心驱动力。公司拥有一支专业的研发团队,致力于开发新型连接器和电缆组件,以满足不断变化的市场需求。同时,GradConn的所有工厂均通过了ISO 9001:2015和ISO 14001:2015等国际质量管理体系认证,确保了产品的高质量和环境友好性。这些认证不仅提升了GradConn的品牌形象,还为其在全球市场上赢得了更多客户的信任和支持。

FUJI公司的发展小趣事

GradConn始终将技术创新作为公司发展的核心驱动力。公司拥有一支专业的研发团队,致力于开发新型连接器和电缆组件,以满足不断变化的市场需求。同时,GradConn的所有工厂均通过了ISO 9001:2015和ISO 14001:2015等国际质量管理体系认证,确保了产品的高质量和环境友好性。这些认证不仅提升了GradConn的品牌形象,还为其在全球市场上赢得了更多客户的信任和支持。

ABCircuits公司的发展小趣事

在电子行业中,产品质量是企业的生命线。ABCircuits深知这一点,因此从成立之初就建立了严格的质量管理体系。公司注重从原材料采购到生产制造的每一个环节的质量控制,确保每一件产品都符合高标准的品质要求。这种对品质的坚持让ABCircuits赢得了客户的信赖和口碑,使其在市场中脱颖而出。

问答坊 | AI 解惑

gprs模块与单片机通信问题

最近在研究GPRS与单片机的通信问题.. 在向单片机传送AT指令 有所拨的号码(什么号码?),DNS服务的IP地址(哪里的DNS服务??),GPRS服务提供商的密码(怎么知道提供商的密码??),接入GPRS服务的APN(是什么?cmnet or cmwap?能通用么?)。 还需要建立一 ...…

查看全部问答>

再来一本老书

发书了,呵呵,继续第二本!希望对大家有所帮助!…

查看全部问答>

一种基于单片机的红外遥控软件解码方法

摘 要:文章详细论述了红外遥控数据的调制与编码方式,设计了一种基于MCS - 51 单片机的红 外遥控解码方案,并简要介绍了红外通信抗干扰措施并给出软件设计实例。…

查看全部问答>

Proteus单片机仿真,如何调整步长时间

我在做一个AT89C52单片机仿真,电路似乎没有问题,但在按了仿真按钮,运行一段时间,就出现以下问题:[SPICE]TRAN:Timestep too small;timestep=1.25e-19;trouble with node#00175?什么原因?好像是要我调步长时间,我在system菜单下的set simulat ...…

查看全部问答>

奇怪的现象 关于ddraw 只有连接activesync的时候才能正常刷屏

windows mobile6.0 系统 使用ddraw ,创建DDSCAPS_PRIMARYSURFACE,然后lock ,写buffer,unlock,这些返回值都是正确的。 但是只有插activesync得时候才能正常刷屏 若不连接activesync:屏幕不会变化,让系统suspand resume 然后看屏幕更新了,但 ...…

查看全部问答>

西门子 LOGO! 问题

初接触simens logo!,有个问题请教! 功能为 I1为启动/停止功能接口 .           I1高时,Q1送出,反之不送出. 现在要求开机第一次启动时,立即送出Q1, 以后每次启动要延时一段时间再送出,现在的问题不知如何 ...…

查看全部问答>

FPGA起步ABC

        FPGA的应用越来越广泛,学习FPGA的朋友也越来越多,甚至有好多刚上大学或者才念大二没学过数电、信号处理的童鞋,也开始学习。俺混在FPGA使用者的队伍里,算了算,从当初使用cpld做第一个电池充电器开 ...…

查看全部问答>

2812 计算出错问题

在应用2812计算乘法时,尤其是计算250以上的乘法时出错。如:250×260=  ,其结果莫名其妙。望高手指点!…

查看全部问答>

大家困不困呀

本帖最后由 paulhyde 于 2014-9-15 03:56 编辑 嘛的~困死了,觉得已经到达能随时随地、说睡就睡的地步了,希望今明两天能超越极限,到达困得已经不困的境界就叼爆了!  …

查看全部问答>