LCD DEM20485 in gerade Zeile springen (c't-Bot)

OP #2614895
Hallo Forum,

nach langer Zeit wollte ich mal wieder versuchen, das LCD des c't-Bot 
hinter einem Schieberegister in Bascom anzusprechen.

Im Anhang die relevanten Datenblätter sowie mein Test-Programm dazu:
- es sendet die richtigen Zeichen
- es löscht das Display
- es setzt die DDRAM-Adress, ABER leider nur in Zeile 1 und 3 korrekt.

Ich schaffe keine Ausgabe in Zeile 2 oder 4.

Wer sieht einen Fehler, oder hat einen Rat dazu?

Danke
BoGe-Ro
Angehängte Dateien:
OP #2614953
niemand schrieb:
> Nur als 2Zeiler Initialisiert!?

ja, es ist als 2 Zeiler initialisiert.
Das Display-Datenblatt auf Seite 13 läßt 1-line-mode und 2-line-mode zu.
Sichtbare Unterschiede erreiche ich bei Änderung dieser Einstellung 
nicht.

Zeile 1 und 3 sehe ich aufgrund der aufeinanderfolgenden DDRAM-Adressen 
als 1. Line an und Zeile 2 und 4 aus dem selben Grund als 2. Line.
Moderator (Firma: Titel) Persönliche Seite #2614981
Bo Ge schrieb:
> Wer sieht einen Fehler, oder hat einen Rat dazu?
Sieh dir die DPRAM Adressen auf der Seite 8 im Datenblatt an:
Zeilen 1 und 3 sind einfach hintereinander, dann folgen Zeile 2 und 4 
mit einem Offset von 64 (0x40)...

> Zeile 1 und 3 sehe ich aufgrund der aufeinanderfolgenden DDRAM-Adressen
> als 1. Line an und Zeile 2 und 4 aus dem selben Grund als 2. Line.
Richtig. Und deshalb hast du ein 2-Zeiliges Display...
Angehängte Dateien:
OP #2614986
niemand schrieb:
> Was passiert genau wenn Du versuchst auf Zeile 2 was an zu zeigen.

Ziel:
Ausgabestring: "12345678901234567890" auf den Anfang der zweiten Zeile
Resultat:
"7890" erscheint am Anfang der ersten Zeile


Ziel:
Ausgabestring: "12345678901234567890" auf den Anfang der vierten Zeile
Resultat:
"12345678901234567890" erscheint am Anfang der ersten Zeile
OP #2614989
Lothar Miller schrieb:
> Bo Ge schrieb:
>> Wer sieht einen Fehler, oder hat einen Rat dazu?
> Sieh dir die DPRAM Adressen auf der Seite 8 im Datenblatt an:
> Zeilen 1 und 3 sind einfach hintereinander, dann folgen Zeile 2 und 4
> mit einem Offset von 64 (0x40)...
>
>> Zeile 1 und 3 sehe ich aufgrund der aufeinanderfolgenden DDRAM-Adressen
>> als 1. Line an und Zeile 2 und 4 aus dem selben Grund als 2. Line.
> Richtig. Und deshalb hast du ein 2-Zeiliges Display...


Hier ist meine Berechnung der DDRAM-Adressen

Sub Lcd_xy(byval _x As Byte , Byval _y As Byte)
Local _wert As Byte
   _wert = _x + 127
   Select Case _y
      Case 2 : _wert = _wert + &H40
      Case 3 : _wert = _wert + &H14
      Case 4 : _wert = _wert + &H54
   End Select
   Call Send_lcd_byte(_wert) : Lcd_rs = 0 : Lcd_enable = 0 : Waitus 38
End Sub

die Addition "_wert = _x + 127" setzt DB7 und zieht 1 ab, da die erste 
Stelle Adresse 0 hat.
Gast #2615101
Kann das zwar nicht in Einklang mit Deinem Fehler bringen aber wie 
willst Du in Zeile 1 schreiben wenn Du DB7 immer auf 1 setzt?
Zeile 1 Zeichen 1 = 1+127 = h80

Bei Zeile 2:
1+127+H40 = hC0 -> landet im nichts!
OP #2615118
niemand schrieb:
> Kann das zwar nicht in Einklang mit Deinem Fehler bringen aber wie
> willst Du in Zeile 1 schreiben wenn Du DB7 immer auf 1 setzt?
> Zeile 1 Zeichen 1 = 1+127 = h80
>
> Bei Zeile 2:
> 1+127+H40 = hC0 -> landet im nichts!

LCD-Datenblatt, Seite 11, Set DDRAM address

D7 = H
D6..D0 = Adresse

Zeile 2, Spalte 1:
x=1, y=2

wert=x-1       => wert=0
y=2            => wert=wert+&h40 => wert=&h40
wert=wert+128  => setz DB7


so zumindest der Plan
OP #2615891
Folgende Beobachtung:

bei der Suche nach Original-Firmware des c't-bot habe ich einige 
Hex-files gefunden. Diese auf den Bot geflashed, läßt Daten auf allen 4 
Zeilen des LCD anzeigen => das LCD ist also in Ordnung

die dargestellten Zeichen waren weniger Kontrastreich als in meinen 
Versuchen => eventuell durch laufendes aktualisieren?

aber auch "statische" Zeichen auf dem Display waren weniger 
Kontrastreich
(das Kontrast-Poti bleib dabei unverändert)

nach dem zurückflashen meiner Testroutinen und einer darin 
programmierten Zeichenausgabe auf allen DDRAM-Adressen wurden diese 
Zeichen in allen 4 Zeilen dargestellt -> ebenfalls kontrastarm
erst nach komplettem abschalten und Neustart erzeugte meine Routine 
wieder nur Zeichen in Zeilen 1 und 3, kontraststark

=> dies läßt mich an meiner Initialisierungsroutine zweifeln
- sie läßt korrekte Zeichenausgabe in den Zeilen 1 und 3 zu, unterbindet 
sie in Zeilen 2 und 4
- sie verändert eine bestehende "originale" Initialisierung aber nicht 
dahingehend, dass die Zeilen 2 und 4 nicht mehr dargestellt werden


geben diese Informationen eventuell Hinweise auf den Fehler?

danke für eure Mithilfe
BoGe-Ro
OP #2615965
Danke an alle Helfer,

das LCD funktioniert offenbar nicht ganz so, wie es sich das Datenblatt 
wünscht :-)

ein zweifaches Senden des function-set-Befehls in der Initialisierung 
des LCDs läßt diesen Befehl wohl erst funktionieren - und die second 
Line (Zeile 2 und 4) nutzen. Die Schwächung des Kontrasts bei dieser 
Umschaltung lässt sich weiterhin beobachten.

Die DDRAM-Address-Berechnung funktioniert ebenfalls.


anbei das funktionierende Bascom-File

lg
BoGe-Ro
Angehängte Dateien:
Gast #2616147
Bo Ge schrieb:
> LCD-Datenblatt, Seite 11, Set DDRAM address
>
> D7 = H
> D6..D0 = Adresse

Autsch, das tat weh.
Werd mir Morgen mal Schmerzmittel und ne Brille verschreiben lassen :)

Bo Ge schrieb:
> ein zweifaches Senden des function-set-Befehls in der Initialisierung
> des LCDs läßt diesen Befehl wohl erst funktionieren

Hat eine Verlängerung der Wartezeit nichts gebracht?

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 14 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.