打算利用蓝牙芯片HC06实现手机和单片机之间的简单通信。工具包括淘宝上淘的stc单片机实验板一块,hc-06蓝牙模块一个,杜邦线,win7电脑一部,安卓手机一部,相关软件:单片机小精灵,串口通讯助手,keil以及单片机烧录软件,蓝牙通讯软件APP。软件基本上都是免安装直接运行的。工作流程简单总结下为以下3步:1.利用单片机小精灵软件,做好烧录程序,确定波特率应该设置为24002.hc-06蓝牙模块进入AT模式,串口通讯助手成功将蓝牙模块波特率设置为24003.将烧录程序通过keil编译成功后烧录至单片机实验板上,手机上安装好APP,设置完成后运行,确定成功。
步骤(2)见
https://blog.csdn.net/dok12/article/details/80152239步骤(3)见https://blog.csdn.net/dok12/article/details/801730本篇先介绍步骤1。工具,单片机小精灵软件,免安装,直接运行。打开单片机小精灵软件,选择串口波特率选项。必须选择好晶振和波特率。其他选项,c语言还是汇编,是否串口中断,波特率加倍,允许接收都自己决定。
因为淘宝买到的单片机实验板是12M晶振,蓝牙模块的默认波特率是9600。所以一开始输入这两项数据。结果发现误差太大,必须修改。晶振改不了,只好改波特率了。
修改波特率为2400后误差控制在千分之一点六,效果不错,得到了一个C语言的串口通信基本框架了。
根据这个框架做了个C语言程序,目标是对单片机实现蓝牙通讯,实现不同的单片机流水灯效果,并且得到回复数字8。
#include
unsigned char k;
void InitUART(void)
{
TMOD = 0x20;
SCON = 0x50;
TH1 = 0xF3;
TL1 = 0xF3;
PCON = 0x00;
EA = 1;
ES = 1;
TR1 = 1;
}
/*******延时函数*************/
void delay(unsigned int i)
{
unsigned char j;
for(i; i > 0; i--)
for(j = 255; j > 0; j--);
}
void main(void)
{ k=0;
InitUART();
while (1){
if(k==1)
{P1=0xff;delay(500);P1=0x00;delay(500);}
else if (k==2)
{P1=0x01;delay(500);P1=0xfe;delay(500);}
else
{P1=0x02;delay(500);P1=0xfd;delay(500);}
}
}
void SendOneByte(unsigned char c)
{
SBUF = c;
while(!TI);
TI = 0;
}
void UARTInterrupt(void) interrupt 4
{
if(RI)
{
RI = 0;
//add your code here!
k++;
if(k>2)k=0;
SendOneByte(8);
}
else
TI = 0;
}