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