Nutzung preiswerter Grafikdisplays zur Anzeige alphanumerischer Daten
Stand: 9. Oktober 2009

Die Ausgabe alphanumerischer Daten erfolgt bei Mikrocontroller-Systemen in 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 hier heruntergeladen 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 )

Links zu ATMEGA128-Moduln:
http://shop.embedit.de/browse_002001004_153__.php
http://www.mcselec.com/index.php?page=shop.product_details&flypage=shop.flypage&product_id=160&category_id=17&option=com_phpshop&Itemid=1
http://www.kamami.com/dl/zl7avr_en.pdf
http://www.olimex.com/dev/avr-h128.html

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.

  
Abb.10a/b  Beispielanzeige mit LS020-Display
Links zum LS020:
http://comwebnet.weimars.net/index.php?option=com_content&task=view&id=8&Ite
http://home.arcor.de/dirk.milewski/seite62.html