Hallo zusammen,
wie der Titel schon sagt, ich würde gerne selbst definierte Zeichen auf
meinem 2x16er LCD darstellen, in meinem Fall ein Glockensymbol, einmal
hohl, und einmal ausgefüllt.
Das übertragen und Darstellen eines einzelnen Zeichens klappt wunderbar,
ich kann das Zeichen auch auf dem Display darstellen.
Wenn ich jedoch ein zweites und drittes selbstdefiniertes Zeichen an's
Display sende, kommt am LCD nur Müll raus, beispielsweise zwei
senkrechte Striche und Punkte, statt einer Glocke.
Hier mal meine entsprechenden Teile des Quellcodes:
Arrays für die beiden Glockensymbole:
1 | // Zeichen für den CG RAM definieren
|
2 | // ---------------------------------
|
3 | uint8_t cgramsymbol_glocke_leer[8] =
|
4 | {
|
5 | 0b00000100,
|
6 | 0b00001010,
|
7 | 0b00001010,
|
8 | 0b00001010,
|
9 | 0b00010001,
|
10 | 0b00011111,
|
11 | 0b00000100,
|
12 | 0b00000000,
|
13 | };
|
14 |
|
15 | uint8_t cgramsymbol_glocke_voll[8] =
|
16 | {
|
17 | 0b00000100,
|
18 | 0b00001110,
|
19 | 0b00001110,
|
20 | 0b00001110,
|
21 | 0b00011111,
|
22 | 0b00011111,
|
23 | 0b00000100,
|
24 | 0b00000000,
|
25 | };
|
Übertragen der Bitmuster in den CGRAM:
1 | // Leeres Glockensymbol in CG RAM übertragen
|
2 | LCD_RS(0);
|
3 | LCD_RW(0);
|
4 | LCD_DATA(0b01000000);
|
5 | LCD_EN();
|
6 |
|
7 | for(uint8_t n=0; n<8; n++) LCD_CHAR(cgramsymbol_glocke_leer[n]);
|
8 |
|
9 | // Volles Glockensymbol in CG RAM übertragen
|
10 | LCD_RS(0);
|
11 | LCD_RW(0);
|
12 | LCD_DATA(0b01000001);
|
13 | LCD_EN();
|
14 |
|
15 | for(uint8_t n=0; n<8; n++) LCD_CHAR(cgramsymbol_glocke_voll[n]);
|
16 |
|
17 | // Cursorposition festlegen
|
18 | LCD_LOCATE(1, 1);
|
...und dann noch die Darstellung auf dem Display:
1 | // Leeres Glockensymbol darstellen
|
2 | LCD_LOCATE(1, 16);
|
3 | LCD_CHAR(0b00000000);
|
4 |
|
5 | // Volles Glockensymbol darstellen
|
6 | LCD_LOCATE(1, 15);
|
7 | LCD_CHAR(0b00000001);
|
Die Darstellung der leeren Glocke in Spalte 16 klappt wunderbar (nur
wenn ich ein einzelnes Zeichen definiere und übertrage), aber die volle
Glocke in Spalte 15 will nicht so, wie sie soll (wenn ich zwei oder mehr
Zeichen definiere), da stehen nur Striche durcheinander...
Nur warum? Ich komm nicht drauf.
Grüße, Christian