Das Schieberegister 74HC595 stellt mit dem Pin 9 einen seriellen Ausgang zur Verfügung, mit dem eine
Reihenschaltung der Bausteine möglich ist. Auf dem Wege ist eine weitere Ausgangsvervielfältigung möglich. In dem Beispiel
für eine Schieberegister-Reihenschaltung werden drei Schieberegister 74HC595 hintereinander geschaltet. Um die Funktionalität
zu veranschaulichen, kommen als Abnehmer drei 7-Segmentanzeigen zum Einsatz. Hier werden mit lediglich drei Signalen
(Drei Arduino-Ausgänge) 24 neue Ausgänge bereitgestellt. Das Prinzip der Reihenschaltung (Kaskadenschaltung) stellt
folgende Abbildung dar:
74HC595 - Pinbelegung
Beim Einsatz eines einzigen Schieberegisters hat das letzte Bit stets schlechte Karten. Sobald ein neues Bit
reingeschoben wird, muss das letzte Bit Abschied nehmen und geht verloren. In einer Reihenschaltung ändern sich die
Verhältnisse. Das Schieben geht weiter und der letzte Wert landet als erstes Bit bei dem darauf folgenden Schieberegister.
Um das zu ermöglichen, muss der Pin 9 (hier landet das letzte Bit, bevor es verloren geht) mit dem Pin 14 des folgenden
Schieberegisters verbunden werden. Erst wenn das Bit durch alle in Reihe geschalteten Schieberegister gewandert ist, entgeht
es seinem Schicksal nicht und muss endgültig Abschied nehmen.
Der Schaltplan
Schaltplan (Teil 1)
Schaltplan (Teil 2)
Schaltplan (Teil 3)
Das Programm
In dem Programm wird ein Array, das die Ziffern 0-9 und den Punkt enthält, definiert. Jede Ziffer wird als eine
Bitfolge (Byte) dargestellt. Die Bits – Übertragung erfolgt in einer For-Schleife. Die Vorgehensweise, um die Bits in das
Schieberegister zu schreiben, sieht wie folgt aus:
Der Eingang ST_CP (Pin 12) steht auf Low.
1 – Der Eingang des Schieberegisters SH_CP wird auf Low gesetzt (Pin 11).
2 – Der gewünschte Wert wird auf die Leitung DS gesetzt (0 – Low, 1 – High, Pin 14)
3 - Mit SH_CP = High (Pin 11) wird der Wert in das Schieberegister geschrieben (Shift Register).
4 – der Vorgang 1-3 wird wiederholt, bis alle Werte drin sind.
Nachdem alle Bits in gewünschter Reihenfolge übertragen wurden, werden sie mit ST_CP = High (Pin 12) in den Speicher
(Latch) des Schieberegisters übertragen. Sobald der Pin 13 (Enable) auf Masse geschaltet wird, werden die Ausgänge
entsprechend der Bits Reihenfolge ein- bzw. ausgeschaltet.
Solange der Schalter S1 nicht betätigt wird, kümmert sich das Programm nur um das erste Schieberegister. Wird hier z.B.
die Ziffer "5" übertragen, landet die Ziffer "4", die davor in seinem Speicher stand, in dem zweiten Schieberegister. Dies
geschieht automatisch. Folglich wandert die Ziffer "3", die in dem zweiten Schieberegister stand, zu dem dritten.
Wird der Schalter betätigt, werden zuerst alle drei Schieberegister mit Bits gefuttert, bevor es zur Pause kommt, in der
wir das Ergebnis betrachten können. Hier wird also gezielt solange "geschoben", bis alle drei Register gewünschte Werte
beinhalten. In diesem Fall erscheint auf jeder 7-Segmentanzeige die gleiche Ziffer.
// *************************************************************
// Schieberegister 74HC595 Reihenschaltung
// Mit Arduino Mega 2560 und 7-Segmentanzeige
// *************************************************************