打印

有用过VisualScope调波么?

[复制链接]
3642|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
huster_tjs|  楼主 | 2014-3-14 14:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
没有示波器,看到网上有这个VisualScope虚拟滤波器,但是不会用。。。
在网上看到这样一个程序,看起来挺合适的,下载到单片机,然后打开VisualScope,不显示波形,不知道怎么办了?
我的步骤是这样的:
1、下载程序到单片机
2、打开VS,设置com3,波特率9600。
3、然后打开setup,将设置成CRC16模式
4、点击RUN,没有波形

而我用它自带的串口通信,能够接收到数据。


#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[i];  //逐字节异或
        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[i]; //向串口送出数据这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[i]; //向串口送出数据这10个字节数据
                  while(TI==0);
           TI=0;
       }
     tmp--;  //递减
        if(tmp==0)//当tmp递减到0时,改变Sta状态
       {
            Sta=0;
       }
   }
        Delayms(20);//延时20毫秒
    }
}

相关帖子

沙发
guowei111| | 2015-5-5 16:07 | 只看该作者
楼主,搞出来了吗?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

9

主题

31

帖子

0

粉丝