Eigene Zeichen im CGRAM des KS0070B definieren funktioniert nur teilweise

OP #3273409
Lesenswert?
• ▲
▼
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
Gast #3273420
Lesenswert?
• ▲
▼
Versuchs mal so:
1
// Volles Glockensymbol in CG RAM übertragen
2
  LCD_RS(0);
3
  LCD_RW(0);
4
  LCD_DATA(0b01001000);
5
  LCD_EN();

Dein zweites Zeichen beginnt an CG-RAM Adresse 8 und nicht 1.
Dein drittes Zeichen beginnt an CG-RAM Adresse 16 und nicht 2.
Gast #3273431
Lesenswert?
• ▲
▼
Bevor ich es vergesse.

Diese Ausgabe ist dann trotzdem richtig:
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);
OP #3273434
Lesenswert?
• ▲
▼
holger schrieb:
> Bevor ich es vergesse.
>
> Diese Ausgabe ist dann trotzdem richtig:
>
>
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);
8
>
Ich weiß. Hab's grade bemerkt ;)

Nur komischerweise steht von der CGRAM-Adressierung nix detailliertes im 
mitgelieferten Datenblatt. Da hätt ich lange suchen und basteln 
können...

Christian
Gast #3273491
Lesenswert?
• ▲
▼
Hi

> Wär ich ehrlichgesagt nicht drauf gekommen
>dass der Controllerchip auf dem Display ein extra Datenblatt hat.

Ja, da gibt es eigene Datenblätter. Und die sind meist wichtiger als das 
eigentliche Displaydatenblett.

MfG Spess

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.