手机与单片机之间蓝牙串口通信(1)

打算利用蓝牙芯片HC06实现手机和单片机之间的简单通信。工具包括淘宝上淘的stc单片机实验板一块,hc-06蓝牙模块一个,杜邦线,win7电脑一部,安卓手机一部,相关软件:单片机小精灵,串口通讯助手,keil以及单片机烧录软件,蓝牙通讯软件APP。软件基本上都是免安装直接运行的。

工作流程简单总结下为以下3步:
1.利用单片机小精灵软件,做好烧录程序,确定波特率应该设置为2400
2.hc-06蓝牙模块进入AT模式,串口通讯助手成功将蓝牙模块波特率设置为2400
3.将烧录程序通过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 <reg51.h>
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;
}






猜你喜欢

转载自blog.csdn.net/dok12/article/details/80086629