找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 10797|回复: 5
收起左侧

我用51单片机通过HC06蓝牙模块向手机发送消息,手机接收到的一直不对

[复制链接]
ID:86380 发表于 2015-10-12 20:42 | 显示全部楼层 |阅读模式
我用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
};

回复

使用道具 举报

ID:86380 发表于 2015-10-12 20:45 | 显示全部楼层
手机上收到的和单片机发送的16进制数一直有着误差
回复

使用道具 举报

ID:76227 发表于 2015-10-13 11:18 | 显示全部楼层
发送数据的时候等待数据发送完成之后再发送另一个数据
回复

使用道具 举报

ID:147049 发表于 2016-11-9 20:28 | 显示全部楼层
楼主问题解决了吗?我也在做这个,碰到相似的问题了
回复

使用道具 举报

ID:140371 发表于 2016-11-10 05:57 | 显示全部楼层
  SBUF=LED_0F[];  這裡無法編譯 可能是   SBUF=LED_0F[i];  
回复

使用道具 举报

ID:140371 发表于 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};
試看看
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表