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
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.
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
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
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
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?
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.