Forum: Mikrocontroller und Digitale Elektronik KS0108 und Initialisierung? GLCD-Neuling braucht Rat


von Stefan M. (celmascant)


Lesenswert?

Hallo Forum^^

Ich habe hier noch ein 128x64 GLCD mit 2 KS0108-Kontroller rumliegen.
Das würde ich gern per Mega32 ansteuern.
Von Text-LCD's bin ich eigendlich gewöhnt, das man eine 
Initialisierungssequenz braucht. Im Datenblatt des KS0108 kann ich 
soetwas aber nicht finden.

Reicht es die Spannung einzuschalten und abzuwarten bis das GLCD per 
Busy-Flag sagt das es bereit ist?

Der Rest mit den X- und Y-Adressen ist ja schön erklärt, auch die 
Befehle sind soweit klar, nur eben die Initialisierung konnte ich nicht 
finden.

Gruss Stefan

PS: Fertige libs will ich (noch) nicht verwenden, da ich erstmal wissen 
will wie die GLCD-Ansteuerung überhaupt funktioniert.

von holger (Gast)


Lesenswert?

>Von Text-LCD's bin ich eigendlich gewöhnt, das man eine
>Initialisierungssequenz braucht. Im Datenblatt des KS0108 kann ich
>soetwas aber nicht finden.

Dann nimm das Datenblatt nochmal und lies es SEHR genau.

>PS: Fertige libs will ich (noch) nicht verwenden, da ich erstmal wissen
>will wie die GLCD-Ansteuerung überhaupt funktioniert.

Sie können aber eine gute Quelle sein um Fehler in deinem
eigenen Code zu suchen. Oder die Initialisierung zu finden ;)

von lol (Gast)


Lesenswert?

Jojojojojojo, ich habe das gleiche display bei mir am start. Die 
ansteurung ist eigentlich relativ einfach, ich poste mal einen link der 
dich auf eine seite führt die dir spielent ansteurung des displays 
erklärt:

http://www.geocities.com/dinceraydin/djgfxlcdsim/djgfxlcdsim.html

und scheck den hier auch mal, sehr coole seite:

http://www.linguatec.de/onlineservices/voice_reader/

von Stefan M. (celmascant)


Lesenswert?

@Holger:
Wenn ich meine Ansteuerung programmiere, werd ich sicher in Vorhandene 
Programme schauen, aber erstmal muss ich ja wissen welche Abläufe 
überhaupt nötig sind um das Display zu betreiben.

Wenn mich nicht alles täuscht (mein Englisch ist nicht das beste) 
sollten folgende Zeilen die Initialisierung beschrieben:
>4. Reset
>Reset can be initialized system by setting RSTB terminal at low level when 
>turning power on, receiving instruction from MPU.
>When RSTB becomes low, following procedure is occured.
>1. Display off
>2. Display start line register become set by 0.(Z-address 0)
>While RSTB is low, any instruction except status read can be accepted. >Reset 
status appers at DB4. After DB4 is low, any
>instruction can be accepted.

Stimmt das, oder lieg ich völlig daneben?
Wenn ich das richtig Verstanden habe, muss ich also beim einschalten des 
Displays Reset auf Low schalten und dann warten bis DB4 Low ist. Danach 
Reset wieder auf 1 und los gehts, oder?

gruss Stefan

von Michael S. (msk) Benutzerseite


Lesenswert?

holger schrieb:
> Dann nimm das Datenblatt nochmal und lies es SEHR genau.

Ich stehe vor einen ähnlichen Problem. Ich habe nur ein Datenblatt zm 
KS0108B gefunden und das ist - sorry - Scheiße. Über die Initialisierung 
lässt sich der Schreiber leider nicht aus, man kann nur vermuten, dass 
ein RESET den RAM NICHT löscht. Und die Timing-Angaben scheinen auch 
eher ein feuchter Traum des Entwicklers/Datenblatt-Schreibers und nicht 
die Wirklichkeit zu sein...

von Oliver (Gast)


Lesenswert?

>Über die Initialisierung lässt sich der Schreiber leider nicht aus,

was schlicht und einfach daran liegt, daß es keine gibt. Strom dran, 
Reset auf high, fertig.

Oliver

von Michael S. (msk) Benutzerseite


Lesenswert?

Oliver schrieb:
> was schlicht und einfach daran liegt, daß es keine gibt. Strom dran,
> Reset auf high, fertig.

Auch das ist eine Information, die in's Datenblatt gehört. Genauso wie 
die Info, ob das RAM beim Reset gelöscht wird oder nicht (steht nicht im 
Datenblatt, Weiß das jemand?). Ebenso gehört wenigstens eine Grafik 
rein, wie Pages und Adressen organisiert sind. Und bei der Gelegenheit 
könnte man auch gleich den Fehler rausmachen, dass unter Read- und 
Write-Timing-Diagramm zweimal dieselbe Bildunterschrift steht.
Solche hingerotzten Mist-Datenblätter hasse ich. Verursachen bei 
tausenden von Lesern nur unnötige Zeitverschwendung beim Rätselraten...

Was sind eigentlich realistisch, erreichbare Pulsbreiten für Enable und 
Data-/Address-Hold-Zeiten? Bei mir funktioniert es nur mit ungefähr 
zehnfachen Werten wie im Datenblatt angegeben (Dieselben Flachbandkabel 
und ähnliche Verdrahtung lassen übrigens eine um fast Faktor 100 
schnellere Kommunikation - entsprechend der dortigen Angaben im 
Datenblatt - mit dem SJA1000 zu!)

von spess53 (Gast)


Lesenswert?

Hi

>Genauso wie die Info, ob das RAM beim Reset gelöscht wird oder nicht
>(steht nicht im Datenblatt, Weiß das jemand?).

Es steht doch im DB, was beim Reset passiert. Und was nicht dasteht 
passiert auch nicht.

>Ebenso gehört wenigstens eine Grafik  rein, wie Pages und Adressen
>organisiert sind.

Das gehört ins Datenblatt vom entsprechenden Display.

MfG Spess

von holger (Gast)


Lesenswert?

>> was schlicht und einfach daran liegt, daß es keine gibt. Strom dran,
>> Reset auf high, fertig.

Oh doch. Minimale Init:
1
   RS_OFF; //Instruction senden setzen
2
   WriteDisplay(0x3F); //Befehl Display On
3
4
// Display Start Line bei einigen Displays nach Reset scheinbar nicht ok.
5
// Das Bild ist dann in Y-Richtung verschoben. Dies soll helfen.
6
   WriteDisplay(0xC0); //Befehl Display Start Line 0 für jeden Controller senden
7
8
   RS_ON; //Zurück auf Daten

>Was sind eigentlich realistisch, erreichbare Pulsbreiten für Enable und
>Data-/Address-Hold-Zeiten?

Kommt auf den Takt an mit dem das Display arbeitet.
Zeiten für zwei meiner Displays (in us):

#define KS108_E_DELAY  2 // Für mein Pollin Display TG12864B 596kHz FCLK
//#define KS108_E_DELAY  4 // Displaytech 64240A 395kHz FCLK.

von Michael S. (msk) Benutzerseite


Lesenswert?

@holger:

Danke. Im Datenblatt meines Displays finde ich leider keine Angaben zum 
Takt (Hätte mich auch gewundert... ;) ). Ab 7 us funktioniert es auch 
bei mir zuverlässig.

@spess53:
Das heißt, das RAM wird nicht gelöscht. Na super... Das heißt ja aber, 
dass durchaus eine Initialisierungsroutine notwendig ist, denn man muss 
ja einmal manuell die ganzen Speicherplätze löschen.

So, nachdem ich das Timing angepasst und das RAM gelöscht habe, scheint 
daas Ding nun das zu tun, was es soll. :)

von spess53 (Gast)


Lesenswert?

Hi

>Na super... Das heißt ja aber,
>dass durchaus eine Initialisierungsroutine notwendig ist, denn man muss
>ja einmal manuell die ganzen Speicherplätze löschen.

Muss man nicht. Man kann das Display auch gleich mit dem ersten Bild 
vollschreiben.

MfG Spess

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.