Hallo Zusammen, ich habe ein Problem der Ansteuerung eines LCD Display in Assambler. Und zwar. Immer wenn ich einen Text übertrage, welcher die 4 Zeilen ausfüllt wird erst Zeile 1,3,2,4 ausgefüllt. Das ist ja auch klar, da es sich ja um ein 2*2x40 Display handelt. Aber wie kann man das hinbekommen, das er die Reihenfolge 1,2,3,4 einhält ohne, dass man die Zeilen schon im Programm in der Reihenfolge 1,3,2,4 Programmiert? Und ich würde gerne wissen, wie man es hinbekommt, Texte zu blättern, also nach sagen wir 6 Sekunden den nächsten Textteil anzeigen. Danke. P.S. Ich habe mal das Programm mit der LCD Routines als Anhang beigefügt. Gruß Marius
Am einfachsten geht das, indem du einen zusammenhängenden SPeicherbereich reservierst. Mit einem Timerinterupt überträgsat du immer 1 Zeichen zum LCD, sodass regelmäßig der SRAM Inhalt ans LCD übertragen wird unter berücksichtigung von Zeilen/Spalten vertauschungen. Ab hier kannst du nun einfach auf dem SRAM arbeiten. Scrollen kannst du dann einfach indem du den Startwert für den SRAM bereich verschiebst.
Marius schrieb: > Immer wenn ich einen Text übertrage, welcher die 4 Zeilen ausfüllt wird > erst Zeile 1,3,2,4 ausgefüllt. > Das ist ja auch klar, da es sich ja um ein 2*2x40 Display handelt. > > Aber wie kann man das hinbekommen, das er die Reihenfolge 1,2,3,4 > einhält Gar nicht. Das ist in Hardware so festgelegt und du kannst da erst mal nichts daran ändern. Also belibt dir nichts anderes übrig, als das ganze auf Seiten des Programms zu lösen. Du darfst nicht einfach nur Zeichen ans LCD rausblasen und darauf vertrauen, dass dir das LCD die schon in die Zeilen umbrechen wird, sondern du musst das ein wenig intelligenter machen. Dazu gibt es 2 Möglichkeiten * Entweder du machst dir im Programm so etwas wie einen virtuellen Bildschirm, bei dem die Zeilen und Zeichen in der richtigen Reihen- folge sind. Eine ständig laufende Funktion (zb in einem Interrupt) überträgt dann diese Zeichen aufs tatsächliche LCD, wobei sie die Zeilenvertauschung berücksichtigt. * Oder aber dein Ausgabetreiber muss intelligenter werden und ständig wissen, wo der Cursor steht und den in die Ausgabe mit einberechnen so dass zb beim Zeilende der ersten Zeile nicht mit der 'zweiten Zeile' weitergemacht wird, sondern mit der dritten usw. Deine erste Funktion auf diesem Pfad ist eine Funktion, die den Cursor in eine bestimmte Zeile setzt, wenn du der Funktion sagst, Cursor auf Spalte 0, Zeile 1, dann wird der dann auch auf die visuelle 2.te Zeile gesetzt und nicht auf die 3te Zeile, wie sich das durch das Speicherlayout ergibt. > Und ich würde gerne wissen, wie man es hinbekommt, Texte zu blättern, > also > > nach sagen wir 6 Sekunden den nächsten Textteil anzeigen. Nach dem die Zeit abgelaufen ist (oder eine Taste gedrückt wurde oder was auch immer) * LCD löschen * Cursor Home * Text ausgeben, bis das LCD voll ist oder der Text zu Ende Wo liegt das Problem?
Naja das Problem ist, dass ich noch nicht genug Ahnung von den Sachen habe. Ich habe mir das Programm ja aus dem unter http://www.mikrocontroller.net/articles/AVR-Tutorial:_LCD liegten Zeilen zusammen gebastelt ;-)
Marius schrieb: > Naja das Problem ist, dass ich noch nicht genug Ahnung von den Sachen > habe. Dann wirst du das lernen müssen. So ist das nun mal. Es ist noch kein Meister vom Himmel gefallen. Und nein: Keine Angst vor Rückschlägen. Die gehören mit zum Lernprozess.
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.