利用简单电阻分压原理自动测量电阻

利用简单电阻分压原理自动测量电阻

注意点
1.直接展示while循环函数
2.需要外接继电器完成工作
3.采用PF(1)-PF(6)进行控制继电器

while (1)//直接就展示while循环的内容
{
    
    
	if((temp<0.8196&&i!=1)||temp>=3.2)//一直在判断所要检测电阻值是否分压合适,如果太大,或者太小需要调换挡位
	  {
    
    
	     i=6;
	    PFout(1)=0;
	    PFout(6)=1;//我所采用的调换挡位方法是从高到低 (从6档到1档)此处改挡位为6档
	     adcx=Get_Adc_Average(ADC_Channel_1,10);
	    LCD_ShowxNum(156,130,adcx,4,16,0);//显示ADC的值
	    temp=(float)adcx*(3.3/4095);
	    cons=temp;
	    adcx=cons;
	    LCD_ShowxNum(156,150,adcx,1,16,0);//显示电压值
	    cons-=adcx;
	    cons*=1000;
	    LCD_ShowxNum(172,150,temp,3,16,0X80);
	    if(temp>0.8196&&temp<3.2)//如果6档使电压满足的话就直接转为UPD测量函数
	    goto UPD; 
	     delay_ms(1000);
	 for(i=5;i>1;i--)//如果6档不满足的话就会到这个for循环 从6档 检测到 1 档 哪个适合用哪个测量
	    
		 {
    
     
			    m=i+1;
			    PFout(m)=0;
			    PFout(i)=1;
			    
			    adcx=Get_Adc_Average(ADC_Channel_1,10);
			    LCD_ShowxNum(156,130,adcx,4,16,0);//显示ADC的值
			    temp=(float)adcx*(3.3/4095);
			    cons=temp;
			    adcx=temp;
			    LCD_ShowxNum(156,150,adcx,1,16,0);//显示电压值
			    cons-=adcx;
			    cons*=1000;
			    LCD_ShowxNum(172,150,temp,3,16,0X80);
			    if(temp>0.8&&temp<3.2)//此处就为哪个挡位适合 在哪个挡位跳for循环 进行测量函数(UPD就是测量函数)
			     break;
			       delay_ms(1000);
	          }
          }
		upd: //根据挡位不同进行不同的计算 得出电阻
			{
    
    
			switch(i)
			  {
    
    
			   case(1):
			   if(temp>2) // 1 dang
			  temp1=temp+temp/60;//+temp/10;
			  temp1=temp;
			   break;
			  
			  case(2):// 2dang
			  
			  temp1=temp+temp/100;
			  if(temp>2)
			  temp1=temp+temp/60;
			  break;
			  
			  case(3): //3dang
			   
			  temp1=temp+temp/100;
			  if(temp>2&&temp<=2.7)
			  temp1=temp+temp/60;
			  else if (temp>2.7)
			  temp1=temp+temp/40;
			  break;
			  
			  case(4): //4dang
			 
			  temp1=temp+temp/100;
			  if (temp>1.5&&temp<=2)
			   temp1=temp+temp/50;
			  else if(temp>2&&temp<=2.4)  
			  temp1=temp+temp/60;
			  else if (temp>2.4)
			  temp1=temp+temp/40;
			  break;
			  
			  
			  case(5)://5dang
			  temp1=temp+temp/45;
			  if(temp>2&&temp<2.7)
			  temp1=temp+temp/40;
			  else if(temp>=2.7)
			   temp1=temp+temp/30;
			     break;
			  
			  case(6)://6dang
			  temp1=temp+temp/100;
			  if(temp>2&&temp<2.5)
			  temp1=temp+temp/50;
			  else if(temp>=2.5)
			  temp1=temp+temp/10;
			   break;
			   }
			  }
}
			

猜你喜欢

转载自blog.csdn.net/qq_43530050/article/details/109114733