Nutzung
preiswerter Grafikdisplays zur Anzeige alphanumerischer Daten
Stand: 9. Oktober 2009
Die
Ausgabe alphanumerischer Daten erfolgt bei
Mikrocontroller-Systemenin der Regel unter Verwendung von
Standard-LCD-Displays. Aufgrund deren begrenzter Anzeigekapazität
gibt es aber auch Anwendungen, für die ihr Einsatz nicht infrage
kommt. In diesen Fällen bietet sich die Verwendung
graphischer Displays mit Zugriff auf jeden einzelnen Bildpunkt ( Pixel
) an.
Aus Neufertigung sind derartige Displays in der Regel relativ
teuer, können aber aus Restbeständen
häufig sehr günstig erworben werden. Eine geeignete
Bezugsquelle ist z.B.:
http://www.pollin.de.
Für meine ersten Versuche habe ich von dort stammende
einfarbige
Displays der Serie TG12864B ( Best.Nr.
120 423, 120 424, 120 425 )
benutzt. Bei einer
Anzeigekapazität von
128x64 Pixeln und des verwendeten 6x8
Pixel-Zeichenfonts erlauben sie die
Darstellung von 8
Zeilen mit
je bis zu 21 Zeichen ( Abb.1 ).
Abb.1
Beispielanzeige: 128x64 Pixel-Display
Interessant ist auch die Verwendung von
320x240 Pixel-Displays. Im
Mikrocontroller-Forum ( http://www.mikrocontroller.net/topic/92704#new
) ist eine einfache Applikation für derartige Displays zu finden,
wobei dieser Thread allerdings inzwischen durch seine mehrere
hundert Beiträge sehr unübersichtlich geworden ist. Bei
Nutzung des 8x12 Pixel-Standardfonts erlaubt das dort
vorgestellte
Projekt eine einfache Darstellung 20 Zeilen mit je max. 40 Zeichen, was
einer Gesamtkapazität von 800 Zeichen für eine voll
beschriebene Bildschirmseite entspricht. Zur Verarbeitung kommen
serielle
Eingangsdaten
mit möglichen
Baudraten zwischen 1200bps und 57600bps. Ein Prozessor des Typs ATMEGA8 übernimmt
die zur
Displayansteuerung erforderliche Signalverarbeitung.
Abb.2
Ansicht des 330x240 Pixel-Grafikdisplays
Die
in Assembler geschriebene Software stammt von Benedikt K. und
wird vom Programmautor freundlicherweise sowohl als Source-Code, als
auch im HEX-Format bereitgestellt ( siehe weiter unten ). Neben
der mit einem ATMEGA8-Prozessor auskommenden Standardversion, gibt es
auch
noch eine die zusätzliche Darstellbarkeit auch größerer
Zeichen (
32x40 Pixel pro Zeichen ) erlaubende Softwarevariante. Hierzu ist dann
allerdings der leistungsfähigere ( aber
ansonsten pinkompatible ) ATMEGA168
einzusetzen. Von mir
verwendet wurden Displays des Herstellers "Nan Ya" mit der
Serienbezeichnung "LTBE9" ( Abb.2 ), wie sie bei Fa. Pollin ( Best.-Nr.
120 460, 120 471 ) angeboten
werden.
Die umgesetzte Schaltungsanordnung weicht etwas von der
Originalapplikation ab
und ist aus Abb.3 ersichtlich.
Abb.3
( zur Volldarstellung anklicken )
Ein kleiner DC/DC-Wandler erzeugt die zur Kontrasteinstellung des
Displays benötigte variable
Negativspannung von ca. -15 bis -20V. Ein weiterer Wandler wird
benötigt, um aus 12V-Eingangsspannung die zur
Hintergrundbeleuchtung (
Backlight ) des Displays erforderliche Wechselspannung von ca. 300Veff.
zu liefern. Derartige Inverter (
Abb.4 ) werden oft für wenige Euros in
Verbindung mit CCFL-Neonröhren angeboten ( z.B.: Pollin
Best.Nr. 531 321
).
Die Hochspannungsseite ist hierbei unbedingt gegen zufälliges
Berühren zu sichern!
Abb.4 mögliche Inverter zur
Erzeugung der Wechselspannung für die
Display-Hintergrundbeleuchtung
VORSICHT HOCHSPANNUNG!
Weitere mögliche Link zu Invertern: http://shop.wiltec.info/index.php/cat/c221_Ersatzteile---Zubehoer.html
Abb.5 zeigt das Beispiel für eine Display-Anzeige. Dabei
handelt es sich in diesem Falle um
Roh-Navigationsdaten, so wie sie z.B. vom Datenausgang eines
D-STAR-Funkgeräte bereitgestellt werden*. Ohne
zusätzliche
Steuerbefehle werden die nach voll beschriebener Seite eintreffenden
Zeichen beginnend am linken oberen Bildschirmrand fortgeschrieben und
überschreiben dabei dort ggf.
bereits vorhandene Zeichen. Man muss die
Seitendarstellung somit von Zeit zu Zeit löschen ( z.B. durch
Neustart [RESET] des Programmes ), um nicht
völlig die Übersicht auf dem Bildschirm zu verlieren. An
dieser Stelle
würde man sich daher besser ein Zeilen-Scrolling wünschen.
* Ein ICOM IC-91E
lieferte nur
dann Ausgangsdaten, wenn auch der serielle Dateneingang ( Sub-D Pin3 )
beschaltet war. Solange an dieser Stelle noch kein Ausgang eines
GPS-Empfängers angeschlossen werden sollte, wurde stattdessen eine
über einen Schutzwiderstand zugeführte Festspannung von +5V
angelegt.
Das hatte allerdings zur Folge, dass sich das Funkgerät bei angestecktem
Datenkabel NICHT länger einschalten liess (!).
Für die Zukunft ist daher vorgesehen, daß für die
Verbindung zwischen Funkgerät und Mikrokontroller wieder ein
klassischer bidirektionalener Pegelwandlerbaustein ( z.B.
MAX232 o.ä.) benutzt werden soll.
Abb.5 Beispiel für
Rohdaten-Anzeige mit 320x240
Pixel-Display
Das Programm verarbeitet alle
Zeichen des erweiterten ASCII-Satzes ( Charakter 0-255 ).
Gemäß Tabelle 1 erfolgt die
Display-Steuerung über einzelne, unterhalb ASCII-Charakter 32 zu
findende Befehle. Die von Benedikt. K für den ATMEGA8
erstellte Software kann in der aktuellen Version als ASM- und
HEX-File hierheruntergeladen werden.
PS: Aus bisher unerfindlichen Gründen läuft die auch
Großzeichendarstellung erlaubende ATMEGA168-Version bei mir
derzeit noch nicht!
Tabelle
1
Auf der Suche nach einer
schnellen Lösung zur Anzeige
aufbereiteter Daten habe ich einen zusätzlichen (
BASCOM-programmierten ) ATMEGA128-Prozessor in die serielle
Daten-Eingangsleitung der
Displayeinheit geschleift ( Abb.6 ). Gemäß Schaltbild Abb.3
erfolgte das vorerst auf der
TTL-Pegelebene unter Auftrennung der Verbindung "a-b".
Abb.6
Zusatzprozessor ATMEGA128 ( zur Volldarstellung anklicken )
Das Hintereinanderschalten von zwei Prozessoren mag zwar
generell nicht DIE
eleganteste Methode darstellen, führte hier aber sehr
schnell
zum gewünschten Erfolg. Abb.7 zeigt ein
Beispiel für auf diese Weise aufbereitete
Daten, wobei es sich in diesem Fall um von einem D-Star-Empfänger
stammende Ausgangssignale handelte.
Abb.7
Beispiel für Decodierung vom D-Star-Navigationsdaten mithilfe
eines
ATMEGA128-Zusatzprozessors.
Verarbeitet werden im NMEA- oder im GPS-A- bzw. APRS-Format ( siehe
Abb.2 ) übertragene Daten.
Auf ähnliche Weise wurden auch
von z.B.
TNC's, APRS-tauglichen Kenwood-Funkgeräten oder auch
TinyTrak4-Trackern bereitgestellte APRS-Daten decodiert. Dabei werden
sowohl im
Standard-APRS-,
als auch im komprimierten MIC-E-Format ausgesandte Protokolle
verarbeitet.
Abb.8
Beispiel für Decodierung von APRS-Navigationsdaten
Im unteren Bildschirmteil werden ggf. mitübertragene Zusatztexte
bzw. -daten angezeigt.
Abb.9 Musteraufbau der
Display-Steuereinheit mit ATMEGA8,
sowie den ATMEGA128-Zusatz-Prozessorbaustein.
Ebenfalls
als
Restposten sehr günstig
verfügbar sind aus
ehemaligen Handys stammende TFT-Farbdisplays mit 65535 Farben und
176x132 Pixeln. Sie
erlauben eine sehr
ansprechende Darstellungsweise von 11 Zeilen mit je bis zu 29 Zeichen.
Abb.10a/b zeigen ein Anwendungsbeispiele, das mithilfe eines
ursprünglich aus
einem Siemens-Handy stammenden
Displays des Typs "LS020" realisiert wurde. Für viele
Prozessortypen bzw. Programmiersprachen sind für diesen
Display-Typ
verwendbare Steuerroutinen
verfügbar. Wer sehr schnell zum Ziel kommen will, der kann auch
einen der Fertigbausteine von: http://www.display3000.de/html/tft-displays.html
verwenden.