Forum: Mikrocontroller und Digitale Elektronik LCD gibt keine Zeichen aus


von Dietmar K. (kradi)


Lesenswert?

Hallo !

Ich gebs langsam auf ... ich versuche ein (zugegebenermaßem altes)
Display PHILIPS LTN214R-10 anzusteuern.

Die Initialisierung scheint zu klappen. Ich kann den Cursor auf dem
Display sehen und positionieren.

Wenn ich ein Zeichen ausgeben will, wird nichts angezeigt; der Cursor
wandert aber nach rechts !?

Hat da jemand eine Idee ?

Die Routine zum Schreiben ist für Cmd und Data gleich, nur dass halt RS
auf 1 gestellt wird.

Grüße

Dietmar

von Rahul D. (rahul)


Lesenswert?

Quellcode?

von Läubi (Gast)


Lesenswert?

Kontrast?

von Dietmar K. (kradi)


Lesenswert?

... Code muss erst gesäubert werden ... kommt demnächst...


Kontrast ? Ich seh doch den Cursor !


DK

von Mathias (Gast)


Lesenswert?

ich würde sagen, das liegt zu 90% an der Adressierung der Zeilen. Beim
Schreiben inkrementierst du zwar die Cursorposition, schreibst aber an
eine undef. Speicherstelle. Mir ist es schon einmal passiert, dass die
Adressierung der Zeilen im Datenblatt falsch war.
Weiters musst du beachten, dass in der Regel die zweite Zeile nicht
direkt an die letzte Adresse der ersten Zeile angehängt wird.

Bsp. 2x16 Display:

    ZEICHEN    = 16,
          ZEILEN     = 2,

    /* DDRAM Adressen fuer den Zeilenbeginn */
    ZEILE_1_ADR_0  = 0x00,
    ZEILE_2_ADR_0  = 0x40,

    /* DDRAM Adressen fuer das Zeilenende   */
    ZEILE_1_ADR_15 = ZEILE_1_ADR_0 + ZEICHEN,
    ZEILE_2_ADR_15 = ZEILE_2_ADR_0 + ZEICHEN,

von Dietmar K. (kradi)


Angehängte Dateien:

Lesenswert?

Hallo Mathias,

danke für den Tipp. Mein Code hängt dran. Es ist eine angepasste
Version des Fleury-Codes (nicht schön aber evolutionär entstanden :-)

Die Aufrufsequenz ist:

  lcd_init();
  lcd_home();
  lcd_putc('A');
  lcd_putc('B');
  lcd_putc('C');

Danach blinkt der Cursor an vierter Stelle ...
Muss ich vor der Ausgabe extra die Adresse setzen, wird nicht an dir
Cursorpos geschrieben ?


Grüße und vielen Dank

Dietmar

von A.K. (Gast)


Lesenswert?

Viele Wege der Evolution führten in die Irre, wie man an all den
ausgestorbenen Arten erkennen kann. Deine evolutionäre Entwicklung der
LCD-Initialisierung reiht sich darin ein.

Fang ruhig mal wieder beim Fleury'schen Original an.

von Mathias (Gast)


Lesenswert?

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

nach dem schema hab ich auch meine init aufgebaut! hast du auch darauf
geachtet, ob du den 4bit bzw. 8 bit mode verwendest??

von Dietmar K. (kradi)


Lesenswert?

@A.K.
  Das  Fleuryschen Original zeigte das selbe Verhalten,
  deswegen die Anpassungen um es besser zu verstehen.

@Mathias
   Genau so sieht meine Init und meine Schreibroutine aus; ich
   vermute nun fast, dass der Controller doch etwas anders tickt...

Ich versuchs weiter - vielen Dank allen !


Dietmar

von A.K. (Gast)


Lesenswert?

Wenn ein korrekt konfigurierter Fleury nicht funktioniert, dann kann's
eigentlich nur noch die Hardware/Beschaltung sein.

Zu deinem Code: Die ersten paar Initialisierung-Kommandos kann man
nicht per lcd_write absetzen, da lcd_write den 4-Bit Modus voraussetzt,
das Device aber sich im 8-Bit-Modus befindet und daher die beiden
4-Bit-Gruppen als 2 8-Bit-Kommandos interpretiert. So schön die
Sprut-Seite aussieht, an dieser Stelle ist sie etwas mager.

von Dietmar K. (kradi)


Lesenswert?

Arrrrrrrrrrrrrrgh ....

Löten sollte man können RS mit RW gebrückt .......

Shame on me and thanks to all !

Dietmar

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.