Visual Basic para Excel

Registro de desplazamiento 74HC595

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