5.10 ShiftOut(Segmentanzeige)

In einem früheren Beispiel haben wir die Funktion shiftout() verwendet, um acht LEDs zu beleuchten. Hier verwenden wir sie, um die Zahlen 0-9 auf der 7-Segment-Anzeige darzustellen.

Die 7-Segment-Anzeige ist im Grunde ein Gerät, das aus 8 LEDs besteht. 7 davon sind streifenförmige LEDs, die eine „8“ formen, und es gibt eine etwas kleinere LED als Dezimalpunkt. Diese LEDs sind als a, b, c, d, e, f, g und dp markiert. Sie verfügen über eigene Anoden-Pins und teilen sich Kathoden. Ihre Pin-Positionen sind in der untenstehenden Abbildung dargestellt.

../_images/segment_cathode.png

Benötigte Komponenten

Für dieses Projekt benötigen wir die folgenden Bauteile.

Es ist durchaus praktisch, ein komplettes Set zu kaufen. Hier ist der Link:

Name

ARTIKEL IN DIESEM KIT

LINK

3 in 1 Starter Kit

380+

3 in 1 Starter Kit

Sie können diese auch einzeln über die folgenden Links erwerben.

KOMPONENTENVORSTELLUNG

KAUF-LINK

SunFounder R3 Platine

BUY

Breadboard

BUY

Jumper-Kabel

BUY

Widerstand

BUY

7-Segment-Anzeige

BUY

74HC595

BUY

Schaltplan

../_images/circuit_6.5_segment.png

Verdrahtung

Verdrahtung

74HC595

LED Segmentanzeige

Q0

a

Q1

b

Q2

c

Q3

d

Q4

e

Q5

f

Q6

g

Q7

dp

../_images/segment_bb.jpg

Code

Bemerkung

  • Öffnen Sie die Datei 5.10.shiftout_segment.ino im Pfad 3in1-kit\basic_project\5.10.shiftout_segment.

  • Oder kopieren Sie diesen Code in die Arduino IDE.

  • Oder laden Sie den Code über den Arduino Web Editor hoch.

Nachdem der Code erfolgreich hochgeladen wurde, können Sie beobachten, wie die LED Segmentanzeige die Zahlen 0~9 nacheinander anzeigt.

Wie funktioniert das?

shiftOut() lässt den 74HC595 8 digitale Signale ausgeben. Es gibt das letzte Bit der Binärzahl an Q0 aus und das erste Bit an Q7. Das bedeutet, dass das Schreiben der Binärzahl „00000001“ dazu führt, dass Q0 ein hohes Signal und Q1~Q7 ein niedriges Signal ausgibt.

Angenommen, die 7-Segment-Anzeige zeigt die Zahl „2“ an, wir müssen ein hohes Signal für a, b, d, e und g schreiben und ein niedriges Signal für c, f und dp. Das bedeutet, die Binärzahl „01011011“ muss geschrieben werden. Zur besseren Lesbarkeit verwenden wir die hexadezimale Notation als „0x5b“.

../_images/7_segment2.png

Ebenso können wir die 7-Segment-Anzeige auf die gleiche Weise andere Zahlen anzeigen lassen. Die folgende Tabelle zeigt die Codes, die diesen Zahlen entsprechen.

Zeichen Code

Zahlen

Binär Code

Hex Code

0

00111111

0x3f

1

00000110

0x06

2

01011011

0x5b

3

01001111

0x4f

4

01100110

0x66

5

01101101

0x6d

6

01111101

0x7d

7

00000111

0x07

8

01111111

0x7f

9

01101111

0x6f

Geben Sie diese Codes in shiftOut() ein, um die LED Segmentanzeige die entsprechenden Zahlen anzeigen zu lassen.