So Verbinden Sie Das Schieberegister Mit Arduino

Inhaltsverzeichnis:

So Verbinden Sie Das Schieberegister Mit Arduino
So Verbinden Sie Das Schieberegister Mit Arduino

Video: So Verbinden Sie Das Schieberegister Mit Arduino

Video: So Verbinden Sie Das Schieberegister Mit Arduino
Video: Schieberegister 74HC595 am Arduino - Tutorial 2024, Kann
Anonim

In einem der vorherigen Artikel haben wir bereits kurz auf die Verwendung eines Schieberegisters eingegangen, insbesondere auf den 74HC595. Schauen wir uns die Möglichkeiten und das Verfahren für die Arbeit mit dieser Mikroschaltung genauer an.

Schieberegister 74HC595
Schieberegister 74HC595

Notwendig

  • -Arduino;
  • - Schieberegister 74HC595;
  • - Anschlussdrähte.

Anleitung

Schritt 1

Schieberegister 74HC595 und dergleichen werden als Vorrichtungen zum Konvertieren serieller Daten in parallele verwendet und können auch als "Latch" für Daten verwendet werden, die den übertragenen Zustand halten.

Die Pinbelegung (Pinout) ist in der Abbildung links dargestellt. Ihr Zweck ist wie folgt.

Q0… Q7 - parallele Datenausgänge;

GND - Masse (0 V);

Q7 '- serielle Datenausgabe;

^ MR - Master zurücksetzen (aktiv niedrig);

SHcp - Takteingang des Schieberegisters;

STcp - "Latch"-Taktimpulseingang;

^ OE - Ausgangsfreigabe (aktiv niedrig);

Ds - serieller Dateneingang;

Vcc - Stromversorgung +5 V.

Strukturell wird die Mikroschaltung in mehreren Arten von Fällen hergestellt; Ich werde die in der Abbildung rechts gezeigte verwenden - die Ausgabe - weil es ist einfacher mit einem Steckbrett zu verwenden.

Erscheinungsbild und Pinbelegung des Schieberegisters
Erscheinungsbild und Pinbelegung des Schieberegisters

Schritt 2

Lassen Sie mich kurz an die serielle SPI-Schnittstelle erinnern, die wir verwenden werden, um Daten an das Schieberegister zu übertragen.

SPI ist eine bidirektionale serielle 4-Draht-Schnittstelle, an der ein Master und ein Slave beteiligt sind. Der Master ist in unserem Fall der Arduino, der Slave ist das Register 74HC595.

Die Entwicklungsumgebung für Arduino verfügt über eine eingebaute Bibliothek zum Arbeiten an der SPI-Schnittstelle. Bei der Anwendung werden die in der Abbildung markierten Schlussfolgerungen verwendet:

SCLK - SPI-Taktausgang;

MOSI - Daten vom Master zum Slave;

MISO - Daten vom Slave zum Master;

SS - Slave-Auswahl.

Arduino-Board-Standard-SPI-Pins
Arduino-Board-Standard-SPI-Pins

Schritt 3

Lassen Sie uns die Schaltung wie auf dem Bild zusammensetzen.

Ich werde auch einen Logikanalysator an alle Pins der Schieberegister-Mikroschaltung anschließen. Mit ihrer Hilfe werden wir sehen, was auf der physischen Ebene passiert, welche Signale wohin gehen und was sie bedeuten. Es sollte ungefähr so aussehen wie auf dem Foto.

Schaltplan für Schieberegister 74HC595 zu Arduino
Schaltplan für Schieberegister 74HC595 zu Arduino

Schritt 4

Lassen Sie uns eine Skizze wie diese schreiben und in den Arduino-Speicher laden.

Die Variable PIN_SPI_SS ist eine interne Standardkonstante, die dem Pin "10" des Arduino entspricht, wenn er als Master der hier verwendeten SPI-Schnittstelle verwendet wird. Im Prinzip könnten wir genauso gut jeden anderen digitalen Pin auf dem Arduino verwenden; dann müssten wir es deklarieren und seine Betriebsart einstellen.

Indem wir diesen Pin LOW speisen, aktivieren wir unser Schieberegister zum Senden/Empfangen. Nach der Übertragung erhöhen wir die Spannung wieder auf HIGH und der Austausch endet.

Eine Skizze zur Demonstration der Funktionsweise des Schieberegisters
Eine Skizze zur Demonstration der Funktionsweise des Schieberegisters

Schritt 5

Lassen Sie uns unsere Schaltung in Arbeit verwandeln und sehen, was der Logikanalysator uns zeigt. Die allgemeine Ansicht des Zeitdiagramms ist in der Abbildung dargestellt.

Die blaue gestrichelte Linie zeigt 4 SPI-Linien, die rote gestrichelte Linie zeigt 8 Kanäle paralleler Daten des Schieberegisters.

Punkt A auf der Zeitskala ist der Moment, in dem die Zahl "210" in das Schieberegister übertragen wird, B ist der Moment, in dem die Zahl "0" geschrieben wird, C ist der Zyklus, der sich von Anfang an wiederholt.

Wie Sie sehen, von A nach B - 10,03 Millisekunden und von B nach C - 90,12 Millisekunden, fast wie wir in der Skizze gefragt haben. Eine kleine Zugabe in 0, 03 und 0, 12 ms ist die Zeit für die Übertragung serieller Daten vom Arduino, wir haben hier also nicht genau 10 und 90 ms.

Timing-Diagramm von Arduino-Austausch und Schieberegister 74HC595
Timing-Diagramm von Arduino-Austausch und Schieberegister 74HC595

Schritt 6

Schauen wir uns Abschnitt A genauer an.

Ganz oben ist ein langer Impuls, mit dem der Arduino die Übertragung auf der SPI-ENABLE-Leitung initiiert - Slave-Auswahl. Zu diesem Zeitpunkt werden SPI-CLOCK-Taktimpulse erzeugt (zweite Zeile von oben), 8 Stück (für die Übertragung von 1 Byte).

Die nächste Zeile von oben ist SPI-MOSI - die Daten, die wir vom Arduino zum Schieberegister übertragen. Dies ist unsere Zahl "210" in binärer Form - "11010010".

Nach Abschluss der Übertragung am Ende des SPI-ENABLE-Impulses sehen wir, dass das Schieberegister auf seinen 8 Zweigen denselben Wert eingestellt hat. Ich habe dies mit einer blauen gestrichelten Linie hervorgehoben und die Werte der Übersichtlichkeit halber beschriftet.

Einstellung der Nummer 210 an einem Parallelbus über SPI
Einstellung der Nummer 210 an einem Parallelbus über SPI

Schritt 7

Wenden wir uns nun Abschnitt B zu.

Auch hier beginnt alles mit der Auswahl eines Slaves und der Erzeugung von 8 Taktimpulsen.

Die Daten auf der SPI-MOSI-Leitung sind jetzt "0". Das heißt, wir schreiben in diesem Moment die Zahl "0" in das Register.

Aber bis die Übertragung abgeschlossen ist, speichert das Register den Wert "11010010". Es wird an den parallelen Pins Q0.. Q7 ausgegeben und wird ausgegeben, wenn Taktimpulse in der Leitung vom parallelen Ausgang Q7' zur SPI-MISO-Leitung vorhanden sind, die wir hier sehen.

Setzen der Zahl 0 an einem parallelen Bus über SPI
Setzen der Zahl 0 an einem parallelen Bus über SPI

Schritt 8

Daher haben wir uns eingehend mit dem Informationsaustausch zwischen dem Master-Gerät, dem Arduino, und dem Schieberegister 74HC595 befasst. Wir haben gelernt, wie man ein Schieberegister anschließt, Daten hineinschreibt und Daten daraus liest.

Empfohlen: