2.6 74HC595

Überblick

In dieser Lektion lernen Sie, wie Sie 74HC595 verwenden. 74HC595 besteht aus einem 8-Bit-Schieberegister und einem Speicherregister mit parallelen Ausgängen mit drei Zuständen. Es wandelt die serielle Eingabe in eine parallele Ausgabe um, sodass Sie IO-Ports einer MCU einsparen können.

Erforderliche Komponenten

../_images/list_2.6.png

Fritzing-Schaltung

../_images/image433.png

In diesem Beispiel verwenden wir 74HC595 zur Steuerung der LED. Geben Sie jedem Datenausgangsstift (Q0-Q7) einen 220-Ohm-Widerstand und verbinden Sie ihn dann mit der LED. Der Schaltplan ist wie folgt:

../_images/image434.png

Schematische Darstellung

../_images/image435.png

Code

Bemerkung

  • Sie können die Datei 2.6_74HC595.ino unter dem Pfad sunfounder_vincent_kit_for_arduino\code\2.6_74HC595 direkt öffnen.

  • Oder kopieren Sie diesen Code in Arduino IDE.

Wenn Sie die Codes auf das Mega2560-Board hochgeladen haben, können Sie sehen, wie die LEDs nacheinander aufleuchten.

Code-Analyse

Deklarieren Sie ein Array, speichern Sie mehrere 8-Bit-Binärzahlen, die verwendet werden, um den Arbeitszustand der acht LEDs zu ändern, die von 74HC595 gesteuert werden.

int datArray[] = {B00000000, B00000001, B00000011, B00000111, B00001111, B00011111, B00111111, B01111111, B11111111};

Setzen Sie STcp zuerst auf Low-Pegel und dann auf High-Pegel. Er erzeugt einen ansteigenden Flankenimpuls von STcp.

digitalWrite(STcp,LOW);

shiftOut() wird verwendet, um ein Datenbyte bitweise herauszuschieben, was bedeutet, dass ein Datenbyte in datArray[num] mit dem DS-Pin in das Schieberegister verschoben wird. MSBFIRST bedeutet, sich von hohen Bits zu bewegen.

shiftOut(DS,SHcp,MSBFIRST,datArray[num]);

Nachdem digitalWrite(STcp,HIGH) ausgeführt wurde, befindet sich STcp an der steigenden Flanke. Zu diesem Zeitpunkt werden die Daten im Schieberegister in das Speicherregister verschoben.

digitalWrite(STcp,HIGH);

Nach 8 Mal wird ein Datenbyte in das Speicherregister übertragen. Dann werden die Daten des Speicherregisters an den Bus (Q0-Q7) ausgegeben. Zum Beispiel schaltet Shiftout「B00000001」 die von Q0 gesteuerte LED ein und schaltet die von Q1~Q7 gesteuerte LED aus.

Phänomen Bild

../_images/image95.jpeg