手机通过蓝牙模块与单片机通信
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
手机通过蓝牙模块与单片机通信第一步.编写好串口程序
/*********************************************
名称单片机蓝牙
功能手机通过蓝牙模块与单片机通信
作者蒋
院校南航
********************************************/
#include
sbit dula=P2^6; //数码管段选,锁存器控制信号
sbit wela=P2^7; //数码管位选,锁存器控制信号
unsigned char k,a;
unsigned char flag;
void delay1ms(unsigned int f)//延时程序
{
unsigned int i,j;
for(i=0;i for(j=0;j<120;j++); } void receivem(void) //接受程序 { while(RI==1) { RI=0; flag=1; } } void timer_int(void) //定时器初始化 { TMOD=0x11;//00010001 SCON =0x50; T2CON=0x30; RCAP2H=0xFF; RCAP2L=0xDC; EA=1; TR0=1; TR2=1; ET0=ET2=1; } void time0(void) interrupt 1 using 1 //中断函数 { TH0=0xFC; TL0=0x18; receivem();//定时将SBUF接收 } void main() { flag=0; wela=0; dula=0; timer_int(); while(1) { if(flag==1) { dula=0; P1=SBUF; a=SBUF; P0=SBUF; dula=1; dula=0; wela=0; P0=0x7e; wela=1; wela=0; delay1ms(10); SBUF=a; while(!TI); TI=0; delay1ms(10); flag=0; } } }注意:这里使用了52单片机定时器2作为波特率发生器! //设置T2为工作方式2,作为波特率时钟 TCLK = 1; RCLK = 1; C_T2 = 0;//T2的输入时钟为主时钟的2分频,不采用外部输入 T2MOD&= ~DCEN_;//递增计数方式 /******************************************************************** * T2作为串口波特率时钟,设置T2初始值: * MCU工作时钟Fclk = 11.0592MHz * 机器周期Tm = 12/11.0592us = 1.085us, * T1初值= 0x10000 - Fclk/(32*BaudRate),即0xFFDC ******************************************************************** RCAP2H = 0xFF; RCAP2L = 0xDC; P0接的是数码管 P1接的是8个发光二极管 这样做的是更好的相互显示数据接收是否正确。 第二步. 正确使用蓝牙串口助手 我们在UC浏览器下载蓝牙串口助手。我这里使用的是UI 版本PRO 这里有三种工作模式(我只说两种) 第一种直接填写好数据就按SEND 同时在HEX上打钩表示是十六进制 第二种就是按键发送,这步你要对相应的键设置好值 第三种是发送文件的 这里对于初学这只需要会使用第一种和第二种 第三步下载程序 通过STC把程序下载进去。 第四步模块连接 我使用蓝牙模块是5V的,把模块上的VCC TXD RXD GND对应连接到52单片机上的VCC RXD TXD GND。注意一点这步要在下载程序之后,因为程序是通过TXD RXD下载进去,如果你下载程序时连接好,会占用这两个端口,是下不进去的。 第五步进行调试 打开蓝牙串口助手,连接好蓝牙设备,这样就可以发送数据。 这里我要说明一点我使用蓝牙模块的波特率是9600,程序里的波特率也是9600.两者一定要百分之百一致。如果不一致的话,单片机接受的是乱码和发送的数据不一致! 会使用蓝牙模块,对单片机的开发很会用帮助!只有真正的会使用,才是王道!不明白739141300. 我这份是百度上第一份讲解这方面的,初学者很使用。