User manual

45 46
6.4 Die Siebensegment-Anzeige - Prinzip
In den Anfängen der Computertechnik machte man sich Gedanken, wie man Ziffern darstellen kann. Am ein-
fachsten waren damals 10 Lampen, die von 0 bis 9 beschriftet wurden.
Später hat man dann die Lampen zum Beleuchten kleiner Glasplatten mit entsprechenden Bohrungen verwen-
det. Zur gleichen Zeit kamen die sogenannten Nixi-Röhren auf, die Ziffern waren aus Draht geformt, und bei
Anlegen einer höheren Spannung unter einem Schutzgas, begannen die Ziffern zu leuchten.
Dann kam man auf die Idee, die Zahlen in Segmente zu zerlegen. Mit sieben Banken kann man alle Ziffern zwi-
schen 0 und 9 darstellen. Die ersten Anzeigen verwendeten noch Glühdrähte, aber mit dem Aufkommen der
LEDs wurde es einfacher. Hinter jedem Segment verbirgt sich eine LED, die den Balken beleuchtet. Die einzel-
nen Segmente werden häug mit a bis h bezeichnet. Optional gibt es noch eine einzelne LED für den Dezimal-
punkt.
6.5 Siebensegment-Anzeige als I2C Brick - Aufbau und Adressen
Wir realisieren nun eine einfache Schaltung mit einer der beiden 7-Segment-Anzeigen. Achtung, die Adressen
sind voreingestellt. Unter Umständen muss die Einstellung kontrolliert oder anpasst werden. Die Schalter sind
auf der Rückseite der Platine, dazu muss man den Deckel vorsichtig öffnen und beim Wiederverschließen unbe-
dingt drauf achten, dass er korrekt eingesetzt wird (Orientierung beachten).
Wir haben eine kleine Bibliothek für den Arduino Nano vorbereitet, in dem alle Segmente kodiert sind. Dies
geschieht mit Hilfe einer so genannten Zeichentabelle. Den Ziffern und sogar allen Buchstaben von A-Z wird
mit einem Byte die Kombination der Segmente in einer Tabelle zugewiesen. Die Tabelle wird dann vom Pro-
gramm über den Index, dem Code der Ziffer angesprochen und so umgerechnet. Dazu haben wir schon ein
paar Unterprogramme vorbereitet.
Die Prozedur display_seg1x() zeigt ein einzelnes Segment an. Dazu übergibt man die I2C Adresse des entspre-
chenden Treibers. Die Routine get_7seg () übernimmt dabei die Umrechnung des ASCII-Codes in den Index der
Tabelle mit den Segmentzuordnungen. Mit display_seg1xbin () können die Segmente auch direkt angesprochen
werden. Zwei solcher Parallel-Port-Treiber gibt es für die beiden Ziffern die aufsteigende Adressen besitzen.
Dazu am besten aber unser Programmbeispiel genauer studieren und einfach mal damit experimentieren.
Das Beispielprogramm gibt die gefundene I2C Adresse auf dem Display aus, so kann man sich den Wert leicht
notieren.
+
-
9V
1A
C 7-Segment-LED
SCL
SDA
SCL
SDA
+9V
Adr:40,44,48,4C
PCF8574 T
+9V
SCLS DA
+9V
A0
A1
Tx
Rx
PD2
SCLKMOSI
PD3
PD 6
PD 4
PD 5
PD 7
A7
A3
A2
A6
NANO
to
Br ick`R`
3,3V 5V
USB
B0
SS
MISC
B1
C
C 7-Segment-LED
SCL
SDA
SCL
SDA
+9V
Adr:40,44,48,4C
PCF8574 T
+9V
a
b
c
d
e
f
g
dp
Bei unserem Brick sind zwei solcher 7-Segment-Anzeigen un-
tergebracht.
Die LEDs werden mit Hilfe zweier Bausteine 8574T angesteuert
(16 Ausgangsleitungen an die LEDs). Auf der Rückseite lässt
sich mit kleinen Schaltern die I2C Adresse einstellen. Maximal
sind vier solcher Bausteine an einem I2C Bus nutzbar.
Die Ziffern 0 bis 9. Man kann sogar Buchstaben mit etwas Phantasie darstellen (Aufgabe für den Leser die Buch-
staben E,A,L,klein O - dann wird es phantasievoll). In der Praxis gibt es noch 16 Segmentanzeigen, die aber lei-
der nur schlecht verfügbar sind. Wir werden bei der OLED dann noch elegantere Formen kennenlernen, wenn
man Buchstaben oder Graken braucht.
Was passiert? Auf der Siebensegment-Anzeige er-
scheinen zwei Zahlen, die der Adresse des I2C Bus-
ses entsprechen. Also entweder 40, 44, 48, 4C oder
aus der Gruppe 70, 74, 78, 7C. Die Adresse hängt
von der Einstellung des DIL-Schalters auf der Rück-
seite und vom Bausteintyp (8574T oder 8574AT) ab.