Hi Displayprogrammierer!
Ich probier grad verzweifelt, ein 5x8 2-Zeilen Display an meinem atmega8 zum Laufen zu kriegen. Erst mal will ichs
ja nur initialisieren und dann einschalten, mit blinkendem Cursor.
Anschlüsse an den atmega habe ich nach Beispiel auf mikrocontroller.net vorgenommen (allerdings mit PORTC statt PORTD) und schon mehrmals kontrolliert..
Problem: Das LCD blinkt bei den einzelnen Schritten auf, am Ende, wenn eigentlich der Cursor zu sehen sein sollte, "glimmt"
die 1. Zeile nur schwach...
Hier mein Programm:
Code:
#include <avr/io.h>
void wait(uint16_t delay_time)
{ // Funktion "Warteschleife"
...
}
void write(void)
{
PORTC|=0x20; //E auf 1 setzen
PORTC&=0xdf; //E auf 0 setzen, Display übernimmt Befehl bei fallender E-Flanke
}
int main (void)
{
DDRC=0xff;
PORTC=0x00;
wait (500);
PORTC=0x03; //8-bit Modus, 3x schreiben
write();
wait (500);
write();
wait (500);
write();
wait (500);
PORTC=0x02; //4-bit Modus initialisieren
write();
wait (5000);
PORTC=0x02; //oberes Nibble zum Befehl 4bit, 2 Zeilen, 5x8 Zeichen
write();
wait (5000);
PORTC=0x08; //unteres Nibble zum Befehl 4bit, 2 Zeilen, 5x8 Zeichen
write();
wait (5000);
PORTC=0x00; //oberes Nibble, Display ein
write();
wait (5000);
PORTC=0x0f; //unteres Nibble, Display ein, Cursor ein, blink ein
write();
}
Wär sehr dankbar für einen Tipp!
MfG, Cvecko!
Lesezeichen