//---------------------------------------------------------------------------------------------------------------------- // Titel : // Prozessor : ATmega2561 mit 16 MHz // Funktion : Ausgabe der Eingangsspannung und visuelle Darstellung der Schaltzustände, an den Port A0 und Port A1, // durch LED-Anzeigen auf dem Display // Schaltung : ISP Programmieradapter an PC oder Laptop und an die ISP Schnittstelle auf dem Mikrocontroller // anschließen // Sprache : C // Datum : 02.12.07 // Version : 3.0 AD- Wandler & Komparator // Autor : Sven Zöllner, Christian Schmidt //---------------------------------------------------------------------------------------------------------------------- #include #include #include #include #include #include #include //---------------------------------------------------------------------------------------------------------------------- #define LCD_DDR DDRB #include #include #include #include //---------------------------------------------------------------------------------------------------------------------- int main() { // int sample,i,value; // Variablen definitionn // int adclow; // int adchigh; int pos; char wert[1] = " "; char t_wert[20]; // Display initialisieren ANFANG------------------------------------------------------------------------------- LCD_Init(); delay_ms(100); LCD_Cls(white); Orientation = Portrait180; LCD_Rect (5, 5, 126, 80, 1, black); LCD_Print ("Eingangsspannung:",8,8,1,1,2,blue ,white); LCD_Print ("Port A0",23,51,1,1,1,black,white); LCD_Print ("Port A1",23,65,1,1,1,black,white); LCD_Circle (15,54,5,0,0,black); // LED-Anzeige 1 einfacher Rahmen LCD_Circle (15,54,4,1,1,red); // LED-Anzeige 1 AUS LCD_Circle (15,68,5,0,0,black); // LED-Anzeige 2 einfacher Rahmen LCD_Circle (15,68,4,1,1,red); // LED-Anzeige 2 AUS // Display initialisieren ENDE-------------------------------------------------------------------------------------- uint16_t adcval; DDRA = 0xFF; // AD- Wandler & Komparator initialisieren ANFANG------------------------------------------------------------------- init (); while (1) { wdt_reset (); if (ACSR&0x20) { PORTA |= (1< Channel 0 */ itoa(adcval,wert,10); // schreibt den int Wert in ASCI um LCD_Print( wert,8,28,1,1,2,black ,white); if (adcval < 10) { pos = 15; } else { pos = 15+5; } if (adcval > 47) { LCD_Circle (15,68,4,1,1,green); PORTA |= (1<