Forum: Mikrocontroller und Digitale Elektronik Generelle Fragen zum T6963C


von Marcel K. (viewer)


Lesenswert?

Ich habe da ein paar generelle Fragen zu meinem Grafikdisplay 
(T6963CFG). Ich habe schon einige Beiträge hier im Forum und mehrere 
Anleitungen so wie Datenblätter durchgelesen. Ich bekomme mein Display 
nur nicht zum laufen. Bevor ich jetzt ewig mit der Fehlersuche beginne, 
möchte ich doch gerne hier im Forum diejenigen Fragen, die sich mit 
diesem GLCD auskennen. Vielleicht können diese mir bestätigen das ich 
den Aufbau des Displays auch wirklich verstanden habe oder was ich fasch 
verstanden habe.
Es war für mich gleich am Anfang schon mal sehr merkwürdig, dass man 
nicht wie gewohnt die „Anzuzeigende- Daten“ wie bei einem normalen 2x16 
LCD schicken kann. Die Daten für das GLCD werden in einem RAM- Bereich 
abgelegt. (gehen wir mal von einem Single-Scan aus) Der Speicherbereich 
hat 64 Byte. Zu beginn muss dem GLCD mitgeteilt werden, wo die 
entsprechenden Speicherbereiche für Text, Grafik und CG RAM liegen. 
Dieses kann man beim initialisieren mit „set_text_area“ und „set 
graphic_area“ festlegen.
Mit den Befehlen „“set_text_home“ und „set_graphic_home“ legt man 
praktisch fest wie viel Byte in eine Spalte passen, bevor eine neue 
Spalte begonnen werden muss. (ich denke mal abhängig von der Font-Größe) 
Ich denke die Idee über einen Speicher auf die Anzeige zu schreiben ist, 
dass man während auf das Display geschrieben wird, man gleichzeitig 
einen neuen Schreibbefehl in den Speicher schreiben kann. (2. Seite oder 
ähnliches).
Wie weiß der Chip denn aber ab wann er schreiben soll? Es gibt ja keinen 
Befehl „schreibe jetzt die Daten vom Speicher auf das Display“. Ich habe 
die Vermutung das man die Daten an das CG RAM schreiben muss. Ist das so 
richtig? Ich verstehe das nur nicht so mit dem Offset. (external display 
RAM and display position)
Wenn ich das Display löschen möchte, muss ich, soweit habe ich das aus 
Beispielcodes lesen können, das Display mit 0x00 füllen. Das passiert 
bei den meisten Beispielcodes aber immer irgendwie anders.


Meine Initialisierung sieht in Prosa so aus:

Set Text Home (0x00,0x00)// Anfang Speicherbereich
Set Graphic Home (0x7F,0xFF)// Mitte Speicherbereich
Set Text Area (0x14)
Set Graphic Area (0x14)
Set Adress Pointer (0x00,0x00)
Set Display Mode (Text an, Graphic aus, Cursor an, Blinken an)

Wie bekomme ich denn jetzt nur z.B. ein ‚A’ auf die Position 1,1?

Ich würde mich freuen wenn jemand mir bestätigen kann ob ich es richtig 
verstanden habe oder mir jemand bei den offenen Fragen helfen kann.

Grüße, Marcel

von holger (Gast)


Lesenswert?

Als erstes vergiss das mit dem CGRAM erstmal. Da kann man
CustomCharacters für den Textmode festlegen.

Das meiste hast du schon richtig verstanden.
Ich versuch mal ne Kurzfassung:

Der T6963 gibt seinen Speicher selbständig aus.
Und das fortlaufend. Du schreibst einfach nur Daten in sein RAM.

Du gibst im RAM die Startadresse für einen Textbereich und/oder
einen Grafikbereich an. Den Textbereich lege ich auch meist auf
0x0000. Den Grafikbereich legt man dann hinter den Textbereich.
Die Größe des Textbereiches hängt davon ab ob du 6x8
oder 8x8 Font ausgewählt hast. 6x8 ist zwar schön für den
eingebauten Textfont, aber schlecht für den Grafikbereich.
Ich möchte da aber jetzt nicht näher drauf eingehen.

Sagen wir einfach mal 8x8 Font. Bei einem 240x64 Display
hast du dann 30 Zeichen pro Zeile und 8 Zeilen.
Dein Textbereich muss also mindestens 240 Bytes groß sein.
Beim 6x8 Font muss er mindestens 320 Bytes groß sein.
Den Grafikbereich kannst du dann z.B. bei Adresse 512 anfangen lassen.

Wenn du einen Buchstaben ausgeben willst, setzt du einfach
den Adresspointer auf die Stelle im RAM wo das Zeichen hin soll.
Für die erste Position eben auf 0x0000. Zu beachten ist dann nur
noch das der eingebaute Font nicht wie bei einem Textdisplay
angeordnet ist. Wenn du ein 'A' ausgeben willst musst du 'A'-0x20
in das RAM schreiben. Beim T6963 ist Space ' ' das 0te Zeichen.

Ich hoffe das hilft dir ein bißchen weiter.

von spess53 (Gast)


Lesenswert?

Hi

Ich schließe mich erst mal den Aussagen von Holger an.
Nur noch eine Bemerkung zu den Fonts: Der T6963 hat nur einen Font. Der 
Font ist 8x8, wobei die Zeichen 5x7 sind. Die unterschiedlichen Fonts 
werden durch 'Abschneiden' der nicht benötigten Bits. D.h. die Zeichen 
stehen nur unterschiedlich weit auseinander. Zu Beachten ist, das sich 
ein Font <8x8 auch auf den Grafikmodus auswirkt. Also bei einem 6x8 Font 
werden auch im Grafikspeicher von jedem Byte nur die 6 niederwertigsten 
Bits verwendet.

MfG Spess

von Marcel (Gast)


Lesenswert?

Hallo Holger und spess,

sorry habe mich nicht mehr gemeldet. War beschäftigt ;o)

Danke für eure Tipps. Ich bin jetzt endlich so weit das ich einige 
Befehle per Software ausführen kann. Für mich war es nicht leicht zu 
durchschauen, da ich einfach zu viele Programmbeispiele verfolgt habe. 
Jetzt läuft (das was bereits läuft) nach meiner eigenen "Forschung". Ist 
nicht gut wenn man kopieren möchte. Es ist doch besser sich für 
Grundlegendes an das Datenblatt zu halten.
Mal sehen, wenn ich nochmal Fragen habe, melde ich mich einfach g
Danke noch mal und Grüße,
Marcel

von pacer (Gast)


Lesenswert?

Da ja Marcel keine Fragen mehr hatte und ich jetzt auch vor dem Problem 
(Display) sitze, stelle ich noch ein paar:

Wenn ich nur den internen Zeichensatz benutzen möchte, muss ich das 
Offsetregister nicht beschreiben?

Ob das Display sich im Dual-Scan-Modus oder im Single-Scan-Modus 
befindet wird durch den Hersteller fest verdrahtet bzw. programmiert?

Gruß,
pacer

von pacer (Gast)


Lesenswert?

zu meinen beiden bisher nicht beantworteten Fragen möchte ich noch eine 
dritte stellen:
Aus dem Datenblatt ist erkennbar, dass die Steuereingänge lowaktiv sind.
(Querbalken über der Portbezeichnung)
bedeutet das dann automatisch, dass die Steuerleitungen im Ruhezustand 
high sein sollten?

von Marcel (Gast)


Lesenswert?

Hallo pacer.

Ich komme zu zeit nicht an mein altes Projekt ran. Daher kann ich dir 
über die ersten zwei Fragen auch keine Antwort geben. Ist schon zu lange 
her!!
zu Deiner 3. Frage. "Low-ativ" bedeutet nur, dass dieser Pin nur 
ausgeführt wird wenn ein "Low"- Signal anliegt. Wenn z.B. ein RESET- Pin 
lowactiv ist, dann wird ein Reset mit einer logischen "NULL" am Pin 
ausgeführt. --> Invertiert = (leg eine NULL an und der Befehl der sonst 
eine EINS wäre, wird ausgeführt)
Es kommt jetzt darauf an was du unter "high-avtiv" meinst. Auf jeden 
Fall funktionieren alle Pins ganz normal. Ist eine NULL am Portpin dann 
mach nichts. Erst wenn eine EINS erkannt wird, wird dies als "aktiv" 
erkannt. Außer bei den Invertierten Pins. Dort gilt halt eine EINS als 
"tuhe nichts" und erst wenn eine NULL anliegt "handle".
So verständlich???

Gruß Marcel

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.