Pages: [1] 2   Go Down
Author Topic: LCD-Display Zeilen merkwürdig angeordnet  (Read 1761 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 7
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
Logged

Germany
Offline Offline
Edison Member
*
Karma: 44
Posts: 2261
Arduino rocks
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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?
Logged

Mein Arduino-Blog: http://www.sth77.de/ - letzte Einträge: Teensy 3.0 - Teensyduino unter Window 7 - Teensyduino unter Windows 8

Offline Offline
Edison Member
*
Karma: 21
Posts: 1402
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

Germany
Offline Offline
Edison Member
*
Karma: 44
Posts: 2261
Arduino rocks
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
Logged

Mein Arduino-Blog: http://www.sth77.de/ - letzte Einträge: Teensy 3.0 - Teensyduino unter Window 7 - Teensyduino unter Windows 8

Offline Offline
Newbie
*
Karma: 0
Posts: 7
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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:
#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.  smiley


« Last Edit: March 06, 2012, 01:04:03 pm by sshad0w » Logged

Germany
Offline Offline
Edison Member
*
Karma: 44
Posts: 2261
Arduino rocks
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
Logged

Mein Arduino-Blog: http://www.sth77.de/ - letzte Einträge: Teensy 3.0 - Teensyduino unter Window 7 - Teensyduino unter Windows 8

Offline Offline
Newbie
*
Karma: 0
Posts: 7
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

Forum Moderator
BZ (I)
Offline Offline
Brattain Member
*****
Karma: 236
Posts: 20273
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Einige Displays sind physisch 2x16 Zeichen und programmtechnisch 4x8 Zeichen organisiert. Das ist im Rahmen des üblichen.
Grüße Uwe
« Last Edit: March 06, 2012, 01:59:53 pm by uwefed » Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 7
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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:
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.  smiley
« Last Edit: March 06, 2012, 02:34:52 pm by sshad0w » Logged

Forum Moderator
BZ (I)
Offline Offline
Brattain Member
*****
Karma: 236
Posts: 20273
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

Offline Offline
Edison Member
*
Karma: 21
Posts: 1402
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

Offline Offline
Newbie
*
Karma: 0
Posts: 7
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ja, macht keinen Unterschied.
Logged

Forum Moderator
BZ (I)
Offline Offline
Brattain Member
*****
Karma: 236
Posts: 20273
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 7
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

Offline Offline
Newbie
*
Karma: 0
Posts: 3
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hallo,

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

Gruß G][Kar
Logged

Pages: [1] 2   Go Up
Jump to: