2011年3月27日 星期日

DIY - PIC: MPLAB C18 A/D 函數庫程式 (四十五)

DIY - PIC MPLAB C18 A/D 函數庫程式 (四十五)

Microchip C18 有內置支持 PIC18F4550 A/D 類比數位轉換器函數庫模塊 (adc.h),衹需要用包括 adc 頭文件 ()。然後再呼叫不同的功能,便可控制 A/D 類比數位轉換器。

 
功能 BusyADC (A/D轉換器是否正在進行轉換?) 
原型:char BusyADC( void )  
說明:該函數表明 A/D 外設是否正在進行轉換。 
返回值:如果 A/D 外設正在進行轉換,為1;如果 A/D 外設不在進行轉換,為 0 
檔案名:adcbusy.c 

功能 CloseADC (禁止 A/D 轉換器) 
原型:void CloseADC( void )  
說明:該函數禁止 A/D 轉換器和 A/D 中斷機制。 
檔案名:adcclose.c 

功能 ConvertADC (啟動 A/D 轉換過程) 
原型:void ConvertADC( void )  
說明:該函數啟動 A/D 轉換。可用函數 BusyADC() 來檢測轉換是否完成。 
檔案名:adcconv.c 

功能 OpenADC (配置 A/D 轉換器) 
原型:void OpenADC( unsigned char config, unsigned char config2 ) 
參數:config 
說明:該函數把與 A/D 相關的寄存器重定到 POR 狀態,然後配置時鐘、結果格式、參考電壓、埠和通道。 
檔案名:adcopen.c 
範例:OpenADC( ADC_FOSC_32 & ADC_RIGHT_JUST & ADC_1ANA_0REF, ADC_CH0 & ADC_INT_OFF )
 

OpenADC
選項配置
說明
A/D 時鐘源
ADC_FOSC_2
FOSC / 2
ADC_FOSC_4
FOSC / 4
ADC_FOSC_8
FOSC / 8
ADC_FOSC_16
FOSC / 16
ADC_FOSC_32
FOSC / 32
ADC_FOSC_64
FOSC / 64
ADC_FOSC_RC
內部 RC 振盪器
A/D 結果對齊
ADC_RIGHT_JUST
結果向最低有效位對齊右對齊
ADC_LEFT_JUST
結果向最高有效位對齊(左對齊)
A/D 參考電壓源
ADC_8ANA_0REF
VREF+=VDD, VREF-=VSS, 所有通道都是模擬通道
ADC_7ANA_1REF
AN3=VREF+ AN3 外都是模擬通道
ADC_6ANA_2REF
AN3=VREF+, AN2=VREF
ADC_6ANA_0REF
VREF+=VDD, VREF-=VSS
ADC_5ANA_1REF
AN3=VREF+, VREF-=VSS
ADC_5ANA_0REF
VREF+=VDD, VREF-=VSS
ADC_4ANA_2REF
AN3=VREF+, AN2=VREFADC_
4ANA_1REF AN3=VREF+
ADC_3ANA_2REF
AN3=VREF+, AN2=VREFADC_
3ANA_0REF VREF+=VDD, VREF-=VSS
ADC_2ANA_2REF
AN3=VREF+, AN2=VREFADC_
2ANA_1REF AN3=VREF+
ADC_1ANA_2REF
AN3=VREF+, AN2=VREF-, AN0=A
ADC_1ANA_0REF
AN0 為模擬輸入
ADC_0ANA_0REF
所有通道都是數字 I/O config2
通道
ADC_CH0
通道 0
ADC_CH1
通道 1
ADC_CH2
通道 2
ADC_CH3
通道 3
ADC_CH4
通道 4
ADC_CH5
通道 5
ADC_CH6
通道 6
ADC_CH7
通道 7
A/D 中斷
ADC_INT_ON
允許中斷
ADC_INT_OFF
禁止中斷

功能 ReadADC ( A/D 轉換的結果) 
原型:int ReadADC( void )  
說明:該函數讀取 A/D 轉換的16 位結果。 
返回值:該函數返回 A/D 轉換的 16 位元有符號結果。根據 A/D 轉換器的配置( 例如,使用函數 OpenADC()),結果會包含在 16 位結果的低有效位或高有效位中。 
檔案名:adcread.c 

功能 SetChanADC (選擇用作A/D 轉換器輸入的通道) 
原型:void SetChanADC( unsigned char channel )  
參數:channel 
說明:選擇用作 A/D 轉換器輸入的引腳。 
檔案名:adcsetch.c 
範例:SetChanADC( ADC_CH0 )
 

SetChanADC
選項配置
說明
輸入通道
ADC_CH0
通道 0
ADC_CH1
通道 1
ADC_CH2
通道 2
ADC_CH3
通道 3
ADC_CH4
通道 4
ADC_CH5
通道 5
ADC_CH6
通道 6
ADC_CH7
通道 7
ADC_CH8
通道 8
ADC_CH9
通道 9
ADC_CH10
通道 10
ADC_CH11
通道 11

使用A/D 轉換器函數的例子:
#include
#include
#include
#include
int result;
void main( void )
{
// configure A/D convertor
OpenADC( ADC_FOSC_32 & ADC_RIGHT_JUST & ADC_8ANA_0REF,ADC_CH0 & ADC_INT_OFF );
Delay10TCYx( 5 );    // Delay for 50TCY
ConvertADC();        // Start conversion
while( BusyADC() );  // Wait for completion
result = ReadADC();  // Read result
CloseADC();          // Disable A/D converter
}

沒有留言:

張貼留言