Forum: Mikrocontroller und Digitale Elektronik Verständnisproblem GLCD


von Max (Gast)


Lesenswert?

Hallo,

ich möchte ein graphisches LCD mit 240x128 Pixel und UC1608 Controller 
verwenden, schwarz/weis.
Im Display sollen einige Dinge fix angezeigt werden (z.B: Rahmen) und 
einige Daten sollen veränderbar sein, wie Zahlen und Namen.

- Wie übertrage ich die Inhalte am Besten?. Bilde ich im µC (PIC32) alle 
Pixels nach und übertrage den komplette Displayinhalt oder refreshe ich 
nur die geänderten Daten, wenn wie?
- Wie lege ich am leichtesten einen Font mit z.B. 16 Pixel Höhe an?
- Wenn ich eine Zahl verändern will, gebe ich dann die Startkooridnaten 
an und die Konstante der neuen Zahl oder wie übertrage ich die Daten am 
Besten?
- Wie "zeichne" ich am einfachsten meine "Hintergrundmaske" (PC) und 
bringe sie im µC zum Display?
- Gibt es vielleicht ein Möglichkeit einen Font im Display zu speichern, 
ähnlich aufgebaut wie bei einem alphanumerischen LCD, bei dem man 
Adresse und anzeigbares Zeichen angibt.
- Wenn ich es richtig verstanden habe, hilft mir das Tool bitmap2lcd für 
den grundsätzlichen Aufbau, aber nicht für veränderbare anzeigen.

Die physikalische Kommunikation dürfte für mich kein Problem darstellen, 
eher das Verständnis, wie grafische Displays anzuspreche sind.

Danke schon mal im Voraus für Eure Hilfe
Max

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

Max schrieb:
> eher das Verständnis, wie grafische Displays anzuspreche sind

Stell's dir halt wie eine Reversi Spiel vor, du hast halt Pixel die du 
Schwarz oder weiß machen kannst die Technik (vollständiger Puffer im RAM 
oder nur einzelnes refreshen) hängt eigentlich nur davon ab wie oft und 
Umfangreich Änderungen nötig sind, wenn sich alle paar Minuten was 
ändert lohnt es sicher nicht, für Komplexe Zeichenspielerreien mit 
entsprechender Framerate kann sich ein Backbuffer lohnen...

von Max (Gast)


Lesenswert?

Hallo Läubi,

danke für die Antwort. unter anderem wird eine Uhr angezeigt. hier 
ändert sich die Anzeige sekündlich. Andere Teile hingegen verändern sich 
eher halbminütlich.
Welche tools sind zur Erstellung des Startbildschirms hilfreich?

Grüße
Max

von Sascha W. (sascha-w)


Lesenswert?

Max schrieb:
> Hallo,
>
> ich möchte ein graphisches LCD mit 240x128 Pixel und UC1608 Controller
> verwenden, schwarz/weis.
> Im Display sollen einige Dinge fix angezeigt werden (z.B: Rahmen) und
> einige Daten sollen veränderbar sein, wie Zahlen und Namen.
>
> - Wie übertrage ich die Inhalte am Besten?. Bilde ich im µC (PIC32) alle
> Pixels nach und übertrage den komplette Displayinhalt oder refreshe ich
> nur die geänderten Daten, wenn wie?
auf jeden Fall nur die Änderungen übertragen. Mit vollständigem Puffer 
im RAM (fast 4KB) verschwendet RAM und dauert in der Übertragung zu lang

> - Wie lege ich am leichtesten einen Font mit z.B. 16 Pixel Höhe an?
Die Fontdaten speicherst du als Bitmuster im Flash deines PIC, den 
kannst du dir mit geeigneten Hilfsmitteln aus einem Font am PC erstellen 
bzw. hier und da findet sich in verschiedenen libs auch ein Zeichensatz

> - Wenn ich eine Zahl verändern will, gebe ich dann die Startkooridnaten
> an und die Konstante der neuen Zahl oder wie übertrage ich die Daten am
> Besten?
nachdem ich mal das Datenblatt kurz überflogen hab ...
Du kannst die Daten im Controller nur Byteweise ändern 
(READDATA/WRITEDATA)
, d.h. alles was du darstellen willst must du vom PIC in Pixeldaten 
umrechnen lassen und an das Display übertragen.

> - Wie "zeichne" ich am einfachsten meine "Hintergrundmaske" (PC) und
> bringe sie im µC zum Display?
für 'Grafik' mit einem Grafikprogramm erstellen und komplett im PIC 
speichern für Linien/Flächen nur die Eckpunkte speichern und die Anzeige 
im PIC berechnen

> - Gibt es vielleicht ein Möglichkeit einen Font im Display zu speichern,
> ähnlich aufgebaut wie bei einem alphanumerischen LCD, bei dem man
> Adresse und anzeigbares Zeichen angibt.
nein

> - Wenn ich es richtig verstanden habe, hilft mir das Tool bitmap2lcd für
> den grundsätzlichen Aufbau, aber nicht für veränderbare anzeigen.
ja, für grafische Elemente die statisch im PIC gespeichert werden sollen

> Die physikalische Kommunikation dürfte für mich kein Problem darstellen,
> eher das Verständnis, wie grafische Displays anzuspreche sind.
Um was darzustellen brauchst du div. Funktionen, die aufeinander 
aufbauen:
1: schreib/lese-Routine fürs Display, mit der du ganze Bytes oder auch 
nur einzelne Bits dieser Byts verändern kannst

2.1: Zeichenausgabefunktion, die die Pixeldaten für ein Zeichen aus dem 
Flash des PIC holt, und an der entsprechenden Speicheradresse im 
Displayram einsetzt.
2.2: Pixel setzen/löchen

3.1: Ausgabefunktion die Strings unter Verwendung von 2.1 auf's Display 
bringt
3.2: Linien/Flächen zeichen/invertieren/löschen (mit 2.2 o. 1)
     Grafiken zeichen (mit 1)

es gibt auch schon einige Grafiklibs, damit man das Rad nicht neu 
erfinden musst. Ähnliche Controller sind z.B. KS0108 o. T6963, wo du dir 
einiges abschauen kannst

Sascha

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

Max schrieb:
> Welche tools sind zur Erstellung des Startbildschirms hilfreich?

Paint? Im Prinzip jedes Grafiktool, konvertieren in C/ASM kannst du es 
dann z.B. mit diesem Tool:
Beitrag "Grafikkonverter Tool für AVR/Mikrocontroller (BMP2C, BMP2ASM, BMP2BASCOM)"

Max schrieb:
> ändert sich die Anzeige sekündlich.
> verändern sich eher halbminütlich.
Das sollte bequem über read-modify-write Operationen auf dem LCD 
internem Speicher machbar sein ohne das es da zu Verzögerungen kommt, 
ein interner Puffer ist also nicht nötig.

von Purzel H. (hacky)


Lesenswert?

Zum Konzept. Einen Backbuffer sollte man sich goennen, sofern das RAM 
dafuer vorhanden ist. Falls man eine extrem hohe Datenrate anstrebt, 
allenfalls sogar ein Delta-Backbuffer, wo man eintraegt was sich 
aendert. Was bei schwarzweiss einfach ist (XOR) dann muss man effektiv 
nur die geaenderten bytes uebertragen.

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

Hex Oschi schrieb:
> Falls man eine extrem hohe Datenrate anstrebt

Für die Darstellung einer Uhrzeit? o.O

von Sascha W. (sascha-w)


Lesenswert?

Läubi .. schrieb:
> Hex Oschi schrieb:
>> Falls man eine extrem hohe Datenrate anstrebt
>
> Für die Darstellung einer Uhrzeit? o.O
wenn man auch die hundertstel anzeigt und die Schrift so groß macht das 
sie das ganze Display ausfüllt ;-)

von Max (Gast)


Lesenswert?

Vielen Dank an alle für die Antworten.
Das ganze ist nun schon etwas klarer für mich. Werde mich nun an die 
Umsetzung machen.

Grüße
Max

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.