Registro de desplazamiento 74HC595 Arduino

El registro de desplazamiento 74hc595 Arduino Uno se utiliza para controlar la pantalla de siete segmentos y los LEDs. Los registros de desplazamiento tienen muchos usos, uno de los más populares es el de multiplicar las salidas del Arduino (toma 3 pines y obtienes 8). Vamos a ver, con ejemplos, programas y esquemas, cómo utilizar el circuito integrado 74hc595 para conectar los LEDs y el display 5161as de siete segmentos.

Para esta actividad necesitaremos:

  • Arduino Uno / Arduino Nano / Arduino Mega
  • shift register 74HC595n;
  • LEDs y resistencias de 220 Ohm;
  • display de 7 segmentos;
  • protoboard;
  • cables de conexion.

Registro de desplazamiento 74HC595 datasheet

Para entender cómo funciona el circuito integrado Arduino 74hc595 (shift register), considere el pinout del registro de desplazamiento 74hc595 que se muestra en la imagen. Los contactos DS, ST_CP y SH_CP son pines de control y están conectados a todas las salidas de la placa Arduino. Los pines Q0 – Q7 son salidas de registro de desplazamiento (bits). Enviando un byte desde el Arduino, puedes cambiar el estado del bit (HIGH o LOW).

Registro 74HC595 pinout, datasheet
Registro de desplazamiento 74HC595 pinout, datasheet

Características de 74HC595:

  • Tensión de funcionamiento: 2V a 6V
  • Consumo de energía: 80uA
  • Corriente de salida: 35mA
  • La tensión de salida es igual a la tensión de funcionamiento
  • Tensión de entrada mínima de alto nivel: 3,15V @(Vcc=4,5V)
  • Tensión de entrada máxima de bajo nivel: 1,35V @(Vcc=4,5V)
  • Disponible en paquetes PDIP, GDIP y PDSO de 16 pines
  • Registro de desplazamiento de 8 bits, entrada en serie y salida en paralelo

Que cuando enviemos el siguiente byte: 00011000 al decodificador 74hc595 (shift register), éste cambiará el estado (HIGH o LOW) de sus salidas. Veremos entonces, suponiendo que hay un LED conectado a cada una de sus salidas, que los 2 LEDs «del medio» estarán en el estado opuesto a sus homólogos. Así, utilizando sólo dos salidas digitales en tu microcontrolador Arduino Uno / Nano, puedes utilizar virtualmente 8 salidas digitales.

Conectar registro de desplazamiento 74HC595 Arduino

Conexión shift register 74HC595 Arduino y LEDs
Conexión shift register 74HC595 Arduino y LEDs

Ahora veremos cómo utilizar el registro de desplazamiento 74hc595 en software, con Arduino. Para entender completamente el propósito y la operación del registro de desplazamiento 74hc595 – necesitas conectar el registro al Arduino Uno de acuerdo con el diagrama y descargar el siguiente sketch. Este programa permite encender y apagar ocho LEDs alternativamente, utilizando sólo 3 pines digitales del microcontrolador Arduino.

Programa Arduino para shift register 74HC595 y LEDs

#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);
   }
}

Explicación del código para shift register 74HC595 y LEDs:

  1. en el bucle for de Arduino, la variable bitPos cambia de 0 a 8. La función bitWrite(byteToSend, bitPos, HIGH); modifica el byte en forma binaria y lo envía al registro. Si bitPos=0 obtenemos B00000001, si bitPos=1 obtenemos B00000010, si bitPos=2 obtenemos B00000100, etc;
  2. MSBFIRST y LSBFIRST cambian la dirección de la señal.

En el siguiente ejemplo, conectamos una pantalla de siete segmentos. El registro de desplazamiento no sólo simplifica el montaje del circuito, sino que también facilita el programa. Después de montar el circuito de la imagen anterior, carga el programa para el indicador y el 74hc595 registro de desplazamiento Arduino. El código pasa por los dígitos del indicador de cero a cinco. No le será muy difícil continuar con el programa.

Conectar 74hc595 Arduino y pantalla de 7 segmentos
Cómo conectar 74hc595 Arduino y pantalla de 7 segmentos

Programa Arduino para 74HC595n y display de 7 segmentos

#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);  // un
   shiftOut(dataPin, clockPin, LSBFIRST, B00110000);
   digitalWrite(latchPin, HIGH);
   delay(1000);

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

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

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

   digitalWrite(latchPin, LOW);  // cinco
   shiftOut(dataPin, clockPin, LSBFIRST, B01011011);
   digitalWrite(latchPin, HIGH);
   delay(1000);
}

Explicación del código para 74HC595n y display de 7 segmentos:

  1. el programa no utiliza el pin Q0, por lo que el byte B00110000 siempre empieza por cero.

Conclusión. Hemos revisado las características, el propósito y la descripción del registro de desplazamiento 74hc595 Arduino. Hemos dado varios ejemplos con esquemas, programas de trabajo con comentarios detallados para controlar los LEDs y el display de siete segmentos 5161as con el registro 74hc595n. En nuestros nuevos proyectos con el microcontrolador Arduino, seguramente utilizaremos registro de desplazamiento 74hc595.


Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *