Forum: Mikrocontroller und Digitale Elektronik 16x4 LCD nach reset immer 2 zeilig


von Sebastian (Gast)


Lesenswert?

habe ein lcd a, port a von einem tiny 26.
wenn ich das ganze anschalte läuft alles wunderbar, aber wenn ich einen
reset mache dann wird es im 2 (1 zeilen) modus gestartet.
hatte schon mal jemand ein ähnliches problem??

von michi (Gast)


Lesenswert?

Nach einem Reset muss die LCD neu inisalisiert werden. Zudem ist auch
auf die Abarbeitungszeiten der LCD Befehle zu achten, die sind in der
Regel recht lang.
mfg

von Gudrun Stender (Gast)


Lesenswert?

Ganz normal, nach dem Reset sind die erste und dritte Zeile schwarz.
Controller initialisieren und dann ist das Display wieder "weiß".
HD4ungrad' Controller sind langsam wie die Sau, also lieber mal ne
Millisekunde warten, dann müsst's passen

von Jens123 (Gast)


Lesenswert?

dennoch etwas merkwuerdig...

es koennte sein, dass bei einem RESET der µC schneller kommt, als wenn
du den Strom einschaltest..

Kaltstart / Warmstart

Probiers, wie oben schon gesagt mit eioner Pause vor dem Initalisieren

Gruss Jens

von Sebastian (Gast)


Lesenswert?

naja... hatte 40ms pause eingebaut aber keine änderung... vielleicht
sollte ich mal eine kleine ewigkeit warten... eine sekunde oder so

von Sebastian (Gast)


Lesenswert?

ich hatte zuerst das ganze vom tutorial übernommen, aber das datenblatt
hat mich dann doch eines besseren belehrt. es ist ein ks0063...
vielleicht doch nicht so wirklich kompotibel zu dem anderen.

die ersten bytes der init waren für das ks0063 wohl anders, weil so
funzt es jetzt wie es soll

      ldi tmp,0xff
      out  lcd_ddr,tmp
           ldi tmp, 0b00000011        ;muss 3mal hintereinander
gesendet   im tutorial st es 0b00000010
           out lcd_port, tmp             ;werden zur Initialisierung
           rcall lcd_enable             ;1
           rcall delay5ms
           rcall lcd_enable             ;2
           rcall delay5ms
           rcall lcd_enable             ;und 3!
           rcall delay5ms
           ldi tmp, 0b00101100        ;4bit-Modus einstellen jenes war
auch anders
           out lcd_port, tmp
           rcall lcd_enable
           rcall delay5ms
           ldi tmp, 0b00101000        ;noch was einstellen...
           rcall lcd_command
           ldi tmp, 0b00001100        ;...nochwas...
           rcall lcd_command
           ldi tmp, 0b00000100        ;endlich fertig
           rcall lcd_command
           ret

von Benedikt (Gast)


Lesenswert?

Beim 44780 ist es an sich egal, was bei den ersten 3 Schreibvorgängen an
D0-3 anliegt, auch danach sind D1-0 egal, aber einige 44780 Derivate
sind eben nicht ganz kompatibel: Philips hat hier z.B. einige Bits für
den integrierten Spannungswandler untergebracht, bei Samsung sind es
eben die Einstellungen für den erweiterten Treiber.

von Benedikt (Gast)


Lesenswert?

@Sebastian
Ich habe mal in meinen Code geschaut, und da ist die Initialisierung
viel kürzer, und nicht ganz nach Datenblatt (die ersten 3
Schreibvorgänge lasse ich weg, keine Ahnung warum), aber damit hatte
ich noch nie Probleme:

Wert=#58
LCD
Wert=#13
LCD
Wert=#6
LCD
Wert=#1

Bisher hatte ich damit nur die echten 44780 angesteuert, aber es geht
auch mit dem Displaytech 204A mit KS0066 oder KS0067 (im Datenblatt
werden beide erwähnt)

PS: Der KS0063 ist nur ein Segmenttreiber für das LCD, der hat nichts
mit der Ansteuerung des Controllers zu tun.

von Sebastian (Gast)


Lesenswert?

so wie es ist funktioniert es jedenfalls. ich damit jedenfalls ganz
zufrieden.
das was mir jetzt noch fehlt ist die calibrierung vom internen
oscillator. läuft mir irgendwie noch zu ungenau.
und dann ist da noch die i2c geschichte mit dem usi ding, wo ich etwsas
ratlos bin

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.