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
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.
Was passiert genau wenn Du versuchst auf Zeile 2 was an zu zeigen.
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...
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
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.
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!
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
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
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
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?
niemand schrieb: > 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? nein, an dieser Stelle nicht - zumindest keine Milisekunde. BoGe-Ro
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.