PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : LCD library von Peter Fleury ÄÖÜ fehlt



Woftschik
17.04.2009, 08:37
Hallo Leute!!!

Kann mir jemand bitte erklären wie ich ÖÜÄöüä °C am Display
anzeigen kann. Wenn ich es in meinem Programm eingebe und es anschließend flashe dann stehen statt desen irgendwelche andere zeichen.

thewulf00
17.04.2009, 08:47
Was für ein Display? Text-LCD oder Grafik-LCD?

Beim Text-LCD kann man eigene Zeichen definieren, und dann benutzen.
Beim Grafik-LCD werden diese Zeichen sowieso selber gemalt, so dass nur Deine Font-Datei diese Zeichen enthalten muss.

Woftschik
17.04.2009, 09:06
oh sorry!

Ich habe ein Text-LCD. Wie heht es den mit den eigene Zeichen definieren????
Habe ess noch nie gemacht?

thewulf00
17.04.2009, 09:30
Ich habe es auch noch nie gemacht. Man überträgt zuerst den pixelgenauen Aufbau der Zeichen in den Controller und nutzt dann die selbstdefinierten Zeichen. Wie das genau geht, kann man an vielen Stellen im Forum und bei Google nachschauen.

Hubert.G
17.04.2009, 09:45
In der LCD_IO_h gibt es unter Global Settings den Punkt:
#define LCD_PUTC_CGRAM_NEEDED
In dem CGRAM kann man bis zu 8 Zeichen selbst kreiern. Diese sind beim abschalten allerdings wieder gelöscht, bei lcd_init sind sie immer neu zu speichern.
Da ich aber meine LCDs alle ohne R/W ausführe, habe ich mich nicht weiter damit beschäftigt.

Woftschik
17.04.2009, 09:48
Ich habe gerade gelesen, dass mit den eigenen Zeichen definieren heißt eigentlich das man eigene Zeichen malen.
Laut datenblatt meines LCD, ist aber schon fest definiert das es ÄÖÜ usw. gibt so wie andere Buchstaben.
Ich muss es nur irgendwie aufrufen, aber wie??????

thewulf00
17.04.2009, 09:53
Dann ist die Nummer des Zeichens einfach ein anderes. Dazu musst Du in die Zeichentabelle des LCDs schauen (siehe Datenblatt).

Hubert.G
17.04.2009, 10:06
Es gibt zwei verschiedene Zeichentabellen, bei den HD44780xxx steht für xxx entweder A00 oder A02.
A00 ist der Japan Standard, A02 der Europa Standard.
Ich habe bis jetzt allerdings nur A00 Display gesehen. Die gesamte Sonderzeichenpalette gibt es aber nur im Europastandard.
Für die KSxxxx Kontroller wird es das gleiche sein.

Woftschik
17.04.2009, 10:06
Ja das meine ich...

Z.B. das Zeichen ä hat den byte wert 11100001
wie kann ich mit diesem code das zeichen aufrufen????

Woftschik
17.04.2009, 11:31
ok

wie kann man den wenigstens versuchen ein eigenes Zeichen "malen"?

Ich habe jetzt den ganzen vormittag im Netz danach gesucht, doch leider ohne erfolg.

CsT
17.04.2009, 11:51
Wenn ä den Bytewert 11100001 hat, dann rechne diesen in eine Dezimalzahl um (225) und gib diese Zahl dann mittels einer Funktion aus, mit der man sonst einzelne Buchstaben ausgibt. Also putc, putchar oder so in der Art, ich kenne mich mit der Fleury-Lib nicht aus.
Vorsicht, die Zahl dann demensprechend nicht (wie Buchstaben) in '' setzen, sondern einfach so übergeben.
Beispiel:
putchar('c'), um den Buchstaben c auszugeben, aber putchar(225) um dein ä auszugeben.

Grüße Tobi

pyr0skull
17.04.2009, 12:24
Du könntest auch einfach die putc-Funktion mit einer case-Verzweigung erweitern, die bestimmte char-Werten (aus der Ascii-Tabelle rausnehmen) in Display-kompatible (aus der Zeichensatz-Tabelle des Display rausnehmen) umwandelt. Ginge wahrscheinlich auch schöner, funktioniert aber.

Woftschik
17.04.2009, 12:59
@pyr0skull

oh man! SORRY aber
Nix verstehen!!! Bahnhof!!

Was soll ich wo rausnehmen?
Könntest du mir ein Beispielcode geben??

CsT
17.04.2009, 13:47
Füge einfach mal folgendes (an geeigneter Stelle) in deine Programm ein:

putc(225);

Da sollte ein "ä" ausgegeben werden. Falls das klappt, können wir dann weiter drüber diskutieren wie man das am schönsten in dein Programm einbaut.

pyr0skull
17.04.2009, 14:21
Ich poste heute Abend mal einen Codeschnipsel ;)

Woftschik
17.04.2009, 14:30
@ CsT

habe es vorher versucht mit lcd_puts (225); aber nichts passiert.

so wie du es gesagt bzw. geschrieben hast lcd_putc (225);
funktioniert. super, danke!

Ich lege mal das Datenblatt mit bei.
Wie es bereits ob erwähnt gibt es Ä Ö Ü (als Großbuchtsaben) nicht, es gibt nur kleine.

würde mich jetzt interessieren wie man die Großen machen könnte!

jwsk
17.04.2009, 14:44
naja, für die großen ist halt nicht richtig Platz,
hat man oft das große und kleine Umlaute
das gleiche Symbol haben. Selbst bei Brother
Etikettendruckern keine Seltenheit!

Woftschik
17.04.2009, 14:47
Man könnte doch das A um ein Pixel kürzen und dann die umlaute oben einbringen.
Aber keine Ahnung ob mann das machen kann??? :-k

Woftschik
18.04.2009, 09:45
Wie macht ihr das wenn ihr großes Ü Ä Ö braucht?
Schreibt ihr einfach Ue Ae Oe??

Das ist doch nicht elegant!!!

Hubert.G
18.04.2009, 11:56
Elegant ist es nicht, allerdings gibt es keine Lösung ausser selbst kreieren. Das geht aber nur wenn der R/W aktiv ist.
Ich habe auch noch niemanden gefunden der das schon mal gemacht hat.

thewulf00
18.04.2009, 13:24
Ich schreibe dann eben immer englisch, oder ich nehme umlautfreie Synonyme.

Woftschik
18.04.2009, 14:31
AAAAAHHHH Ja!!!

verstehe! :-k

Ihr lässt es garnicht darauf ankommen, OK werde es auch so tun!

Ich danke euch allen, für eure hilfe!