手机通过蓝牙模块与单片机通信

手机通过蓝牙模块与单片机通信
手机通过蓝牙模块与单片机通信

手机通过蓝牙模块与单片机通信实验简单,但是如果没有指导会是很费劲的!我用的单片机板子是郭天祥老师的52板子!如果不是,朋友只修根据显示端口改正!

第一步?编写好串口程序

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

功能手机通过蓝牙模块与单片机通信

作者蒋

院校南航

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

^include <>

sbitdula=P2A6; 〃数码管段选,锁存器控制信号sbit wela=P2A7; 〃数码管位选,锁存器控制信号unsigned char k,a;

unsigned char flag;

void delaylm$(unsigned int f)//延时程序

unsigned int ij; for(i=0;i

void receivem(void) 〃接受程序

while(RI==l)

RI=0; flag=l;

void timerjnt(void) 〃定时器初始化

TMOD=0xll;/^0010001 SCON =0x50;

T2CON=0x30;

RCAP2H=0xFF;

RCAP2L=0xDC; EA=1;

TRO=1;

TR2=1;

ET0=ET2=l;

void timeO(void) interrupt 1 using 1 〃中断函数

THO=OxFC;

TL0=0xl8;

receivemO;〃定时将SBUF接收

void main()

flag=O; wela=0; dula=O; timer .intO; while(l)

if(flag==l)

dula=0; P1=SBUF;

a=SBUF; PO=SBUF; dula=l; dula=0; wela=O; P0=0x7e; wela=l; wela=O;

delaylms(lO); SBUF=a;

while(!TI); TI=O; delaylms(lO); flag=O;

}注意:这里使用了 52单片机定时器2作为波特率发生器!

〃设置T2为工作方式2,作为波特率时钟 TCLK = 1; RCLK = 1; C_T2 =

0;//T2的输入时钟为主时钟的2分频,不釆用外部输入

T2MOD&X PCENj// 递增计数方式

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

* T1 初值=0x10000 ? Fclk/(32*BaudRate)> 即 OxFFDC ********************************************************************

RCAP2H = OxFF; RCAP2L = OxDC;

P0接的是数码管

P1接的是8个发光二极管

这样做的是更好的相互显示数据接收是否正确。

第二步?正确使用蓝牙串口助手 我们在UC 浏览器下载蓝牙串口助手。我这里使用的是UI 版本PRO 这里有三种工作模式(我只说两种)

直接填写好数据就按SEND 同时在HEX 上打钩表示是十六进制

这里对于初学这只需要会使用第一种和第二种

第三步下载程序 通过STC 把程序下载进去。

第四步模块连接 我使用蓝牙模块是5V 的,把模块上的VCC TXD RXD GND 对应连接到52单片机

上的VCC RXD TXDGNDo 注意一点这步要在下载程序之后,因为程序是通过TXD

RXD 下载进去,如果你下裁程序时连接好,会占用这两个端口,是下不进去的。 T2作为串口波特率时钟,设置T2初始值:

* MCU 工作时钟Fclk = 第二种 就是按键发送,这步你要对相应的键设置好值

第三种 是发送文件的

机器周期Tm = 12/ =, 第一种

相关主题
相关文档
最新文档