Forum: Mikrocontroller und Digitale Elektronik Arduino 1602 LCD Keypad Umlauttabelle


von Anja S. (anjaneu)


Lesenswert?

Hallo Zusammen,

ich habe eine Frage zur Thematik Sonderzeichen oder besser Umlaute.

Hab schon ewig rumgesucht und nichts passendes gefunden.
Immer diese japanischen Zeichen davor, was kann ich machen?
Gibt es eine Biblotek dafür die ich übersehen hab?

Oder ist es viellecht sogar noch voiel einfacher?

Viele Grüße

von Karl M. (Gast)


Lesenswert?

Man schaue in's Datenblatt des LCD.

Evtl. kann man auch noch den Zeichensatz umstellen JP, EN, CN, ..., und 
programmiert man sich mit diesen Infos einfach eine Ersetzungsfunktion.

Ich habe gehört, das C ein switch ..; case .. break; versteht! :)

von Anja S. (anjaneu)



Lesenswert?

da findet sich nicht so viel.

Es gibt doch sicherlich jemanden der dieses LCD KeyPad mit Sonderzeichen 
benutzt. ;(

: Bearbeitet durch User
von Vielleicht (Gast)


Lesenswert?

Falls es ein HD44780 Display oder ein dazu kompatibles ist, kannst du 
mal das hier versuchen:
Beitrag "Sonderzeichen LCD HD44780 kompatibel"

Zeigt dein Display eigentlich nur japanische Zeichen an? Oder willst du 
einfach nur Sonderzeichen darstellen?

von Michael U. (amiga)


Lesenswert?

Hallo,

das Keypad ist doch völlig uninteressant. Wichtig ist nur, welchen 
Zeichensatz das konkret verbaute Display hat. Unterlagen zu den üblichen 
16x2 LCD findet man genug im Netz, im Zweifel mußt Du eben alle 
möglichen Zeichencodes zwischen 0x08 und oxFF ans Display schicken und 
schauen ob und wo es Umlaute im Zeichensatz hat. Einsetzen/Ersetzen mußt 
Du die entsprechenden Codes ohnehin in Deinem Programm, das die Daten 
zum Display ausgiebt,

Die Codes 0x00 - 0x07 sind bei diesen Displays normalerweise für selbst 
definierte Zeichen, man kann sich notfalls die Umlaute auch selber 
bauen.

Vielleicht passt dieses Datenblatt zu Deinem Display:
https://cdn-shop.adafruit.com/datasheets/TC1602A-01T.pdf
Kannst die Zeichencodes der Umlaute ja mal zum Display schicken.

Gruß aus Berlin
Michael

: Bearbeitet durch User
von Karl M. (Gast)


Lesenswert?

Michael U.,

schreibst es !

Ich hätte jetzt erwartet, dass das LCD abgeschraubt wird und wir danach 
ein Bild von der Beschriftung sehen.

von Michael U. (amiga)


Lesenswert?

Hallo,

naja, dazu müßte er wohl die Stiftleise des Display auslöten...

Ist bei meinem China-Keypad auch verlötet, wegen der Bauhöhe haben die 
üblicherweise da keinen Steckverbinder zwischen.

Gruß aus Berlin
Michael

: Bearbeitet durch User
von Anja S. (anjaneu)


Lesenswert?

Hallo Vielleicht (Gast),

Es zeigt den Normalen amerikanische Zeichensatz an.
Kein %, ß, ä, ö, ü, Ä, Ö und Ü.

Gern hätte ich auch die Umlaute in Versalien.

Guter Tip


------------------------------------------------------

Hallo Michael U. (amiga),

Stimmt da hab ich mich mal wieder etwas B. angestellt bei Datasheet 
suchen. ;)

CHARACTER GENERATOR ROM ??? eine neue Herrausforderung upper and lower 
4bit Ausgabe? wie gebe ich diese bitkombination bloß auf meinem LCD aus?

0x00 - 0x07 hab ich schonmal probiert anzusteuern. Keine Reaktion ... 
MIST


Es scheinen Große Umlaute und % Zeichen nicht zu geben.


-----------------------------------------------------

Hallo Karl M. (Gast)

ich hätte erwartet das ein Gast nicht so schreibst als würde es sein 
Zweites Geheimes Profil seien um die Stimmung anzuheitzen und Missmut zu 
verbreiten. Lötstellen kann man nicht schrauben. ;)

von Karl M. (Gast)


Lesenswert?

Anja S. schrieb:
> Hallo Karl M. (Gast)
>
> ich hätte erwartet das ein Gast nicht so schreibst als würde es sein
> Zweites Geheimes Profil seien um die Stimmung anzuheitzen und Missmut zu
> verbreiten. Lötstellen kann man nicht schrauben. ;)

Keine Stimmung oder Missmut, sorry wenn das so rüber gekommen ist.
Ich habe nicht gewusst, dass das LCD verlötet wurde.

So würde ich es jetzt auslöten um an die Produktbezeichnung zu gelangen, 
dadurch an das Datenblatt und die gesuchten Informationen.

Zum "freien" Zeichensatz auf den Positionen 0 - 7, man lädt 8x 5 Bit auf 
das LCD an die Zeichenstellen 0 - 7.
Dann kann man eine selbst definiertes Zeichen 0 - 7 ausgeben.

Wenn dein LCD dem LCD Controller HD44780 weitgehend entsprechen sollten, 
dann kann man das Datenblatt HD44780 für die Funktionsweise des CGRAM 
Zeichengenerators (Character Generator RAM (CGRAM)) verwenden.

Siehe: Table 5
"Relationship between CGRAM Addresses, Character Codes (DDRAM) and 
Character Patterns (CGRAM Data)"
https://www.sparkfun.com/datasheets/LCD/HD44780.pdf

http://www.sprut.de/electronic/lcd/#cgram

Schaue Dir bitte die Zeichensätze ab Table 4
"Correspondence between Character Codes and Character Patterns (ROM 
Code: A00)" im HD44780 Datenblatt an, vielleicht entsprecht davon etwas 
dem 1602 LCD.

Hiermit kann man sich dann "eigene" Zeichen 0 - 7 malen:
https://maxpromer.github.io/LCD-Character-Creator/

von eProfi (Gast)


Lesenswert?

Ich habe vor vielen Jahren einen Treiber geschrieben, der die freie 
programmierbaren Zeichen nutzt, je nach angezeigtem Text zuerst für die 
Umlaute, wenn noch Platz frei war, auch für die Zeichen mit Unterlängen.
Es stört mich gewaltig, dass bei g, j, p, q, y die Zeichen völlig ohne 
Grund nach oben gehoben sind und die achte Zeile leer bleibt.
Weiß jemand ein Display, das nicht nur 8, sondern 16 frei 
programmierbare Buchstaben hat? Platz wäre ja vorhanden.

von Anja S. (anjaneu)


Lesenswert?

Ich hab mal eine Script angepasst vielleicht hift es ja dem einen oder 
anderen in Zukunft:
Meine habe ich nun doch damit gefunden. Vielen Dank an dieser Stelle.

ä \341
ö \357
ü \365
ß \342
% \45
@ \100

Lediglich die Versalien fehlen noch ;(

1
#include <LiquidCrystal.h>
2
#include "LCDKeypad.h"
3
4
LiquidCrystal lcd(8, 9, 4, 5, 6, 7); 
5
6
struct Sonderzeichen
7
{
8
  const char *Zeichen;
9
  int Zeile;
10
};
11
12
Sonderzeichen Aufnahme[] =
13
{
14
{"\00\01\02\03\04\05\06\07\08\09",0},
15
{"\10\11\12\13\14\15\16\17\18\19",10},
16
{"\20\21\22\23\24\25\26\27\28\29",20},
17
{"\30\31\32\33\34\35\36\37\38\39",30},
18
{"\40\41\42\43\44\45\46\47\48\49",40},
19
{"\50\51\52\53\54\55\56\57\58\59",50},
20
{"\60\61\62\63\64\65\66\67\68\69",60},
21
{"\70\71\72\73\74\75\76\77\78\79",70},
22
{"\80\81\82\83\84\85\86\87\88\89",80},
23
{"\90\91\92\93\94\95\96\97\98\99",90},
24
{"\100\101\102\103\104\105\106\107\108\109",100},
25
{"\110\111\112\113\114\115\116\117\118\119",110},
26
{"\120\121\122\123\124\125\126\127\128\129",120},
27
{"\130\131\132\133\134\135\136\137\138\139",130},
28
{"\140\141\142\143\144\145\146\147\148\149",140},
29
{"\150\151\152\153\154\155\156\157\158\159",150},
30
{"\160\161\162\163\164\165\166\167\168\169",160},
31
{"\170\171\172\173\174\175\176\177\178\179",170},
32
{"\180\181\182\183\184\185\186\187\188\189",180},
33
{"\190\191\192\193\194\195\196\197\198\199",190},
34
{"\200\201\202\203\204\205\206\207\208\209",200},
35
{"\210\211\212\213\214\215\216\217\218\219",210},
36
{"\220\221\222\223\224\225\226\227\228\229",220},
37
{"\230\231\232\233\234\235\236\237\238\239",230},
38
{"\240\241\242\243\244\245\246\247\248\249",240},
39
{"\250\251\252\253\254\255\256\257\258\259",250},
40
{"\260\261\262\263\264\265\266\267\268\269",260},
41
{"\270\271\272\273\274\275\276\277\278\279",270},
42
{"\280\281\282\283\284\285\286\287\288\289",280},
43
{"\290\291\292\293\294\295\296\297\298\299",290},
44
{"\300\301\302\303\304\305\306\307\308\309",300},
45
{"\310\311\312\313\314\315\316\317\318\319",310},
46
{"\320\321\322\323\324\325\326\327\328\329",320},
47
{"\330\331\332\333\334\335\336\337\338\339",330},
48
{"\340\341\342\343\344\345\346\347\348\349",340},
49
{"\350\351\352\353\354\355\356\357\358\359",350},
50
{"\360\361\362\363\364\365\366\367\368\369",360},
51
{"\370\371\372\373\374\375\376\377\378\379",370},
52
{"\380\381\382\383\384\385\386\387\388\389",380},
53
{"\390\391\392\393\394\395\396\397\398\399",390},
54
{"\400\401\402\403\404\405\406\407\408\409",400},
55
{"\410\411\412\413\414\415\416\417\418\419",410},
56
{"\420\421\422\423\424\425\426\427\428\429",420},
57
{"\430\431\432\433\434\435\436\437\438\439",430},
58
{"\440\441\442\443\444\445\446\447\448\449",440},
59
{"\450\451\452\453\454\455\456\457\458\459",450},
60
{"\460\461\462\463\464\465\466\467\468\469",460},
61
{"\470\471\472\473\474\475\476\477\478\479",470},
62
{"\480\481\482\483\484\485\486\487\488\489",480},
63
{"\490\491\492\493\494\495\496\497\498\499",490}
64
};
65
66
67
68
const byte RecordCount = sizeof Aufnahme / sizeof Aufnahme[0];
69
char schreibe[30];
70
71
void setup()
72
{
73
  Serial.begin(2000000);
74
  lcd.begin(16, 2);
75
  lcd.clear();
76
  
77
  for (int i = 0; i < RecordCount; i++)
78
  {
79
    Serial.print(F("Zeile "));
80
    Serial.print(Aufnahme[i].Zeile);
81
    Serial.print(F(" (10 Sonderzeichen): "));
82
    Serial.println(Aufnahme[i].Zeichen);
83
84
    int Zeilenende = Aufnahme[i].Zeile + 9;
85
    lcd.setCursor(0, 0);
86
    lcd.print("Zeile: ");
87
    lcd.setCursor(7, 0);
88
    sprintf( schreibe, "%3d-", Aufnahme[i].Zeile );
89
    lcd.print(schreibe);
90
    lcd.setCursor(11, 0);
91
    lcd.print(Zeilenende);
92
93
    lcd.setCursor(0, 1);
94
    lcd.print(Aufnahme[i].Zeichen);
95
    delay(5000);
96
  }
97
 }
98
99
100
void loop() {}

von Anja S. (anjaneu)


Lesenswert?

eProfi schrieb:
> Ich habe vor vielen Jahren einen Treiber geschrieben, der die freie
> programmierbaren Zeichen nutzt, je nach angezeigtem Text zuerst für die
> Umlaute, wenn noch Platz frei war, auch für die Zeichen mit Unterlängen.

Wo finde ich den bitte? Das ist ne gute Sache ... tolle Idee!!!

eProfi schrieb:
> Es stört mich gewaltig, dass bei g, j, p, q, y die Zeichen völlig ohne
> Grund nach oben gehoben sind und die achte Zeile leer bleibt.
> Weiß jemand ein Display, das nicht nur 8, sondern 16 frei
> programmierbare Buchstaben hat? Platz wäre ja vorhanden.

Sehe ich genauso!

von Michael U. (amiga)


Lesenswert?

Hallo,

einfach gesagt: bei den aktuellen Preisen: nimm ein Grafikdisplay 
geeigneter Größe. Wenn es unbedint ein Shield werden muß:
https://www.ebay.de/itm/Protoshield-Arduino-Uno-Kontaktleisten-/262452150763?var=

Ein paar Taster rauflöten und passend verdrahten. Man kann kja die 
Beschaltung vom Keypad-Schaltplan übernehmen, wenn es so sein soll.
Wenn man ein Display nimmt, da von der Größe her ausreicht und es dafür 
eine Arduino-Lib gibt und es I2C oder SPI kann: man kann mehr 
darstellen, man hat programmtechnisch kaum mehr Arbeit und man hat 
etliche Pins mehr frei am Arduino.

Hat man doch eine Nette Aufgabe und auch was zum Üben.

Gruß aus Berlin
Michael

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.