void GetADCResult(unsigned char ch,unsigned int *value)
{
ADC_CONTR = ADC_POWER | ADC_SPEEDLL | ch | ADC_START;
_nop_(); //Must wait before inquiry
_nop_();
_nop_();
_nop_();
_nop_(); //Must wait before inquiry
_nop_();
while(!(ADC_CONTR & ADC_FLAG));//Wait complete flag
ADC_CONTR &= ~ADC_FLAG; //Close ADC
*value = 0;
*value = ADC_RES;
*value = ((*value)*4 + ADC_LOW2); //Return ADC result
}
void ADC_convert(void)
{
GetADCResult(0,&temp[0]);
temp[0] = (unsigned int) ( ( 3950.0 / ( 11.33657 + log( 6.04 * (float)temp[0] / ( 1024.0 - (float)temp[0] ) ) ) - 278.15) * 100 );
}
temp[0]就是温度啊,你按比例去驱动灯亮就行啦。
|