标题: 我用51单片机通过HC06蓝牙模块向手机发送消息,手机接收到的一直不对 [打印本页]

作者: 请叫我绅士    时间: 2015-10-12 20:42
标题: 我用51单片机通过HC06蓝牙模块向手机发送消息,手机接收到的一直不对
我用51单片机通过HC06蓝牙模块向手机发送消息,手机接收到的一直不对
#include"reg51.h"
#include"lcd.h"
// 函数原形定义
#define uchar unsigned char
#define uint unsigned int

void main (void);                   // 主函数
unsigned char code LED_0F[];        // LED字模表
uchar Buffer[4] = {0};          //从串口接收的数据
unsigned char i;
unsigned char a;
// 全局变量
void Delay_1ms(uint i)//1ms延时
{
    uchar x,j;
    for(j=0;j<i;j++)
        for(x=0;x<=148;x++);
}

void Init(void)
{
    TMOD    = 0x20; //8 位自动重装计数
    PCON   &= 0x7f;
    SCON    = 0x50;//串行口控制寄存器 SM1=1,SM0=0方式一波特率可变
    TH1     = 0xFD; //设置波特率 9600
    TL1     = 0xFD;
    TR1     = 1;    //启动定时器1
    TI      = 0;
    RI      = 0;
    ES      = 1;    //开串口中断
    EA      = 1;    //开总中断
}

// 主程序
void main (void)
{       
        LcdInit();
        Init();//初始化
        while(1)
    {          LcdWriteCom(0xC0);
                  LcdWriteData('0' +Buffer[0]);
                  if(a==1)
                  {
                  for(i=0;i<=15;i++)
                  {
                  SBUF=LED_0F;       
                  while(TI==0);
                     TI=0;
                  Delay_1ms(10);
                  }
                  a=0;
                  }

    }
}

void Com_Int(void) interrupt 4
{
    EA = 0;
    if (RI == 1) //当硬件接收到一个数据时,RI会置位
    {
        Buffer[0] = SBUF; //这里减去48是因为从电脑中发送过来的数据是ASCII码。//     Buffer[0] = SBUF-48 ;
        RI = 0;
    }
    EA = 1;
        a=1;

}


unsigned char code LED_0F[] =
{
    //0   1     2     3     4     5     6     7     8     9     A     b     C     d     E     F     -
    0x01, 0x21, 0x31, 0x41, 0x51, 0x61, 0x71, 0x81, 0x91, 0xA1, 0xB1, 0xC1, 0xD1, 0xE1, 0xF1, 0x8E, 0xbf
};


作者: 请叫我绅士    时间: 2015-10-12 20:45
手机上收到的和单片机发送的16进制数一直有着误差
作者: 木木de    时间: 2015-10-13 11:18
发送数据的时候等待数据发送完成之后再发送另一个数据
作者: 马可波罗    时间: 2016-11-9 20:28
楼主问题解决了吗?我也在做这个,碰到相似的问题了
作者: a0931727149    时间: 2016-11-10 05:57
  SBUF=LED_0F[];  這裡無法編譯 可能是   SBUF=LED_0F[i];  
作者: a0931727149    时间: 2016-11-10 06:16
SBUF=LED_0F[];這裡無法編譯..  可能是SBUF=LED_0F[i]吧 ...
看樣子您手機端的APP是收發ASCII 格式的 ...而code LED_0F[]內有非ASCII 的對應碼,,
將LED_0F[]改成
unsigned char code LED_0F[] = {  //0   1     2     3     4     5     6     7     8     9     A     b     C     d     E     F     -
   // 0x01, 0x21, 0x31, 0x41, 0x51, 0x61, 0x71, 0x81, 0x91, 0xA1, 0xB1, 0xC1, 0xD1, 0xE1, 0xF1, 0x8E, 0xbf
0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x41,0x42,0x43,0x44,0x45,0x46};
試看看




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1