Forum: Mikrocontroller und Digitale Elektronik LCD Initialisierungsproblem


von Raimund K. (derchrome)


Lesenswert?

Hallo erstmal!
Ich bin echt verzweifelt, versuche seit 2 Tagen ein LCD mit
ks00...-controller an einem ats8515 zum laufen zu bringen, aber
irgendwie will es nicht so richtig. Das Problem sieht folgendermaßen
aus. Ich versuche das LCD per 8bit Ansteurung zu initialisieren. Wenn
ich das LCD (2x16 Zeichen) ohne Ansteuerung per uc an die
vorsorgungsspannung anschließe, erscheint in der 1. Zeile ein schwarzer
Balken. Wenn ich nun den uc mit dem LCD verbinde (Data an uc-Port A;
RS,RW und E an uc Port B) und die Initialisierungsroutine ausführe
erscheint in der 2. Reihe ein schwarzer Balken (1ch habe die
Einstellungen auf 1 Zeile gestellt, wenn ich zwei Zeilen einstelle
erscheinen auch 2 Zeilen auf dem Display, nur etwas schwächer vom
Kontrast her). Soweit so gut, damit weiß ich ja praktisch das die
Routine nicht gänzlich falsch sein kann, oder? Nur leider lassen sich
danach keine Daten ausgeben, d.h. wenn ich z.B. ein "t" an den
Datenpins anlege bleibt auf dem Display nur der schwarze Balken stehen
und es erscheint kein Zeichen.
Wie sieht denn so ein Display nach erfolgreicher Initialisierung
aus???? Sind die Balken dann normalerweise weg??? Oder wie??? Ich hab
den Kontrast auch schon runtergedreht, aber nix passiert! Wie ist das
denn wenn ich das Display lösche?? Sollten die Balken dann weg sein??
Geht nämlich auch nicht. Außerdem sehe ich auch keinen Cursor, auch
wenn ich ihn eingestellt hab. Bin echt verzweifelt, weil ich nicht weiß
woran das liegt, hab auch schon dutzende Beiträge im Forum gelesen, aber
irgendwie hatte noch keiner so ein Problem wie ich. Wahrscheinlich eine
fehlerhafte Initialisierung oder?? Oder ist das Display kaputt? Hab bei
der Initialsierung die Zeiten beachtet, hab sie auch ein bißchen länger
gemacht als im Datasheet angegeben. Wäre toll wenn ihr mir helfen
könntet!!!

von crazy horse (Gast)


Lesenswert?

nach erfolgter Initialisierung muss das Display blank sein.
Gerade in der Initialisierung unterscheiden sich KSxxx und HD44780 (für
den die meisten fertigen Routinen sind) eben doch. 99% Kompatibilität
reichen da eben nicht.

von Marko (Gast)


Lesenswert?

das Display ist blank danach,
kann aber sein, das dein Kontrast etwas zu stark eingestellt
ist und du daher die zeichen nicht siehst. dreh mal etwas
runter

von Dennis (Gast)


Lesenswert?

es gibt immer 3 große Fehlerquellen:

1) kontrasteinstellung
2) display ist mit einem befehl ausgeschaltet worden uns somit blank
3) du hälst die timings nicht ein

könnte es sein das du das timing zu "knapp" gewählt hast, also das
timing in der init sequenz!? es sind oftmals 11ms, das wird häufig
unterschätzt.

das gute an der sache ist, das es meist keine maximaltimings gibt, d.h.
wenn du die zeiten in der init routine einfach mal sau groß machst,
funktioniert es trotzdem, du stellt dann aber sicher das du sie aus
irgenteinem grund unterschritten hast... z.b. fehlberechnung usw.....

und: ein poti am kontrast pin  und ein bissl drehen, sollte vielleicht
auch aufschluß geben...

v0 könnte negativ sein....

dennis

von Raimund K. (derchrome)


Lesenswert?

Hallo nochmal!
Also es geht immer noch nicht, hab gedacht ich hätt den fehler gefunden
weil der Analogcomperator an war, hab auch vorsichtshalber mal RW auf
GND gelegt und E und RS an PortC angeschlossen.

An Dennis:
Also den Kontrast hab ich ganz aufgedreht(also quasi vo=0V). Wenn ich
das LCD ohne uc an die Spannungsquelle anschließe dann erscheint ein
schwarzer Balken, wenn ich das Display nun initialisiere (entweder ein
oder zweizeilig) ist der oder die Balken fast nicht mehr zu sehen, aber
leider auch kein Zeichen. Mein Programm macht erst die Initialsierung
dann versuche ich ein T auszugeben, lösche das Display während der
Intialisierung. Die Zeiten hab ich auch großzügig ausgelegt (habs auch
mit dem avr studio simuliert). Die Initroutine läuft auch ganz ab,ohne
abstürze, sende nach jedem Befehl ein Zeichen an den PC. Werde morgen
mal das Programm online stellen. Ist ein LCD162 von Reichelt, das
braucht keine negative Kontrastspannung. Im Datenblatt vom KS007b steht
das Ding nen internal Power up reset ausführt und dann das display leer
sein sollte(einzeilig), aber man sieht dann halt nur den schwarzen
Balken. Was gibts denn noch für Fehlerquellen??

von Oliver (Gast)


Lesenswert?

>>hab auch vorsichtshalber mal RW auf
>>GND gelegt und E und RS an PortC angeschlossen.

Wie, mal vorsichtshalber angeschlossen?
Diese Signale solltest Du schon fest in Deinem Programmcode
mit einplanen. Ohne wirds niemals laufen.
RW kannst Du fest auf Masse legen, wenn Du den Displaycontroller
nicht abfragen willst, was bei großzügigem Timing auch nicht
nötig ist.

Oliver

von Raimund K. (derchrome)


Lesenswert?

@Oliver : Das ist mir auch klar :-), ein ganz dummer (fast-) Ingenieur
bin ich ja auch nicht. Hatte RW, RS und E vorher an PortB hängen, siehe
erstes Post und dann hab ich RW auf Grund + großzügige Zeiten und RS und
E an PortC gepackt, weil PortB z.T. für den AnalogComperator benötigt
wurde.

von senex24 (Gast)


Lesenswert?

Die Liste von Dennis läßt noch um einen Punkt ergänzen:

4. 14 Leitungen sind mehr als genug, um etwas zu vertauschen



Manche meinen, lechts und rinks kann man nicht velwechsern. Werch ein
Illtum!   (E. Jandl)

von senex24 (Gast)


Lesenswert?

Wie das jetzt so dasteht, sieht es nicht besonders sinnvoll aus (und ein
'sich' fehlt auch noch), also ausführlich:

vor zwei Tagen:  ATmega168 -> Philips-LCD (schon älter) im 4-bit-Mode
die Datenleitungen optisch 1:1 angeschlossen, Resultat: abwechselnd
Balken oben, unten und gar nicht

Fehler:
LCD   D7...D4
      | | | |
m168  D0...D3



und vielleicht noch

5. 100nF zwischen + und 0 direkt am LCD

von Raimund K. (derchrome)


Lesenswert?

Muss der Kondensator nun rein oder nicht? Weil drin ist keiner. Hatte
8bit Ansteurung und hab alles tausendmal überprüft, probiers nochmal im
4 bit modus.

von senex24 (Gast)


Lesenswert?

Ein LCD 204B (4*20, KS006.. Controller) hatte in meiner Umgebung
sporadisch Aussetzer bis ich 100nF direkt auf die Platine lötete.
Und als Initialisierung funktionierte bei mir (8-bit): 38  06  0E  01 ;
das könnte bei Ihrem KS007.. zwar anders aussehen, aber ein Versuch ist
es sicher wert.

von Franjo (Gast)


Lesenswert?

Hi, hab zwar noch nie mit LCD Displays gearbeitet dafür aber mit OLED
Displays und hatte am Anfang ebenfalls relativ große
initialisierungsprobleme, eines war ähnlich wie das hier genannte.
Ich schreibe Daten rüber sehe aber nix ausser den Default Init Screen.

Nun ja, die Lösung war RTFM :-) der Speicher des Grafischen Controllers
der das Display sozusagen steuert und anspricht war von der
dimensionierung her größer als das Display selbst (damit der selbe
controller für unterschiedliche Displays verwendet werden kann).

Durch zusätzliche Befehle konnte ich dann dem display sagen welchen
speicherbereich es nun darstellen soll.

Anderes Problem war ebenfalls... da ich einmal für das display 13V
versorgungsspannung hab und für den controller 3,3V habe ich die Massen
nicht verbunden :-) anfängerfehler halt aber es war ne erklärung für
viele komische probleme.

Vielleicht hilfts ja weiter

Cya

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.