Microchip C18 有內置支持 PIC18F4550 A/D 類比數位轉換器函數庫模塊 (adc.h),衹需要用包括 adc 頭文件 (
功能 –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 } |
沒有留言:
張貼留言