Bastelecke

des OV SØ6 Dresden-Land        

  AD9859 mit vielen Beinchen   Smith-Diagramm   Feldst__rkeindikator.jpg    VV Platine    auch N-Stecker werden gefaßt   VV-Schaltung     Aufbügeln mit gleichmäßigem Druck  



Ein Traum in Farbe – Programmierung eines grafischen TFT-Farbdisplays


Als digitale Anzeigeeinheit für selbstgebaute Mess-und Funkgeräte verwendete ich bislang die verbreiteten grün-gelben oder blau-weißen Punktmatrix-LCD-Module. Wegen ihrer sehr eingeschränkten grafschen Darstellungsmöglichkeiten schielte ich neidisch auf die detailreichen, leuchtkräftigen Farbdisplays der Mobiltelefone mit ihren farbenfrohen Bedienoberflächen. Nachdem auch noch die Preise für TFT-Farbdisplays auf oder teilweise sogar deutlich unter das Niveau der Punktmatrixanzeigen sanken, fiel meine Entscheidung, die Herausforderung grafisches Farbdisplay anzunehmen.

                                                   Programmierbeispiele

Die Abbildungen zeigen den aktuellen Stand. Leider entspricht die Qualität der Bilder nicht der tatsächlichen optischen Leistung des Displays. Die Belichtungszeit war wohl zu kurz gewählt, so dass sich die Zeilen zu deutlich abbilden. Bessere Bilder folgen.

 

Code-Beispiel


Technische Daten

3,5" TFT-Grafik-Display der Firma Crytalfontz America Inc.

Typ: CFAF-320-240F-035T

Bildschirmgröße: 70mm × 52mm, aktive Bilddiagonale 89mm

320 × 240 Bildpunkte (76800 Pixel), 16,7 Millionen Farben (RGB)

integrierter Controller von Solomon Typ SSD 2119

50-poliges FFC-Kabel (Flexi-Band-Kabel) mit Nullkraftstecker-Adapter

Spannung: 4,0 V; 2x10 mA / 9 V für die zweizeilige Hintergrundbeleuchtung

16 Datenleitungen, 16 Steuerleitungen, 3,3 V max.


Mikrokontroller

Das TFT-Farbdisplay wird von einem Atmel-Mikrokontroller der neuesten Generation aAngesteuert.. Da das Display alleine 16 Datenleitungen benötigt und für verschiedene Anwendungen noch genügend I/Os zur Verfügung stehen sollen, fiel die Wahl auf einen ATXmega 128 A1 mit 100 Pins.


Platine

Die Platinen-Layout wurde mit dem für Amateurzwecke hervorragend geeigneten SprintLayout 5.0 von ABACOM entworfen und mit der Thermo-Transfer-Methode realisiert. Dabei betrugen die Leiterbahnbreite als auch die Abstände zwischen den Bahnen jeweils 0,25 mm. Im gesamten Herstellungsprozess waren nur wenige Korrekturen erforderlich, nach dem Ätzvorgang mussten lediglich zwei Kupferbrücken zwischen Leiterbahnen durchtrennt werden. Wider Erwarten war das Löten des Hundertfüsslers nicht sehr schwierig. Nach Aufbringen von Flussmittel wurde die Lötkolbenspitze mit nur soviel Lötzinn benetzt, damit keine Brücke zwischen zwei Kontakten entstehen konnte. Die Lötkolbenspitze wurde mit der Spur Lötzinn dann zwischen zwei Pins gehalten, so dass beide gleichzeitig verlötet wurden. Als optisches Hilfsmittel wurde nur eine stark vergrößern de Lupe, ein sogenannter Fadenzähler verwendet.

Vorarbeiten

Jeder noch so lange Weg beginnt mit einem Schritt – jede Grafikprogrammierung beginnt mit einem Pixel. Wenn das erste Pixel leuchtet und auch wieder gelöscht werden kann, ist das Wesentliche geschafft. Aber es dauerte bis zu diesem Ereignis eine ganze Weile. Bis dahin waren erforderlich:


      Vorbereitungen  
           richtiger Anschluss des 50-poligen FFC  
    korrekte Zuordnung aller Daten- und Steuerleitungen  
    Hardware-Abstraktion mit weit über 1000 Möglichkeiten der Display-Initialisierung  
    Einlesen in die 445-seitige ATXmega-Dokumentation
 
   

intensives Studium der 95-seitigen Display Controller-Dokumentation (jede Zeile!) und der 133-seitigen Display-Beschreibung

 
    Initialsierung der 44 Register  
         

Download Initialisierung.pdf


Kaum war alles richtig gemacht – und schon funktionierte das Display. Von der Ansteuerung eines Pixels leitete sich die weitere grafische Programmierung ab. Das Pixel selbst ist durch seine x/y-Koordinate definiert, seine Farbe durch einen 16/18-Bit RGB-Farbcode. Die grafische Programmierung wurde hierarchisch von einfachen grafischen Elementen bis zu komplexen Darstellungen aufgebaut. Programmiert wurde in C mit dem AVR Studio 4.0 von ATMEL. Die kompilierte Software wurde über die PDI-Schnittstelle des ATXmega mit einem schnellen USB- Programmmer transferiert.


      Algorithmen in C für:    
     

Linien: durchgezogene, gestrichelte oder gepunktete Linien, orthograd oder schräg, mittels Bresenheim-Algorithmus

   
    Rechtecke: als Linie oder als Fläche    
           

Labels: Rechtecke mit abgerundeten Ecken und variablem Eckenradius

   
    Kreise und Kreissegmente: ebenfalls als Linie oder als Fläche, unter Verwendung von geometrischen und algebraischen Algorithmen    
    dynamische Linien: z.B. beweglicher Zeiger.
   
    Skalen mit geometrisch definierten Skalenstrichen    
    Generierung von 5 Fonts unterschiedlicher Größe mit einem Fontgenerator    
    Entwurf einer einfachen Textverarbeitung, dezimalpunktorientierte Zahlendarstellung    
    Implementierung einer digitalen Signalverarbeitung für ein einfaches Speicher-Oszilloskop    

Anwendungsbeispiele

Mit den grafischen Werkzeugen entwickelte sich die Software für verschiedene Anwendungen fast wie von selbst. Bislang wurden beispielhaft folgende Oberflächen programmiert:


    Auswahlmenü mit Aktivierungsanzeige, Tasten gesteuert
    Mittelwellen-Transceiver: Bedienoberfläche mit digitaler Frequenzeinstellung mittels Dreh-Encoder,

Bandbreiteneinstellung, intelligentem S-Meter (Zeigeranzeige, S-Wert mit dB-Angabe über S9 sowie einer absoluten dBm-Wertangabe), Band-Spektroskop

    Netzteil: Oberfläche für ein digital kontrolliertes Labornetzgerät
    Digitales Speicheroszilloskop:  Digitale Signalverarbeitung, einstellbare Triggerschwelle

mit Freilauf und automatischer Signalvermessung

    Milliwatt-Meter: Parallele Anzeige in dBm, mW und µV an 50 Ohm, digital einstellbarer Abschwächer
    Smith-Diagramm als grafische Animation
    Analoges Zeigerinstrument: universell einsetzbares trägheitsloses Anzeigeinstrument mit einer Auflösung der Skalenanzeige von 300 Pixeln! Zusätzliche Balkenlupe mit weiterer Steigerung der analogen Auflösung um den Faktor 10. Der Anzeigewert oder errechnete Parameter können auch als Digitalwerte mit korrespondierender Masseinheit eingeblendet werden.


Wird fortgesetzt.

Christian, DL9NL

 

- Website S06 | REDAXO 4.3.1 | Webmaster DL9NL