Hi, ich habe da ein Problem mit einer LCD anzeige. Ich habe ein 16x2 LCD und bekomme es nicht initialisiert. Die Routine ist ja bei allen nahezu identisch: min 15ms warten 0x30 an DB min 4,1ms warten 0x30 an DB min 100µs warten 0x30 an DB ab hier is das busy flag gültig und man kann das LCD auf 8 oder 4 bit stellen. Da ich gerne 8bit hätte also 0x38 Das Problem ist das es g ar nicht Reagiert. Ich seh immer nur die erste Zeile komplett schwarz. Auch mit LCD einschalten oder löschen und ausschalten tut sich nichts. hab ich irgendwas übersehen? Meine Pinbelegung ist wie folgt: 1-3 sollte klar sein Spannung und Kontrast 4 (RS) -> PC1 5 (R/W) -> PC2 6 (E) -> PC3 PORTC ist als Ausgang definiert und alle Pins liegen auf 0 7-14 -> PORTA PORTA ist auch als Ausgang und alle Pins liegen auf 0 Als µC benutze ich den ATMega8535 und C-Compiler ICCAVR. Ich hab das Forum schon durchsucht aber wie schon erwähnt finde ich nur die obige Initialisierung, die auch im Datenblatt zu finden ist. Würde mich über ein paar Ratschläge sehr freuen
Kannst du mal deinen Vorgang beschreiben, wie du ein Byte an dein LCD sendest? Vielleicht liegt hier schon der Fehler.
Also an den Ports änder ich soweit erstmal nichts RS und R/W weiterhin als Ausgang und 0 zum warten hab ich mir ne kleine delay Funktion gebastelt die einfach eine Variable hochzählt und dann eigentlich nur über PORTA die Befehle also in meinem Code: delay(15); //15ms warten PORTA = 0x30; //00110000 als binarcode delay(5); //>4,1ms warten PORTA = 0x30; ...
Und was machst Du denn in der Zeit mit dem E-Pin? Der LCD Controller uebernimmt nur bei einer fallenden Flanke an "E" die Daten. Wie oft Du davor dem Port einen Wert zuweist, ist dem LCD Controller egal! Und die Daten sollte vor der E-Flanke mindestens 60ns stabil anliegen, aber das duerfte bei Deinem Takt kein Problem sein.
Über den E pin hab ich nicht wirklich viel gefunden und in dem Datenblatt was ich habe (Reichelt) steht dazu leider auch nichts drin. Also müsste ich vor dem befehl 'PORTA = 0x30;' noch den E auf 1 setzen und anschließend wieder auf low? Ich probiers grad mal
Je genau. Das sollte aber im Datenblatt stehen, spaetestens in den Timing-Digrammen.
Ah, nun scheint es zu gehen aber ich muss noch eine kleine warteschleife einbauen damit das signal auch ne zeit schon steht wenn die E flanke wieder abfällt. Vielen Dank!!
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.