АЦП или Аналого Цифровое Преобразование. Как ни странно, преобразует аналоговое значение напряжения в цифровое, с которым удобнее работать микроконтроллеру.
Далее читайте запись в формате PDF:
Смотреть или скачать PDF Atmega (AVR) работа с АЦП (или создаём вольтметр)
Код вольтметра на Си на Atmega8:
#include <avr io.h>
#include <avr interrupt.h>
//прерывание
ISR(ADC_vect)
{
unsigned int ADCdata, voltage_0, voltage, voltage_2, voltage_3;
ADCdata = ADCW; // В ADCW хранится напряжение в двоичном коде
voltage_0 = ADCdata * 48875 / 10000; // 5 вольт / 1023 = 4.8875
voltage = voltage_0 % 10000 / 1000;
voltage_2 = voltage_0 % 1000 / 100;
voltage_3 = voltage_0 % 100 / 10;
PORTC = voltage;
PORTD = voltage_2;
PORTB = voltage_3;
ADCSRA = ADCSRA | 0x40;// Регистр для начала нового преобразования 0b01000000
}
int main (void)
{
DDRB = 0xFF;
DDRD = 0xFF;
DDRC = 0xFF;
ADMUX = 0x00; // PA0
ADCSRA = 0b11001110;
PORTB = 0x00;
PORTD = 0x00;
PORTC = 0x00;
sei();
while(1);
}
Подаем напряжение на PA0. Затем преобразуем его в цифровое, и выдаем нужные значения в порты в двоичном коде. Целые в Port B, десятые в Port C и сотые в Port D.
То есть у нас 2,35 Вольта.


