⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dsomaindlg.cpp

📁 最新的USB示波器源码?可直接编译生成可执行程序,需要硬件支持
💻 CPP
📖 第 1 页 / 共 5 页
字号:
	   acquire.acquire_freq=0;
	  
	   ord[3]=0x4c;
	   ord[4]=0x4b;
	   ord[5]=0x3F;
       
	   ord[6]&=0xfd;    //SLOW 采样模式,不采用触发

	   break;
   case 1:  //5s            =5/50=0.1s  100ms    采样率50M/s 分频因  2500000-1=2499999 每个100ms采集并绘制一点 
	   acquire.acquire_freq=0;
      
	   ord[3]=0x26;
	   ord[4]=0x25;
	   ord[5]=0x9F;

	   ord[6]&=0xfd;   //SLOW 采样模式,不采用触发


	   break;
   case 2:  //2s            =2/50=0.04s  40ms    采样率50M/s 分频因  1000000-1=999999 每个40ms采集并绘制一点  
	 acquire.acquire_freq=0;
	  
	   ord[3]=0x0f;
	   ord[4]=0x42;
	   ord[5]=0x3f;
	   ord[6]&=0xfd;  //SLOW 采样模式,不采用触发
	   break;
   case 3:  //1s            =1/50=0.02s  20ms    采样率50M/s 分频因  500000-1=499999  每个20ms采集并绘制一点 
	   acquire.acquire_freq=0;
	   
	   ord[3]=0x07;
	   ord[4]=0xa1;
	   ord[5]=0x1F;
	   ord[6]&=0xfd;  //SLOW 采样模式,不采用触发
	   break;
   case 4:  //500ms         =500/50=     10ms    采样率50M/s 分频因  250000-1=249999  每个10ms采集并绘制一点 
	  acquire.acquire_freq=0;
      
	   ord[3]=0x03;
	   ord[4]=0xd0;
	   ord[5]=0x8f;
	  ord[6]&=0xfd; //SLOW 采样模式,不采用触发
	   break;
   case 5:  //200ms         =200/50=     4ms     采样率50M/s 分频因 100000-1=99999 每个4ms采集并绘制一点 
     acquire.acquire_freq=0;
       ord[3]=1;
	   ord[4]=0x86;
	   ord[5]=0x9F;

       ord[6]&=0xfd;  //SLOW 采样模式,不采用触发
	   break;
   case 6:  //100ms         =100/50=     2ms     采样率50M/s 分频因 50000-1=49999  1s更新1次波形
       acquire.acquire_freq=0; 
	   ord[3]=0;
	   ord[4]=0xc3;
	   ord[5]=0x4F;
	   
	   break;
   case 7:  //50ms          =50/50=      1ms     采样率50M/s 分频因 25000-1=24999 
      acquire.acquire_freq=0;
	   ord[3]=0;
	   ord[4]=0x61;
	   ord[5]=0xa7;
	   break;
   case 8: //20ms           =20/50=      400us   采样率50M/s 分频因 10000-1=9999   
	acquire.acquire_freq=0;
       ord[3]=0;
	   ord[4]=0x27;
	   ord[5]=0x0F;
	   break;
   case 9: //10ms        =10/50=      200us   采样率50M/s 分频因 5000-1=4999   
	acquire.acquire_freq=0;
	   ord[3]=0;
	   ord[4]=0x13;
	   ord[5]=0x87;
	   break;   
  case 10: //5ms        =5/50=       100us   采样率50M/s 分频因 2500-1=2499 
	acquire.acquire_freq=0;
       ord[3]=0;
	   ord[4]=9;
	   ord[5]=0xc3;
	  break; 
  case 11://2ms         =2/50         40us   采样率50M/s 分频因 1000-1=999 
	acquire.acquire_freq=0;
	   ord[3]=0;
	   ord[4]=3;
	   ord[5]=0xe7;
	  break;
  case 12://1ms         =1/50         20us/20=1000/2=500   采样率50M/s 分频因 500-1=499
	acquire.acquire_freq=0;
       ord[3]=0;
	   ord[4]=1;
	   ord[5]=0xf3;
        
	  break;
  case 13: //500us      =500/50       10us/20=500/2=250   采样率50M/s  分频因 250-1=249
	if (acquire.acquisition==2)  //10000ns/4ns =2500/2=1250
    	{acquire.acquire_freq=3;
	      c=FREQ_SEL_250M;
		   ord[3]=0;
	       ord[4]=4;
	       ord[5]=0xe2;
		}
		else
		{
	  acquire.acquire_freq=0;	
       ord[3]=0;
	   ord[4]=0;
	   ord[5]=249;
		}

	  break;
  case 14:  //200us     =200/50       4us/20ns=200/2=100   采样率50M/s 分频因 100-1=99
	  if (acquire.acquisition==2)  //4000ns/4ns =1000/2=500
    	{acquire.acquire_freq=3;
	      c=FREQ_SEL_250M;
		   ord[3]=0;
	       ord[4]=1;
	       ord[5]=0xf4;  //500;
		}
		else
		{
	  acquire.acquire_freq=0;	
       ord[3]=0;
	   ord[4]=0;
	   ord[5]=99;
		}
	  break;
  case 15:  //100us     =100/50       2us/20ns=100/2=50    采样率50M/s 分频因 50-1=49
	  if (acquire.acquisition==2)  //2000ns/4ns =500/2=250
    	{acquire.acquire_freq=3;
	      c=FREQ_SEL_250M;
		   ord[3]=0;
	       ord[4]=0;
	       ord[5]=250;
		}
		else
		{
	acquire.acquire_freq=0;
       ord[3]=0;
	   ord[4]=0;
	   ord[5]=49;
		}
	  break;
  case 16:  //50us      =50/50        1us/20ns=50/2=25    采样率50M/s 分频因 25-1=24
	
	  if (acquire.acquisition==2)  //1000ns/4ns =250/2=125
    	{acquire.acquire_freq=3;
	      c=FREQ_SEL_250M;
		   ord[3]=0;
	       ord[4]=0;
	       ord[5]=125;
		}
		else
		{
	  
	  acquire.acquire_freq=1;	//3cc8
	   ord[3]=0;
	   ord[4]=0;
	   ord[5]=24;
		}
	  break;
  case 17:  //20us      =20000/50       400ns/20ns=20/2=10  采样率50M/s 分频因 10-1=9
	 if (acquire.acquisition==2)  //400ns/4ns =100/2=50
    	{acquire.acquire_freq=3;
	      c=FREQ_SEL_250M;
		   ord[3]=0;
	       ord[4]=0;
	       ord[5]=50;
		}
		else
		{
	  acquire.acquire_freq=0;
	
	   ord[3]=0;
	   ord[4]=0;
	   ord[5]=9;
		}
	  break;
  case 18:  //10us      =10000/50       200ns/20ns=10/2=5  采样率50M/s 分频因 5-1=4  
	
	   if (acquire.acquisition==2)  //200ns/4ns =50/2=25
    	{acquire.acquire_freq=3;
	      c=FREQ_SEL_250M;
		   ord[3]=0;
	       ord[4]=0;
	       ord[5]=25;
		}
		else
		{
	  acquire.acquire_freq=1;
        
	   ord[3]=0;
	   ord[4]=0;
	   ord[5]=4;
		}
	  break;
  case 19:  //5us       =5000/50        100ns   采样率100M/s 分频因 5-1=4
	  if (acquire.acquisition==2)  //100ns/4ns =25/2=12
    	{acquire.acquire_freq=3;
	      c=FREQ_SEL_250M;
		   ord[3]=0;
	       ord[4]=0;
	       ord[5]=12;
		}
		else
		{
	acquire.acquire_freq=2; //3ac8
	   c=FREQ_SEL_100M;
	   ord[3]=0;
	   ord[4]=0;
	   ord[5]=4;
		}
	  break;
  case 20:  //2us       =2000/50        40ns    采样率50M/s  分频因 2-1=1
	  
	    if (acquire.acquisition==2)  //40ns/4ns =10/2=5
    	{acquire.acquire_freq=3;
	      c=FREQ_SEL_250M;
		   ord[3]=0;
	       ord[4]=0;
	       ord[5]=5;
		}
		else
		{
	    acquire.acquire_freq=0;	  
        ord[3]=0;
	    ord[4]=0;
	    ord[5]=0;
		}
 
      break;
  case 21: //1us        =1000/50        20ns    采样率50M/s 直接绘制波形

	 if (acquire.acquisition==2)  //20ns/4ns =5/2=2
    	{acquire.acquire_freq=3;
	      c=FREQ_SEL_250M;
		   ord[3]=0;
	       ord[4]=0;
	       ord[5]=2;
		}
	 else
	 {	acquire.acquire_freq=1;
	  // ord[3]=0;
	  // ord[4]=0;
	  // ord[5]=0x01;
       ord[6]=0x02; //禁止低速采样
	}
	 
	  break;
  case 22: //500ns      =500/50      10ns    采样率100M/s 直接绘制波形
	 acquire.acquire_freq=2;
     c=FREQ_SEL_100M;
	 ord[6]=0x02; //禁止低速采样
	   
	  break;
  case 23:  //200ns     =200/50      4ns     采样率250M/s 直接绘制波形
     acquire.acquire_freq=3;	 //38fa
	 c=FREQ_SEL_250M;
	 ord[6]=0x02; //禁止低速采样
          break;
  case 24: //100ns      =100/50      2ns     采样率250M/s 隔一点绘制 
  case 25: //50ns       =50/50       1ns     采样率250M/s 隔二点绘制 
  case 26: //20ns       =20/50      0.4ns    采样率500M/s 使用插值sin(x)/x插值算法
  case 27: //10ns       =10/50      0.2ns    采样率500M/s 使用插值sin(x)/x算法
  case 28: //5ns        =5/50       0.1ns    采样率500M/s 使用插值sin(x)/x算法
	  c=FREQ_SEL_250M;
	  ord[6]=0x02; //禁止低速采样 使两个AD同时工作
	  //time_base.x_step=step[i-24];
      acquire.acquire_freq=4;
	  
	  break; 
	  
   } 


  ord[1]=c;
 // ord[6]|=0x04;
  SendCommandToUSB(VR_USRCMD);
  //ord[0]='C';
  // SendCommandToUSB(VR_USRCMD);
/*
  ord[0]='L';
  ord[1]=0;
  ord[2]=0;
  ord[3]=0;
  ord[4]=0;
  ord[5]=0;
  ord[6]=0;
  if(i>18)
  { ord[6]|=0x0c;
     ord[6]|=0x30;
  }else
  {
   ord[6]|=0x08;
     ord[6]|=0x20;

  }

 SendCommandToUSB(VR_USRCMD);*/
 m_displayWnd.ReDrawSCreen();
}


const int vlot_div[]={50000,20000,10000,5000,2000,1000,500,200,100,50,20,10,5};

	//0 	10V/Div   5X10V=50V    -->衰减100倍=500mV  500/500=1 放大系数 1dB
	//1 	5V/Div    5X5V=25V     -->衰减100倍=250mV  500/250=2 放大系数 2dB
    //2 	2V/Div    5X2V=10V     -->衰减100倍=100mV  500/100=5 放大系数 5dB
    //3 	1V/Div    5X1v=5V      -->衰减10倍=500mV   500/500=1 -------->1dB
	//4 	0.5V/Div  5X0.5V=2.5V  -->衰减10倍=250mV   500/250=2 -------->2dB
	//5 	0.2V/Div  5X0.2V=1V    -->衰减10倍=100mV   500/100=5 ------->5dB

	//6 	0.1V/Div  5X0.1V=500mV                     500/500=1 ------->1dB
	//7 	50mV/Div  5X50mV=250mV                     500/250=2 ------->2dB 
    //8 	20mV/Div  5X20mV=100mV                     500/100=5 ------->5dB
	//9 	10mV/Div  5X10mV=50mV                      500/50=10 ------->10dB
	//10	5mV/Div   5X5mV=25mV                       500/25=20 ------->20dB

//#define PD   0x2000

#define AD8337_1DB_H 0xAD  //控制电压小于-610mV dx=(700-(-610))*1024/2330=576=0x240*4|PD=0x2900
#define AD8337_1DB_L 0x38

#define AD8337_2DB_H 0xaB  //控制电压-481mV dx=(700+481)*1024/2330=519=0x207*4|PD=0x281c
#define AD8337_2DB_L 0x2c

#define AD8337_5DB_H 0xa9  //控制电压-338mV dx=(700+338)*1024/2330=456=0x1c8*4|PD=0x2720
#define AD8337_5DB_L 0x58

#define AD8337_10DB_H 0xa7 //控制电压-103mV dx=(700+103)*1024/2330=353=0x161*4|PD=0x2584
#define AD8337_10DB_L 0xBc

#define AD8337_20DB_H 0xa5 //控制电压 360mV dx=(700-360)*1024/2330=149=0x95*4|PD=0x2254
#define AD8337_20DB_L 0x60

#define PWM1_1DB 210
#define PWM1_2DB 211
#define PWM1_5DB 211
#define PWM1_10DB 212
#define PWM1_20DB 214

//D0 : ac 
//d1 : dc
//d2: att 100
//d3: short att 100
//d4: att 10
//d5: short att 10
//D6 : att GND
#define ATT_1000 0x14
#define ATT_100 0x24
#define ATT_10  0x18
#define ATT_1   0x28



void CDSOMainDlg::OnChadbCtrl() 
{ 
	int i=m_chadbCtl.GetSelectSwitch();
    cha_param.vlot_d =vlot_div[i];
   
	ord[0]=CMD_CTL_CHX;
	ord[2]=0;
    switch(i)
	{
	case 0: //50V/div //衰减1000dB
		ord[1]=ATT_1000;
        ord[3]=AD8337_2DB_H;
	    ord[4]=AD8337_2DB_L;
		ord[5]=PWM1_2DB;
		
		break;
	case 1: //20V/div
    	ord[1]=ATT_1000; //衰减1000dB
        ord[3]=AD8337_5DB_H;
	    ord[4]=AD8337_5DB_L;
		ord[5]=PWM1_5DB;
  		break;
	case 2: //10V/div //衰减100dB
       ord[1]=ATT_100;
	    ord[3]=AD8337_1DB_H;
	    ord[4]=AD8337_1DB_L;
		ord[5]=PWM1_1DB;
	   break;
	case 3:  //5V/div
        ord[1]=ATT_100; //衰减100dB
        ord[3]=AD8337_2DB_H;
	    ord[4]=AD8337_2DB_L;
		ord[5]=PWM1_2DB;

		break;
	case 4:  //2V/div
        ord[1]=ATT_100;   //衰减100dB
        ord[3]=AD8337_5DB_H;
	    ord[4]=AD8337_5DB_L;
		ord[5]=PWM1_5DB;
		break;

    case 5:  //1V/div
		ord[1]=ATT_10;  //衰减10dB
        ord[3]=AD8337_1DB_H;
	    ord[4]=AD8337_1DB_L;
		ord[5]=PWM1_1DB;

		break;
	case 6:  //500mV/div
       ord[1]=ATT_10;   //衰减10dB
       ord[3]=AD8337_2DB_H;
	    ord[4]=AD8337_2DB_L;
		ord[5]=PWM1_2DB;
		break;

	case 7:   //200mV/div
       ord[1]=ATT_10; //衰减1dB
        ord[3]=AD8337_5DB_H;
	    ord[4]=AD8337_5DB_L;
		ord[5]=PWM1_5DB;
		break;

	case 8:  //100mV/div
       ord[1]=ATT_1;//衰减1dB
	    ord[3]=AD8337_1DB_H;
	    ord[4]=AD8337_1DB_L;
		ord[5]=PWM1_1DB;

		break;
	case 9:   //50mV/div
       ord[1]=ATT_1;//衰减1dB
	    ord[3]=AD8337_2DB_H;
	    ord[4]=AD8337_2DB_L;
		ord[5]=PWM1_2DB;
		break;
	
	case 10:  //20mV/div
         ord[1]=ATT_1; //衰减1dB
	     ord[3]=AD8337_5DB_H;
	     ord[4]=AD8337_5DB_L;
		 ord[5]=PWM1_5DB;

		break;	
	case 11: //10mV/div
		ord[1]=ATT_1; //衰减1dB
        ord[3]=AD8337_10DB_H;
	    ord[4]=AD8337_10DB_L;
		ord[5]=PWM1_10DB;
		break;

	case 12:  //5mV/div
		ord[1]=ATT_1; //衰减1dB
	    ord[3]=AD8337_20DB_H;
	    ord[4]=AD8337_20DB_L;
		ord[5]=PWM1_20DB;
		break;

	}

   	ord[1]|=coupline_reg;
    SendCommandToUSB(VR_USRCMD);
    Sleep(50);

	ord[0]=CMD_I;
	ord[1]=0x00;
	ord[1]|=coupline_reg;
    SendCommandToUSB(VR_USRCMD);
    m_displayWnd.ReDrawSCreen();

}


#define AD8337_1DB_H_CH2 0x6D  //控制电压小于-610mV dx=(700-(-610))*1024/2330=576=0x240*4|PD=0x2900
#define AD8337_1DB_L_CH2 0xb8

#define AD8337_2DB_H_CH2 0x6b  //控制电压-481mV dx=(700+481)*1024/2330=519=0x207*4|PD=0x281c
#define AD8337_2DB_L_CH2 0x90

#define AD8337_5DB_H_CH2 0x69  //控制电压-338mV dx=(700+338)*1024/2330=456=0x1c8*4|PD=0x2720
#define AD8337_5DB_L_CH2 0x8c

#define AD8337_10DB_H_CH2 0x67 //控制电压-103mV dx=(700+103)*1024/2330=353=0x161*4|PD=0x2584
#define AD8337_10DB_L_CH2 0xdc

#define AD8337_20DB_H_CH2 0x64 //控制电压 360mV dx=(700-360)*1024/2330=149=0x95*4|PD=0x2254
#define AD8337_20DB_L_CH2 0xfc

#define PWM2_1DB 202
#define PWM2_2DB 202
#define PWM2_5DB 202
#define PWM2_10DB 202
#define PWM2_20DB 202


void CDSOMainDlg::OnChbdbCtrl() 
{
	int i=m_chbdbCtl.GetSelectSwitch();
    chb_param.vlot_d =vlot_div[i];

   	ord[0]=CMD_CTL_CHX;
	ord[2]=1;
    switch(i)
	{
	case 0: //50V/div //衰减1000dB
		ord[1]=ATT_1000;
        ord[3]=AD8337_2DB_H_CH2;
	    ord[4]=AD8337_2DB_L_CH2;
		ord[5]=PWM2_2DB;
		
		break;
	case 1: //20V/div
    	ord[1]=ATT_1000; //衰减1000dB
        ord[3]=AD8337_5DB_H_CH2;
	    ord[4]=AD8337_5DB_L_CH2;
		ord[5]=PWM2_5DB;
  		break;
	case 2: //10V/div //衰减100dB
       ord[1]=ATT_100;
	    ord[3]=AD8337_1DB_H_CH2;
	    ord[4]=AD8337_1DB_L_CH2;
		ord[5]=PWM2_1DB;
	   break;
	case 3:  //5V/div
        ord[1]=ATT_100; //衰减100dB
        ord[3]=AD8337_2DB_H_CH2;
	    ord[4]=AD8337_2DB_L_CH2;
		ord[5]=PWM2_2DB;

		break;
	case 4:  //2V/div
        ord[1]=ATT_100;   //衰减100dB
        ord[3]=AD8337_5DB_H_CH2;
	    ord[4]=AD8337_5DB_L_CH2;
		ord[5]=PWM2_5DB;
		break;

    case 5:  //1V/div
		ord[1]=ATT_10;  //衰减10dB
        ord[3]=AD8337_1DB_H_CH2;
	    ord[4]=AD8337_1DB_L_CH2;
		ord[5]=PWM2_1DB;

		break;
	case 6:  //500mV/div

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -