原创 多功能数字示波表(3)

2010-4-26 19:13 2128 8 8 分类: MCU/ 嵌入式

/*--------------------------- 电阻测量 --------------------------------*/


//第一档: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条评论)

登录后参与讨论
我要评论
0
8
关闭 站长推荐上一条 /2 下一条