利用简单电阻分压原理自动测量电阻
注意点
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;
}
}
}