El 74HC595 es un registro de desplazamiento de 8 bit con una entrada serie (3 pines Latch/Clock/Data) y salida paralelo (8 salidas digitales), puede encadenarse varios chips, con un segundo chip se obtiene 16 salidas paralelas simultáneas con 2 bytes, y así sucesivamente. SISO, SIPO, PISO Y PIPO. Registros con entrada serie y salida serie (SISO); Registros con entrada serie y salida paralela (SIPO); Registros con entrada paralelo y salida serie (PISO); Registro de entrada y salida en paralelo (PIPO)
Otros registros: 74LS595 - 74HC164 - 74LS164 –74164. (El HC es CMOS -Metal Oxid Silicon Complementary y el LS es TTL - transistor-transistor logic).
También son utilizados los decodificador CD4511 - 74ls48 - 74LS47/48
|

|
 |
DS (DATA input pin14 – Entrada de datos)
STCP (LATCH pin12 – registro de almacenamiento)
SHCP (CLOCK pin11 – registro de desplazamiento) se utiliza como disparador para enviar los datos a las salidas (D0 a D7).
|
Distribución de pines

Sintaxis
shiftOut(dataPin, clockPin, orden, valor);
- dataPin: se encarga de transmitir la secuencia de 8 bits de la que se compondrá nuestra salid0
- clockPin: envía el ciclo de reloj.
- orden: palabra reservada MSBFIRST(Most Significant Bit First) o LSBFIRST(Least Significant Bit First), para determinar en que orden cambian los bits.
- valor: numero decimal le corresponde a la secuencia en binario a representar, siendo 1 el estado alto (HIGH) y por lo tanto la salida activa y el 0 el estado bajo (LOW) la salida deshabilitada.
Ejemplo: shiftOut(dataPin, clockPin, MSBFIRST, 3); // salida el número 3 en binario
Materiales
- 1 Arduino UNO Rev3
- 1 74HC595
- 8 Resistencias 220 Ohm
- 8 led
- 12 Cables de conexión
- 1 Protoboard
Montajes


Sketch
//Generar 256 números binarios con 74hc595
int clockPin = 11; //Pin SH_CP pin 11 del 74hc595
int latchPin = 12; //Pin ST_CP pin 12 del 74hc595
int dataPin = 13; //Pin DS pin 14 del 74hc595
void setup(){
pinMode(latchPin, OUTPUT);
pinMode(clockPin, OUTPUT);
pinMode(dataPin, OUTPUT);
}
void loop() {
for (int num = 0; num < 256; num++)
{
digitalWrite(latchPin, LOW) ; //inicializa la comunicación síncrona
shiftOut(dataPin, clockPin, MSBFIRST, num); //se asigna valor de salida
digitalWrite(latchPin, HIGH) ;// fija los valores en la salida
delay(500);
}
}
// variantes enviar sólo un decimal Ej: 3 o un binario Ej: B00000011
Proyecto de Aplicación: Dado electrónico utilizando el registro 74HC595
