找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 11047|回復(fù): 5
打印 上一主題 下一主題
收起左側(cè)

我用51單片機(jī)通過(guò)HC06藍(lán)牙模塊向手機(jī)發(fā)送消息,手機(jī)接收到的一直不對(duì)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:86380 發(fā)表于 2015-10-12 20:42 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
我用51單片機(jī)通過(guò)HC06藍(lán)牙模塊向手機(jī)發(fā)送消息,手機(jī)接收到的一直不對(duì)
#include"reg51.h"
#include"lcd.h"
// 函數(shù)原形定義
#define uchar unsigned char
#define uint unsigned int

void main (void);                   // 主函數(shù)
unsigned char code LED_0F[];        // LED字模表
uchar Buffer[4] = {0};          //從串口接收的數(shù)據(jù)
unsigned char i;
unsigned char a;
// 全局變量
void Delay_1ms(uint i)//1ms延時(shí)
{
    uchar x,j;
    for(j=0;j<i;j++)
        for(x=0;x<=148;x++);
}

void Init(void)
{
    TMOD    = 0x20; //8 位自動(dòng)重裝計(jì)數(shù)
    PCON   &= 0x7f;
    SCON    = 0x50;//串行口控制寄存器 SM1=1,SM0=0方式一波特率可變
    TH1     = 0xFD; //設(shè)置波特率 9600
    TL1     = 0xFD;
    TR1     = 1;    //啟動(dòng)定時(shí)器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) //當(dāng)硬件接收到一個(gè)數(shù)據(jù)時(shí),RI會(huì)置位
    {
        Buffer[0] = SBUF; //這里減去48是因?yàn)閺碾娔X中發(fā)送過(guò)來(lái)的數(shù)據(jù)是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
};

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:86380 發(fā)表于 2015-10-12 20:45 | 只看該作者
手機(jī)上收到的和單片機(jī)發(fā)送的16進(jìn)制數(shù)一直有著誤差
回復(fù)

使用道具 舉報(bào)

板凳
ID:76227 發(fā)表于 2015-10-13 11:18 | 只看該作者
發(fā)送數(shù)據(jù)的時(shí)候等待數(shù)據(jù)發(fā)送完成之后再發(fā)送另一個(gè)數(shù)據(jù)
回復(fù)

使用道具 舉報(bào)

地板
ID:147049 發(fā)表于 2016-11-9 20:28 | 只看該作者
樓主問(wèn)題解決了嗎?我也在做這個(gè),碰到相似的問(wèn)題了
回復(fù)

使用道具 舉報(bào)

5#
ID:140371 發(fā)表于 2016-11-10 05:57 | 只看該作者
  SBUF=LED_0F[];  這裡無(wú)法編譯 可能是   SBUF=LED_0F[i];  
回復(fù)

使用道具 舉報(bào)

6#
ID:140371 發(fā)表于 2016-11-10 06:16 | 只看該作者
SBUF=LED_0F[];這裡無(wú)法編譯..  可能是SBUF=LED_0F[i]吧 ...
看樣子您手機(jī)端的APP是收發(fā)ASCII 格式的 ...而code LED_0F[]內(nèi)有非ASCII 的對(duì)應(yīng)碼,,
將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};
試看看
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表