Frage hat irgend wer ein kleinens c - Programm welches mir nur veranschaulicht wie ein Graphic Display zu programmieren ist ich hab ein Standart Display mit den Standart Treiber TS ...... (weis ich jetzt nicht genau)
Ich hätte ein Programm gesucht welches mir z.B. eine Schräge Linie Zeichnen
Weil ich in Prinzip keine Ahnung von der Komunikationsprotokollen habe
Naja ohne die genaue Bezeichnung oder weitere Angaben (Auflösung, Farbe oder s/w) wirds schwierig bzw. Unmöglich, da nicht alle GLCDs gleich angesteuert werden.
Blaues, grafisches LC-Display (128x64 Pixel) mit integriertem Controller (kompatibel zu KS010 und LED-Hintergrundbeleuchtung. Geeignet zum Betrieb am PC-Druckerport (LPT). Download verfügbar.
Technische Daten:
- Auflösung 128x64 Pixel
- weiße LED-Hintergrundbeleuchtung
- Betriebsspannung +5 V-
- Kontrastspannung +9 V-
- Pixelgröße 0,48x0,48 mm
- Anzeigefläche 70,7x38,83 mm
Maße (BxHxT): 93x70x13,6 mm.
Genau dieses Display hab ich zur Zeit auch aufm "OP-Tisch".
Hab dir mal meine bisherigen Codes angefügt; müsstest entsprechend anpassen, damits bei deinem Projekt läuft. Aber geht ja im Grunde nur um die Grundkommunikation mit dem Display.
Was schon geht:
- Display mit einem "Muster" füllen (Muster kann auch leer = blau bzw. voll = weiss gefüllt sein)
- einzelne Pixel setzen/löschen
- Box (gefülltes Rechteck) zeichnen
- Rahmen zeichnen
- Text schreiben (5x7-Font im Source)
- "Überschrift" schreiben (weisser Balken, blaue Schrift)
- Eine Art "Bluescreen" (wie passend bei nem blauen LCD...) für Fehler
Zeichenfunktionen für Kreise, Ellipsen, schiefe Linien etc. kommen bei mir demnächst (sobald ich mein ISP-Kabel wieder find... in der Katze isses schon mal nicht...).
Ne grundlegende Idee dazu hab ich schon.
Also Zu dem SetPixel ist es so, dass alle anderen Funktionen diese SetPixel verwenden. SetPixel ist also die grundlegenste Funktion.
Wenn ich mich nicht vertan hab, kannst du die folgenden Funktionen rauswerfen:
Wenn PutS/PutC weg ist, kannst du auch die "static const stc_font5x7 font5x7[] PROGMEM =...." rauswerfen; frisst dann nicht so viel Flash.
Die "static inline void _delay4Cycles(ui16_t __count)" sowie das nachfolgende define delay(us)... kann ebenso raus.
Von den Ports her ist es so, dass ich hier nicht (wie bei anderen Beispielen) nur 2 Ports hab (d.h. 1 Datenport und 1 Command-Port), sondern dass ich die Command-Leitungen auf verschiedene Ports aufgeteilt hab (ging vom Platinendesign her nicht anders). Macht das ganze aber auch flexibler.
In der Header-File setzt du einfach die Pins & Ports:
Hier mal nur die Kürzel #define TG12864B_....
DATA: Datenport, LCD-Pins 7-14; Datenleitungen
EN: Enable, LCD-Pin 6; Bei einem Enable-Puls werden die an den DATA-Leitungen angelegten Signale übernommen (Write) bzw. das Display legt die angeforderten Daten an die Leitungen (Read).
RW: Read/Write, LCD-Pin 5; Low: Daten zum Display senden; High: Daten vom Display auslesen.
CS1/CS2: Chip Select für Treiber 1/2, LCD-Pin 15-16; welcher der beiden Treiber soll bei Enable die Daten übernehmen? Beim Schreiben von Daten können beide aktiviert sein, wenn beide das Gleiche machen sollen; beim Lesen darf jedoch nur 1 aktiv sein.
RST: Reset LCD-Pin 17; Low-Aktiv, kann auch mit dem Reset des Controllers verbunden werden für gleichzeitigen Reset.
Nachtrag: achja, dass in der SetPixel 2x GLCD_ReadCell ausgeführt wird, ist Absicht. Wenns nur 1x gemacht wird, macht das Display nur Grütze. Da gabs hier schon mal nen Beitrag von mir dazu.
Lesezeichen