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!!!
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.
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
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
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??
>>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
@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.
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)
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
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.
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.