Go Down

Topic: LCD-Display Zeilen merkwürdig angeordnet (Read 2554 times) previous topic - next topic

sshad0w

Hallo,

ich versuche gerade dieses Display (http://www.pollin.de/shop/dt/NTAzOTc4OTk-/Bauelemente_Bauteile/Aktive_Bauelemente/Displays/LCD_DataVision_DG_14032.html) anzusteuern. Soweit ich weiß ist der Controller ein ST7290, dürfte aber mit dem HD44780 kompatibel sein, da eigentlich alle Funktionen der LiquidCrystal-lib laufen. Jedoch habe ich ein Problem mit den einzelnen Zeilen.
Und zwar beginnen Zeile 0 & 1 in der 1. Zeile ganz links, und Zeile 2 & 3 fangen in der 2. Zeile in der Mitte an...  :smiley-eek: Ich betreibe das Display übrigens im 4bit Modus, und es hat 140x32 Pixel (17.5 Spalten, 2 Reihen).

Ich habe die Verkabelung bereits zweimal neuaufgebaut, der Fehler ist aber immer der gleiche.

Vielleicht weiß ja jemand woran das liegen könnte.

sth77

Ich verstehe dich nicht so recht. Du sprichst von einem Display, dass 2 Reihen (=Zeilen) x 17,5 Zeichen (=Anzahl Spalten) darstellen kann, redest aber von Zeilennummer 0-3?
Wie initialisierst du das Display?
Mein Arduino-Blog: http://www.sth77.de/ - letzte Einträge: Teensy 3.0 - Teensyduino unter Window 7 - Teensyduino unter Windows 8

mkl0815

Gute Frage, vor allem sprichst Du auch von 140x32 Pixeln, steuerst aber anscheinend Zeilen und Zeichen an. Das passt irgendwie nicht ganz zusammen.

sth77


Gute Frage, vor allem sprichst Du auch von 140x32 Pixeln, steuerst aber anscheinend Zeilen und Zeichen an. Das passt irgendwie nicht ganz zusammen.

Doch, das passt schon. Bei meiner Recherche stolperte ich über einen Beitrag im Mikrocontroller.net-Forum, wo ein ähnliches Display zu sehen war. Tatsächlich ist das eigentliche Display mit dieser Auflösung vorhanden, also ohne Zwischenräume zwischen den einzelnen Zeichen, wie es bei gängigen Text-Displays der Fall ist. Trotz alledem ist der Controller HD44780-kompatibel, und das letzte Zeichen wird abgeschnitten, daher die 17,5 Zeichen in der Breite.
In der Regel sind dann auch andere, größere Zeichensätze eingestellt, also mehr als die 5x7 Pixel.
Mein Arduino-Blog: http://www.sth77.de/ - letzte Einträge: Teensy 3.0 - Teensyduino unter Window 7 - Teensyduino unter Windows 8

sshad0w

#4
Mar 06, 2012, 04:45 pm Last Edit: Mar 06, 2012, 07:04 pm by sshad0w Reason: 1
Bei dem Display handelt es sich um das aus dem Mikrocontroller.net Forum (DataVision DG-14032).
Das Display scheint eine Art Mix aus Text- und Grafik-Display zu sein. Mit der Textausgabe habe ich kein Problem, ebenso kann ich den Cursor zeichenweise verschieben.
Jedoch schaffte ich es nicht, den Cursor Zeihlenweise zu verschieben.
Am Anfang bekam ich ihn garnicht in die zweite Zeile, Zeile 0 und 1 waren identisch. Dann habe ich das Display testweise mit 4 Zeilen initalisiert, da ich gelesen habe, dass manche Displays virtuell 4 Zeilen haben (die 1. Zeile ist oben links, die 2. oben in der Mitte, die 3. unten links, und die 4. unten in der Mitte). Damit hatte ich schon mehr Erfolg, jedoch bekomme ich den Cursor nicht nach unten links, sondern nur nach unten in die Mitte:

Also bei mir: Zeile 0 & 1 fangen oben links an; Zeile 2 & 3 unten in der Mitte.

Mein aktueller Code sieht so aus:

Code: [Select]

#include <LiquidCrystal.h>

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

void setup() {
 lcd.begin(16, 4);
 lcd.blink();
}

void loop() {
 for(int i=0; i < 4; i++) {
   lcd.setCursor(0, i);
   lcd.print(i);
   delay(500);
 }
}


Der Cursor soll dabei jede halbe Sekunde eine Zeile weiterspringen, bei mir ist er also eine ganze Sekunde lang in der ersten Zeile links, und dann eine Sekunde in der zweiten Zeile in der Mitte...


Ich hoffe das ist verständlich.  :)



sth77

lcd.begin mit einer Vorgabe 17.5 geht schonmal nicht, da hier eine 8Bit-Zahl, unsigned, erwartet wird. Ich würde es wohl mit der 16 oder gleich 20 probieren, was ja quasi Standardbreiten sind.
Mein Arduino-Blog: http://www.sth77.de/ - letzte Einträge: Teensy 3.0 - Teensyduino unter Window 7 - Teensyduino unter Windows 8

sshad0w

Mit 16 habe ich es auch schon probiert, die 17.5 war nur einer meiner Versuche.

uwefed

#7
Mar 06, 2012, 07:44 pm Last Edit: Mar 06, 2012, 07:59 pm by uwefed Reason: 1
Einige Displays sind physisch 2x16 Zeichen und programmtechnisch 4x8 Zeichen organisiert. Das ist im Rahmen des üblichen.
Grüße Uwe

sshad0w

#8
Mar 06, 2012, 08:30 pm Last Edit: Mar 06, 2012, 08:34 pm by sshad0w Reason: 1
Das glaube ich. Das Problem ist aber, dass die erste und zweite bei mir in der ersten Zeile am Anfang anfangen, und Zeile drei und vier in der zweiten Zeile in der Mitte.

Code: [Select]

lcd.setCursor(0, 0);
----------------------------------------
|| x                                  ||
||                                    ||
----------------------------------------

lcd.setCursor(0, 1);
----------------------------------------
|| x                                  ||
||                                    ||
----------------------------------------

lcd.setCursor(0, 2);
----------------------------------------
||                                    ||
||                 x                  ||
----------------------------------------

lcd.setCursor(0, 3);
----------------------------------------
||                                    ||
||                 x                  ||
----------------------------------------


Das "x" steht für den Cursor.
Ich hoffe jetzt ist klar, was ich meine.  :)

uwefed

und wo sind die Zeichen wenn Du mehr als die erste Zeile vollschreibst?
Grüße Uwe

mkl0815

Hast Du das Display denn schon mal mit
Code: [Select]
lcd.begin(8, 4); initialisiert?


uwefed


und wo sind die Zeichen wenn Du mehr als die erste Zeile vollschreibst?
Grüße Uwe

zB 012345678901234567890123456789 in die erste Zeile hineinschrieben.
Grüße Uwe

sshad0w

Dann ist die erste Zeile komplett gefüllt und die zweite "7" wird abgeschnitten.
In der zweiten Zeile erscheint nichts...

GKar

Hallo,

hast Du mal "lcd.setCursor(-4, 2);"
Das hat bei mir mit der negativen Zahl bei meinem LCD 20x4 geholfen.

Gruß G][Kar

Go Up