Forum: Mikrocontroller und Digitale Elektronik Problem mit GLCD (KS0108)


von Georg O. (georg_o)


Angehängte Dateien:

Lesenswert?

Hallo zusammen,

im Moment versuche ich mein GLCD mit dem KS0108 Controller zum Laufen zu 
bekommen. Leider funktioniert es nicht. Das Display reagiert auf kein 
Kommando und zeigt nichts an. Mein Code im Anhang ist sehr 
minimalistisch gehalten, denn für den Anfang möchte ich nur sehen, dass 
es funktioniert. Vielleicht findet ihr meinen Fehler. Folgende Seite 
habe ich als Vorlage benutzt: http://embedded-lab.com/blog/?p=2398

Danke im Voraus für eure Antworten.

von Dieter F. (Gast)


Lesenswert?

Vermutlich haben heute alle - da Pfingstmontag ist - ihre Glaskugeln zur 
Aufarbeitung gegeben.

Praktisch wären ein paar Angaben zum verwendeten Mikrocontroller, zum 
Takt, zum Compiler, zum realen Schaltung, ...

Hast Du das Programm fehlerfrei compilieren können? Das wage ich zu 
bezweifeln ...

Hört sich zwar blöde an - aber manchmal hilft Google auch mit Hinweisen, 
wenn man z.B. mit "ks1008 glcd atmega" o.ä. sucht.

von Georg O. (georg_o)


Lesenswert?

Also ... Controller: PIC18f25k22 Compiler: XC8
Compilieren ging fehlerfrei. Auch beim Debuggen gabs keine Probleme. Das 
Programm macht, was ich mir vorstelle. Trotzdem reagiert das Display 
nicht. Daher denke ich, dass ich etwas bei der Ansteuerung vergesse, 
bzw. grundsätzlich falsch mache.

von holger (Gast)


Lesenswert?

Schon mal am Kontrast gedreht?

von Georg O. (georg_o)


Lesenswert?

Natürlich, trotzdem nichts. Ich denke das Display wird nicht einmal 
aktiviert. Ansonsten würde ich doch den undefinierten RAM Inhalt sehen, 
oder ?

von holger (Gast)


Lesenswert?

>Ich denke das Display wird nicht einmal
>aktiviert.

Wie ist die RST Leitung angeschlossen?

von holger (Gast)


Lesenswert?

TRISB  = 0b00000011;

#define KS_RS   LATBbits.LATB0
#define KS_RW   LATBbits.LATB1

Ich denke die beiden sind nicht auf Ausgang geschaltet.

von Georg O. (georg_o)


Lesenswert?

Peinlich... :-) Trotzdem funktionierts noch nicht. Die Reset Leitung ist 
an RB5.

von holger (Gast)


Lesenswert?

void KS_config(void)
{
    KS_reset();
    KS_CSA = 1;
    KS_CSB = 1;
    KS_write_command(0x3F);
}

Bei meinen KS0108 Displays sind die beiden CS low aktiv.
Dann würdest du so genau gar nichts ins Display schreiben.

von Georg O. (georg_o)


Lesenswert?

Vielen Dank Holger, im Angebot stand bei CS High Effective. Nach der 
Änderung im Programm auf Low aktiv, funktionierts. Vielen Dank :-)

von BirgerT (Gast)


Lesenswert?

Vielleicht sollte man vorm Schreiben an das GLCD warten, bis das 
BUSY-Bit wieder aus ist..?

Also
1. Datenrichtung Lesen (Daten Port als Eingänge)
2. Chipselect
3. Registerselect Command
4. Am Enable wackeln
5. Datenport lesen
6. ist Bit 7 gesetzt, dann 4.
7. KS0108 ist Ready

Jedenfalls habe ich keine Statusabfrage im Code gefunden..

Ich habe ein KS0108 kompatibles (S6B0108) an einem Mega128 mit 16MHz 
laufen.
Da kann man das EN schon mal High setzen, bevor die Daten am Port 
ausgegeben werden, und das EN wieder Low, wenn die Daten am Port 
anstehen.
Da muss man nicht 5us vorher oder nachher warten.. (eher 0.5us)

Tipps für Selberprogrammierer:
- Nicht zu verachten ist das Autoinkrement der x-Adresse nach Schreib- 
oder Leseoperationen - es bieten sich Blockoperationen an (8Byte Block 
lesen, im Ram manipulieren, und als Block wieder ausgeben.
- Vor dem Lesen von Daten muss erst ein Dummyread gemacht werden.
- Die Abfrage des Busy-Bits geht schneller, als ein delay_ms(1)..
- wenn kein KS0108 angeschlossen ist, ist das Busy auch immer 0
- um Festzustellen, ob ein KS0108 angeschlossen ist, muss man das 
Kommando "Display off" ausgeben, und dann bei der Statusabfrage schauen, 
ob das Bit5 High ist (zumindest beim S6B0108) - Hier steht zwar in allen 
KS0108 Datenblättern das Gegenteil, aber Versuch macht kluch..
- Zum Löschen des Displays können auch beide Controller parallel 
geschrieben werden

von Georg O. (georg_o)


Lesenswert?

Danke für deine Tipps :-)

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.