/*--------------------------- 电阻测量 --------------------------------*/
//第一档:119K~8KΩ
void First_step_resistor(void)
{
Reset_CT4; //CT5:CT4=00
Reset_CT5;
Delay_ms(200);
while(1)
{
// 软件触发AD使能
ADC_SoftwareStartConvCmd(ADC1, ENABLE);
while(ADC_GetCalibrationStatus(ADC1)); //等待转换完成
temp = ADC_GetConversionValue(ADC1);
if(Key_number == 0) //退出
break;
else if(temp < 280) //向下益出 返回并进入第二档
{
step = 2;
break;
}
else
{
resi = temp*29 + (temp*3)/10; // 297
// resi = 809375*temp/26624;
p = ConvCH(resi);
lcd_CN(" Ω",0,1);
lcd_CN(p,0,1);
Delay_ms(500);
}
}
}
//第二档:11.9K~800Ω
void Second_step_resistor(void)
{
Set_CT4; //CT5:CT4=01
Reset_CT5;
Delay_ms(200);
while(1)
{
// 软件触发AD使能
ADC_SoftwareStartConvCmd(ADC1, ENABLE);
while(ADC_GetCalibrationStatus(ADC1)); //等待转换完成
temp = ADC_GetConversionValue(ADC1);
// Delay_ms(200);
ADC_SoftwareStartConvCmd(ADC1, ENABLE);
while(ADC_GetCalibrationStatus(ADC1)); //等待转换完成
temp = ADC_GetConversionValue(ADC1);
if(Key_number == 0) //退出
break;
else if(temp < 280) //向下溢出 返回并进入第三档
{
step = 3;
break;
}
else if(temp > 4080) //向上溢出 返回并进入第一档
{
step = 1;
break;
}
else
{
resi = temp*29 + (temp*3)/10; // 297
resi = resi/10;
p = ConvCH(resi);
lcd_CN(" Ω",0,1);
lcd_CN(p,0,1);
Delay_ms(500);
}
}
}
//第三档:1.19k~0Ω
void Third_step_resistor(void)
{
Set_CT4; //CT5:CT4=11
Set_CT5;
Delay_ms(200);
while(1)
{
// 软件触发AD使能
ADC_SoftwareStartConvCmd(ADC1, ENABLE);
while(ADC_GetCalibrationStatus(ADC1)); //等待转换完成
temp = ADC_GetConversionValue(ADC1);
if(Key_number == 0) //退出
break;
else if(temp > 4080) //向上溢出 返回并进入第二档
{
step = 2;
break;
}
else
{
resi = temp*29 + (temp*3)/10; // 297
resi = resi/100;
p = ConvCH(resi);
lcd_CN(" Ω",0,1);
lcd_CN(p,0,1);
Delay_ms(500);
}
}
}
/************************************
*函数名:void Measuring_resistor(void)
*功 能:电阻测量
*输 入:Noen
*返 回:Noen
*第一档:119K~8KΩ
*第二档:11.9K~800Ω
*第三档:1190~0Ω
*************************************/
//AD通道13 PC3
void Measuring_resistor(void)
{
Key_number = 0xff;
lcd_init();
lcd_CN("电阻测量",0,0);
lcd_CN("Ω",4,1);
lcd_CN("0:返回",0,3);
Reset_CT1;
Reset_CT2;
Delay_ms(200);
ADC_DC(); //初始化ADC1为直流软件触发模式
Delay_ms(10);
step = 1;
while(1)
{
switch(step)
{
case 1: First_step_resistor(); break;
case 2: Second_step_resistor(); break;
case 3: Third_step_resistor(); break;
default: step = 1;
}
if(Key_number == 0) //退出
{
lcd_init();
lcd_CN("数字示波表",0,0);
lcd_CN("1:电阻 2:电压",0,1);
lcd_CN("3:电流 4:正弦波",0,2);
break;
}
}
}
/*------------- 电流测量 -----------------*/
//8mA~100mA
void First_step_current(void)
{
Set_CT6;
Delay_ms(200);
while(1)
{
// 软件触发AD使能
ADC_SoftwareStartConvCmd(ADC1, ENABLE);
while(ADC_GetCalibrationStatus(ADC1)); //等待转换完成
temp = ADC_GetConversionValue(ADC1);
current = 30*temp + 481*temp/1000 + 750;
if(Key_number == 0) //退出
break;
else if(current < 8000) //向下溢出 返回并进入第二档
{
step = 2;
break;
}
else
{
lcd_CN(" mA",0,1);
lcd_CN(ConvCH(current/1000),0,1);
lcd_str(".");
lcd_str(ConvCH(current%1000));
Delay_ms(800);
}
}
}
//1mA~12mA
void Second_step_current(void)
{
Reset_CT6;
Delay_ms(200);
while(1)
{
// 软件触发AD使能
ADC_SoftwareStartConvCmd(ADC1, ENABLE);
while(ADC_GetCalibrationStatus(ADC1)); //等待转换完成
temp = ADC_GetConversionValue(ADC1);
current = 3*temp + 481*temp/10000 + 75;
if(Key_number == 0) //退出
break;
else if(current > 12000) //向上溢出 返回并进入第一档
{
step = 1;
break;
}
else
{
lcd_CN(" mA",0,1);
p = ConvCH(current);
lcd_CN(ConvCH(current/1000),0,1);
lcd_str(".");
lcd_str(ConvCH(current%1000));
Delay_ms(800);
}
}
}
/************************************
*函数名:void Measuring_current(void)
*功 能:电流测量
*输 入:Noen
*返 回:Noen
*************************************/
void Measuring_current(void)
{
文章评论(0条评论)
登录后参与讨论