小R科技-WIFI机器人网·机器人创意工作室

 找回密码
 立即注册
查看: 14721|回复: 18

遇到问题请帮忙解决

[复制链接]
发表于 2012-4-19 23:05:47 | 显示全部楼层 |阅读模式
我再尝试着做蓝牙小车在版主程序上小修改了下,但用手机蓝牙串口助手调试时发现直接发数字1或2没反应发 HEX 0X00或0X21等有反应是什么原因啊
回复

使用道具 举报

发表于 2012-4-19 23:06:45 | 显示全部楼层
本帖最后由 liuviking 于 2012-4-19 23:16 编辑

截个串口助手的图放到这里,这样才好分析。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-4-20 01:01:59 | 显示全部楼层
本帖最后由 zwopen 于 2012-4-20 01:04 编辑


hex 打钩 输入0x21 启动输入0x00 停止,去掉HEX 钩按1,2,3,4无效
所以无法使用版主开发的软件


回复 支持 反对

使用道具 举报

发表于 2012-4-20 01:40:29 | 显示全部楼层
你的下位机是怎么写的呢?单ASCII字符解析的?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-4-20 08:01:51 | 显示全部楼层
#include<reg52.h>
#include<math.h>
#define uchar unsigned char
#define uint unsigned int
uchar Buffer[7] = {0}; //从串口接收的数据
uint i,j;
sbit P1_0=P1^0;
sbit P1_1=P1^1;
sbit  out = P0^0;
/*char code reserve[3]_at_ 0x3b; //保留0x3b开始的3个字节                        */




/**********************************************************

us延时子函数 (500us)

**********************************************************/
void delayus(unsigned char x)
{
  unsigned char i;
  while (x--)
  {
    for (i = 0; i < 58; i++)
      ;
  }
}

/**********************************************************

归中子函数 (0度

**********************************************************/
void  Prog0(void)
{
   unsigned char m;

   for(m=0; m<30; m++)
   {
     out = 1;
     delayus(3);           //延时1.5ms
     out = 0;
     delayus(37);          //延时18.5ms
   }
}

/**********************************************************

逆时针转动子函数  1ms

**********************************************************/
void  Prog1(void)
{
   unsigned char m;
   
   for(m=0; m<40; m++)
   {
     out = 1;             //延时1ms
     delayus(2);
     out = 0;
     delayus(38);        //延时19ms
   }
}
/**********************************************************

顺时针转动子函数 2ms

**********************************************************/
void  Prog2(void)
{
   unsigned char m;
   
   for(m=0; m<40; m++)
   {
     out = 1;
     delayus(4);           //延时2ms
     out = 0;
     delayus(36);          //延时18ms
   }
}







/********************************************************************
* 名称 : Delay_1ms()
* 功能 : 延时子程序,延时时间为 1ms * x
* 输入 : x (延时一毫秒的个数)
* 输出 : 无
***********************************************************************/
void Delay_1ms(uint i)//1ms延时
{
uchar x,j;
for(j=0;j<i;j++)
for(x=0;x<=148;x++);
}
/********************************************************************
* 名称 : Com_Int()
* 功能 : 串口中断子函数
* 输入 : 无
* 输出 : 无
***********************************************************************/
void Com_Int(void) interrupt 4
{

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

}
EA = 1;
}
/********************************************************************
* 名称 : Com_Init()
* 功能 : 串口初始化,晶振11.0592,波特率9600,使串口中断
* 输入 : 无
* 输出 : 无
***********************************************************************/
void Com_Init(void)
{
TMOD = 0x20;
PCON = 0x00;
SCON = 0x50;
TH1 = 0xFd; //设置波特率 9600
TL1 = 0xFd;
TR1 = 1; //启动定时器1
ES = 1; //开串口中断
EA = 1; //开总中断
}
/********************************************************************
* 名称 :Moto_Forward()
* 功能 : 电机正转启动前进
* 输入 : 1
* 输出 : 无
***********************************************************************/
void Moto_Forward()
{
P1_0=1;
P1_1=0;

         

}
/********************************************************************
* 名称 :Moto_Backward()
* 功能 : 电机反转启动后退
* 输入 : 4
* 输出 : 无
***********************************************************************/
void Moto_Backward()
{

P1_0=0;
P1_1=1;

         

}
/********************************************************************
* 名称 :Moto_FLeft()
* 功能 : 电机正转前进舵机左转1.0ms-60度,前左
* 输入 : 3
* 输出 : 无
***********************************************************************/
void Moto_FLeft()
{
P1_0=1;
P1_1=0;


}
/********************************************************************
* 名称 :Moto_FRight()
* 功能 : 电机正转前进舵机右转2.0ms60度,前右
* 输入 : 2
* 输出 : 无
***********************************************************************/
void Moto_FRight()
{
P1_0=1;
P1_1=0;


}
/********************************************************************
* 名称 :Moto_Stop()
* 功能 : 电机停止
* 输入 : 0
* 输出 : 无
***********************************************************************/
void Moto_Stop()
{
P1_0=0;
P1_1=0;

}
/********************************************************************
* 名称 :Moto_BLeft()
* 功能 : 电机反转前进舵机左转1.0ms-60度,退左
* 输入 : 6
* 输出 : 无
***********************************************************************/
void Moto_BLeft()
{
P1_0=0;
P1_1=1;


}
/********************************************************************
* 名称 :Moto_BRight()
* 功能 : 电机正转前进舵机右转2.0ms60度,退右
* 输入 : 5
* 输出 : 无
***********************************************************************/
void Moto_BRight()
{
P1_0=0;
P1_1=1;

/*Delay_1ms(100);         */
}


/********************************************************************
主程序
***********************************************************************/

void main()
{
Delay_1ms(100);
Com_Init();//串口初始化
Prog0();
while(1)
{
switch(Buffer[0])
{
case 0: Prog0();Moto_Stop(); break;
case 1: Prog0();Moto_Forward(); break;
case 4: Prog0();Moto_Backward(); break;
case 3: Prog1();Moto_FLeft(); break;
case 2: Prog2();Moto_FRight(); break;
case 6: Prog1();Moto_BLeft(); break;
case 5: Prog2();Moto_BRight(); break;

}

}
}
解析应该怎么写啊
回复 支持 反对

使用道具 举报

发表于 2012-4-20 08:25:06 | 显示全部楼层
把上位机串口发送命令代码贴出来。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-4-20 08:42:10 | 显示全部楼层
上位机就是蓝牙串口助手啊
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-4-20 19:45:43 | 显示全部楼层
有人解答吗?
回复 支持 反对

使用道具 举报

发表于 2012-4-20 20:16:52 | 显示全部楼层
你这个地方要减去48。  Buffer[0] = SBUF-48;因为串口助手不用Hex格式发送的时候,发下来的是ASCII字符,减去48才是正好1.2.3.4
回复 支持 反对

使用道具 举报

发表于 2012-4-20 21:28:59 | 显示全部楼层
编程用的什么软件啊
回复 支持 反对

使用道具 举报

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

本版积分规则

关闭

新品特惠推荐上一条 /2 下一条

QQ|QQ技术咨询1|QQ技术咨询2|商务合作微信1:xiaorgeek001|商务合作微信2:XiaoRGEEK|诚聘英才|Archiver|手机版|小R科技-WIFI机器人网·机器人创意工作室 ( 粤ICP备15000788号-6 )

GMT+8, 2024-11-22 23:46 , Processed in 1.147269 second(s), 18 queries .

Powered by XiaoR GEEK X3.4

© 2014-2021 XiaoR GEEK

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