Forum: Mikrocontroller und Digitale Elektronik GLCD Initialisierungs-Anweisungen


von trooper (Gast)


Lesenswert?

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!

von Andre Adrian (Gast)


Lesenswert?


von trooper (Gast)


Angehängte Dateien:

Lesenswert?

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.

von Nik Bamert (Gast)


Lesenswert?

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

von Nik Bamert (Gast)


Lesenswert?

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

von trooper (Gast)


Angehängte Dateien:

Lesenswert?

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!

von Nik Bamert (Gast)


Lesenswert?

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

von trooper (Gast)


Lesenswert?

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

von Uwe Hebel (Gast)


Lesenswert?

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. ;-)

von trooper (Gast)


Lesenswert?

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

von Uwe Hebel (Gast)


Lesenswert?

Welchen Controller benutzest du?

von trooper (Gast)


Lesenswert?

Atmel ATMega16 mit 1 Mhz

von trooper (Gast)


Lesenswert?

hoch schieb

sorry, aber komme aleine nicht weiter :/

von Andysafe (Gast)


Lesenswert?

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

von V. Kattoll (Gast)


Lesenswert?

@ 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
Noch kein Account? Hier anmelden.