LCD Display EA161B-ENLW

Hallo,

was du wegen der fehlerhaften Pixelzeile nochmal probieren kannn ist, statt 16x1 mit 8x2 zu initialisieren.

statt:

LiquidCrystal lcd(30, 31, 32, 33, 34, 35);
void setup() {
  lcd.begin(16, 1);

mit:

LiquidCrystal lcd(30, 31, 32, 33, 34, 35);
void setup() {
  lcd.begin(8, 2);

denn der HD44780 Controller stellt zwar einen Standard dar, aber leider einen horn alten. Das Ding arbeitet nämlich intern immer mit 8x2. Mehr kann der eigentlich auch nicht. Alle weiteren Displaygrößen mit dem HD44780 werden mit Zusatzchips ausgestattet. Und das nächste Problem mit dem fehlenden Zeilenumbruch ist Controller bedingt. Der kann das wirklich nicht. Hab extra nochmal bei EA nachgefragt.

Deswegen ist auch mein CursorSet Korrekturfunktion von oben sinnlos.

Man müßte sich eine komplett andere Funktion schreiben. Merken wo man sich befindet, den ersten Teil ans Display senden und dann den Rest auf die "2. Zeile" senden. Also den Text zerlegen. So ungefähr. Wenn das den Aufwand wert sein sollte.

Die EA-DOGMs die ich verwende machen den Zeilenumbruch automatisch. Haben einen anderen Controller drin. Und sehen auch sonst schöner aus. :wink:

Original Antwort:

Der auf dem EA W161B-NLW verwendete LCD-Kontroller weiß selber gar nicht ob er auf einem Display mit 1x8, 2x16 oder 2x40 Zeichen arbeitet.
Dieser LCD-Kontroller aus der Familie der HD44780-kompatiblen ICs kann ohne weitere Massnahmen LCDs mit bis zu 2x8 Zeichen ansteuern. Mit zusätzlichen Erweiterungs-ICs kann er auf auf LCD-Modulen mit bis zu 80 Zeichen (also 2 Zeilen mit je 40 Zeichen oder 4 Zeilen mit je 20 Zeichen) verwendet werden.
Intern verfügt so ein HD44780 über einen Speicher (DisplayData-RAM) von 80 Bytes - von denen er glaubt, sie wären auf 2 Zeilen mit je 40 Bytes aufgeteilt.
Beim EA W161B-NLW ist der HD44780 ohne Erweiterungsbaustein im Einsatz. Eigentlich können mit dieser Hardware nur 8 Zeichen angesteuert werden. Aber durch einen Trick (die nicht vorhandenen 8 Zeichen der zweiten Zeile werden rechts neben den 8 Zeichen der ersten Zeile angeordnet) kann man dann doch 16 Zeichen anzeigen. In der Folge muss der Programmierer natürlich die Adressierung anpassen: obwohl das neunte Zeichen gleich neben dem achten Zeichen angezeigt wird, ist es aus Kontrollersicht das erste Zeichen der zweiten Zeile.

Die notwendige Adressierung ist im Datenblatt beschrieben:

  1. Zeile: $00-$07
  2. Zeile: $40-$47

Beim W161B Display, geht alles nach dem 8. Zeichen verloren, wenn man mehr wie 8 Zeichen
nacheinander ausgeben möchte.

Da geht nichts verloren - die Daten stehen weiterhin im Display-Data-RAM. Sie können das mit den Display-Shift-Befehlen überprüfen. Vielleicht ist es hilfreich sich das Display-Data-RAM als Papierstreifen (mit 2zeiliger Bedruckung und je 40 Zeichen) vorzustellen, der zum endlosen Ring zusammengeklebt ist. Vor diesen Streifen halten Sie einen Karton mit einem rechteckigen Loch, das genau 2x8 Zeichen erfasst - dieses Loch ist Ihr LCD-Modul