Zwei 7 Segment Displays mit dem Arduino und einem Schieberegister über drei Pins ansteuern
Sieben Segmentanzeigen eignen sich hervorragend zur Darstellung von Zahlen. In der herkömmlichen Verschaltung belegt jedoch schon ein Display acht Datenpins an einem Mikrocontroller. In dieser Anleitung wird gezeigt, wie sich mit nur drei Leitungen zwei Displays über ein SN74HC595N Schieberegister betreiben lassen.
Der Aufbau der Segmentanzeige ist dabei wie folgt:
Für die darzustellenden Zahlen ergibt sich dabei folgende Codierung der LEDs:
Aktive Segmente (mit Pin) | aktive Pincodierung als Hexwert |
||||||||
---|---|---|---|---|---|---|---|---|---|
Darzustellende Zahl | Dot(5) | A(7) | B(6) | C(4) | D(2) | E(1) | F(9) | G(10) | |
0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 7E |
1 | 0 | 0 | 1 | 1 | 0 | 0 | 0 | 0 | 30 |
2 | 0 | 1 | 1 | 0 | 1 | 1 | 0 | 1 | 6D |
3 | 0 | 1 | 1 | 1 | 1 | 0 | 0 | 1 | 79 |
4 | 0 | 0 | 1 | 1 | 0 | 0 | 1 | 1 | 33 |
5 | 0 | 1 | 0 | 1 | 1 | 0 | 1 | 1 | 5B |
6 | 0 | 1 | 0 | 1 | 1 | 1 | 1 | 1 | 5F |
7 | 0 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 70 |
8 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 7F |
9 | 0 | 1 | 1 | 1 | 1 | 0 | 1 | 1 | 7B |
Punkt | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 80 |
Die Verschaltung mit dem Arduino UNO ist dabei wie abgebildet vorzunehmen:
Und diesem Schaltplan:
Code für den Arduino UNO:
#define LATCH 4 #define CLK 3 #define DATA 2 // Array zur Ablage der Zahlencoierung für die LED-Beschaltung byte digitOne[10]= {0x6F, 0x09, 0x73, 0x3B, 0x1D, 0x3E, 0x7C, 0x0B, 0x7F, 0x1F}; byte digitTwo[10]= {0x7B, 0x11, 0x67, 0x37, 0x1D, 0x3E, 0x7C, 0x13, 0x7F, 0x1F}; int i; void setup(){ pinMode(LATCH, OUTPUT); pinMode(CLK, OUTPUT); pinMode(DATA, OUTPUT); } void loop(){ for(int i=0; i<10; i++){ for(int j=0; j<10; j++){ digitalWrite(LATCH, LOW); shiftOut(DATA, CLK, MSBFIRST, ~digitTwo[i]); // digitTwo shiftOut(DATA, CLK, MSBFIRST, ~digitOne[j]); // digitOne digitalWrite(LATCH, HIGH); delay(500); } } }
Bei der Breadboardzeichnung sollte beim 2. Schieberegister das Kabel von Pin 7 auf Pin 6, denke ich. Dann stimmts überein mit dem Schaltplan.