Forum: Mikrocontroller und Digitale Elektronik LCD DM19264A (KS0108B Controller)


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Karlo F. (karlo_f)


Lesenswert?

Liebe Alle,

ich habe vor den Schritt in die LCD-Welt zu tun und stolpert nun bereits 
vor dem ersten Schritt.

Ich habe mir von Pollin folgendes LCD besorgt:

http://www.pollin.de/shop/dt/NzgyOTc4OTk-/Bauelemente_Bauteile/Aktive_Bauelemente/Optoelektronik/LCD_Modul_DM19264A_02_192x64_Pixel.html

Datenblatt:

http://www.pollin.de/shop/downloads/D120712D.PDF

Softwareseitig werde ich es mit einer der beiden passenden Libs aus der 
Codesammlung angehen.

Nun sitze ich vor dem Steckboard und mir stellen sich ein paar Fragen 
die ich bislang mithilfe der Forumssuche nicht (zumindest nicht für 
dieses LCD) beantworten konnte:

Die Kommunikationspins 4-18 sind mir soweit erstmal verständlich. Vss 
(Pin1) und Vdd(Pin 2) sind auch klar.

Frage 1:
Vo (Pin3) ist laut Datenblatt die Kontrastspannung - ich finde jedoch 
keinen Hinweis darauf in welchem Bereich ich diese bereitstellen muss?

Frage 2:
Vee (Pin 19) ist laut Datenblatt ein Negative Voltage Output (-5V oder 
-10V) - was stell ich damit an?!

Frage 3:
A (Pin 20) soll mit 4.2 V betrieben werden (soweit mir das verständlich 
ist mit entsprechendem Vorwiderstand - ist ein solcher nicht vorhanden 
wird der Spannungsregler 7805 innerhalb meiner 5V-Spannungsversorgen 
gehörig heiß - derzeit mal 10 Ohm drinne). Richtig?

Die Spannungsversorgung läuft mit einem Netzteil (9V / 1000 mA) und wird 
mit der Spannungsversorgungsschaltung des Tutorials auf 5 V geregelt.

Jemand ein paar Hinweise oder einfach nur Literaturempfehlungen? Ich 
suche gerne selber weiter, stehe nur gerade etwas ratlos da.

Viele Grüße
Karlo

von Oliver J. (skriptkiddy)


Lesenswert?

Karlo F. schrieb:
> Frage 1:
> Vo (Pin3) ist laut Datenblatt die Kontrastspannung - ich finde jedoch
> keinen Hinweis darauf in welchem Bereich ich diese bereitstellen muss?
V_O = V_DD-15V bis VDD+0.3V (irgend was dazwischen auswählen bis der 
Kontrast passt)


> Vee (Pin 19) ist laut Datenblatt ein Negative Voltage Output (-5V oder
> -10V) - was stell ich damit an?!
Die Kontrasspannung ist wahrscheinlich negativ....

von spess53 (Gast)


Lesenswert?

Hi

>Frage 1:
>Vo (Pin3) ist laut Datenblatt die Kontrastspannung - ich finde jedoch
>keinen Hinweis darauf in welchem Bereich ich diese bereitstellen muss?

>Frage 2:
>Vee (Pin 19) ist laut Datenblatt ein Negative Voltage Output (-5V oder
>-10V) - was stell ich damit an?!

Poti (10...20K) zwischen *VDD (5V)* und VEE. Potischleifer an den 
Kontrasteingang. Der Kontrasteingang muss lt.Datenblatt etwa 9V 
negativer als VDD sein.

MfG Spess

von holger (Gast)


Lesenswert?

>Frage 1:
>Vo (Pin3) ist laut Datenblatt die Kontrastspannung - ich finde jedoch
>keinen Hinweis darauf in welchem Bereich ich diese bereitstellen muss?
>
>Frage 2:
>Vee (Pin 19) ist laut Datenblatt ein Negative Voltage Output (-5V oder
>-10V) - was stell ich damit an?!

Du nimmst einen 20k Trimmer und schliesst den folgendermassen an:
Schleifer des Trimmers an Vo
Den Rest des Trimmers an VEE und GND.

Dann kannst du deinen Kontrast mit dem Trimmer einstellen.

von M. J. (manfred-64)


Lesenswert?

Zu 3.
das ist der Anschluss der LED's, sind daher auch als solche zu 
behandeln.
4,2V ist die Duschbruchspannung der LED's !
Im Datenblatt ist leider keine Angabe über den Max. Strom der LED's
Halten aber sicher mehr als 200mA aus und mit dem Strom sollten sie auch 
ausreichend hell sein.
Du könntest also noch bis auf 4Ohm runter gehen, wenn Du's noch heller 
brauchst

von Oliver J. (skriptkiddy)


Lesenswert?

Manfred John schrieb:
> 4,2V ist die Duschbruchspannung der LED's !

Sicher? Meinst du zufällig die Flusspannung?

von Karlo F. (karlo_f)


Lesenswert?

Vielen lieben Dank! Ich konnte bisher noch nicht antworten, da ich die 
Zeit genutzt habe um noch den Conrad zu erreichen um den Poti zu 
besorgen :) Werde jetzt noch kurz ne Platine ätzen und dann den LCD wie 
von euch vorgeschlagen beschalten.

Besten Dank und viele Grüße

von Sven (Gast)


Lesenswert?

Wie ist denn die Qualität der Anzeige und die Beleuchtung? Kann man das 
Pollin-Display nutzen?

von W.S. (Gast)


Lesenswert?

Was den Kontrast betrifft, so ist das doch eine leichte Sache: Das 
Display liefert an Pin 19 eine Spannung. Da schließt du ein Ende eines 
Einstellreglers an. Das andere Ende kommt auf Masse und der Schleifer 
kommt an Pin 3.

Aber das Display ist aus meiner Sicht viel ekliger als ich es mir 
zumuten würde, denn es hat den Bildschirm vermutlich in 3 Teile und 3 
verschiedene Chips aufgeteilt. Dazu Pins 15+17+18 igitt, 3 verschiedene 
ChipSelects und das Ganze noch dazu 10 Euro teuer...

W.S.

von spess53 (Gast)


Lesenswert?

Hi

> Da schließt du ein Ende eines Einstellreglers an. Das andere Ende kommt
>auf Masse und der Schleifer kommt an Pin 3.

Die LCD-Versorgungsspannung, gemeinhin als Kontrastspannung bezeichnet, 
ist auf VCC (+5V) und nicht auf Masse bezogen. Also gehört der 
Potianschluss dort hin.

MfG Spess

von Sven (Gast)


Lesenswert?

W.S. schrieb:
> es hat den Bildschirm vermutlich in 3 Teile und 3
> verschiedene Chips aufgeteilt. Dazu Pins 15+17+18 igitt, 3 verschiedene
> ChipSelects

Es hat ja auch 192 Pixel Breite. Wie willst Du sonst ein Display 
ansteuern, wenn der Spaltentreiber je 64 Spalten kann. Die 128 Pixel 
breiten Displays haben doch auch 2 Chips als Spaltenntreiber...

Mir ging es eher darum, ob das Display gut ablesbar ist oder vielleicht 
Schwächen bezüglich ungleichmäßiger / verschwommener Pixel oder 
schlechten Kontrast hat.

von Karlo F. (karlo_f)


Lesenswert?

Soooo, arbeitsbedingt bin ich leider erst heute dazu gekommen an dem LCD 
weiterzubasteln.

Über die Quali des LCD kann ich derzeit leider noch nichts sagen, da ich 
noch nichts zum laufen bekommen habe. Ich habe aber immernoch die 
Kontrastspannung in Verdacht. Mein bisheriger Stand:

Habe wie oben vorgeschlagen die Kontrastspannung über nen Trimmer 
(20kOhm) zwischen Pin 19 (Vee, negative voltage Output) und GND 
(testweise auch mal +5V) im Betrieb. Softwareseitig kommt myLCD aus der 
Codesammlung in Einsatz (steuert zwar nur 2 Controller an und hier sind 
es 3 - aber ich dachte den dritten nehme ich dann in Angriff wenn ich 
auf dem Display was sehen kann ;) ).Commandports habe ich über Register 
A laufen, die DataBusLines sind auf C. Ergebnis: Nichts zu sehen außer 
dem normalen Backlight.

Nun habe ich an Pin19 mal gemessen was da rauskommt und meine 
Messanzeige sagt mir: 0V.

LCD Board hinüber oder dummer Anwendungsfehler?

von Karlo (Gast)


Lesenswert?

Egal, ich hab noch nen Max233 rumfliegen, mal gucken ob ich mit dem 
testweise eine negative Kontrastspannung hinbekomme!

von Browncoat (Gast)


Lesenswert?

Kannst du ein Foto von dem Display einstellen (Vorder und Rückseite)? 
Ansonsten, ICL7660, zwei 10µ Kondensatoren, fertig, vielleicht ist ja 
dafür sogar schon alles vorgesehen auf dem Display.

MfG BC

von Karlo F. (karlo_f)


Angehängte Dateien:

Lesenswert?

Moin,

anbei die Fotos - genügen die? Habe die richtige Kamera leider erst 
morgen zur Verfügung. Pin19 ist hervorgehoben.

Meine Messung an dem ME7660 (der auf der Platte verbaut ist, den 
entsprechenden Bereich habe ich größer noch aufgenommen) ergab an Vout 
-2,7 V.

Ich versteh nur nicht wie da überhaupt was auf Pin19 angekommen soll, 
für mich sieht es so aus als wäre die Leiterbahn vorher unterbrochen.

Grüße
Karlo

von M. J. (manfred-64)


Lesenswert?

Das Problem liegt wohl eher an deiner Löttechnik !
Da brauchst Du Dich nicht zu wundern das nix funst.
Man sieht sogar zwei Litzen die eine Brücke bilden. (Port Mitte)

Verlöte das noch mal anständig bevor Du den Fehler an Anderer Stelle 
suchst.

MfG
Manfred

von Karlo F. (karlo_f)


Lesenswert?

Kritik dankend angenommen, Lötbrücke mittlerweile korrigiert. Leider 
ergibt sich daraus kein Unterschied. Zur Klarstellung: ich beschwere 
mich nicht dass das LCD nicht läuft (da ich bei meinem Talent durchaus 
noch ca 10² andere Gründe in Verdacht habe) - aber Pin 19 sollte doch im 
"Rohzustand" und bei lediglichen Anlegen der Versorgungsspannung über 
die Ladungspumpen nen negativen Output haben - oder täusche ich mich?

Viele Grüße

von M. J. (manfred-64)


Lesenswert?

Vergiss das erst mal mit Pin19, eine negative Spannung an Vo brauchst Du 
bei normaler Temperatur (~15-30C°) nicht, da reichen 0-5V

Eventuell ist bei Deinem Modell die Ladungspumpe für die 
Negativespannung gar nicht implementiert ?!

von spess53 (Gast)


Lesenswert?

Hi

>Ich versteh nur nicht wie da überhaupt was auf Pin19 angekommen soll,
>für mich sieht es so aus als wäre die Leiterbahn vorher unterbrochen.

Sieht abgerissen aus.

von spess53 (Gast)


Lesenswert?

Hi

Zu schnell gedrückt.

>Eventuell ist bei Deinem Modell die Ladungspumpe für die
Negativespannung gar nicht implementiert ?!

Ist implementiert. U1 ist ein 7660. Am Pin5 sollte eine negative 
Spannung anliegen.

MfG Spess

von Browncoat (Gast)


Lesenswert?

Genau, der 7660 sollte etwa -5V erzeugen (je nach Schaltung). An Pin 5 
können diese abgegriffen werden. Von pin5 (7660) zu Pin 19 (Anschluss) 
muß eine Verbindung bestehen (sieht nämlich wirklich aus wie 
abgerissen). Der KS0108 braucht definitiv eine negative Spannung um 
daraus den Kontrast zu generieren. Da reichen 0V nicht aus.

MfG BC

von Großes F. (112)


Lesenswert?

...habe mir ebenfalls dieses Display zugelegt und werde in den nächsten 
Tagen wohl eine Reihe Fragen dazu stellen müssen, aber zuerst mal eine 
Anmerkung:

Bei meinem Exemplar fehlt ebenfalls jedwede Verbindung zu Pin 19 
(zumindest was meine optische Widergabefähigkeit mir vorgaukelt), aber 
es sieht nicht so aus, als wäre es abgerissen, sondern als wäre das 
schlichtweg nicht geroutet worden... die Leitung hört einfach plötzlich 
auf, und das Display ist noch in der originalverschweißten Folie von 
Pollin!

Nun stellt sich mir natürlich die Frage, wie mit diesem Pin umzugehen 
ist... Kann das Display dann überhaupt funktionieren?

PS.:
Da U2 nicht bestückt ist, muss ich wohl davon ausgehen, dass dort nur 
-5V zu erwarten wären, und wenn ich U2 noch nachbestücke könnteich auf 
-10V kommen?


mfg

von spess53 (Gast)


Lesenswert?

Hi

>Nun stellt sich mir natürlich die Frage, wie mit diesem Pin umzugehen
>ist... Kann das Display dann überhaupt funktionieren?

Wenn das Layout wie auf den Bildern von

Beitrag "Re: LCD DM19264A (KS0108B Controller)"

aussieht, dann war da mal eine Verbindung da. Vielleicht sind die GLCDs 
von Pollin mal auf eine externe Kontrastspannung 'umgebaut' worden. Mess 
mal die Spannung an PIN5 von U1. Wenn dort ca. -5V anliegen, dann 
verbinde die mit dem Pin 19 vom LCD.

MfG Spess

von Sven (Gast)


Lesenswert?

Hihi, jetzt haben die auch bei Pollin gemerkt, dass da was fehlt: Das 
Display ist billiger geworden.

Läuft es schon bei jemanden?

von Gero N. (geronimo76)


Lesenswert?

Ich hab mir auch dieses Display zugelegt und Probleme mit der 
Beschaltung.
Nachdem ich dann diese Beiträge hier gefunden habe, habe ich mal 
intensiver durchgemessen.

Bei mir ist ebenfalls PIN19, welcher die neg. Spannung liefern sollte 
unbeschaltet (gemessen) optisch genau wie auf den Bildern oben..

Pin5 des 7660 liefert -5V, welche aber nicht weiter geführt werden.
jetzt versuche ich erstmal dort was anzulöten um sie weiter nutzen zu 
können .. hoffe, das reicht dann, um die beschaltung zu vervollständigen

von Gero N. (geronimo76)


Lesenswert?

in anderen foren habe ich nun infos gefunden:
Pin19 ist wirklich unterbrochen, man muss also selber hand anlegen und 
pin5 von U1 an Pin19 verbinden.

bei einigen display ist es sogar vorgekommen, das der masseanschluss 
fürs backlight (K) nicht gelötet ist ... (an der seite der 
displayplatine) .. dort auch manuell ergänzen.

nachdem ich diese hürden überwunden hatte, bin ich immer noch am 
experimentieren ... bekomme z.b. keinen vernnümftigen kontrast hin ... 
aber immerhin sind schon mal die "pixel" erkennbar ...

zum zweiten habe ich noch keine lauffähige software für dieses display 
finden können ,,, etliche ausprobiert, aber erfolglos ...

hat jemand was grundlegendes da, was auf nem 18f läuft und in c18 
geschrieben ist?

von Timm T. (Gast)


Lesenswert?

Display läuft mit folgenden Änderungen:

Pin 19 an Pin 5 des 7660 verbunden für die negative Kontrastspannung
K der Displaybeleuchtung mit GND verbunden

Bei 100mA für die Displaybeleuchtung ist es noch sehr dunkel, 
wahrscheinlich müssen da 200mA fließen.

Die CS-Leitungen sind low-aktiv.

Die Init-Sequenz ist wie im Datenblatt des KS0108 angegeben sehr 
einfach, ohne zusätzliche Delays.

Beim Schreiben werden die Daten auf die fallende Flage von Enable 
übernommen, die Daten müssen noch ein paar ns danach anliegen, also 3 
NOPs zwischen ENABLE low und Datenwechsel.

ABER: Eine sehr unschöne Sache ist, dass der Kontrast extrem von der 
Anzahl der dargestellten Pixel abhängt.

Beim Einschalten sind alle Pixel ein, also das Display dunkel. Ich 
stelle einen guten Kontrast bei ungefähr -4.2V ein. Ich schreibe ein 
Muster auf das Display, pro Spalte wird der Wert einfach inkrementiert.

Je mehr Zeichen geschrieben werden und damit helle Pixel auftauchen, 
desto schwächer wird der Kontrast der dunklen Pixel. Ist das Display 
gleichmäßig mit einem Muster gefüllt, muss ich den Kontrast auf -4.8V 
einstellen, um wieder einigermaßen was zu sehen.

Schreibe ich jetzt wieder ein fast gefülltes Display, kann ich bei den 
-4.8V die hellen und dunklen Pixel kaum unterscheiden.

Die Betriebsspannung ist konstant 5V, die Kontrastspannung ist konstant, 
egal wie viele Pixel erscheinen. Nur der Kontrast ist extrem von der 
Anzahl der dargestellten Pixel abhängig.

Kennt jemand das Phänomen? Kann man das beheben? Gibt es diesen Effekt 
auch bei anderen G-LCD? Oder ist der KS0107 (Zeilentreiber) mit den 192 
Pixeln pro Zeile einfach überfordert?

von Timm T. (Gast)


Lesenswert?

Ergänzung: Das Kontrastproblem scheint nicht von der Anzahl der Pixel 
abzuhängen, sondern von deren "Durchmischung".

Ich schreibe in alle Stellen das gleiche Pattern:

0b00000001 => guter Kontrast
0b00000011 => guter Kontrast
0b00001111 => guter Kontrast
0b00010001 => schlechter Kontrast
0b01010101 => sehr schlechter Kontrast
0b01111111 => guter Kontrast

Das wirkt sich immer relativ gleichmäßig auf das ganze Display aus, auch 
wenn ich nur die Hälfte mit 0b01010101 beschreibe.

An der Anzahl der Spalten scheint es nicht zu liegen. Wenn ich einen der 
3 Spaltentreiber abschalte, bleibt der Kontrast trotzdem mies.

von Großes Fragezeichen (Gast)


Lesenswert?

...gleich mal eine Frage zwischendurch:

Hab das Display mitlerweile angeschlossen, allerdings erstmal ohne 
Backlight (relevant?).

Ein Programm ist noch nicht zusammengeflickt, ich wollte erstmal nur 
testen, ob überhaupt irgendetwas erscheint.

Nun geschieht folgendes wenn ich die Spannungsversorgung einschalte:

Bei einer Spannung von 9,7V zwischen Pin 2 und Pin 3 (Poti am Anschlag) 
sehe ich die Pixel ganz ganz schwach erscheinen.
Drehe ich das Poti weiter in die andere Richtung, wird der Kontrast noch
schwächer, so dass ich quasi garnichts sehe...

Achja: Die Versorgung geschieht über den 232RL von FTDI.


Nun erstmal die erste Frage:
Kann ich hoffen, dass der Kontrast bei einem vernünftig "enable-ten" 
Display besser wird, oder ist der schwache Kontrast eher ein 
Hardwareproblem?

Zweite Frage: Was kann ich denn sinnvolles tun, um den Kontrast noch 
weiter zu erhöhen? Die Verbindung zu Pin 19 habe ich bereits 
hergestellt, um die negative Spannung nutzen zu können...

mfg

von Timm T. (Gast)


Lesenswert?

Wenn Du dem Display keine Daten schickst, ist es erstmal aus. Da bringt 
am Kontrast drehen nicht viel.

Du musst alle 3 KS0108-Controller erstmal einschalten. Dann sind alle 
Pixel beschrieben und das Display zeigt schwarz.

Dann kannst Du die Adressen ändern und Pixelmuster rüberschieben.

Also ohne Controller nix los. Und /Reset muss auf High liegen, sonst 
auch nix los.

von Großes Fragezeichen (Gast)


Lesenswert?

ah ok, aber merkwürdig finde ich das trotzdem, weil bei den "nomalen" 
alphanumerischen Displays konnte ich bisher "ausgeschaltet" am Kontrast 
drehen und damit schonmal die Schriftstärke definieren, ohne eine 
einzige Zeile Code produziert zu haben...

von holger (Gast)


Lesenswert?

>ah ok, aber merkwürdig finde ich das trotzdem,

Daran ist nichts merkwürdig.

>weil bei den "nomalen" alphanumerischen Displays

Grafikdisplays sind halt anders.

von qippu (Gast)


Lesenswert?

Hallo,

wenn die vollen -5 V anliegen, ist der Kontrast ohne jede sonstige 
Ansteuerung hoch genug, um die Struktur gut zu erkennen. Man sieht dann 
praktisch die 'Zwischenräume' zwischen den Pixels.

Die Ansteuerung (inzwischen auf Stufe 'beliebiges Pixel setzen' usw.) 
ist soweit fertig, aber wegen der drei Controller doch etwas 
umständlich.

Der Kontrast reicht mir jedenfalls.

x

von Gero N. (geronimo76)


Lesenswert?

habs mittlerweile auch halbwegs zum laufen bekommen ,,, das mit den 
LOW-Actice Chip-signalen hat mich auch einige stunden gekostet^^

Was den kontrast angeht, muss ich sagen, das ich da nicht behaupten 
könnte, das kontrast abhängig von anzahl der dargetsellten pixel 
abhängig ist. sieht bei wenig und bei sehr hoher anzahl dargestellter 
pixel gleich aus.

die Hintergrundbeleuchtung hängt bei mir per 8Ohm vorwiderstand an VDD 
(5V).
Kontrast steht bei mir bei rund -4,65V [pin19] <-> [POTI 10k] <-> [VSS] 
/ Schleifer auf [PIN3] ala Datenblatt

Ansteuerung, Ausgabe von grafiken hab ich nun auch hin bekommen.

nun hapert es nur noch an das einbinden einer Schriftart. bzw. an das 
ausgeben von beliebigen text .. bin da noch nicht durchgestiegen, was 
die codierung betrifft..

kann mir einer die grundlagen kurz erläutern?
Fonts habe ich mitlerweile viele. nur das ausgeben funzt nicht

von Sascha W. (sascha-w)


Lesenswert?

du muss aufpassen das du den richtigen Font hast, da beim KS0108 das 
Datenbyte im Displayspeicher senkrecht dargestellt wird, bei den meisten 
anderen Controllern aber waagerecht! Mit dem falschen Font wirds 
schwierig.

Sascha

von Gero N. (geronimo76)


Lesenswert?

ah,, gut zu wissen, danke für den tipp (wusste nicht, das andere 
controller das waagerecht darstellen)

aber soweit bin ich ja noch nicht ,,, momentan zeigt es garnix an... hab 
probleme mit rom char / oder static rom char ect .. bin mir über den 
daktilus noch im unklaren

die meißten codebeispiel sind für AVR und oder anderen Prog-Sprachen 
... ich nutze C18 und habe eig. nicht vor, andere sprachen oder 
Controller zu lernen, um den code dann für mich ins c18 für PIC18 zu 
übersetzen

von spess53 (Gast)


Lesenswert?

Hi

>du muss aufpassen das du den richtigen Font hast, da beim KS0108 das
>Datenbyte im Displayspeicher senkrecht dargestellt wird, bei den meisten
>anderen Controllern aber waagerecht!

Welche 'meisten' ?. Ich habe gerade meine Datenblattsammlung 
durchgesehen. Gefunden habe ich außer dem T6963 nur noch den HD61830 mit 
'waagerechter' Anordnung. Also ist es eher anders herum.

MfG Spess

von holger (Gast)


Lesenswert?

>habs mittlerweile auch halbwegs zum laufen bekommen ,,, das mit den
>LOW-Actice Chip-signalen hat mich auch einige stunden gekostet^^

Bei meinen KS0108 Displays sind die High Active.
Bei deinem Display laut Datenblatt auch.

von Gero N. (geronimo76)


Lesenswert?

es geht hier aber speziell um das LCD DM19264A (KS0108B Controller) => 
Low Active

von holger (Gast)


Lesenswert?

>es geht hier aber speziell um das LCD DM19264A (KS0108B Controller) =>
>Low Active

Quark Low Active. Im Datenblatt steht z.B. /RST. Das ist der
Reset Pin. Der ist Low Active.

Dort steht nirgendwo /CS1 sondern CS1. Ergo High Active.
Würde mich auch wundern wenn es anders wäre.

von Gero N. (geronimo76)


Lesenswert?

das display liegt neben mir und die CSx eingänge sind definitiv low 
activ beim LCD DM19264A

Im mitgelieferten Datenblatt steht bei mir auch nix von /CSx ... dennoch 
muss ich sie per Low aktivieren ...

von Timm T. (Gast)


Lesenswert?

Die sind low aktiv, ich bin drauf gekommen, weil es in einem anderen DB 
zu einem KS0108-Display als /CS drinstand.

Hat jemand schöne Fonts / eine Fonteditor für GLCDs? Die Seite apetech 
scheint nicht mehr benutzt zu werden.

Der GLCD FontCreator2 läuft bei mir (WinXP) nicht, keine Ahnung warum.

von qippu (Gast)


Lesenswert?

Nach eingehenden Tests muß ich leider alle Ergebnisse von Timm Thaler 
bezüglich des Kontrasts komplett bestätigen. Die Auswirkungen sind echt 
EXTREM! Eine Erklärung dafür habe ich nicht. Sonst jemand???

Und ja: /CS, das war ja das erste, was ich überhaupt herausfand!

von Timm T. (Gast)


Lesenswert?

Meine Vermutung war, dass es an einer möglichen Belastung der 
Kontrastspannung liegt. Die bleibt aber konstant.

von baschtler (Gast)


Lesenswert?

Gibt es schon neue Erkenntnisse?
Hab das Teil gestern erhalten.
Leider habe ich den Thread hier erst nach der Bestellung
des Displays gesehen.  :-(

von qippu (Gast)


Lesenswert?

Bin derzeit nicht vor Ort - ansonsten will ich bei Gelegenheit die 
Spannung bzw. den Strom zu Pin 3 (Kontrast) oszilloskopieren, um zu 
sehen, ob diese Art von 'verteilten Pixels' (00010001b, 01010101b 
10101010b usw.), die die größten Probleme machen, da zu irgendwelchen 
Schwingungen führen. Andernorts war auch die Rede davon (bezog sich auf 
ein anderes Display), die Kontrastspannung grundsätzlich über eine 
Transistorstufe zuzuführen, statt direkt per Poti-Schleifer...

von Timm T. (Gast)


Lesenswert?

Die Kontrastspannung ist hier konstant, da wird sich nichts tun.

Es gibt auf dem Display Platz für einen zweiten 7660, sowie eine 
Lötbrücke. Vielleicht kann man damit was anfangen.

Ansonsten sind die Displays zwar schön groß, aber so eigentlich nicht zu 
gebrauchen.

Und zurückschicken geht natürlich auch nicht, weil man ja eine 
Steckerleiste oder Kabel anlöten muss, um rauzufinden dass es Schrott 
ist.

Ich hätte ja vermutet, dass der Zeilentreiber KS0107 einfach bißchen 
schwach für 3 x 64 Pixel pro Zeile ist, aber der Effekt ist der gleiche, 
wenn man nur 2 der 3 Spaltentreiber einschaltet.

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Hallo,

habe das Display auch gerade am Start und kann die Kontrastprobleme 
nachvollziehen. Allerdings habe ich einen Ansatz gefunden, wie man 
diesen Effekt minimieren kann. Ersetzt R8:56kOhm durch 82kOhm. Dies 
reduziert die Taktrate des Zeilentreibers und somit werden auch die 
Wischeffekte reduziert. Bei Bedarf kann man R8 noch hochohmiger 
gestalten, solange bis das Display zu flimmern beginnt.
Optimalen Kontrast bietet das Display übrigens bei Betrachtung aus der 
"6-Uhr-Position".

von Gero N. (geronimo76)


Lesenswert?

es ist zwar mein erstes GLCD aber dennoch kann ich sagen, für den preis 
bin ich zu frieden (7 €) ...

die größten hürden konnte ich nun auch bewältigen, und fast alles klappt 
(grafiken / text ect...)

nur das auslesen des Rams bereitet mir noch sorgen. ich benötige, um 
einen ladebalken mit integrierter textanzeige realisieren zu können, 
eine brauchbare read routine ... das Datenblatt gibt leider nicht viel 
infos her und getestete routinen aus anderen GLCD projekten / libs 
funktionieren nicht.

hat jemand erfolgreich die daten asu dem GLCD ram lesen können?

Meine aktuelle vorgehensweise:

RS + RW auf High
chip auswählen
einmal E togglen ( -> 1 -> 0)
byte lesen
nochmal E toggeln
nochmal byte lesen

laut datenblatt muss man 1x dummy lesen ,, leider bekomme ich als 
ergebnis immer das selbe raus (0x7D), egal welche page und y-pos ich 
wähle

von Timm T. (Gast)


Lesenswert?

Mal die Wartezeiten zwischen RS - En ein - En aus verlängert?
Mal probiert, die Daten bißchen später auszulesen?

Im Datenblatt sind da bestimmte Zeiten vorgegeben, die man warten muss.

Mal was anderes: Prinzipiell beim Beschreiben von GLCD, sollte man das 
Busy-Flag auslesen oder die Daten einfach zeitkonstant senden? Kann es 
sein, dass das Auslesen des Busy-Flag durch den zusätzlichen Zugriff 
länger dauert, als wenn die Daten kontinuierlich mit Pause geschrieben 
werden?

von Gero N. (geronimo76)


Lesenswert?

bei den wartezeiten hab ich schon von 2µs - 40ns alles probiert
busy lese ich nur vor dem schreiben

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Timm Thaler schrieb:
> Mal was anderes: Prinzipiell beim Beschreiben von GLCD, sollte man das
> Busy-Flag auslesen oder die Daten einfach zeitkonstant senden? Kann es
> sein, dass das Auslesen des Busy-Flag durch den zusätzlichen Zugriff
> länger dauert, als wenn die Daten kontinuierlich mit Pause geschrieben
> werden?

Grundsätzlich kann man auch ohne Busy arbeiten. Da jedoch jedes LCD mit 
einer etwas anderen Taktrate arbeitet und die Busy-Zeiten dadurch 
ebenfalls etwas variieren, muss man genug Reserve einplanen, wenn man 
ohne Flagabfrage schreibt. Daher wird dies etwas langsamer sein. Im 
Grenzbereich sind beide Verfahren etwa gleich schnell. Ohne 
Busyflagabfrage braucht man etwas weniger Code. Außerdem kann man im 
Write-Only-Mode das Display über Schieberegister betreiben, wenn man 
nicht genügend Pins am Controller frei hat.

Gero Nimo schrieb:
> hat jemand erfolgreich die daten asu dem GLCD ram lesen können?
>
> Meine aktuelle vorgehensweise:
>
> RS + RW auf High
> chip auswählen
> einmal E togglen ( -> 1 -> 0)
> byte lesen
> nochmal E toggeln
> nochmal byte lesen

Sollte funktionieren. Schaltest Du auch die Pins im Controller um? Liest 
Du das PIN-Register (nicht PORT)? Die Daten sind übrigens zu Lesen, wenn 
E das 2. Mal high ist.

von Gero N. (geronimo76)


Lesenswert?

Problem eliminiert :)

hatte eine doppel-deklaration des RS pins (was bei einigen auch als DI 
beschrieben ist) damit ist er wohl beim lesen nicht zurecht gekommen, 
beim schreiben war das "störend"
1
char data_read(void)
2
  {
3
  unsigned char zustand;
4
  busy();
5
  glcd_tris = INPUT;
6
  RW = 1;
7
  DI = 1;
8
  
9
  e_togg();
10
  delay_us(2);
11
  E = 1;
12
  zustand = BSY;                    //BSY => #define BSY PORTD
13
  E = 0;
14
  glcd_tris = OUTPUT;
15
  return zustand;
16
  }

von Dirk S. (distu16)


Lesenswert?

Falls es noch von Interesse ist, unter
http://www.jrdlcd.com/uploadfile/2011050918255099096.pdf
findet man ein Datenblatt aus dem auch die Polarität der CS Signale 
eindeutig ersichtlich ist.

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Man kann auch die Pins der Chips auf dem Board zählen. Wenn man sich das 
Pinning vom KS0108 ansieht, wird man feststellen, dass die negierten 
CS-Pins angeschlossen sind. Man könnte aber auch den Anwendern glauben, 
die das Display schon erfolgreich getestet haben ;-)

von Karl-Anton D. (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

mit Interesse habe ich das Thema verfolgt und bin auch selber aktiv 
geworden. Das Foto zeigt mein Display angeschlossen an ein Pollin 
Evaluationsboard, das Programm beruht auf der Library von 
http://en.radzio.dxp.pl/ks0108/ und ist auf die 192 Spalten und den 
Atmega16 mit 16 MHz angepaßt. Mein main.c entstammt dem Beispiel für den 
STM32 MCU auf der gleichen Homepage und ist etwas angepaßt und um die 
Grafikaufrufe erweitert. Der Vogel ist das Wappentier von meinem 
Heimatdorf und 16x16 Pixel groß. Da dies bisher meine einzige Anzeige 
ist, konnte ich noch keine Kontrastprobleme feststellen.

Pinbelegung Display/ATMEGA16:
1  GND
2  +5V
3  Schleifer von Poti zwischen +5V und Vee (Pin 19 angeschlossen)
4  PB0 (D/I bzw RS
5  PB1 (RW)
6  PB2 (E)
7  PD0 (DB0)
...
14 PD7 (DB7)
15 PB5 (CS1)
16 PB4 (/RST) und 4,7k an GND (disabled Display beim Programmieren)
17 PB3 (CS2)
18 PB6 (CS3)
19 Vee s. oben
20 über 8 Ohm + Schalter mit +5V verbinden

Bei der Anpassung sind folgende Stolpersteine zu beachten:
font.h : Kommentar löschen bei #include und PROGMEM (8/16 Bit Struktur)
KS0108 : 128 -> 192
KS0108-AVR.c : Anzahl der asm("nop"); entsprechend den MHz

von Hans B. (hans_b92)


Lesenswert?

Wäre jemand so freundlich und könnte seine "Ansteuerung" (in C 
vielleicht?) kurz hier als Code posten? Ich verzweifle gerade mal wieder 
an dem Ding und versuche Fehlerquellen zu eliminieren.

Vielen Dank

von Karl-Anton D. (Gast)


Angehängte Dateien:

Lesenswert?

Hallo Hans,

um zu helfen anbei mein komplettes Verzeichnis zum obigen Foto gezipt. 
Achtung: Mein C-Erstlingswerk in Arbeit mit dem Ziel, die Ansteuerung zu 
verstehen und das Display zu testen. Nur zur privaten Information!

Karl-Anton

von jarod (Gast)


Lesenswert?

Ich kann das zuletzt gesagt bestätigen. Die CS-Signale müssen invertiert
werden. Wenn man für CS1 und CS2 je 1/4 7400 verwendet und CS3 unbelegt
 läßt, kann man das Dsiplay in jeder Schaltung für KS0108-Displays 
verwendet werden.
(getestet an einem einfachen Oszi mit dem Display) :)

Gruß, Jarod

von Hans B. (hans_b92)


Lesenswert?

Lieber Karl-Anton,

herzlichen Dank für die Datei. Ich werde heute Abend oder morgen mal 
deinen Code flashen.

VIele Grüße
Hans

von Timm T. (Gast)


Lesenswert?

Das sieht ja gut aus. Da werd ich wohl doch noch mal bißchen mit dem 
Display rumspielen...

von Karl-Anton D. (Gast)


Angehängte Dateien:

Lesenswert?

Liebe Display-Freunde,
da sich hier schon lange nichts mehr getan hat, hier ein Foto und eine 
Zusammenfassung meiner Aktivitäten um etwas Mut zu machen. Von 
Kontrastproblemen habe ich bei meiner Entwicklung nichts gemerkt, sicher 
kann man mit falsche Ansteuerung auch etwas falsch machen.

Long time Oszilloskop with LCD-Display 64x192 Pixel
===================================================
Der Anfang zu meinem Scope mit LCD-Display war der Artikel
http://www.serasidis.gr/circuits/AVR_oscilloscope/avr_oscilloscope.htm
Dazu entstand eine Platine mit zusätzlichem per Relais im Bereich x1 bis 
x100 einstellbaren Vorverstärker. Beim Aufspielen der Software-Version 
1.01. und Verstehen der für mich neuen Spache C zeigte sich dann bald, 
dass alles ohne Timer nur mit Delays im Hauptprogramm ablief. Es gab nur 
eine Timing-Frequenz und die Erweiterungsmöglichkeiten waren auch stark 
eingeschränkt.

Der neue Ansatz, diesmal mit der Bibliothek (für 6x128 und 64x192 LCD) 
nach http://en.radzio.dxp.pl/ks0108/ (siehe oben) begann mit einer 
kompletten universellen Grafikansteuerung und wurde von mir um die Scope 
Funktionen ergänzt. Grundlage für das Timing ist ein IRQ alle 10us bei 
16 MHz Quarz. Über Zähler davon abgeleitet wird die variable 
Timing-Einstellung von 20us/Skt bis 200min/Skt (> 24 Std gesamt) und dem 
dazugehörenden ADC Triggerzeitpunkt. Ebenso abgeleitet werden die 
Display-Zeit (0,5sec) und das Delay für die Tastaturentprellung nach 
http://jump.to/fleury. In der „nicht-IRQ-Zeit“ laufen die restlichen 
Programme wie z.B. Tastenauswertungen und Display-Anzeige im 
main-Programm.
Die Entwicklung erfolgt wie gezeigt auf einem 64x192 Display. Damit ist 
im rechten Drittel Platz für Testausgaben zur Fehlersuche.

Folgende Funktionen sind bisher vorhanden (Werte pro 1Skt = 10Pixel):

Eingangsspannung: 5mV, 10mV, 25mV, 50mV, 100mV, 250mV, 500mV(ss)
Timing: 200usec, 500usec, 1msec, … 10min, 20min, 50min, 100min, 200min
Trigger: Level digital einstellbar 0..64 – weitere Varianten in Arbeit
Hilfreich wäre sicher auch eine RS232 Ausgabe.
Bei hohen Frequenzen wird die Messung als „on shot“ auf dem Display 
angezeigt, bei langsamen jeder Pixel sofort nach der Messung.
Alle Zahlenwerte werden am rechten Bildrand angezeigt und bei Änderung 
aktualisiert. Der Inhalt der unteren Zeile ist variabel und abhängig von 
jeweiligen Modus.

Das Programm ist in mehrer *.c und *.h aufgeteilt und bedarf sicher nach 
Fertigstellung einer Bereinigung.
Falls aus dem ganzen was Komplettes wird, versuche ich es bei einer 
Fachzeitschrift unterzubringen, andernfalls werde ich es im Forum 
posten.

Karl-Anton

von Timm T. (Gast)


Lesenswert?

Sieht gut aus. Kannst Du bitte ein Foto von der Rückseite des Displays 
machen? Ich würde gern mal die verwendeten Widerstände vergleichen.

von Karl-Anton D. (Gast)


Angehängte Dateien:

Lesenswert?

Hallo Timm,

mit Lampenlicht gab es gestern nicht die erforderliche Auflösung. Zum 
Glück scheint heute die Sonne!
Was ist übrigens dein Problem?

Karl-Anton

von Werner F. (frewer)


Lesenswert?

Hallo Karl-Anton,

mit Deinem Testbeispiel funktioniert mein Display auf Anhieb.

Das Programm von "radzig" habe ich noch nicht durchgearbeitet, aber der 
Effekt ist prima (es fehlt zwar die senkrechte Linie rechts) und mit dem 
Kontrast gibt es keine Probleme.
Nun wollte ich die CS Anschlüsse für die 3 Treiber fest auf GND legen 
(Einsparen von Port-Anschlüssen), bekomme dann aber eine wilde 
Überlagerung der gesamten Anzeige. Gibt es eine Erklärung, dass die CS 
Anschlüssen bei der Befehlsübergabe stets geschaltet werden müssen?
Beim Pollin Graphic Display ALPS LSU7S1011A mit dem SED 1530 Controller 
habe ich die CS-Anschlüsse einfach auf GND gelegt und habe ein perfektes 
Bild.

mfG
frewer

Ps: Zu was dient eigentlich der vorgesehene aber nicht bestückte Q1? 
Leider habe ich keinen ME7660 und weiß auch nicht, wo man ihn beschaffen 
kann. An seinem Ausgang hängt ja der Kollektor eines Transistors usw. 
Also schließe ich daraus, dass zusätzliche Möglichkeiten im Display 
stecken. Hat da schon jemand etwas herausgekriegt?

von spess53 (Gast)


Lesenswert?

Hi

>Nun wollte ich die CS Anschlüsse für die 3 Treiber fest auf GND legen
>(Einsparen von Port-Anschlüssen), bekomme dann aber eine wilde
>Überlagerung der gesamten Anzeige. Gibt es eine Erklärung, dass die CS
>Anschlüssen bei der Befehlsübergabe stets geschaltet werden müssen?
>Beim Pollin Graphic Display ALPS LSU7S1011A mit dem SED 1530 Controller
>habe ich die CS-Anschlüsse einfach auf GND gelegt und habe ein perfektes
>Bild.

Dein ALPS-Display hat einen Controller mit mehreren CS-Anschlüssen. 
Das andere drei Controller mit je einem CS-Anschluss.

MfG Spess

von Hans B. (hans_b92)


Angehängte Dateien:

Lesenswert?

Moinsen liebe Alle,

ich hab die Test-Library von Karl Anton D. mal geflasht und bekomme 
leider keine Anzeige. Die Dateien hänge ich an. Betrieben wird das LCD 
mit einem Atmega32 (im AVR Studio so angegeben) und nem 8MHZ Quarz. Die 
"nops" habe ich auf die Megaherzzahl angepasst. Hat irgendwer einen 
Tipp?

Beschalten ist es, wie von Karl Anton beschrieben. Mit Regulierung des 
Potis sehe ich auch die Pixelstruktur des LCD (-> 
Kontrastspannungsaufbau tut) - jedoch leider nicht den erhofften Text.

Im AVR-Studio sehe ich die "graphic.c", "KS0108.c", "KS0108-AVR.c" und 
"main.c" als Source Files. Die includes werden meinem Verständnis nach 
ja im Sourcecode selber gemacht. Oder muss ich für solche Includes noch 
weitere Einstellungen vornehmen?

Für Troubleshooting-Tipps bin ich dankbar.

Viele Grüße

von Hans B. (hans_b92)


Lesenswert?

Nachtrag: Wenn ich in der main in die Schleife nach der Initialisierung 
und dem ganzen Gemale usw. ne LED blinke, dann zeigt sich, dass die 
Schleife erst nach ca. 4-5 Sekunden aufgerufen wird. Ist das normal für 
die Initialisierung?

von Carsten M. (carsten_m)


Lesenswert?

Hallo Hans,

ich versuche derzeit ebenfalls das LCD anzusteuern und scheitere bisher. 
Den Aufbau habe ich ähnlich der Beschreibung oben. Bin mir bislang 
unsicher ob es ein Hard- oder Softwareproblem ist. Ich werde mal deine 
Dateien flashen und berichten ob es dann geht.

von Werner F. (frewer)


Lesenswert?

Hallo,

ich kann Euer Problem nicht nachvollziehen. Ich habe den ZIP-File von 
Karl-Anton D. runtergeladen und entzippt. Dann mit Studio4 ein Projekt 
im "entzppten" Ordner erstellt, die Ports an meine Konfiguration 
angepasst und das Programm (3* xx.c und 3* xx.h + 1* xx.txt) mit 
Studio4(WINAVR) compiliert. Den hex-File habe ich mit Ponyprog in den 
ATMEGA32 geladen.
Das Programm lief auf Anhieb. Am Display habe ich mittlerweile den 
RESET-Pin mittel 10kOhm nach Vcc gelegt (wird nicht gebraucht).
Habe mittlerweile auch etwas herumgespielt und alles läuft prima.

Also viel Erfolg. Hoffe doch nicht, dass die Displays mit gleicher 
Bezeichnung unterschiedlich sind. Interessant allerdings ist, dass 
offenbar die Ansteuerung der Controller ks0108 in den verschiedenen 
Displays unterschiedlich ist (zB Pollin DM1264A und Pollin TG12864B). 
Versuche zZt ein Programm mit Display TG12864B auf DM1264A umzuschreiben 
= nicht ganz einfach.

mfG
frewer

von Hans B. (hans_b92)


Lesenswert?

Hallo,

@Carsten: ja, flash doch mal und berichte dann.

@frewer: Um wirklich alle Fehler auszuschließen (softwareseitig) habe 
ich dein Vorgehen nochmal kopiert:

AVRStudio4, öffnen der .aps des entzippten Ordners. compilieren aus:

main.c
KS0108.c
KS0108-AVR.c
graphic.c

die header werden (ohne mein zutun, denke ich richtig?) per

#include "KS0108.h"
#include "graphic.h"
#include "font5x8.h"

eingebunden. Das vogel.txt füge ich über Rechtsklick "Other files" -> 
Add existing files hinzu.

Ich habe die Anzahl der asm("nop"); auf 8 verändert (passend zum 8Mhz 
Quarz - oder brauchts da aus Tempogründen 16Mhz?) und noch in der config 
selber auf Atmega32 gestellt und 8000000 Hz als Takt angegeben.

Anschließend compiliert alles ohne Probleme. Flash nun noch per AVR 
Studio.

Ich hab den Reset wie du mal auf Vcc über 10kOhm gezogen, hat aber auch 
nichts verändert.

Spricht das eher für ein Hardwareproblem?

Für Hinweise bin ich dankbar, langsam gehen mir die Ideen aus.

Beste Grüße
Hans

von Werner F. (frewer)


Lesenswert?

Hallo Hans,

Hans B. schrieb:
> Das vogel.txt füge ich über Rechtsklick "Other files" ->
> Add existing files hinzu.

Nicht nötig, da der Vogel bereits in font5x8.h eingebunden ist. Mach das 
mal wieder weg.

> Ich habe die Anzahl der asm("nop"); auf 8 verändert (passend zum 8Mhz
> Quarz - oder brauchts da aus Tempogründen 16Mhz?) und noch in der config
> selber auf Atmega32 gestellt und 8000000 Hz als Takt angegeben.

Ich habe in KS0108.h
#ifndef F_CPU
  #define F_CPU  8000000UL
#endif
eingefügt und in KS0108-AVR.c die Delay-Function umgeschrieben:
void GLCD_Delay(void)
{
 int x;
 for (x=1;x<=F_CPU/1000000;x++)
 {asm("nop");}    // 1 nop per MHz Quarz-Frequency
}

Aber das ist alles nicht kriegsentscheidend. Aus meiner Sicht hast Du 
einen Hardware-Fehler irgendwo.
Ich benutze den PORTD als Datenausgang, den PORTB als Steuerausgang.

Meine Verdrahtung in KS0108.h definiert:
#define KS0108_DATA_PORT  PORTD    // Data-Port D
#define KS0108_DATA_DIR    DDRD
#define KS0108_DATA_PIN    PIND

#define KS0108_CTRL_PORT  PORTB    // Controll-Port B
#define KS0108_CTRL_DIR    DDRB

#define KS0108_RS  (1 << 0)
#define KS0108_RW  (1 << 1)
#define KS0108_EN  (1 << 2)
//#define KS0108_RST  (1 << 3) // Reset = H wegen Widerstd gegen Vcc
#define KS0108_CS1  (1 << 4)  //  64x64
#define KS0108_CS2  (1 << 5)  // 128x64
#define KS0108_CS3  (1 << 6)  // 192x64

mfG
frewer

von Hans B. (hans_b92)


Angehängte Dateien:

Lesenswert?

Hallo,

ok, die Software habe ich auch weniger und weniger in Verdacht. Ich habe 
mal meine Beschaltung als Plan erstellt. Siehst Du da evtl. einen 
Fehler? Versorgt wird die Schaltung über den 5V-Aufbau aus dem Tutorial.

Vielen Dank fürs drüberschauen,
Hans

von holger (Gast)


Lesenswert?

Du hast CS3 fest an 5V angeschlossen.

von Hans B. (hans_b92)


Angehängte Dateien:

Lesenswert?

Sorry, sah nur so aus, hab es mal besser dargestellt (hoffe ich ;) )!

von holger (Gast)


Lesenswert?

>Sorry, sah nur so aus, hab es mal besser dargestellt (hoffe ich ;) )!

Auf der rechten Seite hast du GND und AVCC nicht angeschlossen.

von holger (Gast)


Angehängte Dateien:

Lesenswert?

Probier meine HEX Datei mal.

von Hans B. (hans_b92)


Lesenswert?

Vielen Dank - bin leider physisch vom Versuchsaufbau heute und morgen 
getrennt, aber ich werde Mittwoch deine hex mal flashen.

von Werner F. (frewer)


Lesenswert?

Hallo Hans,

nimm doch mal die Beleuchtung vom ATMEGA weg. Meines Erachtens zieht die 
viel Strom. Ich habe einen 7805 am ATMEGA, der heiß wird, wenn ich ihn 
für die Beleuchtung missbrauche. Dann prüfe auch mal die Programmierung 
der Fuse-Bits (immer wichtig) und natürlich die Konfiguration in der 
ks0108.h.

Wenn alles stimmt, muss das Display mit dem Programm von Karl-Anton D. 
funktionieren. Bei Änderungen am programm darauf achten, dass das 
Display in der Höhe nach Pages (8 Pixel) organisiert ist und auch so nur 
beschrieben werden kann (sitze schon 3 Tage an einem Programm bis ich 
diesen Punkt entdeckt habe).

Viel Glück
frewer

von Hans B. (hans_b92)


Lesenswert?

Liebe Alle,

ich hab die hex von Holger geflasht, leider gleichbleibende 
Anzeigelosigkeit.  Habe mittlerweile auch GND und AVCC (rechtsseitig) 
angeschlossen und nen Kondensator zwischengehängt. Testweise habe ich 
auch die Beleuchtung abgehängt.


Hat noch jemand einen Vorschlag zur Fehlersuche? Muss ich langsam einen 
Hardwaredefekt in Betracht ziehen?

Die Kontrastspannung etc scheint ja zu funktionieren. Bei Regulierung 
des Potis kann ich die Pixel sehen.

Viele Grüße
Hans

von Werner F. (frewer)


Angehängte Dateien:

Lesenswert?

Hi Hans,

bin verwundert, denn bei mir hat es auf Anhieb geklappt. Mit einem 
Oszillographen könntest Du mal die CS0..3 Leitungen prüfen. Die Signale 
sind zunächst H, zeigen dann Impulse auf und gehen wieder auf H. Das 
gilt für alle 3 Leitungen (Grund: in der GoToXY Routine werden 
"Enable-/Disable-Befehle" an die Controller geschickt).
Denke bei Nutzung von Port PC an das JTAG-Fuse-Bit, sonst kommt da 
nichts).

Ansonsten habe ich dann auch keinen Rat mehr außer, dass Du halt doch 
noch einmal genau den Anschluss und dann auch die Daten in der ks0108.h 
kontrollierst. Ich würde auch bei dem Programm von Anton bleiben, weil 
das bestimmt funktioniert. (Siehe mein Aufbau im Anhang.)

weiterhin Mut und bisher konnte ich das Display nicht kaputtmachen - 
also gibt es Hoffnung -

mfG
frewer

von Karl-Anton D. (rentnerd)


Lesenswert?

Hallo,

die komplette Beschreibung mit der C-Software findet sich im Thread
Beitrag "Long time Oscilloskop with Atmega32 & LCD-Display 128x64 Pixel"
Long time Oscilloskop with Atmega32 & LCD-Display 128x64 Pixel

Für das (einseitige) Layout der Scope-Leiterplatte habe ich allerdings 
ein schmales Display 128x64 vorgezogen. Dann paßt es in mein Gehäuse
205x113x35mm (beides Pollin).

Karl-Anton

von Sascha F. (sascha_focus) Benutzerseite


Angehängte Dateien:

Lesenswert?

Hallo zusammmmen,

nun wollte ich das Display am PIC32 betreiben. Leider zeigt sich nichts 
auf dem Display. Nachdem ich nochmals die Verkabekung geprüft habe, habe 
ich mit dem Pickit mal versucht, heraus zu finden woran es hapert. Als 
Status kommt immer, Display nicht eingeschaltet....

Wenn ich zum Schluss die Chip's nochmals einschalte, kommt auch der Text 
auf dem Display. Nur 1. Treiber kommt nichts...
1
GLCD_Initialize();
2
GLCD_ClearScreen();
3
4
GLCD_GoTo(32,0);
5
GLCD_WriteString("+-------------------+");
6
GLCD_GoTo(64,1);
7
GLCD_WriteString("|     Universal     |");
8
GLCD_GoTo(64,2);
9
GLCD_WriteString("|   KS0108 library  |");
10
GLCD_GoTo(64,3);
11
GLCD_WriteString("|                   |");
12
GLCD_GoTo(64,4);
13
GLCD_WriteString("|  en.radzio.dxp.pl |");
14
GLCD_GoTo(64,5);
15
GLCD_WriteString("|  STM32 Cortex-M3  |");
16
GLCD_GoTo(64,6);
17
GLCD_WriteString("|  microcontrollers |");
18
GLCD_GoTo(64,7);
19
GLCD_WriteString("+-------------------+");
20
  GLCD_WriteCommand(0x3f, 0);  // <--- Text erscheint nun!
21
  GLCD_WriteCommand(0x3f, 1);
22
  GLCD_WriteCommand(0x3f,2);


Ich habe als Vorlage dies genommen: http://en.radzio.dxp.pl/ks0108, wie 
die meisten hier. Die Pin's sind angepasst. Anbei mal mein Code. So 
langsam verzweifle ich, selbst ein 128x64 hat diese Probleme. Am PIC18 
hatte es funktioniert.

Gruß Sascha

von Sascha F. (sascha_focus) Benutzerseite


Lesenswert?

Hallo,

einen kleinen Fortschritt gibt es nun. Habe den Code aus 
Beitrag "Re: LCD DM19264A (KS0108B Controller)" genommen und andere 
Pin's des PIC32 genutzt. Nun kommt das Bild, aber nur wenn ich am Ende 
wieder initialisiere:
1
int main(void)
2
{
3
  unsigned char i;
4
5
SYSTEMConfigPerformance(GetSystemClock());        // Enable optimal performance
6
  mOSCSetPBDIV(OSC_PB_DIV_1);            // Use 1:1 CPU Core:Peripheral clocks
7
  mJTAGPortEnable(0);
8
PMMODE = 0; PMAEN = 0; PMCON = 0;
9
10
  AD1PCFG=0xFFFF;
11
12
GLCD_Initalize();
13
14
15
GLCD_ClearScreen();
16
17
GLCD_GoTo(0,0);
18
GLCD_WriteString("+----------------+-------------+");  // 32 Letter x 6 Pixel
19
GLCD_GoTo(0,1);
20
GLCD_WriteString("|    Universal   |");
21
GLCD_GoTo(0,2);
22
GLCD_WriteString("| KS0108 library |");
23
GLCD_GoTo(0,3);
24
GLCD_WriteString("|                |");
25
GLCD_GoTo(0,4);
26
GLCD_WriteString("|en.radzio.dxp.pl|");
27
GLCD_GoTo(0,5);
28
GLCD_WriteString("| ATMEGA16/32++  |");
29
GLCD_GoTo(0,6);
30
GLCD_WriteString("|microcontroller |");
31
GLCD_GoTo(0,7);
32
GLCD_WriteString("+----------------+-------------+"); 
33
GLCD_Bitmap((char *) (int)Vogel,132,11,16,16);  //(char * bmp, unsigned char x, unsigned char y, unsigned char dx, unsigned char dy)
34
35
while(1)
36
    {
37
38
39
  }
40
    return 0;
41
}

Erst dann siht man das entsprechende auf dem Display, sonst nur extrem 
kurz. Weiß echt nicht, wo ich noch weiter suchen kann.

Gruß Sascha

von Werner F. (frewer)


Lesenswert?

hi Sacha,

also mit dem oben dargestellten Programmteil kann man natürlich nichts 
anfangen. Wichtig sind die Routinen, die das Display aktivieren und 
bedienen. Habe Deine Routine zwar angesehen, das reicht aber nicht, weil 
Du einen PIC und die Zusatzsoftware benutzt und nicht einen ATMEL wie 
ich. Mich wundert z.B., dass der Text erscheint aber sofort wieder 
verschwindet. Das lässt doch darauf schließen, dass Deine Routine einen 
Löschbefehl beinhalten (zB Reset Display). Ich habe den Reset-Pin des 
Displays einfach über 10k an +5V gehängt. Damit gibt es schon mal keinen 
Resetfehler. Als nächsten Schritt ist zu schauen, ob ein softwaremäßiges 
Löschen des Displays erfolgt. Das wäre zwar denkbar aber es ist eher 
unwahrscheinlich.

Ich musste an den Routinen von radzio ein bisschen fummeln, damit alles 
lioef, aber weiß im Moment die Details nicht mehr. Falls Dich meine 
Änderungen interessieren, dann schicke ich die Dateien KS108.c und 
KS108.h gerne per mail mal zu.

mfG
frewer

von Sascha F. (sascha_focus) Benutzerseite


Angehängte Dateien:

Lesenswert?

Hallo,

danke für deine Antwort. Also, ich habe nichts geändert bis auf Pin 
Konfiguration. Reset wird zwar Hardwaremäßig angesteuert, aber permanent 
auf 1. Anbei mal das Projekt.

Gruß Sascha

von Sascha F. (sascha_focus) Benutzerseite


Lesenswert?

Hallo zusammen,

nachdem das Display wunderbar am PIC32 funktioniert, würde ich gerne 
auch größere Font's nutzen, anstatt nur den 5x7. Nur verstehe ich die 
folgenden Zeilen nicht:
1
void GLCD_WriteChar(char charToWrite)
2
{
3
int i;
4
charToWrite -= 32; 
5
for(i = 0; i < 5; i++) 
6
   GLCD_WriteData(GLCD_ReadByteFromROMMemory((char *)((int)font5x8 + (5 * charToWrite) + i))); 
7
GLCD_WriteData(0x00);
8
}

So gut bin leider noch nicht in C. Mir ist nicht klar, wie ich es soweit 
abändere, das ich Font's aus 
Beitrag "LCD Schriftarten ( Fonts in veschiedenen Größen )"
nutzen kann.

Gruß Sascha

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.