Hallo,
ich verwende zur z.B. Ausgabe von Umlauten und Sonderzeichen auf LCD's Oktalcodes. Z.B. für die Ausgabe des Wortes Lichtstärke nehme ich "lcd.print("Lichtst\341rke: ");" Das funktioniert auch gut. (oder \337 für ° oder \45 für %) Jetzt meine Frage: Wenn ich mir nun die ASCII-Tabelle von hier anschaue, sehe ich aber völlig andere Oktal-Codes. Ich wäre sehr dankbar, wenn das mal jemand erklären könnte.
Vielen Dank vorab
Das liegt daran, dass oberhalb von 127d die Kodierung im LCD-Controller nicht mehr der ASCII-Norm folgt (die da gar nix hat), sondern eigene Zuordnungen vornimmt. Die Dinger sind in der Regel kompatibel zum Urvater Hitachi HD44780.
Die Zeichentabelle gibt für das ä das her (upper/lower 4 Bit sind da angegeben):
11100001b = 225d = E1h = \341
Wobei HD44780 es standartmäßig mit 2 verschiedene Zeichensätzen existieren (HD44780A00 japanisch und A02 europäisch). Auch sind kundenspezifische Zeichensätze möglich, auch wenn ich noch nie solche gesehen habe.
Die Zeichen 8 bis 127 sind ASHII konform. Von 128 bis 255 sind die Zeichen spezifisch zum HD44780.
Die Zeichen 0 bis 7 können selbst definiert werden.
Grüße Uwe
Meine Lieblingsbibliothek Arduino: Deutsche Umlaute und Sonderzeichen am LCD (Liquid Crystal Library) gibt es mit Erklärung für das Verständnis und Einstellungen für deutsche Belange. Bei den vielen Optionen ist mir der Einstieg nicht so leicht gefallen, aber die Hürde zu überwinden lohnt sich!
Außerdem ist der Bibliotheksautor @noiasca ist in diesem Forum aktiv.
Dein Link erwähnt
Die erweiterte ASCII Tabelle
was leider Unsinn ist: Erweiterungen der ASCII- Tabelle oberhalb 0x7F (oder oktal 0177) gibt es viele verschiedene. (z.B. ISO-8859-8 - Hebräisch)
Microsoft hat mal sogenannte Codepages erfunden. Die in MS-DOS verwendete Erweiterung mit vielen für Grafiken nutzbaren Sonderzeichen auf Text-basierten Terminals hieß dann CP-437
╔═════════╗
║ schön ? ║ ░
╚═════════╝ ░
░░░░░░░░░░░░
Die bei LCD übliche Erweiterung ist woanders so ungebräuchlich, dass sie nichtmal einen der sonst üblichen Namen hat.
Danke an alle für die Erklärung. Jetzt weiß ich wenigstens, was ich mit so einer Zeichentabelle anfangen soll (upper/lower 4 Bit) ![]()
Lies mal ganz genau die Seite die dir @agmue in #4 verlinkt hat.
Dort siehst du einerseits die Standard-Zeichen des HD44780-A00 ROMs. Damit erklärt sich auch warum du nicht einfach zum ä kommst, bzw. warum du etwas anderes zum LCD senden müsstest um das ä zubekommen.
Hinzu kommt, dass man im Arduino Umfeld mit UTF-8 zu tun hat, und somit ein lcd.print("ä") eigentlich zwei Bytes an das LCD sendet.
Ich kann dir meine LCD library empfehlen, die dir das senden von Umlauten oder anderen Sonderzeichen sehr einfach macht. Dort gibts auch 4 Vorschläge zur Behandlung von großen Umlauten (Ä wird zu ä, Ä wird zu A, Ä wird zu Ae, Ä als Ä).
Überhaupt finde ich die Zeichenkonvertierung sehr mächtig. Es werden viele LCDs mit vielen unterschiedlichen Ansteuerungsvarianten unterstützt.