Registro de Desplazamiento 74HC595
¿Que es y como funciona el integrado 74HC595?
El 74HC595 es un registro de desplazamiento de 8 bit con una entrada serie y salida paralelo, la gran utilidad de esto es poder utilizar y controlar ocho salidas con tan solo 3 pines de nuestro microcontrolador, como dije antes mediante las entradas(Latch/Clock/Data), podemos controlar hasta ocho salidas, de manera que es de gran utilidad para proyectos en los que contamos con poca cantidad de pines en nuestro microcontrolador.
Como se ve en la imagen, Latch es el pin 12, Clock el pin 11, y el bit de datos es el pin numero 14
Nuestro chip se encuentra a la espera de una nueva secuencia de datos
Al cambiar de LOW a HIGH el bit de Data y generar un nuevo pulso de reloj pasando el bit de clock de HIGH a LOW, grabamos en la posición actual donde se encuentre el desplazamiento el valor ingresado en el pin de Data, esto lo repetimos 8 veces de manera de generar un Byte a la salida (Q0 - Q7), de esta manera podemos controlar un Byte de salida con solo tres pines de nuestro microcontrolador.
¿Que aplicaciones puedo hacer con el integrado 74HC595
La respuesta a esta pregunta serian todas las que se te ocurran, pero voy a concentrarme una muy común que puede ser de gran utilidad en cualquier proyecto de Electrónica en el que necesites controlar algún tipo de display de 7 segmentos.
Por ejemplo
Supongamos que queremos visualizar el numero 3 en un display de 7 segmentos.
Lo que deberíamos hacer para visualizar un numero 3 en este display seria encender las patas A/B/G/C/D.
Podríamos pensar en términos de bytes y llegaríamos a la idea de que necesitamos enviar la palabra.
El bit de encendido debería estar conectado al ánodo(con un LOW se enciende).
Lo que nosotros tendríamos que hacer es generar esta palabra a la salida del 74HC595 y conectarla a los pines del display.
Ejemplo de conexión 74HC595 con arduino y display 7 segmentos
Código arduino
/**********************************************/ /* PRUEBA 74HC595 CON 7 SEG */ /* AUTOR: [email protected] */ /**********************************************/ 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); } }
-
hola buenas noches ,hize el circuito en el proteus y no funciona ,se ba ha Q7´ , por favor si alguien sabe como solucionarlo me escriba, gmail= [email protected]
-
Mu bueno!, gracias.
Una corrección, en el código para arduino, los pines utilizados son: 5, 6 y 7. Y no 8, 9 y 10.
Saludos. -
Probé tu circuito simularlo en Tinkercad, haciendo la corrección de los pines 5, 6, 7 y cuando comenzó la simulación el integrado 74HC595 hizo "Crash.." !!! Se hizo mierda!!! Me parece que le hacen falta algunas resistencias y algún capacitor.
-
gracias por tu aporte
-
Genial, me funcionó muy bien, un detalle es que en el ejemplo anterior el display es de "ánodo común" y yo usé un de "cátodo común". Con display de "cátodo común" el circuito es exactamente el mismo y único que cambia del circuito es que desde el catodo comun del display, con la resistencia de 220 ohm, va a polo negativo (-) en vez de ir a polo positivo (+).
¡Gracias!
Deja un comentario
Me parece que el código mostrado para control desde arduino no se corresponde con la redacción de la nota, que expresa mostrar un digito 3 pero coloca el código para mostrar todos los segmentos encendidos.
Quisiera una aclaración al respecto porque no se menciona tal cosa en la nota publicada.
Muchas gracias y adelante.