74hc595: todo sobre el CI de registro de desplazamiento

El chip 74HC595, como se deduce de su nombre, es un circuito impresor que implementa en su interior un circuito CMOS. Concretamente es un registro de desplazamiento. Para los que aún no conozcan estos registros, básicamente es un circuito digital secuencial, es decir, que sus valores en la salida dependen simplemente de los valores de la entrada y de valores anteriores almacenados.

Eso los diferencia de los combinacionales, que las salidas solo dependen del valor de la entrada. Este registro se compone de una serie de biestables o flip-flops de tipo D comandados por una señal de reloj. Esos biestables son memorias que mantienen un valor anterior. Cada uno almacena un bit y, de su nombre también puedes deducir que, los puede desplazar. Al correr los bits de un lado a otro podemos hacer operaciones digitales bastante interesantes.

Tipos de registros de desplazamiento

Diagrama del registro de desplazamiento

Según el tipo de desplazamiento que hagan sobre los bits que almacenan, los registros pueden ser de varios tipos. Son  capaces de desplazar a la izquierda o a la derecha, algunos bidireccionales, pero el orden es lo que determinará el tipo, incluso en otros casos también se catalogan en función de cómo estén las entradas y salidas:

  • Serie-Serie: aquellos en los que solo el primer flip-flop recibe datos y van entrando en serie hasta llenar el registro completo. El último flip-flop es el que está directamente conectado a la salida y a través del que irán saliendo del registro.
  • Paralelo-serie: los bits entran en paralelo para ser almacenados a la vez en todos los flip-flops, pero luego salen en serie. Se pueden usar para convertir de serie a paralelo y viceversa.
  • Serie-Paralelo: similar al anterior, todas las salidas son accesibles a la vez de todos los flip-flops. Pero los datos entrarán solo por el primero en serie.
  • Paralelo-paralelo: los datos entran en paralelo y salen en paralelo.

De entre los circuitos más conocidos tenemos el 74HC595, el 74HC164, 74HC165, 74HC194, etc. El 194 es universal, se puede configurar como queramos. Por otro lado, tenemos otros bidireccionales como el 165 y 164, por tanto desplaza hacia la izquierda o derecha, según se especifique con la señal de control de dirección pero solo tienen una configuración: entradas paralelas y salida serie, y entrada serie y salida paralela respectivamente.

l298n
Artículo relacionado:
L298N: módulo para controlar motores para Arduino

¿Para qué sirve un registro de desplazamiento?

¿Para qué desplazar bits? Desplazar bits de datos puede resultar muy práctico. Un motivo es que se necesite desplazar los valores por un objetivo concreto. Pero también desplazar supone realizar algunas operaciones sobre los bits almacenados. Por ejemplo, desplazar a la izquierda un conjunto de bits es como multiplicarlos por 2. Desplazarlos a la derecha es como dividir entre 2. Por tanto, para hacer multiplicaciones y divisiones binarias pueden ser muy prácticos…

También se usan para generar valores pseudoaleatorios, para aproximaciones sucesivas muy usados en conversores analógico/digital, para retardar, etc. Los usos en circuitos digitales lógicos es bastante frecuente, así que no es raro tener que usarlos en algún proyecto.

Características del 74HC595

pin-out del 74HC595

El 74HC595 es un CI bastante sencillo. Se trata de un registro de desplazamiento de 8-bit, es decir, tiene 8 biestables para almacenar 8 bits. El pin-out o patillas de este chip se puede ver en la imagen superior, con Vcc y GND para la alimentación, y luego las marcadas como Q que son las de datos. El resto corresponden a señales de reloj/control.

Las entrada la tiene en serie y la salida en paralelo. Por tanto, con una sola entrada, se pueden controlar a la vez esas 8 salidas. Solo necesitarás tres pines del microcontrolador usado (p.e.: Arduino) para manejarlo. Esas son Latch, Clock y Data. Latch es el pin 13 en este caso, aunque puede variar, por eso debes consultar el datasheet de tu fabricante. Clock puede estar en el 11 u otros, y el bit de datos es el 14.

La señal de reloj alimentará al circuito para determinar el compás o ritmo al que va a trabajar. La salida de datos cambiará el comportamiento del chip. Por ejemplo, al cambiar de LOW a HIGH y generar el nuevo pulso de reloj pasando el clock de HIGH a LOW, lo que se consigue es grabar la posición actual donde se encuentre el desplazamiento el valor ingresado por este pin de datos. Si repites esto 8 veces, entonces habrás grabado las 8 posiciones y tener un byte almacenado (Q0-Q7).

Uso con Arduino

Arduino con el 74hc595

Para que te quede más claro, quizás un ejemplo con Arduino te lo explica de forma más intuitiva y gráfica que comenzar a lanzar datos teóricos. Por ejemplo, puedes crear un simple circuito con Arduino y un registro de desplazamiento 74HC595 para jugar con unas luces o LEDs. Otra opción algo mejor y más simple es usar un display de 7 segmentos para ir leyendo los valores del registro.

transistor 2n2222
Artículo relacionado:
Transistor 2N2222: todo lo que necesitas saber

El diagrama es el que puedes ver en la imagen anterior, una vez conectado Arduino de ese modo con el 74HC595 y el display, solo queda programarlo con Arduino IDE y veremos las posibilidades del registro de desplazamiento. El código sería el siguiente, con una serie de códigos en binario 0bxxxxxxxx, siendo x bits:


const int latchPin = 8;  // Pin conectado al Pin 12 del 74HC595 (Latch)
const int dataPin  = 9;  // Pin conectado al Pin 14 del 74HC595 (Data)
const int clockPin = 10; // Pin conectado al Pin 11 del 74HC595 (Clock)
int i =0;
                      
const byte numeros[16] = {
                0b11111100,
                0b01100000,
                0b11011010,
                0b11110010,
                0b01100110,
                0b10110110,
                0b10111110,
                0b11100000,
                0b11111110,
                0b11100110,
                0b11101110,
                0b00111110,
                0b10011100,
                0b01111010,
                0b10011110,
                0b10001110
};
                      
void setup() { 
  Serial.begin(9600);
  pinMode(latchPin, OUTPUT);
  pinMode(clockPin, OUTPUT);
  pinMode(dataPin, OUTPUT); 
}

void loop() {

                for (i=0;i<16;i++) {
                               delay(1000);
                               digitalWrite(latchPin, LOW);
                               shiftOut(dataPin, clockPin, LSBFIRST, numeros[i]);
                               digitalWrite(latchPin, HIGH);
                }
}

Datasheet

tabla de pines

En el mercado vas a encontrar diferentes chips 74HC595 de distintos fabricantes. Uno de ellos es la mítica Texas Instruments o Ti, pero sea como sea, cada fabricante debería ofrecerte el datasheet para descargar desde su página web oficial. También puedes encontrar algunos otros como el de ON Semiconductor, Sparkfun, STMicroelectronics, NXP, etc.


Sé el primero en comentar

Deja tu comentario

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

*

*

  1. Responsable de los datos: Miguel Ángel Gatón
  2. Finalidad de los datos: Controlar el SPAM, gestión de comentarios.
  3. Legitimación: Tu consentimiento
  4. Comunicación de los datos: No se comunicarán los datos a terceros salvo por obligación legal.
  5. Almacenamiento de los datos: Base de datos alojada en Occentus Networks (UE)
  6. Derechos: En cualquier momento puedes limitar, recuperar y borrar tu información.