蓝牙模块学习笔记Word格式文档下载.docx

上传人:b****5 文档编号:19515820 上传时间:2023-01-07 格式:DOCX 页数:16 大小:930.14KB
下载 相关 举报
蓝牙模块学习笔记Word格式文档下载.docx_第1页
第1页 / 共16页
蓝牙模块学习笔记Word格式文档下载.docx_第2页
第2页 / 共16页
蓝牙模块学习笔记Word格式文档下载.docx_第3页
第3页 / 共16页
蓝牙模块学习笔记Word格式文档下载.docx_第4页
第4页 / 共16页
蓝牙模块学习笔记Word格式文档下载.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

蓝牙模块学习笔记Word格式文档下载.docx

《蓝牙模块学习笔记Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《蓝牙模块学习笔记Word格式文档下载.docx(16页珍藏版)》请在冰豆网上搜索。

蓝牙模块学习笔记Word格式文档下载.docx

串口中断服务程序中,检测到flag为1时,这证明数据显示成功。

此时应当清屏!

清屏方法:

while(Tem[i]!

='

\0'

{

Tem[i]='

'

;

i++;

}

 

/***********************************************************

STC89C52RC与HC-06蓝牙连线:

RXDTXD

TXDRXD

其他连线:

P2.0、P2.1、P2.3分别接一个指示灯

***********************************************************/

#include<

reg52.h>

intrins.h>

unsignedchartmp;

unsignedintc=0;

sbitled1=P1^0;

//指示灯0

sbitled2=P1^1;

//指示灯1

sbitled3=P1^2;

//指示灯2

sbitbeep=P3^2;

//蜂鸣器

voidinit();

//串口初始化

voidsend(unsignedchara);

//单字节发送函数

voidctrl();

//接收处理函数

voiddelay(unsignedintx)

{

unsignedinti,j;

for(i=x;

i>

0;

i--)

for(j=110;

j>

j--);

}

voidmain()

init();

while

(1)

{

if(RI==1)//是否有数据到来

{

RI=0;

tmp=SBUF;

//暂存接收到的数据

ctrl();

}

}

voidinit()//串口初始化

ES=0;

//关中断

SCON=0x50;

//REN=1允许串行接受状态,串口工作模式1,

//10位UART(1位起始位,8位数据位,1位停止位,无奇偶校验),波特率可变

TMOD=0x20;

//定时器1工作于方式2,8位自动重载模式,用于产生波特率

TH1=TL1=0xFD;

//波特率9600(本次测试采用晶振为11.0592)

PCON&

=0x7f;

//波特率不倍增

TR1=1;

//定时器1开始工作,产生波特率

//发送标志位置0

TI=0;

//接收标志位置0

RI=0;

//EA=0;

ES=1;

led1=0;

//初始化设置3个指示灯全亮

led2=0;

led3=0;

voidsend(unsignedchara)//单字节数据发送

{//注意:

若单片机TXD(P3.1)无上拉能力,必须在P3.1端接上拉电阻。

本次测试需要接上拉电阻

TI=0;

SBUF=a;

while(TI==0);

if(c%2)//发送指示灯标志,每接收一次,此灯亮灭交替

led3=1;

else

led3=0;

c++;

}

voidctrl()//接收处理函数

switch(tmp)

{

case'

1'

:

led1=1;

//收到字符1,指示灯0灭

send(tmp);

beep=0;

delay(500);

break;

2'

//收到字符2,指示灯1灭

led2=1;

beep=1;

3'

//收到字符3,指示灯0、1亮

led1=0;

led2=0;

4'

//收到字符4,指示灯0、1灭

5'

//收到字符5,指示灯3亮

led3=0;

default:

//其他,灯全灭

led3=1;

}

以下是蓝牙接收字符串并向12864显示程序

/*****************************************************************************8

*任广俊

*日期:

12.17

*蓝牙接收并显示在12864上,1,2,3控制发光二极管

*4,5控制继电器

******************************************************************************/

#defineuintunsignedint

#defineucharunsignedchar

#defineLCD_dataP0

sbitLCD_EN=P3^4;

//液晶使能1使能,0使不能

sbitLCD_RS=P3^5;

//寄存器选择1数据,0命令

sbitLCD_RW=P3^6;

//液晶读写控制1读出,0写入

sbitLCD_PSB=P3^7;

//串行口控制1并行,0串行

//蜂鸣器

sbitjdq=P1^6;

//继电器

ucharcodedis1[]={"

ILoveMCU!

"

};

ucharcodedis2[]={"

单片机学习"

ucharTem[20];

uchardis3[8];

unsignedchara=0;

//定义临时变量

ucharflag,flag2=0;

uchartemp,i,c;

voiddelay(uintx)

uintm,n;

for(m=x;

m>

m--)

for(n=110;

n>

n--);

/*******************************************************************************************************

12864液晶显示

*******************************************************************************************************/

//写指令:

RS=L;

RW=L;

E=高脉冲;

D0-D7=指令码

voidwrite_cmd(ucharcmd)

LCD_RS=0;

LCD_RW=0;

LCD_EN=0;

P0=cmd;

delay(5);

LCD_EN=1;

//写数据到LCD:

RS=H;

E=高脉冲D0-D7数据

voidwrite_dat(uchardat)

LCD_RS=1;

P0=dat;

//设定显示位置

voidlcd_pos(ucharx,uchary)

ucharpos;

if(x==0)

{x=0x80;

elseif(x==1)

{x=0x90;

elseif(x==2)

{x=0x88;

elseif(x==3)

{x=0x98;

pos=x+y;

write_cmd(pos);

//显示地址

voidlcd_init()//lcd初始化

LCD_PSB=1;

//并口方式

write_cmd(0x30);

//基本指令喜僮?

write_cmd(0x0C);

//显示开关光标

write_cmd(0x01);

//清除lcd显示内容

/*******************************************************************************************************************/

voidBT_init()//蓝牙串口初始化

//关中串口中断

//REN=1允许串口接收状态,串口工作方式1

//10位UART(1起始位,8数据位,1停止位?

无奇偶校检

//定时器1,工作方式2

TH1=TL1=0xFD;

//设置波特率9600

PCON&

//允许串口中断

//发送标志0

//接收标志0

EA=1;

//开总中断

//初始化为全亮

}

{

write_dat(a);

if(c%2)//发送指示灯

delay(500);

}

BT_init();

//Bluetooth初始化

lcd_init();

//液晶显示初始化

/***********************************************************************************

液晶显示区

*****************************************************************************************/

//write_cmd(0x01);

lcd_pos(0,0);

//向第一行首位置写数据

i=0;

while(dis1[i]!

write_dat(dis1[i]);

i++;

}

lcd_pos(1,0);

//向第二行首位子写数据

while(dis2[i]!

write_dat(dis2[i]);

delay(10);

lcd_pos(2,0);

while(Tem[i]!

write_dat(Tem[i]);

flag=1;

//}

voidUART_SER(void)interrupt4//串口中断服务程序

while(RI)//接收到数据

if(flag==1)//字符串发送完毕

flag=0;

a=0;

//数据标志清零

i=0;

//数据清零

while(Tem[i]!

)//向lcd写空格

Tem[i]='

'

i++;

RI=0;

//清除标志位

Tem[a++]=SBUF;

//读取缓冲区的值

AT指令集

进入AT指令的方法:

给模块上电,不配对的情况下,就是AT模式了。

指令间隔1S左右。

以上的RXD和TXD接错了,P3^0连接TXD,P3。

1连接RXD

出厂参数:

波特率9600N81,名字linvor,密码1234

1、测试通讯

发送:

AT(返回OK,一秒左右发一次)

返回:

OK

2、改蓝牙串口通讯波特率

AT+BAUD1

OK1200

AT+BAUD2

OK2400

……

1---------1200

2---------2400

3---------4800

4---------9600(默认就是这个设置)

5---------19200

6---------38400

7---------57600

8---------115200

9---------230400

A---------460800

B---------921600

C---------1382400

Ø

设置超过115200后用电脑无法使用,要用单片机编程于高于115200才能使用此波特

率和重新发AT命令设低波特率

用AT命令设好波特率后,下次上电使用不需再设,可以掉电保存波特率

3、改蓝牙名称

AT+NAMEname

OKname

参数name:

所要设置的当前名称,即蓝牙被搜索到的名称。

20个字符以内。

例:

发送AT+NAMEbill_gates

返回OKname

这时蓝牙名称改为bill_gates

参数可以掉电保存,只需修改一次。

PDA端刷新服务可以看到更改后的蓝牙名称,名字

不可超过20个字符。

4、改蓝牙配对密码

AT+PINxxxx

OKsetpin

参数xxxx:

所要设置的配对密码,4个数字,此命令可用于从机或主机。

从机是适配器或手

机弹出要求输入配对密码窗口时,手工输入此参数就可以连接从机。

主蓝牙模块搜索从机后,

如果密码正确,则会自动配对,主模块除了可以连接配对从模块外,其他产品包含从模块的

时候也可以连接配对,比如含蓝牙的数码相机,蓝牙GPS,蓝牙串口打印机,等等,特别地,

蓝牙GPS为典型例子

AT+PIN8888

这时蓝牙配对密码改为8888,模块在出厂时的默认配对密码是1234。

5、无校验设置指令:

(V1.5版后支持)

AT+PN(默认就是这个设置)

6、偶校验设置指令:

AT+PE

7、奇校验设置指令:

AT+PO

8、获取AT指令版本命令:

AT+VERSION

返回LinvorV1.n则为正品

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 英语

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1