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?