Hallo, ich habe hier ein 2x16 LCD von Displaytech. Beim ersten Betrieb lief es wunderbar. Es hat den Text so angezeigt wie ich es wollte. Ich habe etwas in beide Zeilen geschrieben. Als ich noch was an der Software geändert habe und diese anschliessend testen wollte, versagte das LCD. Ich sehe jetzt nur noch in der 1. Zeile einen schwarzen Balken und in der zweiten Zeile nichts. An der Software liegt es nicht, es funktioniert noch nicht einmal mehr das "Test" Programm aus dem Tutorial. Die Verbindungen habe ich auch überprüft. Kontrast ist auch in Ordnung. Als Spannungsversorgung nehme ich ein 12V Steckernetzteil und regle diese Spannung mit einem 7805 auf 5V runter. Ist das Ding jetzt etwa schon kaputt? Oder muss ich noch irgendwas anderes beachten, wenn ich die DD-Ram Adresse mal geändert habe? Gruß Daniel
Achja, ich benutze einen Atmega8. Diesen habe ich aber auch schon mit einem neuen ausgetauscht.
Also wenn das display oben einen balken und unten nichts hat, dann ist es nicht initialisiert. Wie siehts mit der initialisierung aus? hast du die Zeiten eingehalten?
Ich hab gestern etwas zu viel gefeiert... Heut kann ich ausnahmsweise mal nicht hellsehn ==> ohne sourcecode läuft wohl nix. Vermutung vielleicht: Es liegt an der Init-Routine Timing (Routine zu schnell) dave
Sourcecode ist dieser, ich habe nur PORTD mit PORTC ersetzt: http://www.mikrocontroller.net/sourcecode/tutorial/lcd-test.asm http://www.mikrocontroller.net/sourcecode/tutorial/lcd-routines.asm Ich spiel mal bisschen mit dem Timing rum. Vielen dank für die sehr raschen antworten :) Gruß Daniel
probiere bei den ersten drei mal warten das dritte mal länger...hmmm...das ist jetzt doof zum erklähren... lcd_init: ldi temp3,50 powerupwait: rcall delay5ms dec temp3 brne powerupwait ldi temp1, 0b00000011 ;muss 3mal hintereinander gesendet out PORTD, temp1 ;werden zur Initialisierung rcall lcd_enable ;1 rcall delay5ms rcall lcd_enable ;2 rcall delay5ms hier sollte es länger sein ich warte meistens 120ms rcall lcd_enable ;und 3!
endweder das, oder die Frequenz des Controllers etwas runterdrosseln sprich von 8MHz auf 4MHz das hatte be imri geholfen Gruss Jens
Also ich hab jetzt mal die länge von Powerupwait verdoppelt und es geht nun! Komisch das es Anfangs auch so ging. Danke nochmal. Jetzt kann ich ja wieder in Ruhe weiter basteln :) @Mr_Boertsch: Deinen Vorschlag werde ich auch mal mit einbauen. Gruß Daniel
Je nachdem kann es natürlich auch sein, das deine Speisung etwas träge ist. Dadurch ist das powerup für den Prozessor eher erfüllt und das LCD hat nochnicht die richtige Spannung. Vorausgesetzt, dein Prozessor läuft über die selbe Spannungsversorgung.
Grad andersrum wäre richtig ;) lcd läuft schon und hat seine Zeit und erst dann geht der MC los ;) dave
Wenn der Prozessor schon mit Init beginnt, aber das lcd hat noch keine spannung, dann ist das powerupwait zu kurz und das LCD kann nicht initialisiert werden. Vieleicht habe ich es unklar geschrieben:)
Dem LCD ist es ja grundsätzlich egal wann es initialisiert wird. es braucht aber mindestens 16ms nachdem es aktiviert (Spannung voll vorhanden) wurde, bis es initialisiert werden darf.
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.