Forum: Mikrocontroller und Digitale Elektronik Ascii-Zeichen auf LCD


von Markus M¨¹ller (Gast)


Lesenswert?

Hallo zusammen,

ich arbeite mit einem M16C28 (Compiler NC30 von Renesas mit
HEW-Umgebung) und will auf einem LCD-Display Ascii-Zeichen in
verschiedenen Fonts ausgeben. Auf dem LCD ist ein KS0108B
Segment-Driver. So weit so gut. Ansteuerung klappt wunderbar. Ich habe
eine Tabelle in meinem Flash hinterlegt f¨¹r jedes Zeichen die
entsprechenden Pixel, auch das funktioniert.
Nun will ich folgendes ausgeben:

LCDText("D¨¹sseldorf",0,0); // Schreibt D¨¹sseldorf an Position
X=0,Y=0
void LCDSoftText(const char *zeiger, unsigned char xpos, unsigned char
ypos);// Funktion mit Argumenten funktioniert einwandfrei

Statt dem "¨¹" liesst er "¦²" und schreibt den entsprechenden Wert,
auch wenn ich das Zeichen ¨¹ber die DOS-Eingabe eingebe.
Kann es sein das der Compiler aus einer anderen Zeichentabelle liesst
wie ich will, oder wo liegt der Fehler?

Ciao

von Karl H. (kbuchegg)


Lesenswert?

Sonderzeichen wie 'ü', 'ä', 'ß' (also alles was nicht
im Standard-ASCII Code drinnen ist) sind  immer problematisch.
Wenn alles nichts hilft, dann musst Du die Zeichen direkt
angeben:
Angenommen das 'ü' hat auf Deinem Display den Code 0x8A, dann
kannst Du den Hex-Code von 0x8A direkt in den String einbetten:

  "D\x8Asseldorf"

das ist die Escape Sequence \x gefolgt von 2 Zeichen fuer
den Hex-Code des gewuenschten Zeichens.

Im schlimmsten Fall musst Du Dir halt eine Routine basteln,
die die entsprechenden Ersetzungen passend zu Deinem
Display vornimmt.

von Markus Müller (Gast)


Lesenswert?

Danke, das hilft mir schon ein wenig weiter.
Liegts nun am Compiler oder wie sind nun die Verhältnisse?

von Karl H. (kbuchegg)


Lesenswert?

Yep. Compiler / Betriebssystem.
Die Codetabellen stimmen nicht mit denen Deines
Displays ueberein.
Was mich allerdings stutzig macht: In Deinem Beitrag
kommen offensichtlich ein paar Umlaut-u vor. Die werden
bei mir samt und sonders durch eigenartige Sonderzeichen
dargestellt. Kann jetzt an Deinem PC liegen oder an meinem.
Ich tipp aber mal auf Deinen.

von Mark H. (haemi)


Lesenswert?

Salve,

naja, liegt dann wohl doch eher am LCD-Controller, bzw. an dem
eigenartigen Zeichensatz (ich vermute, ähnl. dem des HD44780A00).
Immerhin hält sich sein PC und sein Compiler zumindest an ASCII (8bit),
während das LCD keinem mir bekannten genormten Zeichensatz folgt. Die
Umlaute sind dort an eher willkürlichen Stellen untergebracht, so daß
es nicht ohne Übersetzung (Mapping) geht. Ich persönlich löse das auch
durch Einbringen der entsprechenden Hex-Codes in die Strings.

Mark

PS: Das "ü" in Düsseldorf steht schon im HTML-Source so verkorkst
drin. Ich habe HTML noch als 7bit-Sprache kennengelernt, und da heißt
es ü. Ist es nicht Aufgabe des Browsers, die Form-Daten beim
Post-Request entsprechend zu codieren?

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.