智能小车的蓝牙模块学习(二)

hc05蓝牙模块

我手上只有hc-05(zs-040)带按键,因此我研究hc-05的连接方式。智能小车的蓝牙模块学习(二)_第1张图片智能小车的蓝牙模块学习(二)_第2张图片
蓝牙模块与TLL的转接模块的连接方式
智能小车的蓝牙模块学习(二)_第3张图片
hc05引脚图
智能小车的蓝牙模块学习(二)_第4张图片
由于器件没到齐,无法显示实际连接方式。

串口通信程序

通过51单片机实现hc-05蓝牙模块与安卓手机的无线通信功能,由此我使用kill来编写串口通信程序的代码。
1、初始化串口配置
串口通信原理了解:

智能小车的蓝牙模块学习(二)_第5张图片
波特率:每秒传输二进制代码位数,1波特=1位/秒
SMOD与串口通信波特率有关
本次实验的波特率为9600

REN:串行接收允许位
0——禁止,1——允许
串行初始化设置:
(1)确定T1的工作方式(编程TMOD寄存器)
(2)计算T1的初值,装载TH1,TL1
(3)启动T1(编程TCON中TR1位)
(4)确定串行口工作方式(编程SCON寄存器)
(5)串行口工作在中断方式时,进行中断设置(编程IE,IP寄存器)

2、延迟函数——delay(),延时count毫秒,120毫秒为一个周期,进行循环。
3、字符发送函数,发送单个字符,查询ASCll码表发送相应字符(十进制)
智能小车的蓝牙模块学习(二)_第6张图片
智能小车的蓝牙模块学习(二)_第7张图片
4、字符串发送函数,通过调用字符发送函数来实现,整数转为字符串发送,因十进制不能直接发送,需要加0x30/48转为字符型。十进制数据不同位上的值为模(实际取值记为model)与number的相除取整。

完整代码

 #include 
#define uchar unsigned char
#define uint unsigned int
  uchar code char_temp[6]={'1','2','3','a','b'};

void UartConfigurationInit()
{
  TMOD=0x20;//设置定时器
  TH1=0xfd;//波特率为9600
    TL1=0xfd;  
    TR1=1;
    SM0=0;//串口方式
    SM1=1;
    REN=1;//允许接收
    PCON=0x00;//关倍频
    ES=1;//开串口中断
    EA=1;//开总中断
}

void delay(uint count)
{
  uint cycle;
  while(count)
  {
    cycle=120;
    while(cycle>0) cycle--;
    count--;
  }
}

void PostChar(uchar character)
{     
    SBUF=character;
    while(!TI);TI=0;
}

void  PostString(uchar *p)  
{
    while(*p)
    {
      PostChar(*p);
      delay(20);
      p++;  
    }
}

void IntConversionChar(uint number)
{
       uint model;
       uint numberByte;

     for(model=1000;model>=1;model=model/10) 

    {
      numberByte = number/model;

            if(numberByte >=1 ) PostChar((uchar)(numberByte%10+0x30));

  }
}

void main()
{
  uint number = 0;
  UartConfigurationInit();
  while(1)
  {
   PostString(char_temp);
   delay(1000);
   IntConversionChar(number);
   delay(1000);
   number++;
  }
}

你可能感兴趣的:(智能小车的蓝牙模块学习(二))