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

📄 control.c

📁 adc0809市电采样程序
💻 C
字号:
#include<math.h>
#include "adc0809.c"
#include "shuma.c"
#define  SW P1
sbit sw1=P1^0;
sbit sw2=P1^1;
sbit sw3=P1^2;
sbit sw4=P1^3;
sbit sw5=P1^4;
sbit sw6=P1^5;
sbit sw7=P1^6;
sbit sw8=P1^7;

static float change;
static uint vavi;

static float va_old;

void over()
{
   float va;
   uint vi;
	ad_do();
    va=(ad_do()/255.0)*Vref;
	vi=(uint)((sqrt(va)*100));

	if((vi>va1_max)||(vi<va8_min))
	{
		   SW=0xff;
		   delay30s(U);
     }
}



uchar control_va()
{
    float va;
	uint vi;
	ad_do();
    va=(ad_do()/255.0)*Vref;
	vi=(uint)((sqrt(va)*100));
	vavi=vi;

   if((vi>=va1_min)&&(vi<=va1_max))
    {
        if(SW==0xFE)
         { change=0.238;
		   return 0;
		   }
        else{
            SW=0xff;
            return 1;
		  
         }
     }
   else if((vi>=va2_min)&&(vi<=va2_max))
        {

          if(SW==0xFD)
            {
			  change=0.253;
			  return 0;
			  }
          else{
            SW=0xff;
            return 2;
		  
            }
         }
   else if((vi>=va3_min)&&(vi<=va3_max))
        {
            if(SW==0xFB)
             {
			   change=0.269;
			   return 0;
			   }
            else{
            SW=0xff;
		  	 return 3;
	
             }
        }
    else if((vi>=va4_min)&&(vi<=va4_max))
         {
             if(SW==0xF7)
               {
			     change=0.286;
				 return 0;
				 }
             else{
             SW=0xff;
              return 4;
             
             }
          }
     else if((vi>=va5_min)&&(vi<=va5_max))
          {
             if(SW==0xEF)
              { change=0.305;
			    return 0;
				}
              else{
              SW=0xff;
               return 5;
		  
              }
           }
       else if((vi>=va6_min)&&(vi<=va6_max))
          {
              if(SW==0xDF)
                {
				 change=0.324;
				  return 0;
				  }
              else{
               SW=0xff;
               return 6;
		  
              }
           }
       else if((vi>=va7_min)&&(vi<=va7_max))
           {
               if(SW==0xBF)
                {change=0.343;
				  return 0;
				  }
               else{
               SW=0xff;
               return 7;
		
		
                 }
            }
        else if((vi>=va8_min)&&(vi<=va8_max))
            {   
                if(SW==0x7F)
                 {
				   change=0.364;
				   return 0;
				   }
                else{
                SW=0xff;
                 return 8;		  
                 }
              }
		else		
		  return 0;
		  
}



void CT()
{
  switch(control_va())
   {
    case 0: break;
	case 1: sw1=0;break;
	case 2: sw2=0;break;
	case 3: sw3=0;break;
	case 4: sw4=0;break;
	case 5: sw5=0;break;
	case 6: sw6=0;break;
	case 7: sw7=0;break;
	case 8: sw8=0;break;
	default: break;
	}
}
   
void nums()
{
     float temp;
	 uint va_temp,va;

    va=vavi;

 
 	temp=(vavi/100.0);
	temp*=temp;

     if(va>va_1)
	   va_temp=(uint)(temp*(252.0/va1));
	  else if(va>va_2)
	   va_temp=(uint)(temp*(237.0/va2)); 
	  else if(va>va_3)
		va_temp=(uint)(temp*(223.0/va3));
	  else if(va>va_4)
	    va_temp=(uint)(temp*(210.0/va4));
	   else if(va>va_5)
	    va_temp=(uint)(temp*(197.0/va5));		   
	   else if(va>va_6)
		va_temp=(uint)(temp*(185.0/va6));		 
	    else if(va>va_7)
		va_temp=(uint)(temp*(175.0/va7));		 
		else if(va>va_8)
		 va_temp=(uint)(temp*(165.0/va8));
	    else
		 ;      

   temp=va_temp*change;

   if(temp<58)
    temp=temp+1.5;
	else if(temp>62)
	temp=temp-1.8;

	 va_value[0]=(uchar)(temp/10);
     va_value[1]=((uchar)(temp))%10;
     va_value[2]=((uchar)(temp*10))%10;
	 va_value[3]=U;
					  

 

 

 /*
 va_value[2]=va%10;
 va_value[1]=va/10%10;
 va_value[0]=va/100%10;
 va_value[3]=U;	 
     	  
   */
}

void control_vb()
{
  float vb;
  ad_dovb();
  vb=(ad_dovb()/255.0)*Vref;
  if(vb>=2.5   )
   { SW=0xff;
     delay30s(A);
	 }

}

void nums_b()
{
  float temp,t;
  ad_dovb();
  temp=(ad_dovb()/255.0)*Vref;

   t=(temp*temp)*AA+BB*temp+CC;
   temp=t;
   
  vb_value[0]=(uchar)(temp);
   t=(temp-vb_value[0])*10;
     vb_value[1]=(uchar)(t);
	 t=(t-vb_value[1])*10;
     vb_value[2]=(uchar)(t);
   	 vb_value[3]=A;
}

⌨️ 快捷键说明

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