Schieberegister 74HC595 Arduino anschließen & verwenden

Das Arduino-Schieberegister 74hc595 wird zur Steuerung der Sieben-Segment-Anzeige und der LEDs verwendet. Die Schieberegister haben viele Verwendungszwecke, einer der beliebtesten ist die Multiplikation der Arduino-Ausgänge (man nimmt 3 Pins und erhält 8). Schauen wir uns Beispiele mit Programmen und Schaltplänen an, wie man den 74hc595n verwendet, um LEDs und die 5161as-Sieben-Segment-Anzeige anzuschließen.




Bestandteile:

  • Arduino Uno / Arduino Nano / Arduino Mega
  • 74HC595 Shift Register
  • LEDs und Widerstände
  • Sieben Segment Anzeige 5161as
  • Breadboard
  • Dupont-Kabel

Um zu verstehen, wie der 74hc595-Chip funktioniert, betrachten Sie die Pinbelegung des 74hc595-Schieberegisters, die in der Abbildung unten dargestellt ist. Die Kontakte DS, ST_CP und SH_CP sind Steuerpins und werden mit beliebigen Ausgängen des Arduino-Boards verbunden. Die Pins Q0Q7 sind Schieberegisterbits. Wenn Sie ein Byte vom Arduino senden, können Sie den Zustand des Bits ändern (HIGH oder LOW).

Schieberegister 74HC595 Arduino pinout, datasheet

Schieberegister 74HC595 Arduino pinout, datasheet

Merkmale des 74HC595 Shift Register (datasheet)

  • Versorgungsspannung: 2 – 6 V
  • Stromaufnahme: ICC = max. 80 μA
  • Max. Stromstärke: 20 mA
  • Ausgänge: 8 (parallel)
  • Temperaturbereich: -40°C bis +85°C

Wenn wir das Byte: 00011000 an den 74HC595 senden, ändert er den Zustand (HIGH oder LOW) seiner Ausgänge. Wir werden dann sehen, dass, wenn eine LED an jeden seiner Ausgänge angeschlossen ist, die 2 „mittleren“ LEDs (geografisch gesehen) den entgegengesetzten Zustand zu ihren Gegenstücken haben werden. Wenn man also nur zwei Arduino-Digitalausgänge verwendet, kann man tatsächlich 8 Digitalausgänge nutzen.

Wie man einen 74HC595 Shift Register Arduino anschließt

Wie man einen 74HC595 Arduino anschließt

Das folgende Beispiel verwendet die Funktion bitWrite(x, n, b), mit der Sie den Zustand eines bestimmten Bits einer Variablen ändern können. x ist die Variable, deren Bit geändert werden soll; n ist die Nummer des Bits, dessen Zustand geändert werden soll (beginnt mit dem Bit ganz rechts), b ist der neue Wert des Bits (0 oder 1). Mit dem Programm können Sie acht LEDs über die 3 digitalen Pins des Arduino-Boards einschalten.

Programm Arduino für Steuerung einer LEDs mit einer 74HC595N




#define dataPin  10
#define latchPin 11
#define clockPin 12

byte byteToSend = 0;

void setup() {
  pinMode(latchPin, OUTPUT);
  pinMode(clockPin, OUTPUT);
  pinMode(dataPin, OUTPUT);
  digitalWrite(latchPin, HIGH);
}

void loop() {
  for (byte bitPos = 0; bitPos < 8; bitPos++) {
     byteToSend = 0;
     bitWrite(byteToSend, bitPos, HIGH);
     digitalWrite(latchPin, LOW);
     shiftOut(dataPin, clockPin, LSBFIRST, byteToSend);
     digitalWrite(latchPin, HIGH);
     delay(100);
  }
 
  for (byte bitPos = 0; bitPos < 8; bitPos++) {
     byteToSend = 0;
     bitWrite(byteToSend, bitPos, HIGH);
     digitalWrite(latchPin, LOW);
     shiftOut(dataPin, clockPin, MSBFIRST, byteToSend);
     digitalWrite(latchPin, HIGH);
     delay(100);
  }
}
  1. in der for Arduino-Schleife ändert sich die Variable bitPos von 0 auf 8. Die Funktion bitWrite(byteToSend, bitPos, HIGH); ändert das Byte in binäre Form und sendet es an das Register. Mit bitPos=0 erhalten wir B00000001, mit bitPos=1 erhalten wir B00000010, mit bitPos=2 erhalten wir B00000100 usw.;
  2. MSBFIRST und LSBFIRST ändern die Richtung des Signals.

Wie man einen 74HC595 und 7 Segment Displays anschließt

Wie man einen 74HC595 und 7 Segment Displays anschließt

Im folgenden Beispiel schließen Sie eine Sieben-Segment-Anzeige an. Das Schieberegister vereinfacht die Schaltung und macht das Arduino-Programm viel einfacher. Nach dem Zusammenbau der Schaltung, wie im Bild oben gezeigt, laden Sie das Programm in den Mikrocontroller für die Anzeige und das Register 74hc595. Der Code geht durch die Ziffern von Null bis Fünf und es ist nicht allzu schwierig, das Programm fortzusetzen.

Programm für Steuerung einer 7 Segment Anzeige mit einer 74HC595N

#define dataPin  10
#define latchPin 11
#define clockPin 12

void setup() {
  pinMode(latchPin, OUTPUT);
  pinMode(clockPin, OUTPUT);
  pinMode(dataPin, OUTPUT);
  digitalWrite(latchPin, HIGH);
}

void loop() {
  digitalWrite(latchPin, LOW);  // eine
  shiftOut(dataPin, clockPin, LSBFIRST, B00110000);
  digitalWrite(latchPin, HIGH);
  delay(1000);

  digitalWrite(latchPin, LOW);  // zwei
  shiftOut(dataPin, clockPin, LSBFIRST, B01101101);
  digitalWrite(latchPin, HIGH);
  delay(1000);

  digitalWrite(latchPin, LOW);  // drei
  shiftOut(dataPin, clockPin, LSBFIRST, B01111001);
  digitalWrite(latchPin, HIGH);
  delay(1000);

  digitalWrite(latchPin, LOW);  // vier
  shiftOut(dataPin, clockPin, LSBFIRST, B00110011);
  digitalWrite(latchPin, HIGH);
  delay(1000);

  digitalWrite(latchPin, LOW);  // fünf
  shiftOut(dataPin, clockPin, LSBFIRST, B01011011);
  digitalWrite(latchPin, HIGH);
  delay(1000);
}
  1. Das Programm verwendet den Pin des Registers Q0 nicht, daher beginnt das Byte B00110000 immer mit Null, da das Bit nicht verwendet wird.

Schlussfolgerung. Wir haben die Eigenschaften, den Zweck und die Beschreibung des Arduino-Schieberegisters 74hc595 besprochen. Wir haben einige Beispiele mit Schaltplänen, Arbeitsprogrammen mit detaillierten Kommentaren zur Steuerung von LEDs und der 5161as Sieben-Segment-Anzeige mit dem Register gegeben. In unseren nächsten Arduino-Projekten werden wir diesen Mikroschaltkreis auf jeden Fall verwenden.

5/5 - (1 vote)


Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert