14 Segment Display

By | 23. Februar 2017

Bei einer 14 Segment-Anzeige hat man den gleichen Aufbau wie bei einer 7-Segment-Anzeige nur mit dem Unterschied, dass man 7 zusätzliche Licht-Segmente ansteuern kann. Damit ergeben sich natürlich mehr Darstellungsmöglichkeiten.

Insbesondere, wenn man mehrere solcher Displays neben einander anbringt, wie in meinem Versuchsaufbau. Wie 8 solcher Display-Module angesprochen und angesteuert werden, soll nachfolgend erklärt werden.

Um den Aufwand überschaubar zu halten, wird ein spezieller Treiberbaustein eingesetzt, der über eine I2C Schnittstelle angesprochen werden kann. Die Schaltung dieses Display-Moduls sieht so aus:

 

Um mehrere solcher Module aneinander reihen zu können, kann man die I2C Adresse auf der Platine über die herausgeführten Adressleitungen A0-A2 konfigurieren. Die erfolgt über entsprechende Lötpunkte an der jeweiligen Stelle. Die neue I2C Adresse ergibt sich als Summe aus der Basis-Adresse 0x70 und den Bit-Werten: Adresse = 0x70 + A2 + A1 + A0.

Ist beispielsweise ein Lötpunkt auf A0, das entsprecht einem High-Pegel und somit dem binären Wert 1. Damit ergäbe sich die neue I2C-Adresse durch die einfache Rechnung: 0x70 + A2=0 + A1=0 + A0=1 =>0x71 .

Ansteuerung des 14 Segment Moduls

Das 14-Segment LED Display mit I2C Backpack von der Firma Adafruit verwendet einen solchen Treiber Chip wie oben angesprochen, der die Schwerarbeit beim Ansteuern komplett übernimmt. Es besteht die Möglichkeit, maximal 7 Display-Blöcke aneinander zu reihen und über die I2C Adressen  70-77  separat anzusteuern.
Die Programmierung erfolgt über eine Bibliothek, die es erlaubt verschiedene Anzeigeobjekte zu erzeugen. Das so erzeugte Objekt muss anschliessend initialisiert und die I2C Bus-Adresse angegeben werden, damit es über die das Displaymodule angesprochen werden kann.

Um ein bestimmtes Segment anzusprechen stellt die Bibliothek folgende Funktion bereit:

Die Anordnung der Segmente geht aus nachfolgender Graphik hervor.

Es sind aber auch Routinen implementiert, die es erlauben, jedes einzelne Segment eines Displays anzusteuern. Dazu ist folgender Befehl vorhanden: Disp1.writeDigitRaw(0, 0x3FFF); Mit diesem Code werden beispielsweise alle Segmente angeschaltet. Die Segmente werden analog zu den Segmenten eines 7-Segment-Displays angesprochen, nur dass dazu nun 16bit erforderlich ist.

Um nun beispielsqweise die Segmente A und D (also den oberen und unteren Balken) anzuschalten, setzt man an der entsprechenden Stelle ein Bit auf 1 und berechnet den sich daraus ergebenden Wert. Also an der Position D und der Position A: Binär 1001 und Dezimal 9 und somit ergibt sich der Ansteuercode 0x0009. Die nachfolgende Tabelle verdeutlicht das Schema wie der Steuercode für die einzelnen Segmente berechnet werden kann:

 

Als Programm würde das dann so aussehen:

Mit folgendem Resultat:

Darüber hinaus sind Routinen implementiert, die es erlauben, einzelne Buchstaben an ein Segment zu übertragen. Dazu ist folgender Befehl Disp1.writeDigitAscii(Digit, ‘ char’); vorhanden. Nachfolgendes Programm schreibt so unter anderem  das Wort “Peter 99” auf das Display 1 und Display2:

Damit wird das Ausgeben von Text-Nachrichten natürlich sehr vereinfacht und kann ohne komplizierte Daten-Manipulationen durchgeführt werden. Ich bevorzuge in vielen Fällen die Ausgabe von Nachrichten über eine solche Anzeige, da sie wesentlich unempfindlicher ist als ein LCD Display oder ein Touch-Screen.