Forum: Mikrocontroller und Digitale Elektronik TFT Display, einzelne Zeile lsöchen?


von Timbo1 (Gast)


Lesenswert?

Hallo,
beim Textdisplay überchreibt man z.B. eifnach die Zahl.
Aber macht ihr das bei nem TFT?
Da braucht es ja ewig, bis er alles neu gezeichnet oder einfach alles 
schwarz ausmalt..
Einfach nur die Betreffende Stelle mit nem schwarzen quadraht 
übermahlen?
Die gleiche zahl wie vorher nur in schwarz drüberschreiben und dann erst 
in einer anderen Farbe die neue?

von Kevin (Gast)


Lesenswert?

Kann man den Text bitte ins deutsche übersetzen.

Danke!

von Gerhard G. (g_g)


Lesenswert?

Hallo,

schau dir die Lib an, hier funktioniert das!

http://www.henningkarlsen.com/electronics/library.php?id=51

Gruß G.G.

von Bernd O. (bitshifter)


Lesenswert?

Timbo1 schrieb:
> Hallo,
> beim Textdisplay überchreibt man z.B. eifnach die Zahl.
> Aber macht ihr das bei nem TFT?
> Da braucht es ja ewig, bis er alles neu gezeichnet oder einfach alles
> schwarz ausmalt..
> Einfach nur die Betreffende Stelle mit nem schwarzen quadraht
> übermahlen?
> Die gleiche zahl wie vorher nur in schwarz drüberschreiben und dann erst
> in einer anderen Farbe die neue?

Ich hatte kürzlich auch dieses Problem und beide Ansätze (Rechteck oder 
alter Inhalt in Hintergrundfarbe) ausprobiert. Das Überschreiben mit dem 
alten Wert hat den Nachteil, dass es langsamer ist als einfach mit einem 
Rechteck in Hintergrundfarbe zu "grundieren", da der Font erneut 
"gerendert" werden muß. Für das schlichte "Füllen" gibt's meist schnelle 
Funktionen.

Wenn Dein Display kein "double Buffering" beherrscht und Du viel Inhalt 
darstellen willst, der sich gelegentlich ändert wird es schnell anfangen 
zu "flackern".

Ich habe das Problem des Flackerns dadurch gelöst, dass ich nur dann neu 
schreibe, wenn sich der Wert auch tatsächlich geändert hat und die 
Aktualisierung des Bildschirms von der eigentlichen Anwendung entkoppelt 
habe und den Bildschirm stumpf von oben nach unten langsam aktualisiere 
2-4s pro Refresh. Mehr kann man bei komplexen Bildinhalten als Mensch 
ohnehin nicht sinnvoll erfassen.

Wenn sich der Anwender auf einen einzigen Wert konzentriert (z.B. beim 
Abgleich) dann muß dieser Wert natürlich schneller als alle 2s 
aktualisiert werden. Wenn die Datenquelle stark schwankt führt das dann 
immer noch zu leichtem Flimmern. Hier hilft dann auch nur:
- Aktualisierung nur dann wenn sich der Displaywert geändert hat
- Filtern des Wertes sofern technisch sinnvoll damit sich das Display 
seltener ändert.

Vermeiden/Verringern lässt sich das Flackern meiner Erfahrung nach 
ansonsten nur noch durch Hardware:
1) Display mit "double Buffering" verwenden - hier kann man den nächsten 
Screen vorbereiten und die Display-HW schaltet dann die Screens 
flackerfrei um.
Wenn das nicht geht, dann:
2) Möglichst schnellen Controller und möglichst schnelle Anbindung an 
das Display, also kein I2C oder SPI, sondern parallel angebunden.

Bei den kleinen billigen SPI-TFTs der Klasse "160x128 und 65k Farben 
ohne double buffering", die man für ein paar Euro aus China bestellen 
kann hilft wohl nur die oben genannte SW-Strategie.

Vielleicht hat aber ja noch jemand eine bessere Idee?

Gruß,
Bernd

von Timbo1 (Gast)


Lesenswert?

anstelle des Rechteck geht auch nur die Linie, die ist deutlich 
schneller..sieht schon besser aus...ist aber ne blöde Lösung finde ich 
:-(
Aber mit der linie kann ich dann zumindest erstmal leben, da es nicht 
oder kaum flackert

von RobWa (Gast)


Lesenswert?

Hallo,

in meinem letzten Projekt (Xmega, TFT-Porto-Board mit 240*320 Pixel und 
HX8347-D-Controller 8-Bit parallel-Display-Ansteuerung 2MHz int. Takt) 
habe ich das folgendermaßen gelöst:
Zeichensatz mit 8*16 Pixel definiert, beim Schreiben eines Zeichens wird 
jedes Pixel des Zeichen-Rechtecks durchlaufen und entweder auf 
Hintergrund-oder auf Vordergrundfarbe gesetzt. Dadurch muss der Bereich 
vorher nicht gelöscht werden.
Da der Bildaufbau für das gesamte Display auch zu lange gedauert hat 
(ca. 4s) schalte ich für die Änderung mehrerer Zeilen den Xmega 
kurzzeitig auf 32 MHz internen Takt um, baue das betroffene Teilbild neu 
auf und schalte danach den Takt wieder auf 2MHz zurück. Während dieser 
Zeit ahbe ich verschiedene Zeitabhängige Interrupts (USART, TWI, Timer) 
deaktiviert. Damit habe ich eine schnellen Bildaufbau bei (seltenen) 
Änderungen mehrerer Zeichen/Zeilen erreicht.

Gruß, Robert.

von Sascha W. (sascha-w)


Lesenswert?

RobWa schrieb:
> Hallo,
>
> in meinem letzten Projekt (Xmega, TFT-Porto-Board mit 240*320 Pixel und
> HX8347-D-Controller 8-Bit parallel-Display-Ansteuerung 2MHz int. Takt)
> habe ich das folgendermaßen gelöst:
> Zeichensatz mit 8*16 Pixel definiert, beim Schreiben eines Zeichens wird
> jedes Pixel des Zeichen-Rechtecks durchlaufen und entweder auf
> Hintergrund-oder auf Vordergrundfarbe gesetzt. Dadurch muss der Bereich
> vorher nicht gelöscht werden.
genau, und falls das selbe Zeichen wie vorher gezeichnet wird flackert 
auch nichts.


Sascha

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.