智能车制作

标题: 关于串口示波器Visual Scope的问题大家帮帮我吧! [打印本页]

作者: txz001    时间: 2012-3-10 19:37
标题: 关于串口示波器Visual Scope的问题大家帮帮我吧!
  我按照Visual Scope数据格式要求,在C51做了个模拟送数据,可Visual Scope就是不能显示。用它自带的串口助手,检测数据都是正确的。很急啊,做了陀螺仪数据和加速度计数据还等着用它来测试对比信号情况呢。我发上代码和,串口助手接收的图,大家帮我找找原因啊!

#include <AT89X52.H>
#include <intrins.H>
#define uchar unsigned char
#define uint unsigned int
uchar  buff2[10];//定义要发送的10个数据
/*********************************
// 延时毫秒函数,对12MHz晶振
// ,刚好为1000毫秒
**********************************/
void Delayms(uint count)
{
  uint i;
  while(count--)
   { for(i=0;i<80;i++){}
   }
  _nop_();
  _nop_();
  _nop_();
  _nop_();
  _nop_();
}
//****************************************************
//CRC_CHECK函数做一个10字节的数据包以便向串口发送数据
//让Visualscop程序可以实时显示出波形
//*****************************************************
void CRC_CHECK(unsigned char *Buf, unsigned char Len)
{
    unsigned int CRC_Temp;
    unsigned char i,j;
    CRC_Temp = 0xffff;     //CRC初始化
    for (i=0;i<Len; i++)//要循环的次数,就是Buf的字节数
      {      
        CRC_Temp ^= Buf;  //逐字节异或
        for (j=0;j<8;j++)
          {
            if (CRC_Temp & 0x01)  //如果低位为1
              {
                CRC_Temp = (CRC_Temp >>1 ) ^ 0xa001; //将CRC右移一位后与0xA001异或
              }
            else   //如果低位为0
              {
                CRC_Temp = CRC_Temp >> 1;  //将CRC右移一位
              }
          }
       }
  Buf[8] = CRC_Temp & 0x00ff;  //将第9个数据赋上CRC的低字节
  Buf[9] =CRC_Temp >>8;//第10数据上是CRC的高字节
}
//****************
//    主函数
//****************
void Main( void )
{ uchar i,Sta,tmp;
  //?------设置串口------
  SCON=0x50; //串口方式1
  TMOD=0x20; //定时器1,定时方式为2
  PCON=0x00; //设定串口工作方式1/64
  TCON=0x40; //设定时器1开始计数
  TH1=0xfd;  //设定波特率为9600
  TL1=0xfd;  //
  TR1=1;     //启动定时器
  Sta=0;//计数的状态标志,0为向上递增,1为向下递减
  tmp=0;//要显示的波形数据
  while(1)
    {  if(Sta==0)//如果Sta为0,将tmp逐次递增并赋给buff2[0]
  {
    buff2[0]=tmp;
           CRC_CHECK(buff2, 8);//准备数据
           for(i=0;i<10;i++)
             {
         SBUF=buff2; //向串口送出数据这10个字节数据
                while(TI==0);  //确认发送完成
         TI=0;
             }
    tmp++;  //递增
    if(tmp==255)//如果tmp递增到255,就改变状态为1,进行递减操作
     {
       Sta=1;
     }
   }
else  //如果Sta为1时就进行递减操作
   {
            buff2[0]=tmp;
            CRC_CHECK(buff2, 8);//准备数据
            for(i=0;i<10;i++)
              {
           SBUF=buff2; //向串口送出数据这10个字节数据
                  while(TI==0);
           TI=0;
       }
     tmp--;  //递减
        if(tmp==0)//当tmp递减到0时,改变Sta状态
       {
            Sta=0;
       }
   }
        Delayms(20);//延时20毫秒
    }
}
图片我怎么发不上去呢?


作者: 玩ㄝ★卟恭    时间: 2012-3-16 14:44
楼主和我遇到 一个问题 已经遵守CRC16协议  为什么还是没有显示波形  请问楼主解决了吗
作者: liucheng_34    时间: 2012-4-10 12:54
那位大神能指导我们下,不胜感激!
作者: txz001    时间: 2012-4-12 23:13
我自己解决了,程序是正确的,是我的显示屏太小,800 x 600的,看不到RUN键,就以为左上角那个播放键是一样的功能,后来才知道不是,我铵TAB键切到RUN键后按确认,就能看到了。
作者: 意林    时间: 2012-4-15 01:24
txz001 发表于 2012-4-12 23:13
我自己解决了,程序是正确的,是我的显示屏太小,800 x 600的,看不到RUN键,就以为左上角那个播放键是一样 ...

没看懂说明文档怎么办?求楼主赐教,,,,,,,
CRC16是检验吗?数据格式是什么呢?

作者: renqinglei    时间: 2012-4-17 21:22
txz001 发表于 2012-4-12 23:13
我自己解决了,程序是正确的,是我的显示屏太小,800 x 600的,看不到RUN键,就以为左上角那个播放键是一样 ...

我按你这个怎么看不到呢?
作者: 蒙雨轩逸    时间: 2012-4-25 22:12
哥们,我也是做电磁的。我的求求452091217,希望你能加我。

作者: 87外泄    时间: 2012-5-15 20:30

作者: 书的那页    时间: 2012-6-5 16:36
可以加下qq吗?我的541291141 请教下那个上位机,可能都会有进步

作者: cqhb小麦    时间: 2013-1-20 21:27
呵呵




欢迎光临 智能车制作 (http://111.231.132.190/) Powered by Discuz! X3.2