74HC595 Schieberegister » Aufbau und Funktionsweise anschaulich erklärt
Das 8 Bit Schieberegister 74HC595 zählt zur großen Gruppe der integrierten Schaltungen (ICs) und ist bei Elektronikern sehr beliebt. Denn ein Schieberegister kann als Port Expander serielle Daten in parallele Daten umwandeln. Dadurch kann z.B. die Anzahl der Verbindungsleitungen zwischen einer Steuerelektronik und einer Diodenanzeige so gering wie möglich gehalten werden. Wir zeigen Ihnen, wie das Schieberegister 74HC595 als Schnittstellenwandler in der Theorie funktioniert und wie die Ansteuerung von bis zu 8 parallel geschalteten LEDs in der Praxis korrekt ausgeführt wird.
Diese Frage lässt sich am leichtesten in Verbindung mit einem Einplatinencomputer erklären. Wenn man z.B. mit einem Arduino oder Raspberry Pi acht Low Current LEDs gleichzeitig ansteuern will, werden auf der Computerplatine acht Ausgänge benötigt. Das ist zwar technisch möglich, aber leider nicht immer praxisgerecht. Besonders dann, wenn der Steuercomputer nur eine begrenzte Anzahl von Ausgängen zur Verfügung stellt.
Jetzt kommt das Schieberegister zum Einsatz. Im Fall des 74HC595 können problemlos 8 LEDs parallel angeschlossen und vom Arduino oder Raspberry Pi seriell angesteuert werden. Für die Datenübertragung vom Einplatinencomputer zum Schieberegister sind dann nur noch drei Leitungsverbindungen erforderlich. Auf einer Leitung werden die Informationen seriell übertragen, welche LEDs leuchten sollen und die beiden anderen Leitungen dienen zur Steuerung des Schieberegisters.
Bei dem Schieberegister handelt es sich um einen integrierten Schaltkreis, der auch als IC (Integrated Circuit) bezeichnet wird. Um die Funktion des Schieberegisters zu verstehen, muss man sich zunächst die Anschlüsse (Pins) genauer anschauen.
Das Bauteil besitzt 16 Anschlüsse (Pins) und auf einer der beiden schmalen Seiten eine halbkreisförmige Markierung. Der erste Anschluss (Pin 1) befindet sich links von der Markierung und ist mit einem Punkt gekennzeichnet. Die Pins sind wie folgt belegt:
Q0 bis Q7 = Parallel geschaltete Ausgänge |
Vcc = Plus-Anschluss der Versorgungsspannung |
GND = Minus-Anschluss der Versorgungsspannung |
OE= Output Enable zur Aktivierung der Ausgänge Q0 –Q7 |
DS = Data Signal (serieller Dateneingang) |
SHCP = SHift Clock Pin ist der Clock-Eingang zur Übernahme des Data Signals in das eigentliche Schieberegister (Shift-Register). |
STCP = STore Clock Pin - Der Wechsel von Low auf High kopiert den Inhalt des Shift-Registers in das Ausgaberegister bzw. Ausgangsregister oder auch Speicherregister |
MR= Master Reset für die Leerung des Shift-Registers |
Q7S = Überlauf für eine eventuelle Kaskadierung |
Hinweis:
Je nach Hersteller werden die Pins auch mit anderen Bezeichnungen gekennzeichnet. Die Funktionalität des ICs bzw. die Belegung der Anschlüsse werden davon aber nicht beeinträchtigt.
Um die Funktion des Schieberegisters zu verstehen, muss man sich eine Reihe von acht Speicherblöcken vorstellen, die jeweils einen Schaltzustand bzw. ein Bit (Low oder High) speichern können. Die Nummerierung von 0 bis 7 erfolgt von links nach rechts.
Dateneingabe
Laden des ersten Bits
Die Ansteuerung bzw. die Dateneingabe in das Shift-Register erfolgt über den Anschluss DS. Dort liegen die Daten, die z.B. von einem Arduino seriell ausgegeben werden, entweder als High- (H) und Low- (L) Impuls vor. Der Befehl zur Speicherung erfolgt über eine positive Taktflanke am Shift Clock Pin (SHCP).
Sobald an diesem Anschluss ein Spannungssprung von Low auf High stattfindet, werden die Inhalte der 8 Speicherblöcke des Shift-Registers um eine Position nach rechts verschoben.
Gleichzeitig wird der aktuelle Wert des Dateneingangs (Low oder High) in den ersten Speicherblock (links) geschrieben. Im gezeigten Beispielbild war es ein High-Pegel.
Um ein weiteres Bit speichern zu können, muss die Spannung am SHCP-Pin zunächst wieder auf Low geschaltet werden.
Verschieben der Bits
Beim nächsten positiven Spannungssprung am SHCP-Eingang werden wieder alle Inhalte des Shift-Registers um eine Position nach rechts verschoben.
Auf den dadurch frei werdenden Speicherplatz auf der linken Seite wird der momentane Pegel des DS-Eingangs gespeichert.
Wenn am DS-Eingang ein Low-Impuls (L) ansteht, wird nun dieser Wert im ersten Speicherblock abgelegt.
Die Spannung am SHCP muss nun erneut auf LOW geschaltet werden, damit weitere Daten abgelegt werden können.
Komplette Belegung des Shift-Registers
Die zuvor beschriebenen Vorgänge wiederholen sich nun so oft, bis alle acht Speicherplätze im Shift-Register belegt sind.
Die Anreihung der Speicherzustände Low oder High entspricht dann exakt der Datenfolge am DS-Eingang im Moment der Speicherung.
Wichtig:
Der Wert des ganz rechten Speicherplatzes (Speicherplatz 7) wird zusätzlich auch am Ausgang Q7S ausgegeben.
Datenüberlauf
Kaskadenfunktion
Beim nächsten Spannungssprung am SHCP-Eingang von Low auf High werden die Inhalte aller 8 Speicherblöcke wieder um eine Position nach rechts verschoben.
Damit würde die Information des ganz rechten Speicherplatzes verloren gehen, weil er überschrieben wird. Da die Information aber gleichzeitig am Pin Q7S ausgegeben wird, kann man bei Bedarf den Q7S-Anschluss mit dem DS-Eingang eines weiteren 74HC595 verbinden (siehe Anschlussbild weiter unten).
Wenn beide ICs vom Arduino einen gemeinsamen SHCP-Impuls erhalten, geht die Information nicht verloren, sondern wird als erstes Bit in das zweite Schieberegister-IC geschrieben.
Nach dieser Methode können mehrere Schieberegister-ICs zu Kaskaden zusammengeschaltet werden.
Datenspeicherung
Datenübernahme ins Ausgabe-Register
Bis jetzt wurde lediglich das Shift-Register mit Daten befüllt. Doch das Shift Register ist nicht direkt mit den Ausgängen des ICs verbunden. Die Ausgänge würden sonst bei jedem Schiebevorgang unkontrolliert umschalten.
Aus diesem Grund wird der Inhalt des Shift-Registers in das Ausgangsregister bzw. Ausgaberegister (Latch) geschoben.
Dies geschieht mit Hilfe des STCP-Anschlusses. Bei einem positiven Spannungssprung bzw. bei einer positiven Flanke werden die Daten aus dem Shift-Register in das Ausgaberegister kopiert.
Das Ausgaberegister arbeitet als 8fach Flip-Flop (8fach Latch) und speichert die acht Schaltzustände des Schieberegisters.
Hinweis: In der Elektronik wird eine Kippstufe, die zwei stabile Zustände einnehmen kann, auch als Flip-Flop bezeichnet.
Auch wenn die Spannung am STCP-Anschluss später wieder auf das Massepotential abfällt, bleiben die Daten im Ausgaberegister erhalten. Selbst wenn sich die Daten im Shift-Register ändern, wirkt sich das nicht auf das Ausgabe-Register aus. Die Daten im Ausgaberegister werden erst beim nächsten positiven Spannungssprung am STCP-Eingang überschrieben.
Ausgänge freischalten
IC-Ausgänge aktivieren
Damit die Signale am Ausgang zur Verfügung stehen, müssen die Ausgänge eingeschaltet sein. Dies erfolgt über den OE-Anschluss.
Wenn dieser Anschluss mit einem Widerstand auf das Massepotential (GND) geschaltet wird, sind die Ausgänge aktiviert (Low-Aktiv) und die angeschlossenen Lampen oder besser gesagt LEDs leuchten.
Ist der OE-Anschluss auf High gesetzt, sind die Ausgänge hochohmig.
Demzufolge haben die Ausgänge drei mögliche Zustände (Tri-State Output): High, Low oder hochohmig.
Die Tatsache, dass der Anschluss ein LOW-Potential aufweisen muss damit die Ausgänge aktiviert sind, wird durch den Überstrich bei dem Pin-Namen zum Ausdruck gebracht.
Datenverschiebung zwischen Shift- und Ausgabe-Register
Nachdem das Ausgangsregister befüllt wurde, können in das Shift-Register nach dem oben gezeigten System neue Daten geschoben werden.
Auch wenn sich die Daten im Shift-Register ändern, bleiben die Daten im Ausgaberegister als auch das Leuchtschema der LEDs davon unberührt.
Dadurch wird z.B. bei einer Laufschriftanzeige noch das vorherige LED-Muster angezeigt, während die neuen Daten bereits in das Shift-Register geladen werden.
Aktuelle Daten in das Ausgabe-Register übernehmen
Erst wenn am STCP-Anschluss wieder ein positiver Spannungssprung stattfindet, werden die aktuellen Daten aus dem Shift-Register in das Ausgaberegister übernommen.
Nun können erneut Daten in das Shift-Register geladen werden.
Daten löschen
Shift-Register löschen
Bei Bedarf können die Daten im Shift-Register auch gelöscht werden.
Dazu wird der Anschluss MR (Master Reset) genutzt. Dieser Anschluss wird im Regelfall über einen Widerstand mit der Versorgungsspannung verbunden. Damit befindet sich der Anschluss kontinuierlich auf einem High-Niveau.
Wird der Anschluss auf das Massepotential (GND oder Low) geschaltet, werden die Daten im Schieberegister gelöscht.
Da an diesem Pin ein Low-Potential anliegen muss (Low Aktiv), um die Daten zu löschen, ist die Bezeichnung des Reset-Anschlusses auch mit einem Überstrich versehen.
Ausgabe-Register löschen
Um auch die Daten im Ausgaberegister zu löschen, muss noch ein positiver Spannungssprung am STCP-Anschluss erfolgen.
Dadurch werden die Schaltzustände im Ausgaberegister überschrieben und die angeschlossenen LEDs erlöschen.
Das Schieberegister befindet sich nun wieder in seinem Ausgangszustand.
Beim Anschluss des Schieberegisters muss man sich in jedem Fall an die technischen Daten des Herstellers halten. Besonders die Betriebsspannung (Vcc) von 2 – 6 V und der der maximale Ausgangsstrom von 35 mA müssen unbedingt eingehalten werden.
Aus diesem Grund müssen in jedem Fall Low Current-LEDs verwendet werden, falls die LEDs direkt vom Schieberegister angesteuert werden. Wer Verbraucher mit höherer Leistung betreiben will, muss mit den Ausgängen Transistoren schalten oder einen Schaltbaustein einsetzen.
Es können aber auch weitere Schaltungen aus dem Bereich der Digitaltechnik direkt mit den Ausgängen des 74HC595 verbunden werden.
Kaskadenschaltung
Wie bereits angesprochen, können mehrere ICs vom Typ 74HC595 hintereinandergeschaltet werden
Dabei muss der Ausgang Q7S des vorgeschalteten ICs mit dem Eingang DS des nachgeschalteten ICs verbunden werden.
Die Anzahl der kaskadierbaren ICs ist theoretisch unbegrenzt.
Doch je mehr ICs hintereinander geschaltet werden, desto länger dauert es, bis alle Speicherplätze um eine Stelle verschoben sind.
In den meisten praktischen Anwendungen ist die Zahl der hintereinander geschalteten Schieberegister begrenzt, sodass der Zeitfaktor in diesem Fall keine große Rolle spielt.
Um die zuvor gemachten theoretischen Aussagen in der Praxis zu überprüfen, eignet sich ein einfacher Schaltungsaufbau. Die überschaubare Schaltung lässt sich leicht auf einer Steckplatine nachbauen und eignet sich somit ideal für den Bereich Education bzw. zur Ausbildung in Schule und Beruf.
Schaltungsbeschreibung:
An den Ausgängen Q0 bis Q7 werden 8 grüne LEDs parallel angeschlossen, die jeweils mit einem 560 Ohm Widerstand an Masse (GND) geschaltet sind. Diese LEDs dienen zur Anzeige der acht Ausgänge. Die LED9 am Q7S dient zur Anzeige des Ausgangssignales für eine Kaskadenschaltung.
Der Taster T1 dient zur Simulation der High- und Low-Impulse am Dateneingang. Wird der Taster nicht betätigt, steht am Eingang DS ein Low-Signal an. Wird der Taster T1 betätigt, steht ein High-Signal an.
Bei Betätigung des Tasters T2 findet am Shift Clock Pin der geforderte Spannungssprung von Low auf High statt. Das aktuelle Signal am DS-Eingang wird nun in das Shift-Register übernommen.
Um ein High-Bit in das Shift-Register zu landen, muss der Taster T1 gedrückt und gehalten werden. Danach wird der Taster T2 betätigt. Anschließend können beide Taster losgelassen werden. Um ein Low-Bit in das Shift-Register zu laden ist es ausreichend, nur den Taster T2 zu betätigen.
Mit den Tasten T1 und T2 kann jetzt das Shift-Register beliebig gefüllt werden. Sobald das 8. Bit eingelesen wurde, zeigt die LED 9 den Zustand des 1. Bits an. Im Falle eines High-Bits wird die LED leuchten.
Sobald der Taster T3 betätigt wird, werden die Daten aus dem Shift-Register parallel in das Ausgaberegister kopiert. Da der Pin OE mit einem Widerstand auf Masse gelegt wurde, sind die Ausgänge dauerhaft eingeschaltet. Deshalb zeigen die LEDs die unterschiedlichen High-/Low-Zustände unverzüglich an. Bei einem High-Bit wird die zum Speicherplatz gehörende LED leuchten und bei einem Low-Bit bleibt sie dunkel.
Mit dem Taster T4 kann das Shift Register gelöscht werden. Die Leuchtreihenfolge der 8 Ausgangs-LEDs wird dabei vorerst nicht beeinflusst. Erst wenn anschließend der Taster T3 betätigt wird, müssen alle LEDs erlöschen.
Schaltungsaufbau
Steckplatinen eignen sich ideal zum Experimentieren.
Für die maximale Flexibilität und für einfache Messungen eignet sich ein Schaltungsaufbau auf einer Steckplatine. Dadurch sind die Anschlüsse leicht zugänglich und es kann genau geprüft werden, ob das Schieberegister-IC innerhalb seiner technischen Spezifikationen betrieben wird. Bei Bedarf lassen sich die Bauteile der Außenbeschaltung sehr einfach austauschen.
Wichtig:
Es müssen prellfreie Taster verwendet werden, denn sonst kann es passieren, dass trotz einmaliger Tastenbetätigung zwei oder drei Impulse abgegeben werden.
Wenn die LEDs direkt vom Schieberegister angesteuert werden, müssen unbedingt Low Current LEDs verwendet werden.
Weiterer Ausbau der Schaltung
Wenn die Schaltung soweit zufriedenstellend funktioniert, können die drei Anschlüsse DS, STCP und SHCP mit einem Einplatinencomputer (Arduino oder Raspberry Pi®) verbunden werden. Nun besteht die Möglichkeit, z.B. ein individuelles Lauflicht zu programmieren. Bei der Kaskadierung mehrerer Schieberegister sind komplexe Matrixanzeigen oder auch Laufschriften möglich. Der Phantasie sind hier fast keine Grenzen gesetzt.