Forum: Mikrocontroller und Digitale Elektronik LCD PROGMEM auslesen


von Lokus P. (derschatten)


Lesenswert?

Kann mir vielleicht jemand sagen wo der Fehler ist.

Ich möchte gerne einen selbst definierten Zeichensatz aus dem Flash am 
LCD ausgeben.
Dazu nutze ich die Fleury-Lib.

Nur ich bekomme nichts angezeigt.
1
const char balken1[] PROGMEM =  {0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x00};
2
const char balken2[] PROGMEM =  {0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x00};
3
const char balken3[] PROGMEM =  {0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x00};
4
const char balken4[] PROGMEM =  {0x1E,0x1E,0x1E,0x1E,0x1E,0x1E,0x1E,0x00};
5
const char balken5[] PROGMEM =  {0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x00};
6
7
const char* zeichen[] PROGMEM = {balken1,balken2,balken3,balken4,balken5};

Ausgabe erfolgt dann mittels:
1
lcd_puts_p((char*)(pgm_read_word(&zeichen[0])));

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Lokus Pokus schrieb:
> Nur ich bekomme nichts angezeigt.

Das wundert mich nicht, denn du musst deine Fontdefinitionen erstmal in 
den Character RAM des Hitachi laden, bevor du mit z.B. lcd_putc(0x00) an 
das erste Zeichen kommst.
Dazu füllst du den CGRAM mit den Fontdefinition für bis zu 8 Zeichen.
Die Fleury Lib hat dazu den Befehl 'lcd_command' und 'lcd_data'.

von Lokus P. (derschatten)


Lesenswert?

Geht das denn nur über den CGRAM?

Das Problem ist, das LCD das ich verwende hat nur Platz für ein einziges 
Zeichen im CGRAM.

von spess53 (Gast)


Lesenswert?

Hi

>Das Problem ist, das LCD das ich verwende hat nur Platz für ein einziges
>Zeichen im CGRAM.

Welches LCD oder welcher Displaycontroller?

MfG Spess

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Lokus Pokus schrieb:
> Das Problem ist, das LCD das ich verwende hat nur Platz für ein einziges
> Zeichen im CGRAM.

Öh, wenn du Peter Fleurys Lib verwendest ist das entweder ein HD44780 
oder ein KS0073, die beide Platz im CGRAM für 8 bzw. 16 selbstdefinierte 
Zeichen haben- siehe Datenblatt. Der CGRAM Bereich ist 0x00 - 0xFF.

von Lokus P. (derschatten)


Lesenswert?

Dieses hier: 
http://www.staff.uni-bayreuth.de/~bt150361/cmt2006/Datenbl%E4tter/LCD/LCD162C.pdf

Äh, Schwachsinn. Natürlich sind da 8 Adressen frei.

von spess53 (Gast)


Lesenswert?

Hi

Der KS0070-Displaycontroller kann 8 eigene Zeichen speichern:

Datenblatt:
Character Generator RAM (CGRAM): 64 ´ 8 bits (8 characters ´ 5 ´ 7 dots)

MfG Spess

von Lokus P. (derschatten)


Lesenswert?

ja, bin da im Datenblatt durcheinander gekommen, danke.

mit lcd_putc(0) wird dann ausgelesen, richtig?

von spess53 (Gast)


Lesenswert?

Hi

>mit lcd_putc(0) wird dann ausgelesen, richtig?

Weiß ich nicht, da ich eigene Bibliotheken benutze. Allerdings musst du 
die Zeichen erst mal ins CG-Ram schreiben.

MfG Spess

von Falk B. (falk)


Lesenswert?

So wird es gemacht.

Erweiterte LCD-Ansteuerung

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.