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

📄 gsw-04-13.c

📁 高压带电显示闭锁装置,用新华龙单片机开发 单片机是C8051F226
💻 C
📖 第 1 页 / 共 2 页
字号:
    jz_test_flag=1;
  }
       
}

 //AD转换//
void ABC_trans(uchar data x)   
{
	uchar  xdata i;
	uint   xdata   adc_value;
	if(x==0x00)
    {
        ADC0CF =eep[3]; 
    }
   else
   {
     if(x==0x01)
     {
        ADC0CF=eep[4];
     }
    else
    {
         ADC0CF=eep[5];
    }
   }
	adc_value=0x00;
	for(i=0;i<50;i++)
	{
	ADCEN=1;
	AMX0SL=0x28+x;
	delay_10us();
	ADCINT=0;
	ADBUSY=1;
	while(ADCINT==0)
        {
          WDTCN=0xaA5;   
        } 
	delay_10us();
	adc_value=adc_value+ADC0H;
	}
	adc_value=adc_value/50;
	if (x==0x00)
	{
	    A_value=adc_value;
	}
	else
	{
        if (x==0x01)
        {
             B_value=adc_value; 
        }
        else
        {
             C_value=adc_value;
        }
	}
}
//设置时临时AD转换//
void SETUP_AD(uchar data  y)   
{
	uchar  xdata i;
	uint   xdata   adc_value;
    ADC0CF =0x80;
	adc_value=0x00;
	for(i=0;i<50;i++)
	{
	ADCEN=1;
	AMX0SL=0x28+y;
	delay_10us();
	ADCINT=0;
	ADBUSY=1;
	while(ADCINT==0)
        {
          WDTCN=0xaA5;   
        } 
	delay_10us();
	adc_value=adc_value+ADC0H;
	}
	adc_value=adc_value/50;
	if (y==0x00)
	{
	  AD_value=adc_value;
	}
	else
	{
        if (y==0x01)
        {
        BD_value=adc_value; 
        }
        else
        {
        CD_value=adc_value;
        }
	}
}

 //设置//
 void SETUP(void)     
{
    uint  xdata   data_temp;
    uchar xdata   favalue,fbvalue,fcvalue;
    uchar xdata   Fa_value ,Fb_value,Fc_value;
	if (sw2==1)
	{
	    sw2=0;
	    sw1=0;
	    get_EEPROM();
	    ABC_trans(0x00);
	    ABC_trans(0x01);
	    ABC_trans(0x02);
	    if((A_value<=eep[0])||(B_value<=eep[1])||(C_value<=eep[2]))
        {
            sound=0x86;
            sound_80();
        }
     else
      {
        PGA() ;
        eep[3]=temp_eep[3];
        eep[4]=temp_eep[4];
        eep[5]=temp_eep[5];
        ABC_trans(0x00);
	    ABC_trans(0x01);
	    ABC_trans(0x02);
	    
	    data_temp=0x0000;
	    data_temp=A_value*6;
	    Fa_value=data_temp/10;
	    
	    data_temp=0x0000;
	    data_temp=B_value*6;
	    Fb_value=data_temp/10;
	    
	    data_temp=0x0000;	  	   
	    data_temp=C_value*6;
	    Fc_value=data_temp/10; 	
///////////////A////////////// 
      if(eep[3]==0x83) 
      {
        if(Fa_value<=basic_valve)
         {
            eep[0]=bot_valve;
         }
         else
         {
           eep[0]=Fa_value; 
         }
      }
    else
    {
        eep[0]=Fa_value;
    }
////////////B/////////////

    if(eep[4]==0x83)
    {
        if(Fb_value<=basic_valve)
       {
         eep[1]=bot_valve;
       }
      else
      {
        eep[1]=Fb_value;
      }
    }
else
{
    eep[1]=Fb_value;
}
      
 //////////////C///////////////
   if(eep[5]==0x83)
   {
      if(Fc_value<=basic_valve)
     {
        eep[2]=bot_valve;	 
      }
      else
      {
        eep[2]=Fc_value;
      }
   }
  else
  {
    eep[2]=Fc_value;
  }
    
   
      favalue=eep[0];
      fbvalue=eep[1];
      fcvalue=eep[2];
      A_PGA  =eep[3];
      B_PGA  =eep[4];
      C_PGA  =eep[5];
      write_EEPROM();    //写EEPROM
      get_EEPROM();      //读EEPROM
     if ((eep[0]==favalue)&&(eep[1]==fbvalue)&&(eep[2]==fcvalue)&&
         (eep[3]==A_PGA)&&(eep[4]==B_PGA)&&(eep[5]==C_PGA))
       {
          sound=0x84;
          sound_80();
        }
       else
       {
        sound=0x85;
        sound_80();
       }
    }
 }	   
}
////////////////////////////////////////

//X5045//
void ini45(void)
{
 	stax();
	outbyte(0x06);
	stax();
	outbyte(0x01);
	outbyte(0x00);
	endx();
    msec(20);
}

/*输出一个BYTE给X25045*********/
void outbyte(uchar data x)
{
	uchar data i;
	order=x;
	for(i=0;i<8;i++)
	{
	   sck=0;
	   si=order7;
	   sck=1;
	   order=order<<1;
    }        
	si=0;
}

void stax(void)
{
    csx=1;
    csx=1;
    sck=0;
    sck=0;
    csx=0;
    csx=0;
}
 void endx(void)
{
    sck=0;
    csx=1;
    csx=1;
    csx=1;
}   
 
void msec(uchar data x) 
{
    uchar data j;
    while(x--)
     {
        csx=0;
	    csx=1;
       for (j=0; j<250;j++)
       {
         ;
       }
    }
}
/*********/
//写X5045
void write_data(uchar data  x, uchar data y) 
{
	stax();
	outbyte(0x06);
 	stax();
	outbyte(0x02);
	outbyte(x);
 	outbyte(y);
	endx();
	msec(20);
}
//读X5045一个字节
 void get_data(uchar  x)   /*取EEPROM一个字节X为地址*/   
{
    stax();
    outbyte(0x03);
    outbyte(x);
    inbyte();
    endx();
}
void inbyte(void)
{
    uchar data i;
    for(i=0;i<8;i++)
	{
	   	sck=1;
     	sck=0;
	    order=order<<1;
    	order0=so;
	}
      data_eep=order;
}
//读子X5045的值
void get_EEPROM(void)
{
     ini45();
      get_data(0x30);
      eep[0]=data_eep;
      get_data(0x31);
      eep[1]=data_eep;
      get_data(0x32);
      eep[2]=data_eep;
      get_data(0x33);
      eep[3]=data_eep;
      get_data(0x34);
      eep[4]=data_eep;
      get_data(0x35);
      eep[5]=data_eep;
     
}
void  write_EEPROM(void)
{
     write_data(0x30,eep[0]);
     write_data(0x31,eep[1]);
     write_data(0x32,eep[2]);
     write_data(0x33,eep[3]);
     write_data(0x34,eep[4]);
     write_data(0x35,eep[5]);
}
///////返回初始值////
void setup_jerque_key(void)
{
    if(sw12flag==1)
        {
            sw12flag=0;
            timer10s=0;
            sw1=0;
            sw2=0;  
            eep[0]=initialize_valve;
	        eep[1]=initialize_valve;
	        eep[2]=initialize_valve;
            eep[3]=0x82;    //A_PGA
	        eep[4]=0x82;    //B_PGA
	        eep[5]=0x82;    //C_PGA
  	        write_EEPROM(); 
  	        sound=0x80;
            sound_80();
        }
}
///自动调整放大倍数///////////
void  PGA(void) 
{
      SETUP_AD(0x00);
	  SETUP_AD(0x01);
	  SETUP_AD(0x02);
/////A_PGA	      ///////////////////////////////

        if(AD_value<=0x15)
        {
            temp_eep[3]=0x83;     //8X
        }
        else
        {
        if(AD_value<=0x2a)
        {
            temp_eep[3]=0x82;    //4X              
        }
        else
        {
        if(AD_value<=0x55)
        {
           temp_eep[3]=0x81;   //2X
        }
        else
        {
            if(AD_value<=0xaa)
            {
               temp_eep[3]=0x80;    //1X
            }
        else
        {
            temp_eep[3]=0x86;      //0.5X
        }
       }
     }
   }
 ///B_PGA ////////////////////////////////

        if(BD_value<=0x15)
        {
            temp_eep[4]=0x83;     //8x
        }
        else
        {
            if(BD_value<=0x2a)
            {
               temp_eep[4]=0x82;     //4x          
            }
        else
        {
            if(BD_value<=0x55)
           {
               temp_eep[4]=0x81;     //2x
            }
        else
        {
            if(BD_value<=0xaa)
            {
               temp_eep[4]=0x80;     //1x
            }
        else
        {
            temp_eep[4]=0x86;         //0.5x
        }
       }
      }
     }
//   C_PGA   /////////////////////

        if(CD_value<=0x15)
        {
            temp_eep[5]=0x83;    //8X
        }
        else
        {
            if(CD_value<=0x2a)
            {
               temp_eep[5]=0x82;   //4X             
            }
        else
        {
            if(CD_value<=0x55)
           {
               temp_eep[5]=0x81;   //2X
            }
        else
        {
            if(CD_value<=0xaa)
            {
               temp_eep[5]=0x80;      //1X
            }
        else
        {
               temp_eep[5]=0x86;      //0.5X
        }
      }
    }
  }
}

///自动调整阀值//////
void automatism_valve(void)
{
    uint   xdata  eep_temp;
    uint   xdata  A_temp, B_temp ,C_temp;
    uchar  xdata  A_bot,  B_bot,  C_bot;////
    uint   xdata  A_top,  B_top,  C_top;
    uchar  xdata  A_valve,B_valve,C_valve;
    uchar   xdata  A_BASIC_VALVE,B_BASIC_VALVE,C_BASIC_VALVE;
    ABC_trans(0x00);
    ABC_trans(0x01);
    ABC_trans(0x02);
    if(eep[3]==0x83)
    {
       eep_temp=basic_valve*10;
       A_BASIC_VALVE=eep_temp/6; 
    }
   else
   {
       A_BASIC_VALVE=0x10;
   }
  ////////////////////
    if(eep[4]==0x83)
    {
       eep_temp=basic_valve*10;
       B_BASIC_VALVE=eep_temp/6; 
    }
   else
   {
       B_BASIC_VALVE=0x10;
   }
  ///////////////////////////////
   if(eep[5]==0x83)
    {
       eep_temp=basic_valve*10;
       C_BASIC_VALVE=eep_temp/6; 
    }
   else
   {
       C_BASIC_VALVE=0x10;
   }
    /////A/////////
    get_EEPROM();
    eep_temp=0x0000;
    eep_temp=eep[0]*10;
    A_temp=eep_temp/6;
    
    eep_temp=0x0000;    
    eep_temp=A_temp*7;
    A_valve =eep_temp/10;
        
    eep_temp=0x0000;
    eep_temp=A_temp*85;
    A_bot  =eep_temp/100;
        
    eep_temp=0x0000;
    eep_temp=A_temp*11;
    A_top  =eep_temp/10;
     /////B/////   
    eep_temp=0x0000;
    eep_temp=eep[1]*10;
    B_temp=eep_temp/6;
        
    eep_temp=0x0000;    
    eep_temp=B_temp*7;
    B_valve =eep_temp/10;
        
    eep_temp=0x0000;
    eep_temp=B_temp*85;
    B_bot  =eep_temp/100;
     
    eep_temp=0x0000;
    eep_temp=B_temp*11;
    B_top  =eep_temp/10;
    
     /////////C//////  
    eep_temp=0x0000;
    eep_temp=eep[2]*10;
    C_temp=eep_temp/6;
        
    eep_temp=0x0000;    
    eep_temp=C_temp*7;
    C_valve =eep_temp/10;
    
    eep_temp=0x0000;
    eep_temp=C_temp*85;
    C_bot  =eep_temp/100;
        
    eep_temp=0x0000;
    eep_temp=C_temp*11;
    C_top  =eep_temp/10;
  ///////////////A///////////////  
  if(A_value<=A_valve)
    {
     A_flag0=0;
     A_flag1=0;
     }
   else
   {
      if(A_value<=A_BASIC_VALVE)
      {
         A_flag0=0;
         A_flag1=0;
      }
    else
    {
      if((A_value<=A_bot)||(A_value>=A_top))
      {
        A_flag0=1;
      }
        else
      {
        A_flag0=0;
        A_flag1=0;
      }
    }
  }
  ///////////////B///////////////  
    if(B_value<=B_valve)
    {
        B_flag0=0;
        B_flag1=0;
    }
    else
    {
        if(B_value<=B_BASIC_VALVE)
        {
            B_flag0=0;
            B_flag1=0;
        }
    else
    {
      if((B_value<=B_bot)||(B_value>=B_top))
      {
          B_flag0=1;
      }
      else
      {
        B_flag0=0;
        B_flag1=0;
      }
    }
  }
///////////////C///////////////  
   if(C_value<=C_valve)
   {
     C_flag0=0;
     C_flag1=0;
   }
  else
  {
    if(C_value<=C_BASIC_VALVE)
    {
       C_flag0=0;
       C_flag1=0;
    }
  else
  {
    if((C_value<=C_bot)||(C_value>=C_top))
    {
       C_flag0=1; 
     }
   else
   {
     C_flag0=0;
     C_flag1=0;
   }
 }
}
valve_read_write();
} 
  
 ///自动调阀值子程序//////  
void valve_read_write(void)
{
    uint   xdata  valve_temp;
    uchar  xdata  A_VALVE,B_VALVE,C_VALVE;
    uchar  data   EEP_TEMP[6];
    if((A_flag1==1)||(B_flag1==1)||(C_flag1==1))
    {
        PGA() ;
        eep[3]=temp_eep[3];
        eep[4]=temp_eep[4];
        eep[5]=temp_eep[5];
        ABC_trans(0x00);
	    ABC_trans(0x01);
	    ABC_trans(0x02);
	    
	    valve_temp=0x0000;
	    valve_temp=A_value*6;
	    A_VALVE   =valve_temp/10;
	  
	    valve_temp=0x0000;
	    valve_temp=B_value*6;
	    B_VALVE   =valve_temp/10;
	    
	    valve_temp=0x0000;
	    valve_temp=C_value*6;
	    C_VALVE   =valve_temp/10; 
/////////////A//////////////
         if(eep[3]==0x83)
         {
            if(A_VALVE<=basic_valve)
            {
             eep[0]=eep[0]=bot_valve;
            }
          else
           {
             eep[0]=A_VALVE;
           }
         }
        else
        {
          eep[0]=A_VALVE;
        }    
    ////////B///////////
       if(eep[4]==0x83)
       {
        if(B_VALVE<=basic_valve)
          {
           eep[1]=bot_valve;
          }
        else
         {
          eep[1]=B_VALVE;
         }
       }
      else
      {
        eep[1]=B_VALVE;
      }
    ////////C///////////////////////
      if(eep[5]==0x83)
      {
        if(C_VALVE<=basic_valve)
       {
           eep[2]=bot_valve;
        }
        else
        {
          eep[2]=C_VALVE;
        }
      }
     else
     {
        eep[2]=C_VALVE;
     }
       
	    EEP_TEMP[0]=eep[0];
        EEP_TEMP[1]=eep[1];
        EEP_TEMP[2]=eep[2];
        EEP_TEMP[3]=eep[3];
        EEP_TEMP[4]=eep[4];
        EEP_TEMP[5]=eep[5];
        write_EEPROM();
        get_EEPROM();
        if((EEP_TEMP[0]==eep[0])&&(EEP_TEMP[1]==eep[1])&&(EEP_TEMP[2]==eep[2])&&
           (EEP_TEMP[3]==eep[3])&&(EEP_TEMP[4]==eep[4])&&(EEP_TEMP[5]==eep[5]))
           {
             sound=0x88;
             sound_80();
           }
          else
          {
             sound=0x89;
             sound_80();
          }
        A_flag1=0;
        B_flag1=0;
        C_flag1=0;
    }
}

   

⌨️ 快捷键说明

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