Hallo,
das 4x20 Display wird über SPI angesteuert und zeigt auch das richtige
Zeichen im Display an (laut Tabelle im Datenblatt)
Aber die Position macht mir Kopfzerbrechen!
Ichhabe aus einem anderen Beitrag den Code genommen, angepasst und die
Position als Dez und nicht als Hex genommen:
1 | void SetPos(unsigned char Zeile, unsigned char Spalte)
|
2 | {
|
3 | switch(Zeile)
|
4 | {
|
5 | case 1: LCD_Write_Instr(132 + Spalte-1);
|
6 | break;
|
7 | case 2: LCD_Write_Instr(152 + Spalte-1);
|
8 | break;
|
9 | case 3: LCD_Write_Instr(184 + Spalte-1);
|
10 | break;
|
11 | case 4: LCD_Write_Instr(216 + Spalte-1);
|
12 | break;
|
13 | default: LCD_Write_Instr(0x80);
|
14 | break;
|
15 | }
|
16 | }
|
Bei Spalte wird überall die "1" an die Finktion übergeben, also hinten
steht + 0. So wie es jetzt ist steht das Zeichen in jeder Zeile an
erster Stelle.
Wie man schon sieht, ist zwischen den Positionsangaben nicht über eine
Differen von "20" und wenn ich 132+17-1 also = 148 sende, ist das
Zeichen irgendwo in der 2. Zeile.....
Irgendwie verwirrt mich das und ich komme nicht drauf wie das
funktionieren soll.....
Vielen Dank