利用簡單電阻分壓原理自動測量電阻

2020-10-18 12:00:34

利用簡單電阻分壓原理自動測量電阻

注意點
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;
			   }
			  }
}