手机通过蓝牙模块与单片机通信
手机通过蓝牙模块与单片机通信实验简单,但是如果没有指导会是很费劲的!我用的单片机板子是郭天祥老师的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/ =, 第一种