|
/******************************************************************************
*函數(shù)名稱:uint adc10_start(uchar channel);
*函數(shù)功能:adc采集
*輸入?yún)?shù):channel:1-7
*輸出參數(shù):adc
*返回值:adc10_start()
*******************************************************************************/
uint adc10_start(uchar channel) //channel = 0~7
{
uint adc;
uchar i;
ADC_RES = 0;
ADC_RESL = 0;
ADC_CONTR = (ADC_CONTR & 0xe0) | ADC_START | channel;
i = 250;
do{
if(ADC_CONTR & ADC_FLAG)
{
ADC_CONTR &= ~ADC_FLAG;
adc = (uint)ADC_RES;
adc = (adc << 2) | (ADC_RESL & 3);
return adc;
}
}while(--i);
return 1024;
}
/******************************************************************************
*函數(shù)名稱:void delay1_ms(unsigned char ms);
*函數(shù)功能:延時(shí)函數(shù)
*輸入?yún)?shù):ms
*輸出參數(shù):無(wú)
*返回值:無(wú)
*******************************************************************************/
void delay1_ms(unsigned char ms)
{
unsigned int i;
do{
i = MAIN_Fosc / 14000;
while(--i) ; //14T per loop
}while(--ms);
}
/******************************************************************************
*函數(shù)名稱:void INputchange(uchar date);
*函數(shù)功能:選擇12C5A60AD/S2系列模擬輸入(AD)選擇
*輸入?yún)?shù):date
*輸出參數(shù):無(wú)
*返回值:無(wú)
*******************************************************************************/
void INputchange(uchar date)
{
P1ASF = date;//0x03;//(1 << ADC_CH0); //12C5A60AD/S2系列模擬輸入(AD)選擇
ADC_CONTR = ADC_360T | ADC_ON;
}
/******************************************************************************
*函數(shù)名稱:uint AdHandle(uchar num);
*函數(shù)功能:AD數(shù)據(jù)處理函數(shù)
*輸入?yún)?shù):num
*輸出參數(shù):number
*返回值:AdHandle
*******************************************************************************/
uint AdHandle(uchar num)
{ uint count;
uint number;
delay1_ms(100);
delay1_ms(100);
count = adc10_start(num); // P1.0 ADC
number = ((float)count*4.8828 ); //將采集的電壓放大1000倍,主要是為了提高co計(jì)算的精度
return number;
}
以及哪種AD轉(zhuǎn)換器可以用這段原函數(shù)進(jìn)行仿真?
|
|