标题:
我用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