Hallo Leute!
Versuche seit ein paar Tagen mein EA DIP204 Display an meinem ATM32 zum Laufen zu bringen. Der Controller läuft einwandfrei, Lötstellen ect. überprüft. Jede Ausgabe auf den Port ist auch gemessen und funktioniert, dh. vermute ich, dass das Problem an meiner Software liegt. Hab mich zwar an die Beiträge vom Forum und vom Netz gehalten, jedoch noch kein Erfolg. SW ist zwar noch in der Entwicklung (Funktion zum Command / Daten schicken kommt noch extra hinzu) jedoch sollte der Code mal funktionieren bis ich weitermache.
folgendes ist meine Routine zur initialisierung des Displays im 4 bit mod.
Pin belegung
D0-D3 GND
D4 PA0
D5 PA1
D6 PA2
D7 PA3
RS/CS PC4
R/W GND
E PC6
Code:
void init_lcd(void)
{
sleep_ms(100);
//Port A als Ausgang
DDRA=0xff;
PORTA=0x00;
//4 bit Mod, high Nibbel 0010
enable_lcd();
PORTA=0x02;
sleep_ms(10);
PORTA=0x00;
//4 bit Mod, low Nibbel RE=1 0100
enable_lcd();
PORTA=0x04;
sleep_ms(10);
PORTA=0x00;
//4 Line Mod, high Nib 0000
enable_lcd();
PORTA=0x00;
sleep_ms(10);
//low Nib 1001
enable_lcd();
PORTA=0x09;
sleep_ms(10);
PORTA=0x00;
//4 Bit Mod, RE=0; higt Nib 0010
enable_lcd();
PORTA=0x02;
sleep_ms(10);
PORTA=0x00;
//low Nib 0000
enable_lcd();
PORTA=0x00;
sleep_ms(10);
//Entry mod set, cursor auto increment, high nib 0000
enable_lcd();
PORTA=0x00;
sleep_ms(10);
//low nib 0110
enable_lcd();
PORTA=0x06;
sleep_ms(10);
PORTA=0x00;
//Clear Display, home cursor high nib 0000
enable_lcd();
PORTA=0x00;
sleep_ms(10);
//low nib 0001
enable_lcd();
PORTA=0x01;
sleep_ms(10);
PORTA=0x00;
//Display on, cursor on, blink on, high nib 0000
enable_lcd();
PORTA=0x00;
sleep_ms(10);
//low nib 1111
enable_lcd();
PORTA=0x0f;
sleep_ms(10);
PORTA=0x00;
}
Im main rufe ich die Fkt init_lcd auf. Code lässt sich kompilieren und übertragen, jedoch ist leider kein blinkender Cursor am Display zu erkennen.
Wäre toll wenn jemand die Lösung für das Problem finden würde.
mfg
Lesezeichen