Ralf schrieb:
> Ich bin aboluter Anfänger und konnte im Forum leider nichts finden was
> mein Problem beheben konnte...
Höchst wahrscheinlich stimmt einfach nur die Speicherstartadresse nicht.
Mach mal folgendes:
Gib einen langen String aus
zb
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
Von diesem String wirst du nur den Anfang in der ersten Zeile sehen.
Aber der String geht in der gedachten ersten Zeile weiter, bis er
irgendwann in den Speicher reinreicht, den das LCD benutzt um damit die
2.te Zeile anzuzeigen.
d.h. bei irgendeinem Buchstabens des langen Strings, wird die 2.te Zeile
anfangen etwas anzuzeigen.
Dann brauchst du nur noch bestimmen, wieviele Zeichen zwischen den
ersten Buchstaben in der ersten Zeile und dem ersten Buchstaben in der
2ten Zeil liegen und hast den Versatz, den du in set_cursor bzw.
lcd_goto einpflegen musst.
Das ganze funktioniert so
Das LCD hat nur einen fortlaufenden RAM
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
| | | | | | | | | | | | | | | |
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
Die LCD Logik krallt sich aus diesem RAM Teile heraus, die es in den
einzelnen Zeilen anzeigt. Zb so
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
| | | | | | | | | | | | | | | |
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
| | | |
| | | |
dieser Teil wird dieser Teil wird
in der 1. Zeile in der 2. Zeile
angezeigt angezeigt
D.h. wenn du in der 2ten Zeile mit der Ausgabe starten willst, musst du
einfach nur die aktuelle Schreibposition hier
*
v
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
| | | | | | | | | | | | | | | |
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
| | | |
| 1. Zeile | | 2. Zeile |
hinsetzen, und alles was ab dieser Stelle ins RAM geschrieben wird, wird
in der 2ten Zeile angezeigt.
Dazu musst du aber den Versatz
| Speicherversatz der Zeilen |
| |
v v
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
| | | | | | | | | | | | | | | |
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
| | | |
| 1. Zeile | | 2. Zeile |
kennen.
Dadurch, dass du den Speicher einfach von vorne weg mit Text
'vollmüllst' kannst du den aber bestimmen. Du fängst links zum Schreiben
an, und siehst dir an welches Zeichen beim Anfang der 2ten Zeile steht.
Da du den String kennst brauchst du daher nur abzählen wieviele Zeichen
das sind und kennst somit den Versatz.