5.2 Nummernanzeige

7-Segment-Anzeigen begegnen uns im Alltag an vielen Stellen. Sie finden beispielsweise in Klimaanlagen Verwendung zur Temperaturanzeige oder in Verkehrsleitsystemen als Timer.

Im Grunde genommen handelt es sich bei einer 7-Segment-Anzeige um ein aus 8 LEDs bestehendes Paket, von denen 7 in Streifenform ein „8“ bilden, während eine etwas kleinere punktförmige LED als Dezimalpunkt dient. Diese LEDs sind als a, b, c, d, e, f, g und dp markiert. Sie haben eigene Anodenstifte und teilen sich Kathoden. Ihre Stiftpositionen sind in der untenstehenden Abbildung dargestellt.

img_7seg_cathode

Das bedeutet, dass zur vollständigen Steuerung 8 digitale Signale gleichzeitig benötigt werden, und der 74HC595 kann dies leisten.

Benötigte Komponenten

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

Ein Komplettset ist natürlich besonders praktisch, hier der Link:

Bezeichnung

TEILE IM SET

LINK

Kepler-Kit

450+

Kepler Kit

Die Komponenten können natürlich auch einzeln über die untenstehenden Links erworben werden.

SN

KOMPONENTE

ANZAHL

LINK

1

Raspberry Pi Pico W

1

BUY

2

Micro-USB-Kabel

1

3

Steckbrett

1

BUY

4

Jumperkabel

Mehrere

BUY

5

Widerstand

1 (220Ω)

BUY

6

7-Segment-Anzeige

1

BUY

7

74HC595

1

BUY

Schaltplan

sch_74hc_7seg

Hier ist das Verdrahtungsprinzip im Wesentlichen das gleiche wie bei 5.1 Mikrochip - 74HC595. Der einzige Unterschied besteht darin, dass Q0-Q7 an die Pins a ~ g der 7-Segment-Anzeige angeschlossen sind.

Verdrahtung

74HC595

LED Segmentanzeige

Q0

a

Q1

b

Q2

c

Q3

d

Q4

e

Q5

f

Q6

g

Q7

dp

Verdrahtung

wiring_74hc_7seg

Code

Bemerkung

  • Öffnen Sie die Datei 5.2_number_display.py im Verzeichnis kepler-kit-main/micropython oder kopieren Sie diesen Code in Thonny. Klicken Sie dann auf „Aktuelles Skript ausführen“ oder drücken Sie einfach F5, um es auszuführen.

  • Vergessen Sie nicht, im unteren rechten Eck den Interpreter „MicroPython (Raspberry Pi Pico)“ auszuwählen.

  • Für detaillierte Anleitungen verweisen wir auf Code direkt öffnen und ausführen.

import machine
import time

SEGCODE = [0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f]

sdi = machine.Pin(0,machine.Pin.OUT)
rclk = machine.Pin(1,machine.Pin.OUT)
srclk = machine.Pin(2,machine.Pin.OUT)

def hc595_shift(dat):
    rclk.low()
    time.sleep_ms(5)
    for bit in range(7, -1, -1):
        srclk.low()
        time.sleep_ms(5)
        value = 1 & (dat >> bit)
        sdi.value(value)
        time.sleep_ms(5)
        srclk.high()
        time.sleep_ms(5)
    time.sleep_ms(5)
    rclk.high()
    time.sleep_ms(5)

while True:
    for num in range(10):
        hc595_shift(SEGCODE[num])
        time.sleep_ms(500)

Während das Programm läuft, werden die Zahlen 0 bis 9 sequenziell auf der LED-Segmentanzeige dargestellt.

Wie funktioniert das?

hc595_shift() wird 74HC595 dazu bringen, 8 digitale Signale auszugeben. Es gibt das letzte Bit der Binärzahl an Q0 aus und das Ausgangssignal des ersten Bits an Q7. Mit anderen Worten, wenn die Binärzahl „00000001“ geschrieben wird, gibt Q0 ein hohes Signal aus und Q1~Q7 geben niedrige Signale aus.

Angenommen, die 7-Segment-Anzeige zeigt die Zahl „1“ an, müssen wir ein hohes Signal für b und c schreiben und ein niedriges Signal für a, d, e, f, g und dg schreiben.

img_1_segment

Das bedeutet, die Binärzahl „00000110“ muss geschrieben werden. Zur besseren Lesbarkeit verwenden wir die hexadezimale Schreibweise „0x06“.

In gleicher Weise können auch andere Zahlen auf der LED-Segmentanzeige dargestellt werden. Die nachfolgende Tabelle zeigt die entsprechenden Codes.

Glyph-Code

Zahlen

Binärcode

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 hc595_shift() ein, um die entsprechenden Zahlen auf der LED-Segmentanzeige darzustellen.