Prozessor : atmega2561 mit 16 mhz




Download 27,5 Kb.
Sana01.06.2021
Hajmi27,5 Kb.
#14675

//----------------------------------------------------------------------------------------------------------------------

// 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<



PORTB |= (1<

LCD_Circle (15,54,4,1,1,green);


adcval = ReadChannel(0); /* MUX-Bits auf 0b0000 -> 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<

}

else



{

LCD_Circle (15,68,4,1,1,red);

PORTA &= ~(1<

}

LCD_Print(" Volt ",pos,28,1,1,2,black ,white); // Ausgabe "Volt" auf dem Display Pos. x=15 y=28


delay_ms(0);

}
else

{

PORTA &= ~(1<



PORTB &= ~(1<

LCD_Circle (15,54,4,1,1,red);

strcpy (t_wert, "unter 25 V ");

LCD_Print (t_wert,10,28,1,1,2,black ,white);



}
}

}

Download 27,5 Kb.




Download 27,5 Kb.