Forum: Mikrocontroller und Digitale Elektronik T6963c Display Problem


von Rene F. (Gast)


Angehängte Dateien:

Lesenswert?

Hallo..
ich komm einfach nicht weiter und hab nun auch schon fast
das ganze Forum hier durchgelesen - scheitere aber daran,
dass irgendwie alles richtig scheint, mein Display aber
weiss bleibt, der Reset passiert (kurz eine weisse Linie),
aber danach alles hell. Koennt ihr mir helfen?
also:
Ich hab ein 128x64 Display (ZL12864C2 von Zhongli) [blau/weiss]
mit T6963c-Controller und einen PIC16F877 (siehe Sourcecode, den
ich an einen Code hier aus dem Forum angelehnt habe).
Angeschlossen ist es an PORTA [die Steuerleitungen] und PORTC
[die Datenleitungen].

Das Display selbst hat folgenden Anschluss:
1 = Frameground
2 = GND
3 = Vcc (+5V)
4 = Vee (NC when single +5V in use)
5 = /WR
6 = /RD
7 = /CE
8 = C/D
9 = /RST
10-17 = DB0..DB7
18 = FS
19 = LED A
20 = LED K

Ich habe Pin4 zunaechst nicht angeschlossen, denn scheinbar
"braucht" das Display die Vee nicht (es liegen -5V an diesem
Pin an, wenn ich +5V an Vcc lege).
Der Reset-Eingang ist ueber eine RC-Schaltung realisiert.

Nun soll mein Programm das Display initialisieren und dann ein
X ausgeben und mit blinkendem Cursor auf mich warten...
ich sehe kurz, dass das Display ein wenig flackert [wenn man es
schraeg haellt] aber mehr auch nicht. Danach ist es wieder strahlend
weiss und gut.

Stelle ich das Programm ein bisschen um, so dass er permanent
einen Buchstaben ausgibt

> mainlp:
>  func disp_writeChar, #'X'
>  goto mainlp

dann fuellt sich das Display auch mit X'en, die aber sehr sehr schwach
gegenueber dem weissen Hintergrund dunkler sind und das Display
zeigt auch an jeder Text-Position dieses X. Der Cursor blinkt dann
allerdings endlich (leider auch sehr sehr schwach)

Tja und zu guter letzt; ich hab das Display auch an den Parallelport
meines Rechners angeschlossen und gehofft, dass eins der LCD-Programme
es zum Laufen bekommen, aber auch hier tut sich dabei mal genau 
garnichts
ausser, dass das Display auch weiss wird. [hier hatte ich nun auch
mal -12V an das Vee gelegt(aus dem Rechnernetzteil), ohne dass sich
irgendwas veraendert hatte]

Brauche da mal einen Tip. Ist das Display kaputt oder gibts noch irgend-
eine Hoffnung?

Rene.

von Rene F. (fook)


Lesenswert?

PORTB ist es natuerlich an dem die Datenleitungen angeschlossen sind.

von holger (Gast)


Lesenswert?

Hast du ein Datenblatt von dem Teil ?
Ich vermute das da ein Poti nach GND oder VCC
angeschlossen werden muss. Wie willst du sonst
den Kontrast einstellen. Der ist bei dir scheinbar
falsch.

>hier hatte ich nun auch
>mal -12V an das Vee gelegt

Autsch !

von Rene F. (fook)


Angehängte Dateien:

Lesenswert?

hier das Datenblatt.. (dieses hatte mir der Verkaeufer geschickt)

na gut, sollten dann wohl am Vee wohl doch nur max. -7V angelegt
sein, aber irgendeine "Reaktion" des Displays hatte ich schon
erwartet - oder "funktioniert" der Rest des Displays etwa garnicht
wenn Vee nicht passt?
(und warum sagt das Datenblatt dann [NC when single +5V in use])

von Rene F. (fook)


Angehängte Dateien:

Lesenswert?

hier noch das original DB vom Hersteller [leider kann ich nicht viel 
Chinesisch, aber die Angaben kann man ja lesen und passen zum anderen 
DB]

von holger (Gast)


Lesenswert?

Hat das Ding ein Poti auf der Platine ?
Irgendwie muss der Kontrast doch einstellbar sein.
Im Datenblatt steht dazu einfach nichts.

>oder "funktioniert" der Rest des Displays etwa garnicht
>wenn Vee nicht passt?

Doch das funktioniert auch ohne VEE. Man sieht halt nicht viel ;)

>(und warum sagt das Datenblatt dann [NC when single +5V in use])

Also wenn an VEE eine negative Spannung raus kommt
ist der Wandler schon Onboard. Also besser keine externe
negative Spannung einspeisen.

von Michael U. (amiga)


Lesenswert?

Hallo,

LCD-Datenblätter haben oft die unangenehme Angewohnheit, nicht genau zum 
vorhandenen Display zu passen...

Es scheint (mindestens) 2 Varianten zu geben. Die 5V only Version 
erzeugt offenbar Vee selbst, meist daran zu erkennen, daß irgendwo 
Ladungspumpen (oft die berühmten 7660) auf der Leiterplatte zu finden 
sind und oft auch dort ein Einstellregler für den Kontrast.
Bei dieser Version ist dann Pin 4 nicht beschaltet.

Ansonsten eben die übliche Version: Einstellregler ca. 20k zwischen GND 
und -10...-15V und dann Kontrast einstellen.

Maximalspannung für Vee ist mit -30V, also -25V an Vee angegeben, Deine 
-12V sollten also nicht geschadet haben.
Ich hatte schon Displays mit dem T6963C, die recht empfindlich auf die 
Kontrasteinstellung reagiert haben, zuviel Vee erzeugte erst ein 
negativ-ähnliches Bild, noch mehr ergab keine erkennbare Anzeige mehr.

Wenn Du irgendwas erkennen konntest, ist zumindest die Ansteuerung nicht 
ganz falsch.

Gruß aus Berlin
Michael

von Rene F. (fook)


Lesenswert?

Hallo

@Michael: ja, der 7660 ist drauf, aber kein Poti :(

@holger: Eben dass im Datenblatt so garnichts zu Beschaltung zu finden
ist, hatte mich ja auch gestoert und deshalb dachte ich, T6963c ist 
T6963c.

Leider tut sich nicht wirklich viel - ich hatte nur festgestellt, dass
der Reset das Display auch wirklich bis auf eine helle Linie dunkel
schaltet (so wie das sein soll [huebsch dunkelblau])..
Ziehe ich den /RESET dann aber wieder auf 1, wird das Display weiss und
zeigt das beschriebene Verhalten...
Am Anfang hatte ich noch gedacht, dass vielleicht die Pinbelegung nicht
passt, aber die entsprechenden Pins des Anschlusses gehen auch an die
richtigen Beinchen des T6963...

von holger (Gast)


Lesenswert?

>@Michael: ja, der 7660 ist drauf, aber kein Poti :(

Belaste VEE doch mal vorsichtig, z.B. 10k von VEE nach GND,
und schau mal ob sich was tut. Poti wär natürlich günstiger.

von Michael U. (amiga)


Lesenswert?

Hallo,

T6963c ist auch T6963c... Nur, das ist nur der Controller, der das 
Interface zwischen dem µC und der LCD-Ansteuerung erledigt. Dazu kommen 
je nach Displaygröße noch Zeilen- und Spaltentreiber, Spannungserzeugung 
(meist ein 4-fach OPV mit einer Widerstandskette an den Eingängen). Für 
Zeilen- und Spaltentreiber ist Vee die Betriebsspannung, Bezugspunkt ist 
dafür der +5V-Anschluß und gegen diesen ist sie negativ.
Wenn 7660 drauf sind, wird sie also auf dem Display selbst aus den +5V 
erzeugt.
Etwas eigenartig bleibt nur, daß es keine Einstellmöglichkeit gibt, der 
T6963c unterstützt da meines Wissens nach keine Softwarelösung.
Damit sollte also eigentlich der Kontrast richtig sein, nur dann wäre ja 
was zu sehen...

Das mit der Linie beim Reset ist normal, da läuft der Displayrefresh 
noch nicht, wenn der dann stabil ist, verschwindet diese.

Vee scheint ja bei Dir an der intern erzeugten Vee zu hängen (auch wenn 
"nicht angeschlossen" im Datenblatt steht...), sonst würdest Du dort 
nicht -5V messen.
Andererseits sind die -5V nach dem Datenblatt eigentlich etwas niedrig, 
als typisch ist 12,8V (-7,8V gegen GND) angegeben, daß würde auch eher 
zu meiner Erfahrung bei dieser Displaygröße passen.

Es müßten eigentlich auch 2x 7660 drauf sein, mit einem wären nur -5V 
möglich.

Gruß aus Berlin
Michael

von Rene F. (fook)


Angehängte Dateien:

Lesenswert?

ok.. hab euch mal 3 Bilder vom Display gemacht...
darauf erkennt man auch den Aufbau und die Anzeige des
Displays -
Ich werde mir morgen mal aus unserer Hardwarekiste ein paar
Potis suchen und den Vorschlag von holger testen.

Mal sehen, ob sich was tut.

von Rene F. (fook)


Lesenswert?

Also ich habe den Vorschlag von holger mal ausprobiert -
ein 10K-Poti zwischen -12V und dem Vee.

Geholfen hat es leider nicht, ausser, dass das Display ganz
weiss wird, wenn ich das Poti bei fast 0 Ohm habe :(

Bin richtig ratlos, denn es "veraendert" sich ueberhaupt
nichts, waerend man das Poti verstellt.
Habt ihr noch ein paar Vorschlaege, was man mit dem Display
anstellen kann?

Rene.

von Michael U. (amiga)


Lesenswert?

Hallo,

ich kann PIC-ASM nicht so toll lesen, nur AVR, Z80, 6502 und so, aber:

Statusmask ist bei Dir 0x51, wieso?

STA0 und STA1 sind die Flags für normales Read/Write-Busy, wäre also 
0x03.
alle anderen sind undefiniert wrnn normale Read/Write-Befehle geschickt 
wurden.

Für die Auto-Befehle sind STA2 und STA3 zuständig, da auch nur jeweils 
das eine Bit, welches für das angeforderte Kommando zuständig ist.

So am Rande: das Teil hat eine Busanbindug.
Grundstellung ist also WR, RD, CE auf H, Rest ist erstmal egal.
Wenn ich sowas mit Pin-Gewackel am AVR mache, halte ich mich zu meiner 
eigenen Übersicht immer an den "üblichen" Busablauf.

Zum Schreiben: Port auf Output (keine Ahnung, wie der PIC das macht)
Daten ausgeben
C/D setzen (hier min. 100ns Zeit bis ->)
CE auf L -> Jetzt ist der Baustein selektiert.
WR auf L (mindestens für 80ns)
WR auf H
CE auf H -> Chip ist deselectiert

Zum Lesen Port auf Eingang (keine Ahnung siehe oben ;)
C/D setzen (hier min. 100ns Zeit bis ->)
CE auf L-> Jetzt ist der Baustein selektiert.

Bei Busy-Wait hier die Schleife rum

RD auf L (hier min. 150ns Zeit bis ->)
Daten einlesen
RD auf H

Schleife Ende

CE auf H

Fertig.

So verliere ich nicht den Überblick und das ist z.B. auch die Abfolge 
bei MemoryMapped-Anschluß des Displays an einen µC.

Was mir noch auffiel: Du setzt OR-Mode aktiv, was hast Du eingeschaltet, 
Text- und Grafik oder nur Text?
Grafikspeicher und Textspeicher beim Init gelöscht?

Habe ich mir nicht weiter angeschaut, wegen PIC-ASM lesen können... ;-)

Gruß aus Berlin
Michael

von Rene F. (fook)


Lesenswert?

Hallo,

ja, Pic-Assembler ist doch ein wenig "anders" als Z80-Code :)

Meine Statusmaske wird in der Speicheradresse 0x51 gesichert,
aber fuer die Abfrage dann auf #0x03 gesetzt [wie du beschrieben
hast] - das sollte also schonmal passen.

Mein Pic wird mit 20Mhz getaktet, was bei einem internen
Prescaler von 1:4 einem Befehl pro 200ns entsprechen sollte.
Dh. ich muesste selbst ohne Warteschleifen/NOPs aukommen.

Die aktuellen Sequenzen fuer das Senden von Kommandos sieht so aus:

CD setzen
RD setzen
CE loeschen
WR loeschen
- 4x NOP [nur, damit alles auch wirklich ankommen kann]
WR setzen
CE setzen

Beim Senden von Daten wird lediglich CD auch noch geloescht und
nachher wieder zurueckgesetzt.

..
zum Modus: Hab den OR-Modus aktiviert, da ich auch gern Text und
Grafik-Modus gleichzeitig nutzen will - dafuer schreib ich am ende
der Initialisierung auch 0x9F als Displaymode.

Geloescht wird der Ram des Displays noch (!) nicht - hatte gehofft,
auch ohne das ein paar "sichtbare" Ergebnisse produzieren zu koennen.
Aber scheinbar werd ich darum nicht rundrumkommen...

von Michael U. (amiga)


Lesenswert?

Hallo,

ok, daß passt dann also soweit.

Wenn nach dem Init nur Grafik eingeschaltet wird, gibt es normalerweise 
mehr oder weniger zufällige Pixelmuster mit dem Ram-Inhalt nach PowerOn.
Das ist bei meinen Displays mit dem T6963C eigentlich ganz gut 
erkennbar, wenn man den Kontrast einstellt.

Irgendwie alles etwas seltsam...

Ich habe übrigens den Z80-Code aus dem T6963C-Datenblatt damals 1:1 
(naja, so wie nötig ;)) auf den AVR getragen und da hat sich mein erstes 
sofort gemeldet.

Gruß aus Berlin
Michael

von Anton (Gast)


Angehängte Dateien:

Lesenswert?

Hi
im Anhang ist ein funkt. Code
vielleicht vergleichst du die funnkt.

gruss Anton

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.