|
Использование аналого-цифрового преобразователя
Использование аналого-цифрового преобразователя (A/D)
(Example №4)
В этом примере используется A/D конвертер микроконтроллера PIC16F887. Переменный аналоговый сигнал подается на канал AN2, в то время как 10-битные результат преобразования показана на портах B и D (8 младших разрядов порта D и 2 старших бит порта B). Земля используется в качестве отрицательного опорного напряжения Vref-, в то время как положительное опорное напряжение подается на вывод AN3. Это позволяет шкалы напряжения измерение "растягивать и сжимать". Другими словами A/D конвертер всегда генерирует 10-битный двоичный результат, который имеет 1024 уровня напряжения. Разница между двумя уровнями напряжения не всегда та же самая. Чем меньше разница между Vref + и Vref-, тем меньше разница между двумя из 1024 уровней. Как видно, A/D конвертер способен реагировать на незначительные изменения напряжения.
/*Header******************************************************/
unsigned int temp_res;
void main() {
ANSEL = 0x0C; // Выводы AN2 и AN3 настроены как аналоговые
TRISA = 0xFF; // Все входы порта A настроены как входы
ANSELH = 0; // Осталльные выводы настроены как цифровые
TRISB = 0x3F; // Для порт B входы RB7 и RB6 настроены на вывод
TRISD = 0; // Все входы порта A настроены как выходы
ADCON1.F4 = 1 ; // Установить опорное напряжение с RA3
do {
temp_res = ADC_Read(2); // Результат преобразования заносится в temp_res
PORTD = temp_res; // 8 разрядов отображены в порт D
PORTB = temp_res >> 2; // 2 разряда в битах RB6 и RB7 порта B
} while(1); // Бесконечный цикл
}
|
Для того, чтобы этот пример работал правильно, необходимо поставить галочку в библиотеке АЦП в Library Manager до компиляции.
|
|
|