* was genau macht die Funktion SENDEN
gibt die ein Datenbyte (ein Zeichen) ans LCD
oder setzt die die Steuerleitungen so, dass das LCD auch
weiß, dass es das nächste Byte als Kommando auffasen muss
* wo hast du die Formel
y + pos_y * x + pos_x
her. Die ist ziemlicher Unsinn.
Wenn du eine 2-dimensionale Anordnung hast ...
+---+---+---+---+---+---+
| | | | | | |
+---+---+---+---+---+---+
| | | | | | |
+---+---+---+---+---+---+
| | | | | | |
+---+---+---+---+---+---+
| | | | | | |
+---+---+---+---+---+---+
| | | | | | |
+---+---+---+---+---+---+
deren Felder der Reihe nach durchnummeriert sind
+---+---+---+---+---+---+
| 0 | 1 | 2 | 3 | 4 | 5 |
+---+---+---+---+---+---+
| 6 | 7 | 8 | 9 | 10| 11|
+---+---+---+---+---+---+
| 12| 13| 14| 15| 16| 17|
+---+---+---+---+---+---+
| 18| 19| 20| 21| 22| 23|
+---+---+---+---+---+---+
| 24| 25| 26| 27| 28| 29|
+---+---+---+---+---+---+
und wenn wir da einfach mal den Zeilen und Spalten ebenfalls Nummern
verpassen
0 1 2 3 4 5 ... Spaltennummer
+---+---+---+---+---+---+
0 | 0 | 1 | 2 | 3 | 4 | 5 |
+---+---+---+---+---+---+
1 | 6 | 7 | 8 | 9 | 10| 11|
+---+---+---+---+---+---+
2 | 12| 13| 14| 15| 16| 17|
+---+---+---+---+---+---+
3 | 18| 19| 20| 21| 22| 23|
+---+---+---+---+---+---+
4 | 24| 25| 26| 27| 28| 29|
+---+---+---+---+---+---+
.
. Zeilennummer
Welche Zahl steht dann im Schnittpunkt der Zeile y und Spalte x?
Beispielsweise in der Zeile 3 und Spalte 4
*
*
*
0 1 2 3 4 5 ... Spaltennummer
+---+---+---+---+---+---+
0 | 0 | 1 | 2 | 3 | 4 | 5 |
+---+---+---+---+---+---+
1 | 6 | 7 | 8 | 9 | 10| 11|
+---+---+---+---+---+---+
2 | 12| 13| 14| 15| 16| 17|
+---+---+---+---+---+---+
*** 3 | 18| 19| 20| 21| 22| 23|
+---+---+---+---+---+---+
4 | 24| 25| 26| 27| 28| 29|
+---+---+---+---+---+---+
.
. Zeilennummer
Da steht die 22.
So. WEnn du jetzt das Diagramm nicht hast, wie kannst du diese 22
errechnen, wenn du nur die Zeilennummer und die Spaltennummer hast?
(hinweis: Zeile 3 bedeutet - weil die erste Zeile ja die Nummer 0 hatte
- dass vor dieser Zeile 3 komplette Zeilen waren. Jede einzelne dieser 3
kompletten Zeilen besteht aus 6 Feldern. D.h. die Zeilen 0 bis 2
zusammengenommen sind 18 Felder und in dieser Zeile 3 kommen dann noch 4
dazu, weil ja das Feld in der Spalte 4 gefragt war. 18 + 4 ergibt wieder
die 22.
Wie lautet also die allgemeine Formel in diesem Fall?
Wenn du also diesem gedachten LCD mitteilen willst, dass es den Cursor
in Zeile 3, Spalte 4 setzen soll, dann musst du ihm das Commando "Set
DDRAM Address" mit einer Adresse von 22 schicken. Und zwar als
Kommando(!) und nicht als Datenbyte.
Wie lautet die Formel in deinem Fall, wenn eine Zeile nicht 6 Spalten
breit ist sondern 0x40 (also 64 Spalten) (auch wenn das LCD von diesen
64 Spalten nur die ersten 16 anzeigt).