mikrocontroller.net

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


Autor: Oliver F. (rocky)
Datum:

Bewertung
0 lesenswert
nicht 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.
 
void lcd_init(void)
        {
        unsigned int t;

        pd1  = 0xf8;            // Port 1 als Ausgang
        pd2  = 0x00;            // Port 2 als Eingang
//        pur1 = 0xff;            // Pull-Up's an
//        pur2 = 0xff;            // Pull-Up's an
  pu00 = 1;
  pu01 = 1;
  pu04 = 1;
        pu05 = 1;

        p1   = 0xf8;            // Port Pin's P1 auf High
        LCD_RESET = 0;          // Display Reset
            for (t=0; t<2000; t++);  
        LCD_RESET = 1;          // Display Reset fertig

        LCD_DATA = 0x00;        // Text Home Adress setzen
        lcd_send_data();        // Auf 0000H setzen
        LCD_DATA = 0x00;
        lcd_send_data();
        LCD_CMD = 0x40;
        lcd_send_cmd();

        LCD_DATA = 0x28;        // Text AREA Adress setzen
        lcd_send_data();        // 28H = 40 Zeichen 1EH = 30
        LCD_DATA = 0x00;
        lcd_send_data();
        LCD_CMD = 0x41;
        lcd_send_cmd();

        LCD_DATA = 0x00;        // Grafik Home Adress setzen
        lcd_send_data();        // Auf 0200H setzen
        LCD_DATA = 0x02;
        lcd_send_data();
        LCD_CMD = 0x42;
        lcd_send_cmd();

        LCD_DATA = 0x28;        // Grafik AREA Adress setzen
        lcd_send_data();        // 28H = 40 Zeichen 1EH = 30
        LCD_DATA = 0x00;
        lcd_send_data();
        LCD_CMD = 0x43;
        lcd_send_cmd();

        LCD_DATA = 0x02;        // Offset Pointer setzen
        lcd_send_data();
        LCD_DATA = 0x00;
        lcd_send_data();
        LCD_CMD = 0x22;
        lcd_send_cmd();

        LCD_CMD = 0x80;         // OR-Mode
        lcd_send_cmd();
    
        LCD_DATA = 0x01;        // Cursor Pointer setzen
        lcd_send_data();
        LCD_DATA = 0x01;
        lcd_send_data();
        LCD_CMD = 0x21;
        lcd_send_cmd();

        LCD_CMD = 0x9F;         // Text an Grafik an cursor an blinken an
        lcd_send_cmd();

  LCD_CMD = 0xA7;    // Cursor Pattern 8Line
  lcd_send_cmd();
    
        LCD_DATA = 0x00;        // Adress Pointer setzen
        lcd_send_data();        // 0000H
        LCD_DATA = 0x00;
        lcd_send_data();
        LCD_CMD = 0x24;
        lcd_send_cmd();
    
        lcd_clear_ram();        // zum Schluß noch das Ram des
        }                       // Display's löschen

void lcd_status(void)
        {
        pd2 = 0x00;             // Port 2 als Eingang
        LCD_CD = 1;             // Commando High
        LCD_RD = 0;             // Read Low
        LCD_CE = 0;             // Chip Enable Low
        asm ("NOP");        
        asm ("NOP");        
        asm ("NOP");        
         asm ("NOP");        
        asm ("NOP");        
        asm ("NOP");        
         asm ("NOP");        
        asm ("NOP");        
        asm ("NOP");        
        LCD_STATUS = LCD_PORT;  // Status lesen
        LCD_CE = 1;             // Chip Enable High
        LCD_RD = 1;             // Read High
        LCD_STATUS &= (0x03);   // Bits ausmaskieren
        }

void lcd_status_am(void)
        {
        pd2 = 0x00;             // Port 2 als Eingang
        LCD_CD = 1;             // Commando High
        LCD_RD = 0;             // Read Low
        LCD_CE = 0;             // Chip Enable Low
        asm ("NOP");        
        asm ("NOP");        
        asm ("NOP");        
        asm ("NOP");        
        asm ("NOP");        
        asm ("NOP");        
        asm ("NOP");        
        asm ("NOP");        
        asm ("NOP");        
        LCD_STATUS = LCD_PORT;  // Status lesen
        LCD_CE = 1;             // Chip Enable High
        LCD_RD = 1;             // Read High
        LCD_STATUS &= (0x08);   // Bits ausmaskieren
        }

void lcd_send_cmd(void)         // Commando an Display senden        
        {
            do
                {
                  lcd_status();
                }
            while (LCD_STATUS != 0x03);
        pd2 = 0xff;             // Port 2 als Ausgang
        asm ("NOP");        
        asm ("NOP");        
        asm ("NOP");        
         asm ("NOP");        
        LCD_PORT = LCD_CMD;
        LCD_CD = 1;             // Commando High
        LCD_WR = 0;             // Write Low
        LCD_CE = 0;             // Chip Enable Low
        asm ("NOP");        
        asm ("NOP");  
        asm ("NOP");        
        asm ("NOP");        
        asm ("NOP");        
         asm ("NOP");        
        asm ("NOP");        
        asm ("NOP");        
         asm ("NOP");            
        LCD_CE = 1;             // Chip Enable High
        LCD_WR = 1;             // Write High
        }

void lcd_send_data(void)         // Daten an Display senden        
        {
            do
                {
                  lcd_status();
                }
            while (LCD_STATUS != 0x03);
        pd2 = 0xff;             // Port 2 als Ausgang
        LCD_PORT = LCD_DATA;
        LCD_CD = 0;             // Daten Low
        LCD_WR = 0;             // Write Low
        LCD_CE = 0;             // Chip Enable Low
        asm ("NOP");        
         asm ("NOP");        
        asm ("NOP");        
        asm ("NOP");        
         asm ("NOP");        
        asm ("NOP");        
        asm ("NOP");        
        asm ("NOP");    
        asm ("NOP");          
        LCD_CE = 1;             // Chip Enable High
        LCD_WR = 1;             // Write High
        }

void lcd_send_data_am(void)         // Daten an Display senden
        {
            do
                {
                  lcd_status_am();
                }
            while (LCD_STATUS != 0x08);
        pd2 = 0xff;             // Port 2 als Ausgang
        LCD_PORT = LCD_DATA;
        LCD_CD = 0;             // Daten Low
        LCD_WR = 0;             // Write Low
        LCD_CE = 0;             // Chip Enable Low
        asm ("NOP");        
        asm ("NOP");        
        asm ("NOP");        
         asm ("NOP");        
        asm ("NOP");        
        asm ("NOP");        
         asm ("NOP");        
        asm ("NOP");    
        asm ("NOP");          
        LCD_CE = 1;             // Chip Enable High
        LCD_WR = 1;             // Write High
        }

void lcd_print( _far char * msg_string, char adress_h, char adress_l)
        {
        int i;

        LCD_DATA = adress_l;    // bergebene Adresse setzen
        lcd_send_data();        
        LCD_DATA = adress_h;
        lcd_send_data();
        LCD_CMD = 0x24;
        lcd_send_cmd();
        LCD_CMD = 0xB0;         // Auto Write Mode an (Auto Inkrement)
        lcd_send_cmd();

        for (i=0; msg_string[i]; i++)
                {
                lcd_send_str(msg_string[i]);
                }
        LCD_CMD = 0xB2;         // Auto Write Mode aus (Auto Inkrement)
        lcd_send_cmd();
        }

void lcd_send_str(unsigned char lcd_dat)
        {
        lcd_dat -= 0x20;        // 20h subtrahieren da Display nich ASCII
        LCD_DATA = lcd_dat;     // kompatibel
        lcd_send_data_am();     // Daten an Display senden
        }

void lcd_clear_ram(void)
        {
        unsigned int t;
        LCD_DATA = 0x00;        // int. Ram des Display's l?schen.
        lcd_send_data();        // laut Datenblatt des Herstellers 8kb
        LCD_DATA = 0x00;
        lcd_send_data();
        LCD_CMD = 0x24;
        lcd_send_cmd();
        LCD_CMD = 0xB0;         // Auto Write Mode an (Auto Inkrement)
        lcd_send_cmd();
            for (t=0; t<1000; t++)  //8192
            {
                LCD_DATA = 0x00;
                lcd_send_data_am();     // Daten an Display senden
            }
        LCD_CMD = 0xB2;         // Auto Write Mode aus (Auto Inkrement)
        lcd_send_cmd();
        }

Autor: Michael U. (amiga)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Oliver F. (rocky)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Oliver F. (rocky)
Datum:

Bewertung
0 lesenswert
nicht 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 
:)

Autor: Michael U. (amiga)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Oliver F. (rocky)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also wie ich bereits vermutet habe :(

Na dann suche ich mal weiter nach Anhaltspunkten.

Autor: Michael U. (amiga)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Oliver F. (rocky)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Oliver F. (rocky)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Michael U. (amiga)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Oliver F. (rocky)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Michael U. (amiga)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Stefan Helmert (Firma: dm2sh) (stefan_helmert)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Michael U. (amiga)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Oliver F. (rocky)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Michael U. (amiga)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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

Autor: Spess53 (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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

Autor: Michael U. (amiga)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Oliver F. (rocky)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: MUC-DIS (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hier hast Du noch das Orginal datenblatt von Powertip
Gruß
MUC

Autor: Rick Dangerus (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.