基于SC92F725X的ADC

 基于SC92F7251开发的ADC代码,因为,所以公式中的4096就是这么来的(2的12次方)

float VCC = 2.40;//这里要看烧录软件的选择而变动

enum Pin {AIN0=0,AIN1,AIN4=4,AIN5,AIN6,AIN7,AIN8,AIN9,VDD4=15};//枚举
void ADC_Init(uint Pin)
{
	ADCCON = 0x80|Pin;
	if(Pin<8)
	{
		ADCCFG0 = 1<>4); 
		if(ADC_Value >= Max)Max = ADC_Value;  //获取最大值
		if(ADC_Value <= Min)Min = ADC_Value;  //获取最小值
		ADC_Sum = ADC_Sum + ADC_Value; //每次的值累加
	}
	ADC_Sum = (ADC_Sum-Max-Min)/8; //求平均值
	
	return ADC_Sum;
	
}
void protect(float V)
{
	float voltag;
	voltag = V*VCC/4096.00;
	if(voltag<2.3)//低于2.3V执行//这里的被比较值也需要根据烧录软件的变动而变动
	{
			LED_R = !LED_R;
			LED_G = ~LED_G;
			delay(200);
	}
}
void main(void)
{
	float V;
    P1CON = 0x0d;//配置LED灯的管脚为强推挽输出,这一步必须有否则LED不会有反应
	LED_G = 1;
	LED_R = 0;
	ADC_Init(AIN9);
	while(1)
	{
		V=ADC_Test();
		protect(V);
	}
}

基于SC92F725X的ADC_第1张图片

如果烧录软件的Vref选择2.4V的话,就要把代码中的VCC改为2.40V,并且代码中的被比较的电压就不可以大于2.39V。

如果烧录软件的Vref选择VDD的话,就要把代码中的VCC改为5.00V,并且代码中的被比较的电压可以大于2.39V。

你可能感兴趣的:(代码段)