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

📄 lm339.txt

📁 此项为LM339测试程序
💻 TXT
字号:
/***********************************
   Tester       : UTS2000/A680    
   Part Number  : L439(LM339)  
   Test Program : L439A1_D
   Date         : 2006.11.03
   Author       : TS.Huang	
***********************************/
/** Add Output Leakage Current Test**/
/**2006-08-25**/
/** Add Output Saturation Voltage Test**/
/**2006-10-18**/
/** Add Input Common Voltage **/
/**2006-10-19**/
/** Change the VCM voltage(+-14.0&13.9) to 13.55&13.65 And -14.8&-14.9**/
/**2006-12-17**/
#include <stdio.h>
#include <graphics.h>
#include <math.h>
#include <user.h>

void Icc(void);
void vout(void);
void Vos(void);
void output(void);
void vsat(void);

void main()
 {
	terminal="1034Xprober";

	ROW=8;
	CHIP_NUMBER=14284;                   /*测试管脚总数*/
	PARAMETER[0]="6u439A_a";             /*0-8为测试的参数值*/
	PARAMETER[1]=" 1. Icc";
	PARAMETER[2]=" 2. Output Voltage Swing";
	PARAMETER[3]=" 3. Output Voltage(Common Mode)";
	PARAMETER[4]=" 4. Vos";
	PARAMETER[5]=" 5. Ios";
	PARAMETER[6]=" 6. Ib";
	PARAMETER[7]=" 7. Output Leakage Current";
	PARAMETER[8]=" 8. Vsat";

	menu();



	finaltest=0;/*以下为测试程序*/

	do {
	    reset();
	    test();
	    Icc();
	      if (failflg==1)
		 {
		   fail_number(1);
		   display(01);
		   continue;
		  }

	    vout();
	      if (failflg==2)
		 {
		   fail_number(2);
		   display(02);
		   continue;
		  }

	      if (failflg==3)
		 {
		   fail_number(3);
		   display(03);
		   continue;
		  }
 	   Vos();
	      if (failflg==4)
		 {
		   fail_number(4);
		   display(04);
		   continue;
		  }
	      if (failflg==5)
		 {
		   fail_number(5);
		   display(05);
		   continue;
		  }
	    	if (failflg==6)
		 {
		   fail_number(6);
		   display(06);
		   continue;
		  }
	     output();
	     if (failflg==7)
		 {
		   fail_number(7);
		   display(07);
		   continue;
		  }
 		vsat();
	     if (failflg==8)
		 {
		   fail_number(8);
		   display(10);
		   continue;
		  }

	    okpass();
	    }while (1);/*只要满足以上部分则为fail*/
       }

void Icc()
    {
      float i1,i2;
      int n;

      dis_connect(1,2,3,4,5,6,7,8,9,10,11,12,13,14,0);
      disconnect_5v_relay(1,2,3,4,5,6,8,9,10,11,0);
      wait(5);
      ground_pin(12,0);
      force_vcc("on",0.1);
      wait(2);
      force_vcc("on",5);
      wait(5);
      i1=i_vcc(3,10)*1000;

      dis_connect(12,0);
      connect_vs2(12,0);/*VS2为测试机提供的电压值,12为探针台卡上的第12通道*/
      wait(5);
      force_vs2("on",-1);
      force_vcc("on",1);
      wait(5);
      force_vs2("on",-15);
      force_vcc("on",15);
      wait(5);
      i2=i_vcc(3,10)*1000-0.12;

      dis_connect(12,0);
      force_vs2("off",0);
      force_vcc("off",0);

      if (displaymode==0)
	 {
	   lcprintf("\n        ********* UTC L439 TEST DATA *********\n");
	   lcprintf("          ********* TEST THE L439 ICC *********\n");
	   lcprintf("          ICC(+5.0V)=%7.3f; ICC(+30V)=%7.3f  \n\n",i1,i2);
	 }
	   saveitem("%7.3f	%7.3f	",i1,i2);
      if (judge==0)
	 {
	   if ( ( fabs(i1-0.8) > 0.5 )|| ( i2 >2.0))
	      {
		 failflg=1;
		 return;
	      }
	  }
     failflg=0;
     return;
  }

void vout()
    {
      float uoh1,uol1;
      float uoh2,uol2;
      float uoh3,uol3;
      float uoh4,uol4;
      float vcmh_a1,vcmh_b1;
      float vcml_a1,vcml_b1;
      float vcmh_a2,vcmh_b2;
      float vcml_a2,vcml_b2;
      float vcmh_c1,vcmh_d1;
      float vcml_c1,vcml_d1;
      float vcmh_c2,vcmh_d2;
      float vcml_c2,vcml_d2;

      int n;

      connect_5v_relay(3,0);
      connect_vs2(12,0);/**VEE**/
      connect_vs3(5,7,9,11,0);
      connect_vs1(4,6,8,10,0);
      connect_5v_relay(4,0);/**Open Gain**/
      wait(5);
      force_vcc("on",15);  /**15V**/
      force_vs2("on",-15);/**-15V**/
      wait(5);
      force_vs1("on",13.55);/**13.55**/
      force_vs3("on",13.65);/**13.65**/
      wait(5);
      vcmh_a1=measure_pin(1,3,5);
      vcmh_b1=measure_pin(2,3,5);
      vcmh_c1=measure_pin(13,3,5);
      vcmh_d1=measure_pin(14,3,5);


      force_vs1("on",13.65);/**13.65**/
      force_vs3("on",13.55);/**13.55**/
      wait(5);
      vcml_a1=measure_pin(1,3,5);
      vcml_b1=measure_pin(2,3,5);
      vcml_c1=measure_pin(13,3,5);
      vcml_d1=measure_pin(14,3,5);

      force_vs1("on",-14.8);/**-14.8**/
      force_vs3("on",-14.9);/**-14.9**/
      wait(5);
      vcml_a2=measure_pin(1,3,5);
      vcml_b2=measure_pin(2,3,5);
      vcml_c2=measure_pin(13,3,5);
      vcml_d2=measure_pin(14,3,5);


      force_vs1("on",-14.9);/**-14.9**/
      force_vs3("on",-14.8);/**-14.8**/
      wait(5);
      vcmh_a2=measure_pin(1,3,5);
      vcmh_b2=measure_pin(2,3,5);
      vcmh_c2=measure_pin(13,3,5);
      vcmh_d2=measure_pin(14,3,5);

      dis_connect(4,6,8,10,0);
      force_vs3("on",0);
      force_vs1("off",0);
      connect_5v_relay(1,4,0);/*D4,Open Gain*/
      wait(5);
      force_vs3("on", 0.3);
      wait(5);
      uoh1=measure_pin(1,3,5);
      uoh2=measure_pin(2,3,5);
      uoh3=measure_pin(13,3,5);
      uoh4=measure_pin(14,3,5);

      force_vs3("on", -0.3);
      wait(5);
      uol1=measure_pin(1,3,5);
      uol2=measure_pin(2,3,5);
      uol3=measure_pin(13,3,5);
      uol4=measure_pin(14,3,5);

      force_vs1("off",0);
      force_vs2("off",0);
      force_vs3("off",0);
      dis_connect(1,2,3,4,5,6,7,8,9,10,11,12,0);
      disconnect_5v_relay(1,2,3,4,0);

      if (displaymode==0)
	 {
	   lcprintf("     ********* TEST THE L439 OUTPUT VOLTAGE SWING *******\n");
           lcprintf("         VcmH_A(+)=%7.3fV     ;     VcmH_B(+)=%7.3fV\n",vcmh_a1,vcmh_b1);
	   lcprintf("          VcmL_A(+)=%7.3fV     ;     VcmL_B(+)=%7.3fV\n",vcml_a1,vcml_b1);
	   lcprintf("          VcmH_A(-)=%7.3fV     ;     VcmH_B(-)=%7.3fV\n",vcmh_a2,vcmh_b2);
	   lcprintf("          VcmL_A(-)=%7.3fV     ;     VcmL_B(-)=%7.3fV\n",vcml_a2,vcml_b2);
	   lcprintf("          VcmH_C(+)=%7.3fV     ;     VcmH_D(+)=%7.3fV\n",vcmh_c1,vcmh_d1);
	   lcprintf("          VcmL_C(+)=%7.3fV     ;     VcmL_D(+)=%7.3fV\n",vcml_c1,vcml_d1);
	   lcprintf("          VcmH_C(-)=%7.3fV     ;     VcmH_D(-)=%7.3fV\n",vcmh_c2,vcmh_d2);
	   lcprintf("          VcmL_C(-)=%7.3fV     ;     VcmL_D(-)=%7.3fV\n",vcml_c2,vcml_d2);
	   lcprintf("   VOH_A =%7.3fV  ;  VOH_B =%7.3fV ; VOH_C =%7.3fV ; VOH_D =%7.3fV\n",uoh1,uoh2,uoh3,uoh4);
	   lcprintf("   VOL_A =%7.3fV  ;  VOL_B =%7.3fV ; VOL_C =%7.3fV ; VOL_D =%7.3fV\n",uol1,uol2,uol3,uol4);



	 }
         saveitem("%7.3f	%7.3f	",vcmh_a1,vcmh_b1);
	  saveitem("%7.3f	%7.3f	",vcml_a1,vcml_b1);
	  saveitem("%7.3f	%7.3f	",vcmh_a2,vcmh_b2);
	  saveitem("%7.3f	%7.3f	",vcml_a2,vcml_b2);
	  saveitem("%7.3f	%7.3f	",vcmh_c1,vcmh_d1);
	  saveitem("%7.3f	%7.3f	",vcml_c1,vcml_d1);
	  saveitem("%7.3f	%7.3f	",vcmh_c2,vcmh_d2);
	  saveitem("%7.3f	%7.3f	",vcml_c2,vcml_d2);
	  saveitem("%7.3f	%7.3f	%7.3f	%7.3f	",uoh1,uoh2,uoh3,uoh4);
	  saveitem("%7.3f	%7.3f	%7.3f	%7.3f	",uol1,uol2,uol3,uol4);
      if (judge==0)
	 {
	   if (   ( uoh1 < 14.5 ) || ( uoh2 < 14.5 )|| ( uol1 > -14.3 ) || ( uol2 > -14.3 )
		||( uoh3 < 14.5 ) || ( uoh4 < 14.5 )|| ( uol3 > -14.3 ) || ( uol4 > -14.3 )
		)
	     {
	      failflg=2;
	      return;
	     }
	 if (  ( vcmh_a1 < 14.5 ) || ( vcmh_b1 < 14.5 )|| ( vcml_a1 > -14.3 ) || ( vcml_b1 > -14.3 )
	     ||( vcmh_a2 < 14.5 ) || ( vcmh_b2 < 14.5 )|| ( vcml_a2 > -14.3 ) || ( vcml_b2 > -14.3 )
	     ||( vcmh_c1 < 14.5 ) || ( vcmh_d1 < 14.5 )|| ( vcml_c1 > -14.3 ) || ( vcml_d1 > -14.3 )
	     ||( vcmh_c2 < 14.5 ) || ( vcmh_d2 < 14.5 )|| ( vcml_c2 > -14.3 ) || ( vcml_d2 > -14.3 )
	     )
	     {
	      failflg=3;
	      return;
	     }
 	}
     failflg=0;
     return;
}

void Vos()
    {
      float vo10,vo20,vo30,vo40;
      float vo11,vo21,vo31,vo41;
      float vo12,vo22,vo32,vo42;
      float vo13,vo23,vo33,vo43;

      float ios1,ios2,ios3,ios4,ib1,ib2,ib3,ib4;
      int n;

      connect_5v_relay(1,2,3,0);
      ground_pin(12,0);
      force_vcc("on",5);
      wait(5);
      vo10=measure_pin(1,3,5);
      vo20=measure_pin(2,3,5);
      vo30=measure_pin(13,3,5);
      vo40=measure_pin(14,3,5);

      disconnect_5v_relay(1,2,0);
      wait(5);
      vo11=measure_pin(1,3,5);
      vo21=measure_pin(2,3,5);
      vo31=measure_pin(13,3,5);
      vo41=measure_pin(14,3,5);


      ios1=(vo10-vo11)*100;
      ios2=(vo20-vo21)*100;
      ios3=(vo30-vo31)*100;
      ios4=(vo40-vo41)*100;


      connect_5v_relay(1,0);
      wait(5);
      vo12=measure_pin(1,3,5);
      vo22=measure_pin(2,3,5);
      vo32=measure_pin(13,3,5);
      vo42=measure_pin(14,3,5);


      disconnect_5v_relay(1,0);
      connect_5v_relay(2,0);
      wait(5);
      vo13=measure_pin(1,3,5);
      vo23=measure_pin(2,3,5);
      vo33=measure_pin(13,3,5);
      vo43=measure_pin(14,3,5);


      ib1=(vo13-vo12)*50;
      ib2=(vo23-vo22)*50;
      ib3=(vo33-vo32)*50;
      ib4=(vo43-vo42)*50;


      dis_connect(12,0);
      force_vcc("off",0);
      disconnect_5v_relay(1,2,3,4,0);

      if (displaymode==0)
	 {
	   lcprintf("         ********* TEST THE L439 Vos ********\n");
	 lcprintf("         Vo10=%7.3fV ; Vo20=%7.3fV ;Vo30=%7.3fV ; Vo40=%7.3fV\n",vo10,vo20,vo30,vo40);
	 lcprintf("         Vo11=%7.3fV ; Vo21=%7.3fV ;Vo31=%7.3fV ; Vo41=%7.3fV\n",vo11,vo21,vo31,vo41);

	 }
	saveitem("%7.3f	%7.3f	%7.3f	%7.3f	",vo10,vo20,vo30,vo40);
	saveitem("%7.3f	%7.3f	%7.3f	%7.3f	",vo11,vo21,vo31,vo41);
      if (judge==0)
	 {
	  if ( ( fabs(vo10) > 3 ) || ( fabs(vo20) > 3 ) ||( fabs(vo30) > 3 ) || ( fabs(vo40) > 3 ) )
	     {
	      failflg=4;
	      return;
	     }
	  }

      if (displaymode==0)
	 {
	lcprintf("         ********* TEST THE L439 Ios ********\n");
	lcprintf("   Io_A=%7.3fnA  ;  Io_B=%7.3fnA  ;  Io_C=%7.3fnA  ; Io_D=%7.3fnA\n",ios1,ios2,ios3,ios4);
	 }
	saveitem("%7.3f	%7.3f	%7.3f	%7.3f	",ios1,ios2,ios3,ios4);
      if (judge==0)
	 {
	  if ( ( fabs(ios1) > 40 ) || ( fabs(ios2) > 40 ) ||( fabs(ios3) > 40 ) || ( fabs(ios4) > 40 ) )
	     {
	      failflg=5;
	      return;
	     }
	  }

      if (displaymode==0)
	 {
	   lcprintf("         ********* TEST THE L439 Ib ********\n");
	   lcprintf("   Ib_A=%7.3fnA ; Ib_B=%7.3fnA  ;  Ib_C=%7.3fnA ; Ib_D=%7.3fnA\n",ib1,ib2,ib3,ib4);
	 }
	saveitem("%7.3f	%7.3f	%7.3f	%7.3f	",ib1,ib2,ib3,ib4);
      if (judge==0)
	 {
	  if ( ( fabs(ib1) > 150 ) || ( fabs(ib2) > 150 ) ||( fabs(ib3) > 150 ) || ( fabs(ib4) > 150 ) )
	     {
	      failflg=6;
	      return;
	     }
	  }
     failflg=0;
     return;
}

void output()
     {
      float leak1_5v,leak2_5v;
      float leak1_30v,leak2_30v;
      float leak1_35v,leak2_35v;
      float leak3_5v,leak4_5v;
      float leak3_30v,leak4_30v;
      float leak3_35v,leak4_35v;

      connect_vs1(3,0);
      connect_5v_relay(4,0);
      ground_pin(4,6,8,10,12,0);/**VEE**/
      connect_vs3(5,7,9,11,0);
      wait(5);
      force_vs1("on",0.1);
      force_vcc("on",0.1);
      wait(5);
      force_vs1("on",5);
      force_vs3("on",1);
      force_vcc("on",5);
      wait(50);
      leak1_5v=measure_inter_pin(3,1,3,50)/8.5*1000;
      leak2_5v=measure_inter_pin(3,2,3,10)/8.5*1000;
      leak3_5v=measure_inter_pin(3,13,3,10)/8.5*1000;
      leak4_5v=measure_inter_pin(3,14,3,10)/8.5*1000;

      force_vs1("on",30);
      wait(50);
      leak1_30v=measure_inter_pin(3,1,3,50)/8.5*1000;
      leak2_30v=measure_inter_pin(3,2,3,10)/8.5*1000;
      leak3_30v=measure_inter_pin(3,13,3,10)/8.5*1000;
      leak4_30v=measure_inter_pin(3,14,3,10)/8.5*1000;


      dis_connect(12,0);
      connect_vs2(12,0);
      wait(5);
      force_vcc("on",5);
      force_vs1("on",32);
      force_vs2("on",-5);
      force_vs3("on",1);
      wait(30);
      leak1_35v=measure_inter_pin(3,1,3,30)/8.5*1000;
      leak2_35v=measure_inter_pin(3,2,3,10)/8.5*1000;
      leak3_35v=measure_inter_pin(3,13,3,10)/8.5*1000;
      leak4_35v=measure_inter_pin(3,14,3,10)/8.5*1000;

      force_vcc("off",0);
      force_vs1("off",0);
      force_vs2("off",0);
      force_vs3("off",0);
      dis_connect(1,2,3,4,5,6,7,8,12,0);
      disconnect_5v_relay(4,0);

      if (displaymode==0)
	 {
	   lcprintf("     ********* TEST THE L439 OUTPUT Leakage Current *******\n");
	   lcprintf("  Leak1_5V =%4.1fnA; Leak2_5V =%4.1fnA; Leak1_5V =%4.1fnA; Leak2_5V =%4.1fnA\n",leak1_5v,leak2_5v,leak3_5v,leak4_5v);
	   lcprintf("  Leak1_30V=%4.1fnA; Leak2_30V=%4.1fnA; Leak1_30V=%4.1fnA; Leak2_30V=%4.1fnA\n",leak1_30v,leak2_30v,leak3_30v,leak4_30v);
	   lcprintf("  Leak1_35V=%4.1fnA; Leak2_35V=%4.1fnA; Leak1_35V=%4.1fnA; Leak2_35V=%4.1fnA\n",leak1_35v,leak2_35v,leak3_35v,leak4_35v);
	 }
	  saveitem("%4.1f	%4.1f	%4.1f	%4.1f	",leak1_5v,leak2_5v,leak3_5v,leak4_5v);
	  saveitem("%4.1f	%4.1f	%4.1f	%4.1f	",leak1_30v,leak2_30v,leak3_30v,leak4_30v);
	  saveitem("%4.1f	%4.1f	%4.1f	%4.1f	",leak1_35v,leak2_35v,leak3_35v,leak4_35v);

      if (judge==0)
	 {
	   if (  fabs(leak1_5v)>25  ||fabs(leak2_5v)>25
	       ||fabs(leak3_5v)>25  ||fabs(leak4_5v)>25
              ||fabs(leak1_30v)>130||fabs(leak2_30v)>130
	       ||fabs(leak3_30v)>130||fabs(leak4_30v)>130
              ||fabs(leak1_35v)>130||fabs(leak2_35v)>130
              ||fabs(leak3_35v)>130||fabs(leak4_35v)>130)
	     {
	      failflg=7;
	      return;
	     }
	  }
     failflg=0;
     return;

     }
void vsat()
    {
      float vsat1,vsat2,vsat3,vsat4;
      int n;

      connect_5v_relay(4,0);
      ground_pin(5,7,9,11,12,0);/**VEE**/
      connect_vs2(1,0);
      connect_vs3(4,6,8,10,0);
      wait(5);
      force_vcc("on",5);
      force_vs2_current("on",4.0e-3);
      force_vs3("on",1.5);/*1.5V*/
      wait(5);
      vsat1=measure_pin(1,3,10);
      dis_connect(1,0);
      connect_vs2(2,0);
      force_vs2_current("on",4.0e-3);
      wait(5);
      vsat2=measure_pin(2,3,10);

      dis_connect(2,0);
      connect_vs2(13,0);
      force_vs2_current("on",4.0e-3);
      wait(5);
      vsat3=measure_pin(13,3,10);

      dis_connect(13,0);
      connect_vs2(14,0);
      force_vs2_current("on",4.0e-3);
      wait(5);
      vsat4=measure_pin(14,3,10);

      force_vs1("off",0);
      force_vs2_current("off",0);
      force_vs3("off",0);
      force_vcc("off",0);
      dis_connect(4,5,6,7,8,9,10,11,12,13,14,0);
      disconnect_5v_relay(4,0);

      if (displaymode==0)
	 {
	   lcprintf("     ********* TEST THE L439 OUTPUT Saturation Voltage*******\n");
	   lcprintf("     Vsat1=%7.3fV ;  Vsat2=%7.3fV ;  Vsat3=%7.3fV ;  Vsat4=%7.3fV\n",vsat1,vsat2,vsat3,vsat4);
	 }
	 saveitem("%7.3f	%7.3f	%7.3f	%7.3f	",vsat1,vsat2,vsat3,vsat4);
      if (judge==0)
	 {
	   if (fabs(vsat1-0.2)>0.15||fabs(vsat2-0.2)>0.15||fabs(vsat3-0.2)>0.15||fabs(vsat4-0.2)>0.15)
	     {
	      failflg=8;
	      return;
	     }
	  }
     failflg=0;
     return;
}

⌨️ 快捷键说明

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