ADC At16 LCD.txt

(1 KB) Pobierz
//Przetwarzanie ADC Atmaga16 i wy�wietlenie wyniku na LCD
//autor: skynet_2 & atom1477 (elektroda.pl)


#include <avr/io.h>
#include <util/delay.h>
#include "HD44780.h"
#include "HD44780.c"
#include "itoa.h"

void Inicjalizacja(void)
{
ADMUX |= (1 << REFS1) | (1 << REFS0);// �r�d�o napi�cia referencyjnego str 211 pdf
   ADMUX |= (0 << ADLAR);// zmiana kolejno�ci ADCL, ADCH str 211 pdf
   ADMUX |= (0 << MUX2) | (0 << MUX1) | (0 << MUX0);//wybranie wej�cia str 212 pdf
   //wybranie preskalera, dzieli F_CPU do zalecanych 50kHz do 200kHz pracy ADC
   //0 [000] 2
   //1 [001] 2
   //2 [010] 4
   //3 [011] 8
   //4 [100] 16
   //5 [101] 32
   //6 [110] 64
   //7 [111] 128
   ADCSRA |= (1<<ADPS2)|(1<<ADPS1)|(1<<ADPS0);
   ADCSRA |= (1 << ADEN);// w��czenie ADC
   //ADCSRA &= ~(1 << ADEN);// wy��czenie ADC

}

uint16_t getVoltage()
{
   ADCSRA |= (1 << ADSC);//rozpocz�cie konwersji
   while (ADCSRA & (1 << ADSC))
   return ADCW;
}

int main()
{
   LCD_Initalize();
   LCD_Clear();
   char bufor[16];
   Inicjalizacja();
   
   while (1)
   {
      _delay_ms(10);
      itoa(getVoltage(), bufor, 10);
      LCD_Clear();
     LCD_WriteText("Pomiar:");
      LCD_WriteText(bufor);
   }
   return 0;
} 
Zgłoś jeśli naruszono regulamin