Forum: Mikrocontroller und Digitale Elektronik Probleme mit GLCD von Powertip (T6963C)


von Oliver F. (rocky)


Lesenswert?

Hi Leute,

ich arbeite nun seit ca 1 Woche an einem Display von Powertip aber komme 
einfach net weiter.

Bezeichnung: PG240128A

Ich schaffe es nicht etwas auf dem Display anzuzeigen. Ich habe auch 
keine weiteren Datenblätter, nur das von Toshiba zum T6963C und das von 
Powertip (nur eine Seite).

Ich habe alle hier veröffentlichen Source Codes getestet und alle 
Threats zu diesem Theam durchgelesen, leider ohne Erfolg. In einer Woche 
hat man halt viel Zeit ;)

Ich fang mal von vorne an, ich sehe wenn ich den Reset auslöse einen 
schwarzen waagerechten Balken, welcher sporadisch seine Position 
wechselt bei jedem auslösen. Und das wars auch schon, sobald ich den 
reset wieder weg nehme kommt nichts mehr ... Alle Signale kommen beim 
GLCD an und er antwortet anscheind auch mit dem Statusbyte ... zumindest 
empfange ich dieses. Meine Initroutine läuft auch ohne Probleme durch 
... wenn ich versuch einzelne Pixel zu schreiben oder Buchstaben, 
funktioniert nichts ... der Display bleibt immer leer.

Meine Taktfrequenz ist 175kHz ... und ich habe zusätzlich noch eine 
menge nop s eingefügt ... weil ich erst an ein problem mit dem timing 
dachte.

Der Diplay besitzt unteranderem auch noch einen weiteren Pin, der hier 
im Forum nie erwähnt wurde. MD2 ... habe damit auch schon rumgespielt, 
ohne Erfolg, im Datenblatt (wenn man das ding von Powertip so nennen 
darf) steht da nur "select number of columbs" ... laut T6963C kann man 
mit MD2,3 die Anzahl der Spalten festlegen. Jedoch geht MD2 nicht an den 
T6963C MD2 Pin ... aber eigentlich denke ich ist der Pin auch egal, der 
Display müsste trotzdem was anzeigen, wenn auch verschoben oder schief 
oder unlesbares zeug. aber meiner bleibt immer leer :(

Der Code ist von einem User, der auch Renesas nutzt ... vom Prinzip aber 
nicht anders als die Atmel.
1
 
2
void lcd_init(void)
3
        {
4
        unsigned int t;
5
6
        pd1  = 0xf8;            // Port 1 als Ausgang
7
        pd2  = 0x00;            // Port 2 als Eingang
8
//        pur1 = 0xff;            // Pull-Up's an
9
//        pur2 = 0xff;            // Pull-Up's an
10
  pu00 = 1;
11
  pu01 = 1;
12
  pu04 = 1;
13
        pu05 = 1;
14
15
        p1   = 0xf8;            // Port Pin's P1 auf High
16
        LCD_RESET = 0;          // Display Reset
17
            for (t=0; t<2000; t++);  
18
        LCD_RESET = 1;          // Display Reset fertig
19
20
        LCD_DATA = 0x00;        // Text Home Adress setzen
21
        lcd_send_data();        // Auf 0000H setzen
22
        LCD_DATA = 0x00;
23
        lcd_send_data();
24
        LCD_CMD = 0x40;
25
        lcd_send_cmd();
26
27
        LCD_DATA = 0x28;        // Text AREA Adress setzen
28
        lcd_send_data();        // 28H = 40 Zeichen 1EH = 30
29
        LCD_DATA = 0x00;
30
        lcd_send_data();
31
        LCD_CMD = 0x41;
32
        lcd_send_cmd();
33
34
        LCD_DATA = 0x00;        // Grafik Home Adress setzen
35
        lcd_send_data();        // Auf 0200H setzen
36
        LCD_DATA = 0x02;
37
        lcd_send_data();
38
        LCD_CMD = 0x42;
39
        lcd_send_cmd();
40
41
        LCD_DATA = 0x28;        // Grafik AREA Adress setzen
42
        lcd_send_data();        // 28H = 40 Zeichen 1EH = 30
43
        LCD_DATA = 0x00;
44
        lcd_send_data();
45
        LCD_CMD = 0x43;
46
        lcd_send_cmd();
47
48
        LCD_DATA = 0x02;        // Offset Pointer setzen
49
        lcd_send_data();
50
        LCD_DATA = 0x00;
51
        lcd_send_data();
52
        LCD_CMD = 0x22;
53
        lcd_send_cmd();
54
55
        LCD_CMD = 0x80;         // OR-Mode
56
        lcd_send_cmd();
57
    
58
        LCD_DATA = 0x01;        // Cursor Pointer setzen
59
        lcd_send_data();
60
        LCD_DATA = 0x01;
61
        lcd_send_data();
62
        LCD_CMD = 0x21;
63
        lcd_send_cmd();
64
65
        LCD_CMD = 0x9F;         // Text an Grafik an cursor an blinken an
66
        lcd_send_cmd();
67
68
  LCD_CMD = 0xA7;    // Cursor Pattern 8Line
69
  lcd_send_cmd();
70
    
71
        LCD_DATA = 0x00;        // Adress Pointer setzen
72
        lcd_send_data();        // 0000H
73
        LCD_DATA = 0x00;
74
        lcd_send_data();
75
        LCD_CMD = 0x24;
76
        lcd_send_cmd();
77
    
78
        lcd_clear_ram();        // zum Schluß noch das Ram des
79
        }                       // Display's löschen
80
81
void lcd_status(void)
82
        {
83
        pd2 = 0x00;             // Port 2 als Eingang
84
        LCD_CD = 1;             // Commando High
85
        LCD_RD = 0;             // Read Low
86
        LCD_CE = 0;             // Chip Enable Low
87
        asm ("NOP");        
88
        asm ("NOP");        
89
        asm ("NOP");        
90
         asm ("NOP");        
91
        asm ("NOP");        
92
        asm ("NOP");        
93
         asm ("NOP");        
94
        asm ("NOP");        
95
        asm ("NOP");        
96
        LCD_STATUS = LCD_PORT;  // Status lesen
97
        LCD_CE = 1;             // Chip Enable High
98
        LCD_RD = 1;             // Read High
99
        LCD_STATUS &= (0x03);   // Bits ausmaskieren
100
        }
101
102
void lcd_status_am(void)
103
        {
104
        pd2 = 0x00;             // Port 2 als Eingang
105
        LCD_CD = 1;             // Commando High
106
        LCD_RD = 0;             // Read Low
107
        LCD_CE = 0;             // Chip Enable Low
108
        asm ("NOP");        
109
        asm ("NOP");        
110
        asm ("NOP");        
111
        asm ("NOP");        
112
        asm ("NOP");        
113
        asm ("NOP");        
114
        asm ("NOP");        
115
        asm ("NOP");        
116
        asm ("NOP");        
117
        LCD_STATUS = LCD_PORT;  // Status lesen
118
        LCD_CE = 1;             // Chip Enable High
119
        LCD_RD = 1;             // Read High
120
        LCD_STATUS &= (0x08);   // Bits ausmaskieren
121
        }
122
123
void lcd_send_cmd(void)         // Commando an Display senden        
124
        {
125
            do
126
                {
127
                  lcd_status();
128
                }
129
            while (LCD_STATUS != 0x03);
130
        pd2 = 0xff;             // Port 2 als Ausgang
131
        asm ("NOP");        
132
        asm ("NOP");        
133
        asm ("NOP");        
134
         asm ("NOP");        
135
        LCD_PORT = LCD_CMD;
136
        LCD_CD = 1;             // Commando High
137
        LCD_WR = 0;             // Write Low
138
        LCD_CE = 0;             // Chip Enable Low
139
        asm ("NOP");        
140
        asm ("NOP");  
141
        asm ("NOP");        
142
        asm ("NOP");        
143
        asm ("NOP");        
144
         asm ("NOP");        
145
        asm ("NOP");        
146
        asm ("NOP");        
147
         asm ("NOP");            
148
        LCD_CE = 1;             // Chip Enable High
149
        LCD_WR = 1;             // Write High
150
        }
151
152
void lcd_send_data(void)         // Daten an Display senden        
153
        {
154
            do
155
                {
156
                  lcd_status();
157
                }
158
            while (LCD_STATUS != 0x03);
159
        pd2 = 0xff;             // Port 2 als Ausgang
160
        LCD_PORT = LCD_DATA;
161
        LCD_CD = 0;             // Daten Low
162
        LCD_WR = 0;             // Write Low
163
        LCD_CE = 0;             // Chip Enable Low
164
        asm ("NOP");        
165
         asm ("NOP");        
166
        asm ("NOP");        
167
        asm ("NOP");        
168
         asm ("NOP");        
169
        asm ("NOP");        
170
        asm ("NOP");        
171
        asm ("NOP");    
172
        asm ("NOP");          
173
        LCD_CE = 1;             // Chip Enable High
174
        LCD_WR = 1;             // Write High
175
        }
176
177
void lcd_send_data_am(void)         // Daten an Display senden
178
        {
179
            do
180
                {
181
                  lcd_status_am();
182
                }
183
            while (LCD_STATUS != 0x08);
184
        pd2 = 0xff;             // Port 2 als Ausgang
185
        LCD_PORT = LCD_DATA;
186
        LCD_CD = 0;             // Daten Low
187
        LCD_WR = 0;             // Write Low
188
        LCD_CE = 0;             // Chip Enable Low
189
        asm ("NOP");        
190
        asm ("NOP");        
191
        asm ("NOP");        
192
         asm ("NOP");        
193
        asm ("NOP");        
194
        asm ("NOP");        
195
         asm ("NOP");        
196
        asm ("NOP");    
197
        asm ("NOP");          
198
        LCD_CE = 1;             // Chip Enable High
199
        LCD_WR = 1;             // Write High
200
        }
201
202
void lcd_print( _far char * msg_string, char adress_h, char adress_l)
203
        {
204
        int i;
205
206
        LCD_DATA = adress_l;    // bergebene Adresse setzen
207
        lcd_send_data();        
208
        LCD_DATA = adress_h;
209
        lcd_send_data();
210
        LCD_CMD = 0x24;
211
        lcd_send_cmd();
212
        LCD_CMD = 0xB0;         // Auto Write Mode an (Auto Inkrement)
213
        lcd_send_cmd();
214
215
        for (i=0; msg_string[i]; i++)
216
                {
217
                lcd_send_str(msg_string[i]);
218
                }
219
        LCD_CMD = 0xB2;         // Auto Write Mode aus (Auto Inkrement)
220
        lcd_send_cmd();
221
        }
222
223
void lcd_send_str(unsigned char lcd_dat)
224
        {
225
        lcd_dat -= 0x20;        // 20h subtrahieren da Display nich ASCII
226
        LCD_DATA = lcd_dat;     // kompatibel
227
        lcd_send_data_am();     // Daten an Display senden
228
        }
229
230
void lcd_clear_ram(void)
231
        {
232
        unsigned int t;
233
        LCD_DATA = 0x00;        // int. Ram des Display's l?schen.
234
        lcd_send_data();        // laut Datenblatt des Herstellers 8kb
235
        LCD_DATA = 0x00;
236
        lcd_send_data();
237
        LCD_CMD = 0x24;
238
        lcd_send_cmd();
239
        LCD_CMD = 0xB0;         // Auto Write Mode an (Auto Inkrement)
240
        lcd_send_cmd();
241
            for (t=0; t<1000; t++)  //8192
242
            {
243
                LCD_DATA = 0x00;
244
                lcd_send_data_am();     // Daten an Display senden
245
            }
246
        LCD_CMD = 0xB2;         // Auto Write Mode aus (Auto Inkrement)
247
        lcd_send_cmd();
248
        }

von Michael U. (amiga)


Lesenswert?

Hallo,

so auf die Schnelle sieht es eigentlich ok aus.

MD2 ist mir bei meinen T6963C-Displays mehrere anderer Hersteller noch 
nicht begegnet.
Auf die Kontrasteinstellung reagiert es?
Scheint ja Vee selbst zu erzeugen und an 17 auszugeben.
Also hast Du vermutlich ja nur Einstellregler von Vee nach GND und 
Schleifer an V0?

Gruß aus Berlin
Michael

von Oliver F. (rocky)


Lesenswert?

Kontrast funktioniert, das kann ich zumindest wenn ich Reset auslöse 
testen udn auch verstellen :)

negativ Spannung erzeugt er selber ... und gibt er wie du schon sagtest 
noch zusätzlich nach draußen ...

Hat den sonst keiner eine Idee, was mein fehler sein könnte, oder hat 
jemand diesen GLCD schonmal benutzt?

von Oliver F. (rocky)


Lesenswert?

Ich weiß ... T6963C ist ein leidiges Thema ... aber ich würde mich 
trotzdem über ein paar Infos freuen ... falls es ncoh weiter hilft, ich 
habe mal die Statusbytes gespeichert und folgende Bytes bei der 
Initialiesierung empfangen:

0x2B
0xA3
0x0B
0x23

da ich immer nur auf die ersten beiden Bits prüfe springt meine 
Warteschleife weiter ... nur frage ich mich was ide anderen Bits 
bedeuten. Im Datenblatt steht ja leider nicht viel da drüber ... z.B.: 
ist bei mir oft STA5 gesetzt und STA3 ...

aber was bedeutet STA5? - Check controller operation capability enable -
ich kann es zwar übersetzen ins Deutsche verstehe aber den Hintergrund 
nicht.

Das selbe für STA3? - Check auto mode data write capability enable - ich 
habe ja Automode garnicht eingeschaltet (erst am Ende der Init, fürs 
löschen des Speichers)

Ich hoffe ihr könnt mir ein wenig weiterhelfen, das Geheimis zu lüften 
:)

von Michael U. (amiga)


Lesenswert?

Hallo,

ich weiß zwar nicht, ob er Dir viel weiter hilft, unter
Beitrag "LCD mit T6963C in ASM"
liegt ein AVR-Assemblercode für den T6963C.

Vielleicht kannst Du da ja etwas vergleichen.

Timing ist recht unkritisch, das Dung geht bei 8MHz auch im 
MemoryMapped-Mode bei mir ohne Probleme.

Ich hab gerade nochmal ins Datenblatt geschaut, in freier Übersetzung 
die Bedeutung:

STA0 = 1 bereit um Kommandos zu empfangen
STA1 = 1 bereit um Daten zu schreiben/lesen
STA2 = 1 bereit um Daten im Automode zu lesen
STA3 = 1 bereit um Daten im Automode zu lesen

STA0 und STA1 werden normalerweise vom T6963C wohl immer gleichzeitig 
gesetzt,
Bei STA3 und STA4 darf nur das Bit ausgewertet werden, daß zum 
bestellten Automode passt, also nur Lesen oder Schreiben

STA5 sollte eigentlich immer 1 sein, wenn das Teil initialisiert hat, 
habe ich wohl nie ausgewertet,
genauso STA6 und STA von mit nicht benutzt.

Deine Statusworte sind ja nicht so unsinnig, immer Ready für normales 
Schreiben und Lesen, beim ersten auch Auto-Write gesetzt.

Das Problem ist, daß die Gültigkeit vom Kommandozustand abhängt, ob also 
STA0 und STA1 oder STA3 oder STA4 der richtige Zustand ist.
Die jeweils anderen Bits können dann sein, wie sie wollen.

Also normales Schreiben/Lesen -> nur STA01 und STA1, der Zustand von 
STA3 und STA4 ist undefiniert usw.

Gruß aus Berlin
Michael

von Oliver F. (rocky)


Lesenswert?

Also wie ich bereits vermutet habe :(

Na dann suche ich mal weiter nach Anhaltspunkten.

von Michael U. (amiga)


Lesenswert?

Hallo,

hast Du mal in meinen ASM-Source aus dem Link geschaut, so zum 
Vergleich?

Muß doch zum Spielen zu bekommen sein, das Teil...

Ich habe so eine Sammlung diverser Ausbau-Displays mit fast allen 
Controllern, die so üblich waren. Bisher hat sich noch jedes gemeldet, 
wenn auch oft nicht auf Anhieb. ;)

Gruß aus Berlin
Michael

von Oliver F. (rocky)


Lesenswert?

Sorry, dass ich mich erst heute melde ...

nach der ganzen Erfolgslosigkeit habe ich mich zwischendurch noch 
anderen Themen gewidmet ... diese sind nun aber Erfolgreich beendet ... 
und ich habe wieder das dumme Display auf dem Tisch liegen.

Den ASM Code habe ich mir bereits vor längerer Zeit angeschaut, ist auch 
gleich aufgebaut wie all die anderen ...

Ich habe nach einigen Tests noch herausgefunden, dass ich beim auslesen 
des Statusbytes STA0 und STA1 gesetzt sind (so wie es ja auch sein 
sollte) und STA7 in einem 1Hz Takt (500ms High, 500ms Low) blinkt. 
Natürlich nur, wenn ich die Statusbyteauslesung anhalte mit einem 
Breakpoint.

Ich bin mir nicht 100% sicher ob dies so sein sollte?! Kann es 
vielleicht auch sein, das ich die Homeaddresses für den Grafik und 
Textbereich falsch setze? Oder ist dies egal? Im Datenblatt steht nur, 
dass man einen Bereich angeben muss, aber nicht welcher.

von Oliver F. (rocky)


Lesenswert?

Was ist das einfachste zum darstellen/testen?

ich mache derzeit folgendes:

Init:
Grafikhomeadresse setzen (0x0400)
Grafikarea setzen (0x1E = 30)
Texthomeadresse setzen (0x0000)
Textarea setzen (0x1E = 30)
Mode setzen (0x81 = XOR Mode / internal CGRAM)
Display Mode setzen (0x9F = Text und Grafik an, Cursor und blinken an)
Cursorpattern (0xA7 = 8 Lines)
Adresspointer setzen (0x0000)
Cursorpointer setzen (0x0000)

Write:
lcd_set_data(0x23);  (sollte C sein, laut Datenblatt))
lcd_set_command(0xC0); (Data Write and increment ATP)

Das sollte doch nun eigentlich einen Buchstaben anzeigen lassen oder? 
Ich hoffe mir kann da einer Helfen ... ich verzweifel langsam aber 
sicher. Den Cursorpointer habe ich zum testen bereits in einer 
Endlosschleife an alle Positionen gesetzt die es angeblich gibt und 
immer danach einmal versucht das C auszugeben ... aber natürlich ist 
nichts passiert ... wie immer bleibt mein Display durchgehend leer.

von Michael U. (amiga)


Lesenswert?

Hallo,

ich müßte jetzt bei mir selbst nachschauen gehen... ;)
Sieht aber passend aus.
Das Ding sollte doch nach Text+Grafik on eigentlich Pixelmüll anzeigen, 
ich meine, der Display-Ram wurde nicht automatisch gelöscht.

STA7 war wohl Blinkstatus, daß dürfte bei Deiner Init dann ja stimmen.

Irgendwie habe ich das Gefühl, daß Deine Kontrasteinstellung nicht 
stimmt...

Gruß aus Berlin
Michael

von Oliver F. (rocky)


Lesenswert?

Ja das stimmt ... ich lösche das Ram nicht.

Aber Anzeigen tut er auch nicht, wenn ich das Display Mode cmd schicke.

Kontrast war ja auch am Anfang meine erste Vermutung, deswegen habe ich 
ein 5k Poti angeschloßen, mit dem ich zwischne GND und 5V an V0 regeln 
kann. Wenn ich den Reset auslöse habe ich ja meinen schönen Balken, 
welcher sich dann auch vom Kontrast her mit diesem Poti regeln lässt. 
Dies schließt wohl den kontrast aus. Was hast du den da angeschloßen?

Mir ist gerade noch eine Idee gekommen, man kann ja auch ein Byte 
auslesen aus dme RAM ... vielleicht lese ich einfach mal ein paar Bytes 
aus und schaue, was da drin steht ... vllt ist der RAM ja defekt.

Leider kann ich dies erst am Dienstag machen, weil ich morgen Prüfung 
habe und die restlichen Tag sind ja Feiertage, also komme ich da net in 
die Firma.

MFG

von Michael U. (amiga)


Lesenswert?

Hallo,

Moment mal... Poti zwischen GND und 5V?
Der will -5...-15V je nach Displaygröße, Poti 20k oder 50k zwischen Vee 
oder wie der Ausgang heißt und Schleifer an VO.

Gruß aus Berlin
Michael

von Spess53 (Gast)


Lesenswert?

Hi

Wo Martin es so sagt: Das Poti muss zwischen Pin17 und Masse. Schleifer 
an Kontrasteingang. Die Streifen beim Einschalten sind nicht als Zeichen 
für funktionierende Kontrasteinstellung zu werten. Bei funktionierender 
Kontrastreglung muss das Display komplett 'abgedunkelt' werden können.

MfG Spess

von Stefan H. (Firma: dm2sh) (stefan_helmert)


Lesenswert?

Hallo,

>Den Cursorpointer habe ich zum testen bereits in einer
>Endlosschleife an alle Positionen gesetzt die es angeblich gibt und
>immer danach einmal versucht das C auszugeben ... aber natürlich ist
>nichts passiert ... wie immer bleibt mein Display durchgehend leer.

Das ist völlig normal, denn du musst den Adresspointer setzen. Der 
Cursorpointer gibt nur an, wo sich der angezeigte Cursor befinden soll. 
Setze mal den Curser auf x=0 und y=0. Lasse den ganzen 
Statusabfrage-Mist weg und schalte nur Cursor und Text ein. Lasse auch 
die Grafik weg und nutze den internen CGRAM.

von Michael U. (amiga)


Lesenswert?

Hallo,

nun warten wir mal ab, bis der arme Oliver F. die Kontrastspannung 
umgelötet hat und mit Schrecken feststellt, daß alle seine 
Programmvarianten schon lange gespielt haben und er es nur nicht sah...

PS: ich wünsche Dir Erfolg und nimm es nicht zu tragisch, wenn das die 
Ursache ist.

Gruß aus Berlin
Michael

von Oliver F. (rocky)


Lesenswert?

Na das wäre ja was ...

zum Glück bezahlt man mich nicht nach Erfolg ;)

So etwas könnte ja auch mal im Datenblatt stehen ^^ In einem anderen 
Datenblatt habe ich diese 5 Volt sache gefunden, was ich auch von den 
Textdisplays immer so kannte ... Ich werde es schnellstmöglich testen 
...

Irgendwie hoffe ich, dass es aber nicht der Grund ist, weil es zu 
stupide wäre ... und dann müsste ich meinem Chef erklären, wie ich es 
geschaft habe mich 2 wochen an diesem dummen Fehler aufzuhalten ;)

Werde euch dann alles berichten.

MFG

von Michael U. (amiga)


Angehängte Dateien:

Lesenswert?

Hallo,

naja, zum Thema Datenblatt: ich habe im Netz nur ein einseitiges 
Datenblatt gefunden. Wenn man keine Erfahrung mit LCD-Displays hat, ist 
das immer schwer zu lesen.

Die Betriebsspannung der LCD-Treiber bezieht sich immer* auf Vdd, also 
die +5V. Auf diesen Punkt bezogen ist sie immer* negativ. Bei den 
üblichen Textdisplays normalerweise -3...-4,5V, Da stimmt dann ein Poti 
zwischen +5V (Bezuhspunkt für Vee) und GND. Eingestellt wird damit dann 
-3...-4,5V oder gegen GND +0,5...2V.

Bei Displays für erweiterten Temperaturbereich sind bei Textdisplays 
-5...-8V üblich, also gegen GND -3...-5V.
Bei den Grafikdisplays ist diese Spannung generell* höher, meist so ab 
-7V...-20V.
Sind dann gegen GND -2...-15V.

Bei Deinem sagt das Datenblatt bei LCD operating voltage normal typisch 
12,3V, da fehlz dann schon Bezuhspunkt und das Minuszeichen...

Gemeint sind -12,3V gegen Vdd, also -7,3V gegen GND.
Erweiterter Temperaturbereich sagt typisch 18,1V, gemeint -18,1V gegen 
Vdd, also -13,1V gegen GND.

Das Display erzeugt maximal 22V gegen Vdd, fehlt wieder das Minus, also 
-22V gegen Vdd oder -17V gegen GND, die kommen an Pin 17 raus, mit Vee 
bezeichnet. Eigentlich auch falsch, Vee ist üblicherweise der 
LCD-Betriebsspannungseingang. Das ist aber Pin3, hier mit Vo bezeichnet 
und mit Contrast Adjust beschriftet.
Die Kontrastreglnung ist eigentlich der Nebeneffekt, der Kontrast hängt 
einfach von der Höhe der LCD-betriebsspannung ab...

* Ausnahmen bestätigen die Regel, bei den üblichen Txt/Grafikdisplays 
paßt das aber so zu 99%.

Alle Unklarheiten beseitigt? ;-)

Gruß aus Berlin
Michael

von Spess53 (Gast)


Angehängte Dateien:

Lesenswert?

Hi

Powertip neigt bei seinen Datenblättern stark zum Minimalismus. Andere 
Hersteller sind da etwas freigiebiger. Eine ganze Reihe von 
Grafikdisplays verschiedener Hersteller besitzen bei gleicher Grösse 
eine identische Anschlussbelegung (siehe Anhang). Da lohnt es sich schon 
mal über den Zaun zu schauen. Das Datenblatt des verwendeten 
Displaycontrollers ist natürlich auch immer hilfreich.
Nur fürs nächste mal.

MfG Spess

von Michael U. (amiga)


Lesenswert?

Hallo,

ich gehe sogar noch weiter. Ich habe hier etliche Ausbau-Displays, die 
keine Sau mehr kennen will. ;)
Controllerdatenblatt ist sowieso Pflicht, die sind da ja meist zu 
finden.
T6963C, HD61830 sind am meisten vertreten. Die Hersteller benutzen 
eigentlich immer die gleichen Pin-Belegungen, wenn der gleiche 
Controller drauf ist.
Betriebsspannung und Daten/Steuerleitungen sind schnell zu den 
Cotrollerpins ausgeprüft, Vee kann man eigentlich gut an der Größe 
abschätzen, bis -5V bei Textdisplays hat auch nie geschadet, Vee ist 
meist nax. 10-12V, auch bei Normal-Displays. Bei Grafikdisplays meist 
max. 15-20V, mit -10V bei 128x128 und -15V bei 240x128 ist auch kaum ein 
Risiko. Notfalls kann man ja noch die Datenblätter der Treiber bemühen.
Das hilft aber offenbar vielen nicht weiter, denen die Erfahrung fehlt.
Normalerweise melden sich solche Displays bei mir in spätestens einer 
halben Stunde. Ich habe noch nie erlebt, daß eine Ansteuerung 100% nach 
Controllerdatenblatt unter Beachtung der Timingdiagramme nicht ging.

Mein erstes T6963C wollte mit schnell gesuchten Sourcen auch nicht 
reden,
letztlich habe ich dann schnell die kommetierte Z80-Source aus dem 
Datenblatt genommen, 1:1 auf den AVR getragen und lief sofort.
Naja, gut daß ich Z80 noch nicht ganz vergessen habe. ;-)

Gruß aus Berlin
Michael

von Spess53 (Gast)


Lesenswert?

Hi

>letztlich habe ich dann schnell die kommetierte Z80-Source...

kommt mir sehr bekannt vor.
Allerdings gibt es auch eine Reihe von Exoten. Ich habe noch ein 240x128 
mit Touchscreen und T6963 von ALPS zu liegen. Da stimmt gar nichts. 
Selbst die Anschlüsse sind im metrischen 2,5mm Raster!!!

MfG Spess

von Oliver F. (rocky)


Lesenswert?

Hi Leute,

ich habe gerade alles umgelötet ... mit Hilfe eines 25kOhm funktionierte 
es nicht, aber nachdem ich einmal die Schaltung im Datenblatt von 
Michael getestet habe (4,7kOhm und 5kOhm Poti) hat es funktioniert. Ich 
teste mich gerade langsam durch, aber bisher scheint alles gut zu 
funktionieren.

Ich Danke euch für eure Tips ... auf jedenfall bin ich jetzt wesentlich 
schlauer für das nächste mal, wenn mir so ein Ding wieder über den Weg 
läuft.

von MUC-DIS (Gast)


Angehängte Dateien:

Lesenswert?

Hier hast Du noch das Orginal datenblatt von Powertip
Gruß
MUC

von Rick Dangerus (Gast)


Lesenswert?

Wenn man alles schon ausprobiert hat und gar nicht weiter weiß, hier 
noch eine Anregung: Man kann im Sekundentakt das Display löschen (00) 
und füllen (FF).
Damit bin ich schon Problemen mit dem Kontrast auf die Spur gekommen, 
weil man so doch eine kleine Veränderung im Display gesehen hat 
(Ablesewinkel verändern).

Rick

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.