51单片机 HC05蓝牙模块学习

发布时间:2023-03-24  

一、注意事项


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

    }

}


文章来源于:电子工程世界    原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。

我们与500+贴片厂合作,完美满足客户的定制需求。为品牌提供定制化的推广方案、专属产品特色页,多渠道推广,SEM/SEO精准营销以及与公众号的联合推广...详细>>

利用葫芦芯平台的卓越技术服务和新产品推广能力,原厂代理能轻松打入消费物联网(IOT)、信息与通信(ICT)、汽车及新能源汽车、工业自动化及工业物联网、装备及功率电子...详细>>

充分利用其强大的电子元器件采购流量,创新性地为这些物料提供了一个全新的窗口。我们的高效数字营销技术,不仅可以助你轻松识别与连接到需求方,更能够极大地提高“闲置物料”的处理能力,通过葫芦芯平台...详细>>

我们的目标很明确:构建一个全方位的半导体产业生态系统。成为一家全球领先的半导体互联网生态公司。目前,我们已成功打造了智能汽车、智能家居、大健康医疗、机器人和材料等五大生态领域。更为重要的是...详细>>

我们深知加工与定制类服务商的价值和重要性,因此,我们倾力为您提供最顶尖的营销资源。在我们的平台上,您可以直接接触到100万的研发工程师和采购工程师,以及10万的活跃客户群体...详细>>

凭借我们强大的专业流量和尖端的互联网数字营销技术,我们承诺为原厂提供免费的产品资料推广服务。无论是最新的资讯、技术动态还是创新产品,都可以通过我们的平台迅速传达给目标客户...详细>>

我们不止于将线索转化为潜在客户。葫芦芯平台致力于形成业务闭环,从引流、宣传到最终销售,全程跟进,确保每一个potential lead都得到妥善处理,从而大幅提高转化率。不仅如此...详细>>