Forum: Mikrocontroller und Digitale Elektronik Französisch auf einem HD44780-LCD?


von Bauform B. (bauformb)


Lesenswert?

Es gibt eine Steuerung mit einem klassischen 2x40 Text-LCD. Zwischen 
Deutsch und Englisch kann man schon umschalten, jetzt soll das Teil 
französische Worte anzeigen. Am liebsten wäre mir, im Quelltext alles 
korrekt zu schreiben, also z.B. "Français". Der Ausgabetreiber würde zur 
Laufzeit die "Verzierungen" entfernen, also ASCII ausgeben, also würde 
"Francais" angezeigt werden.

Die entscheidende Frage: Wie verwirrt/beleidigt/angepi$$t wäre ein 
Franzose? Oder muss man das so ähnlich wie im Deutschen konvertieren, 
also "ä" zu "ae"? Das wäre im Quelltext natürlich noch praktischer, aber 
für mich noch unübersichtlicher. Wie war das in der Schule? Nimm Latein, 
Französisch braucht kein Mensch?!

von Walter T. (nicolas)


Lesenswert?

Du kannst eine begrenzte Zahl an Sonderzeichen verwenden. Voilà - Dein 
Problem ist gelöst.

Einen Keymap-Decoder brauchst Du eh. Ich würde UTF-8 nahelegen.

: Bearbeitet durch User
von Bauform B. (bauformb)


Lesenswert?

Walter T. schrieb:
> Du kannst eine begrenzte Zahl an Sonderzeichen verwenden.

Leider nur theoretisch, die Tabelle für das CGRAM steckt in einem 
anderen uC, und an den komme ich ganz schlecht dran. Außerdem, reichen 6 
bis 8 Zeichen? Die Franzosen kennen bestimmt viel mehr.

von Walter T. (nicolas)


Lesenswert?

Bauform B. schrieb:
> Außerdem, reichen 6
> bis 8 Zeichen?

8 Zeichen reichen für alle "E"-Varianten.

ÈÉÊËéèêë

Bauform B. schrieb:
> die Tabelle für das CGRAM steckt in einem
> anderen uC, und an den komme ich ganz schlecht dran.

Wie praktisch, dass man diese Nebensächlichkeit schon so früh erfährt.

von Theor (Gast)


Lesenswert?


von Andreas S. (marais)


Lesenswert?

Bauform B. schrieb:
> Wie verwirrt/beleidigt/angepi$$t wäre ein
> Franzose? Oder muss man das so ähnlich wie im Deutschen konvertieren,
> also "ä" zu "ae"?

Eine Konvertierung wie bei den Umlauten gibt's im Französischen nicht. 
Akzente auf Großbuchstaben werden heute gerne weggelassen, auch wenn die 
académie française da anderer Meinung ist.
Am wichtigsten sind éèà und ù, den weggelassenen circonflexe (Das 
"Dach") würde man Dir verzeichen; falls doch mehr als 4 Sonderzeichen 
möglich sind, setz' das Dach auf aeuo. Bevor Du das i mit circonflexe 
dazunimmst, lieber die cedille unterm kleinen c berücksichtigen.

von Niklas G. (erlkoenig) Benutzerseite


Lesenswert?

Walter T. schrieb:
> Einen Keymap-Decoder brauchst Du eh. Ich würde UTF-8 nahelegen.

In C++ kann man das auch den Compiler erledigen lassen, z.B. so:
1
#include <cstddef>
2
#include <array>
3
#include <utility>
4
#include <iostream>
5
#include <iomanip>
6
7
constexpr std::uint8_t hd44780Char (char32_t c) {
8
  return
9
    (c == U'ä') ? 0xE1 :
10
    (c == U'ö') ? 0xEF :
11
    (c == U'ü') ? 0xF5 :
12
    (c == U'ç') ? 0x63 :
13
    (c == U'ß') ? 0xE2 :
14
    static_cast<std::uint8_t> (c & 0xFF);
15
      
16
}
17
18
template <std::size_t N, std::size_t... I>
19
constexpr std::array<std::uint8_t, N> hd44780Str2 (const char32_t (&str) [N], std::index_sequence<I...>) {
20
  return {{ hd44780Char (str[I]) ... }};
21
}
22
23
template <std::size_t N>
24
constexpr std::array<std::uint8_t, N> hd44780Str (const char32_t (&str) [N]) {
25
  return hd44780Str2 (str, std::make_index_sequence<N> {});
26
}
27
28
int main () {
29
  constexpr auto str1 = hd44780Str(U"ae=ä, oe=ö, ue=ü, ss=ß, cc=ç");
30
  for (std::uint8_t c : str1) {
31
    std::cout << '[' << c << "] => " << "0x" << std::hex << std::setw(2) << std::setfill ('0') << static_cast<int> (c) << ", ";
32
  }
33
  std::cout << std::endl;
34
}

Dadurch kann man im Quelltext die Strings "ganz normal" speichern - 
typischerweise UTF-8, aber prinzipiell egal, solange Editor und Compiler 
auf den selben Zeichensatz eingestellt sind; bei GCC ist es m.w. immer 
UTF-8. Mithilfe der Übersetzungs-Logik in "hd44780Char" können dann 
beliebige Unicode-Zeichen (im Code als UTF-32-Char-Literal definiert) in 
einzelne Ausgabe-Zeichen umgewandelt werden.

Laut http://www.netzmafia.de/skripten/hardware/Arduino/LCD/index.html 
enthalten die handelsüblichen Displays Umlaute, welche ich oben 
beispielhaft entsprechend übersetzt habe; ein ç gibt es leider nicht, 
weshalb ich das in ein normales 'c' übersetzt habe. Wenn du aber ein 
eigenes ç-Zeichen im Controller hinterlegst, kannst du das mit dieser 
Übersetzung ebenfalls abhandeln, sofern die Position bekannt ist.

Der Vorteil ist dass die Übersetzung zur Laufzeit entfällt und die Daten 
effizient direkt aus dem Flash an das LCD geschickt werden können; der 
Nachteil ist, dass diese Strings dann nicht mehr anderweitig zu 
gebrauchen sind (z.B. per UART) weil sie im LCD-spezifischen Zeichensatz 
sind.

von Andi M. (andi6510) Benutzerseite


Lesenswert?

Die Krueckenloesung:
Wenn Du es schaffst zumindest die accents-aigu und -grave auf den 
Kleinbuchstaben anzuzeigen, dann kommt ein Franzose zumindest weitgehend 
mit der Lesbarkeit klar. Aber doll ist das nicht, wenn auf ein paar 
Buchstaben Akzente drauf sind, auf anderen nicht.

Was aber zu bedenken ist: Die Franzosen sind sehr stolz auf ihre 
Sprache. Das wird ihnen also mindestens mal einen unfreundlichen 
Kommentar abringen und es wird dem Produkt auch den Touch einer 
minderwertigen Qualitaet verpassen. Weiss nicht, ob euer 
Produktmanagement das so will.

Ich habe viele Jahre in einem Unterhaltungselektronikkonzern gearbeitet 
und habe viel mit dem vielsprachigem Benutzerinterface zu tun gehabt. 
Unser franzoesischer Field-Support-Mensch, den wir stets mit unserem 
fast-fertigem Produkt fuer Fieldtests besucht hatten, hat zu 90% Fehler 
in der Bildschirmdarstellung bemaengelt.

Am besten waere also wohl ein Redesign der Hardware mit einem 
Controller, der das beherrscht. Evtl gleich ein grafisches Display 
verwenden.
Das geht aber sicherlich aus ganz vielen Gruenden nicht. Wie immer.

PS: ich schreibe im uebrigen gerade auf einer US-Tastatur. Daher meine 
Umlaute mit ae ue oe... Leider gibt es so eine annerkannte Umschreibung 
im franzoesischen nicht.

von Karl B. (gustav)


Angehängte Dateien:

Lesenswert?

Hi,
interessant ist, dass Charakter-Roms auf Kundenwunsch programmiert 
hergestellt werden können. Lies dazu Seite 18 ff.

ciao
gustav

von Florian (Gast)


Lesenswert?

Grundsätzlich würde ich überdenken, ob sich diakritische Zeichen 
überhaupt lohnen. Schon die deutschen Umlaute sehen grausig aus. Auf 
Großbuchstaben geht's gar nicht. 5x7 (8) Pixel sind einfach zu wenig für 
solche Spielereien. Und für die französischen "Schnörkel" brauchst du 
mindesten 2 Pixel in der Höhe oben und fürs Cedille nochmal 2-3 nach 
unten.

Ich würde einfach alle Diakritika weglassen. Das kann jeder lesen und 
ein Franzose wird auch ohne wissen, wie es ausgesprochen wird (und nur 
dafür sind sie da, nicht um Wörter zu differenzieren).

von MaWin (Gast)


Lesenswert?

Bauform B. schrieb:
> Der Ausgabetreiber würde zur
> Laufzeit die "Verzierungen" entfernen, also ASCII ausgeben, also würde
> "Francais" angezeigt werden.
>
> Die entscheidende Frage: Wie verwirrt/beleidigt/angepi$$t wäre ein
> Franzose?

Sehr. So, als ob ein Deutscher keine Umlautpunkchen sieht.

Und es ist unnötig: Der HD44780 kann bis 8 benutzerdenierte Zeichen.
Lege also die spezifischen französischen Zeichen in einem Zeichensatz in 
dein Programm, und kopiere die benötigten in den Fontspeicher des 
HD44780, und ersetze die Zeichen im Text gegen die POsitionscodes im 
Font-Speicher.

Bauform B. schrieb:
> Leider nur theoretisch, die Tabelle für das CGRAM steckt in einem
> anderen uC, und an den komme ich ganz schlecht dran. Außerdem, reichen 6
> bis 8 Zeichen? Die Franzosen kennen bestimmt viel mehr.

Aber die werden kaum in dem 80 Zeichen Text den du anzeigen musst 
benötigt.
Du musst nur die benötigten Zeichen rüberkopieren.

von Bauform B. (bauformb)


Lesenswert?

Andi M. schrieb:
> Was aber zu bedenken ist: Die Franzosen sind sehr stolz auf ihre
> Sprache. Das wird ihnen also mindestens mal einen unfreundlichen
> Kommentar abringen

MaWin schrieb:
>> Die entscheidende Frage: Wie verwirrt/beleidigt/angepi$$t wäre ein
>> Franzose?
>
> Sehr. So, als ob ein Deutscher keine Umlautpunkchen sieht.

Ich hab's geahnt. Das sind die entscheidenden Antworten, vielen Dank. 
Also muss Deutsch und Englisch erstmal reichen.

Andi M. schrieb:
> Am besten waere also wohl ein Redesign der Hardware mit einem
> Controller, der das beherrscht. Evtl gleich ein grafisches Display
> verwenden.
> Das geht aber sicherlich aus ganz vielen Gruenden nicht. Wie immer.

Du sagst es...

: Bearbeitet durch User
von Route_66 H. (route_66)


Lesenswert?

Bauform B. schrieb:
> Also muss Deutsch und Englisch erstmal reichen.

Das sehen die Franzosen aber ganz militant anders!

von Marcus H. (Firma: www.harerod.de) (lungfish) Benutzerseite


Lesenswert?

Florian schrieb:
> Grundsätzlich würde ich überdenken, ob sich diakritische Zeichen
> überhaupt lohnen.
...
> Ich würde einfach alle Diakritika weglassen. Das kann jeder lesen und
> ein Franzose wird auch ohne wissen, wie es ausgesprochen wird (und nur
> dafür sind sie da, nicht um Wörter zu differenzieren).

Das ist so nicht richtig - die Strichle sind phonemisch.
https://de.wikipedia.org/wiki/Phonem

. . .

Ein technischer Ansatz, wenn dynamisches Umprogrammieren des CGRAM nicht 
ausreicht: Schnelles Umschalten zwischen zwei Zeichen an derselben 
Position. Die Trägheit des LCD sorgt für, wenn auch schwache, 
Sichtbarkeit.
So ein Ansatz hat aber 199x schon zu Stirnrunzeln geführt.

von Falk B. (falk)


Lesenswert?

Es gibt HD44780 mit französischen Sonderzeichen. Dann noch den Quelltext 
mit UTF-8 kodieren, Zwischentreiber, fertig.

von Karl B. (gustav)


Lesenswert?

Falk B. schrieb:
> Es gibt HD44780 mit französischen Sonderzeichen

Wurde bereits erwähnt:
Beitrag "Re: Französisch auf einem HD44780-LCD?"
und datrüber hinaus bietet der Hersteller die Möglichkeit kano, 
chinesisch, koreanisch, arabisch etc. auf Kundenwunsch zu programmieren.

ciao
gustav

von Marek N. (Gast)


Lesenswert?

Och, manchmal kann eine fehlerhafte Groß-/Kleinschreibung zumindest für 
Belustigung sorgen. Z.B. im Arbeitszeugnis einer 
Krankenschwester/-pflegerin.

"Sie konnte gut Blasen und Glieder versorgen."
vs.
"Sie konnte gut blasen und Glieder versorgen."

undweg

von Soul E. (Gast)


Lesenswert?

Falk B. schrieb:

> Es gibt HD44780 mit französischen Sonderzeichen. Dann noch den Quelltext
> mit UTF-8 kodieren, Zwischentreiber, fertig.

Das Problem dürfte sein, dass heutzutage längst nicht mehr jedes 
alphanumerische LC-Display von Optrex stammt und den originalen Hitachi 
HD44780 verwendet. Den gibt es mit verschiedenen Zeichensätzen und 
Optrex hat die entsprechenden Bestellcodes.

Heute kommen diese Displays als Standardbauteile aus China, dass es da 
einen Originalhersteller gibt weiss kein Mensch mehr, und die Elektronik 
auf der Platine kann jede Woche unterschiedlich sein. Welcher Chip 
gerade unter dem schwarzen Klecks auf der Platine sitzt weiss der 
chinesische Händler selber nicht. Daher ist eine Lösung, die mit jedem 
HD44780-kompatiblen Display spielt, sicherlich zielführender.

von Andi M. (andi6510) Benutzerseite


Lesenswert?

Florian schrieb:
> ein Franzose wird auch ohne wissen, wie es ausgesprochen wird (und nur
> dafür sind sie da, nicht um Wörter zu differenzieren).

die bekanntesten Gegenbeispiele:

ou = oder
où = wo

la = die
là = dort

mûr = reif
mur = Mauer

sûr = sicher
sur = auf

tâche = Aufgabe
tache = Fleck

Aussprache jeweils gleich

Interresant ware folgende Sicherheitsabfrage:

Display: Êtes-vous sûr? (Sind Sie sicher?)
Kunde: Oui (Ja)

Display: Etes-vous sur? (Sind sie drauf?)
Kunde: Sur quoi??? (Wo drauf???)

: Bearbeitet durch User
von Andreas S. (marais)


Lesenswert?

Der 44780 kann 8 Sonderzeichen. Nimm éèàùâêûô, lass î und die cedille 
weg, und alles ist gut.

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


Lesenswert?

Was ist denn an ROM Code A02 auszusetzen? Da sind doch alle gewünschten 
Zeichen drin. Selbst Spanisch sollte möglich sein.

: Bearbeitet durch User
von Hannes J. (Firma: _⌨_) (pnuebergang)


Lesenswert?

Bauform B. schrieb:
> Es gibt eine Steuerung mit einem klassischen 2x40 Text-LCD. Zwischen
> Deutsch und Englisch kann man schon umschalten,

Mooooommmmeeeent ...

Wenn du auf Deutsch umschalten kannst, wenn du dabei die deutschen 
Umlaute anzeigen kannst ohne dass die als eigene Glyphen geladen werden, 
dann hast du doch bereits das ROM mit den benötigten Sonderzeichen für 
Französisch. Die deutschen und die französischen Zeichen sind nämlich im 
selben ROM.

Soul E. schrieb:
> Falk B. schrieb:
>
>> Es gibt HD44780 mit französischen Sonderzeichen. Dann noch den Quelltext
>> mit UTF-8 kodieren, Zwischentreiber, fertig.
>
> Das Problem dürfte sein, dass heutzutage längst nicht mehr jedes
> alphanumerische LC-Display von Optrex stammt

Optrex gibt es nicht mehr. Aus denen wurde vor acht Jahren Kyocera 
Display. Die wiederum wurden ein paar Jahre später in den Konzern als 
Abteilung eingemeindet und sind nicht mehr eigenständig. Die Abteilung 
wiederum wurde zum Teil mit dem Automotiv-Bereich verquirlt.

> und den originalen Hitachi
> HD44780 verwendet.

Hitachi stellt den HD44780 doch gar nicht mehr her. Vielleicht bekommst 
du von irgendwo NOS, recycelte HD44780 oder Fälschungen, aber frisch aus 
der Hitachi-Fabrik gibt's keine.

Es gibt nur noch mehr oder weniger kompatible Nachbauten.

> Den gibt es mit verschiedenen Zeichensätzen und
> Optrex hat die entsprechenden Bestellcodes.

Es gibt auch kaum noch LCD-Text Displays von Kyocera. Das letzte das ich 
gesehen habe hatte einen Novatek NT3881D Controller (HD44780 
kompatibel). Den NT3881D gibt es mit alternativem ROM. Ob man 
Kyocera-Displays mit dem alternativen ROM bestellen kann ist eine andere 
Frage.

> Heute kommen diese Displays als Standardbauteile aus China, dass es da
> einen Originalhersteller gibt weiss kein Mensch mehr,

Der Originalhersteller stellt das Original nicht mehr her.

> Den Originalhersteller und die Elektronik
> auf der Platine kann jede Woche unterschiedlich sein.

Du brauchst halt einen zuverlässigen Display-Lieferanten, der dir den 
Chip und Zeichensatz garantiert. Dafür zahlst du dann extra.

> Welcher Chip
> gerade unter dem schwarzen Klecks auf der Platine sitzt weiss der
> chinesische Händler selber nicht.

Deshalb kannst du so etwas nicht bei einem beliebigen Händler bestellen 
sondern musst dir, abhängig von der Menge, einen zuverlässigen 
Hersteller oder Distributor suchen.

> Daher ist eine Lösung, die mit jedem
> HD44780-kompatiblen Display spielt, sicherlich zielführender.

Na ja. Vielleicht hat er ja schon den passenden Zeichensatz. Wenn nicht, 
dann auf ein Displas mit einem Controller der den entsprechenden 
Zeichensatz hat wechseln. Eine Teilmenge der Glyphen nachbauen? Lieber 
nicht.

von Marcus H. (Firma: www.harerod.de) (lungfish) Benutzerseite


Lesenswert?

Mann Hannes, hiermit befördere ich Dich zum Oberdinosaurier! 
kompliment
Ich selbst und viele andere, sind wohl davon ausgegangen, dass der TO 
das Kamasutra(*) gelesen hat, bevor er seine Frage hier platzierte.

Du hast natürlich recht, wie ein Blick ins Datenblatt des HD44780 zeigt:
https://www.sparkfun.com/datasheets/LCD/HD44780.pdf

Im europäischen A02-ROM sind die Katakana durch andere Sonderzeichen 
ersetzt. Hat man Umlaute, hat man auch die französischen Sonderzeichen.

Mann, mann, vor zwanzig Jahren hätte ich das noch auswendig gewusst.


(*) the fucking manual, as in "RTFM"

: Bearbeitet durch User
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.