Hi, ich versuchen ein GLCD (ks0108 controller) zu initialisieren und einen punkt o.ä. anzuzeigen. Als vorlage habe ich dabei allerdings nur den Code von 2 anderen leuten. Doch die anweisungen sind untereinander keines wegs äquivalent weswegen ich mir kaum einen reim drauf machen kann wie das ganze funktioniert. Wäre nett wenn mir einfach mal jemand aufschreiben könnte mit welcher methode (befehle in reihenfolge) man ein solches display initialisiert. Ich hab auch schon fleißig gegoogelt aber finde nix. Falls jemand ne gute seite kennt, bitte einfach schrieben. danke!
Gute Einstiegspunkte findest du hier: http://www.skippari.net/lcd/ks0108.html http://www.geocities.com/dinceraydin/lcd/index.html Gruss Andre
hi, hab mir die Seiten nun mal in ruhe angeschaut. Letztere bietet wirklich viele brauchbare Informationen. Schon mal danke. Habe nun versucht das ganze mal umzusetzen - leider immernoch nicht erfolgreich. Aber vileicht sieht ja jemand den/die Fehler und hilft mir etwas ;) cu PS: Mir ist irgendwie nicht ganz ersichtlich für was der E-Pin gut ist. Bei mir ist er am PORTC angeschlossen aber irgendwie wird der nie erwähnt.
hi trooper! http://www.geocities.com/dinceraydin/lcd/gfxintro.htm ist auch ne sehr gute page. Hat sogar einen integrierten simulator. Man kann dort die einzelnen eingänge des Disps. switchen, um zu sehen ob man sein Programm wirklich zum Laufen bringen wird... MFG Nik
Sorry hab was vergessen :) Ps. der "e" pin ist Enable, damit werden die Daten ins Display übernommen, und wie's aussieht hast du auch genau das in deinem Prog. vergessen Nik
Gut zu wissen :D Also hier verbesserter, (Nun mit Enable) dennoch immernoch nicht funktionierender Code. Ich hab das ganze auch schon im besagten Simulator durchgespielt. Da funktionierts. BTW: Es handelt sich um das Display Powertip PG-12864A - konnte leider kein Datenblatt dazu finden. Danke!
hi trooper ich kann keinen anderen (möglichen) Fehler als den finden: // Set R/W -> 0 cbi(PORTC, 1); du stellst r/w erst beim Pixel schreiben auf low(also schreiben) Da solltest du evtl. schon am Anfang des Progs. tun, denn die Befehle(initialisation) sollen ja auch geschrieben werden. Oder: ich denke,ich hab zwar noch nie ein glcd verwendet, das man an das disp auch eine Kontrastspannung anlegen muss. Dies könnte auch eine mögliche Fehlerquelle sein... Nik
Hallo Nik, danke schonmal für deine Bemühungen! Habe nun mal versucht den R/W Port bereits am anfang auf low zu setzen, bringt jedoch auch keinen erfolg. Auf jeden fall werde ich morgen mal mit nem Durchgangsprüfer die Leitungen testen - nicht dass sich da ein Fehler eingeschlichen hat und ich such mir hier n wolf. also wie gesagt danke! n8
Hallo zusammen Ich weis nicht ob ich helfen kann, aber ich versuche es mal. Habe mir ein 128/64 Pixel LCD ersteigert und hatte null plan wie das teil Funzt. Zum Glück war eine reichlich verwirrende Doku dabei. Also: RW,EN,DI und die Datenleitungen setze ich am Anfang auf low RST,CS1 und CS2 setze ich auf high Anzeige Initialisieren: Auf die Datenleitungen setze ich den Wert 63 Danach EN auf high , einen kurzen Moment warten (Delay) Und danach EN wieder auf low ( ohne das Delay hatte es vorher nicht geklappt ) Anzeige löschen: Zeile einstellen( X): CS1 und CS2 auf high Startlinie setzen mit 192+Startlinie auf die Datenleitung X von 0 bis 7 Hochzählen lassen ( Xregister = Zeilen ) als Schleife Dabei X setzen indem man 184+x auf die Datenleitung legt. Danach dem EN nicht vergessen siehe oben ( EN=high > warten(Delay) > EN=low) Spalte einstellen(Y): Eine zweite Schleife für Y von 0 bis 63 ( muß sich innerhalb der ersten Schleife befinden ) Dabei Y setzen indem man 64+Y auf die Datenleitung legt. Danach dem EN nicht vergessen siehe oben ( EN=high > warten(Delay) > EN=low) Wert einstellen(W): Eine dritte Schleife für W entweder 0 zum löschen oder den Bitwert den man setzen will, also 128 gäbe einen Strich( muß sich innerhalb der zweiten Schleife befinden ) Dabei W setzen indem man W auf die Datenleitung legt. (ohne zusätzlichen Wert ) Danach dem EN nicht vergessen siehe oben ( EN=high > warten(Delay) > EN=low) Aber hierbei wird das selbe Zeichen auf der rechten Seite wie auch auf der linken Seite geschrieben. Grund: CS1 beschreibt die linke und CS2 beschreibt die rechte Seite. Ich hoffe diese Ausführung ist noch irgendwie verständlich. ;-)
hi, also ich hab das ganze jetzt zich mal durchgespielt und auch unterschiedliche code änderungen haben null effekt gebracht. deswegen habe ich mich nun mal auf die hardware seite konzentriert. Mit dem Durchgangsprüfer habe ich alle leitungen gecheckt - funktioniert auch alles tadellos. Dann habe ich zu testzwecken auf PORTA und PORTC komplett 'high' ausgegeben - sprich outp(0xff, PORTA); outp(0xff, PORTC); - und habe dann gemessen. Ich hatte überall mehr oder weniger 5 V außer an einem PIN - nämlich PC4 alias TDO dort konnte ich lediglich 0,05 V messen. Deswegen nun meine Frage: Kann es sein dass ich zuvor spezialfunktionen der PORTS A oder C abschalten muss / irgendwelche Einstellungen vornehmen muss um diese beiden Ports "clean" zu bekommen ? Danke! Mfg
Hallo ich wäre sehr an deiner Lösung interessiert Habe mir nähmlich das selbe Display besorgt, bekomme es aber nich zum Laufen Ich versuche es allerdings mit Bascom MfG Andreas
@ Trooper: Bin jetzt erst auf diesen Thread gestossen. Ich bastel z. Zt. mit einem Mega32, GLCD mit Toshiba 6963 Kontroller. Habe mir allerdings kein Datenblatt zum Mega16 und deinem GLCD angeschaut. Aber wenn ich mir deine Initialisierung anschaue, fällt mir folgendes auf: Du initialisierst, in dem du nacheinander Daten auf den Ausgang legst. Wie soll der Grafikkontroller wissen das diese Daten für ihn bestimmt sind, und wann und wie lange die Daten gültig sind? Will sagen: da gibt es bestimmt noch einen Pin am Kontroller den du setzen musst, damit der Kontroller die Daten übernimmt und evtl. anschliessend wieder löschen musst. So ist es zumindest bei vielen anderen Bauelementen. Zu deinem 2. Problem mit dem PC4 immer auf Low: Schaue ins Datenblatt, ich habe am Mega32 mehrere Stunden einen Hardwarefehler gesucht, bis ich endlich feststellte, das der Port C nur falsch initialisiert war. Betrachte das Posting als Denkanstoss in welcher Richtung du schauen suchen/prüfen solltest. Gruss Volker
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.