Die 7-Segmentanzeige stammt aus den Anfängen der Digitalelektronik. Mit
nur 7 Segmenten lassen sich die Zahlen 0 bis 9 darstellen. Waren die
ersten Anzeigen noch Gasentladungsröhren (Nixie-Anzeigen) setzen sich
schnell die LED-Anzeigen und die LCD-Displays durch. 7-Segmentanzeigen
werden auch heute noch vielfältig eingesetzt, z.B. in Uhren,
Taschenrechnern, Betriebsanzeigen etc.
Die in dem Projekt verwendete Anzeige ist 4-stellig und über I
2C
ansprechbar. Bei der Entwicklung stellte es sich heraus, dass es kein
aktuelles IC mehr gibt, dass sowohl 4 stellige Anzeigentreiber hat und
über I
2C ansprechbar ist. Damit war eine
Eigenlösung erforderlich. Diese ist mit einem Attiny2313 und 4
Treibertransistoren realisiert worden. Der Attiny ist in diesem Fall
als Slave programmiert.
Die Schreibadresse lautet 118 gefolgt von den 4 Digitwerten (zulässig
sind nur Werte zwischen 0 und 9 und 10 für das Minuszeichen)
I2cstart
I2cwbyte 118
I2cwbyte 1
I2cwbyte 2
I2cwbyte 3
I2cwbyte 4
I2cstop
Um den Aufwand möglichst gering zu halten, wurde darauf verzichtet, die I
2C-Ansteuerung
und den 7-Segmenttreiber mit zwei Mikrocontrollern zu realisieren. Der
Attiny ist mit beiden Aufgaben an der Grenze seiner Leistungsfähigkeit,
was sich bei schnellen Anzeigewechseln schon mal mit einem Flackern
bemerkbar macht. Als Digitalvoltmeter oder Uhr ist die Anzeige aber
problemlos einsetzbar.
Den Quellcode für den Attiny2313 ist in der Datei
7Segmentanzeige_i2c.bas
zu finden. Er kann mit einem externen Programmer problemlos verändert
werden. Weitere Sonderzeichen (Grad, C) und die Ansteuerung der
Dezimalpunkte ist in Arbeit.
Ein Beispielprogramm befindet sich in der Datei
7Segment.bas
Um die 4 einzelnen 7-Segmentanzeigen direkt anzusteuern, wären 28
I/O-Ports erforderlich, zusätzlich noch 2 I/O-Ports für die
I
2C-Schnittstelle, das wären insgesamt 30 Ports und darüber verfügt der
Attiny2313 nicht. Die Anzeige muss also gemultiplext werden. Dazu wird
in hoher Taktfrequenz jeweils eine 7-Segmentanzeige nach der anderen
angesteuert. Dazu sind nur 7+4 = 11 Ports erforderlich, mit der
I
2C-Schnittstelle sind es dann 13 Ports. Dies ist mit dem Attiny
einfach realisierbar.
Der PortB dient als Datenport, 4 I/O-Ports des PortD sind die
Multiplexerports (PortD.3 bis PortD.6). PortD.0 und PortD.1 stellen die
I
2C-Schnittstelle dar. Da Bascom keinen I
2C-Sklaven zur Verfügung
stellt, wurde hier auf eine kostenlose Bibliothek
MyI2c.LIB
aus dem Internet zurückgegriffen. Ein Schönheitsfehler des I
2C-Sklaven
ist, dass er solange wartet, bis er aufgerufen wird. In dieser Zeit
wurde der Attiny2313 nichts tun, die Anzeige bliebe dunkel. Deshalb
wird automatisch alle 8ms ein Interrupt ausgeführt. In der
Interrupt-Routine wird dann die Anzeige einmal neu aufgebaut, bis der
I
2C-Sklave wieder wartet. So kommt eine flackerfreie Anzeige mit 125Hz Wiederholfrequenz zu stande.
Insgesamt lassen sich 11 Zeichen, die Zahlen 0 bis 9 und ein Minuszeichen, darstellen:

|

|

|

|

|

|
PortB = 6
|
PortB = 59
|
PortB = 47
|
PortB = 102
|
PortB = 109
|
PortB = 125
|

|

|

|

|

|
|
PortB = 7
|
PortB = 127
|
PortB = 111
|
PortB = 95
|
PortB = 32
|
|
Zeichentabelle:
Zeichen
|
Wert
|
0
|
0
|
1
|
1
|
2
|
2
|
3
|
3
|
4
|
4
|
5
|
5
|
6
|
6
|
7
|
7
|
8
|
8
|
9
|
9
|
-
|
10
|
°
|
11
|
C
|
12
|