← Índice del curso

Circuitos Secuenciales y Memoria · Tema 15

Taller: salidas con el 74HC595

Es el chip que más se usa para conseguir salidas de sobra: un registro de desplazamiento de 8 bits seguido de un registro de salida, en 16 patas. Con tres pines de un microcontrolador (dato, reloj de desplazamiento y reloj de salida) manejás 8 LED; con dos chips, 16; con cuatro, 32. En el taller armás las salidas, ves por qué hay dos relojes, comprobás el orden de los bits y encadenás un segundo chip.

01 · Punto de partida

Tres montajes, un chip que se repite

El 74HC595 reúne dos bloques que ya conocés: un registro de desplazamiento de 8 bits (tema 14) y un registro de almacenamiento de 8 bits (tema 13) con salidas de tres estados. Los bits se desplazan dentro del primero sin que se note afuera; cuando la palabra está completa, un pulso aparte la copia al segundo, que es el que maneja los pines. Por eso los LED no parpadean mientras llegan los datos.

Los tres montajes del taller.
MontajeQué haceChipsQué aprendés
1. Ocho salidas con reloj manualSe envía un byte bit a bit con una palanca y recién al pulsar RCLK se encienden los LED74HC595 + 74HC00SRCLK frente a RCLK, orden MSB primero, reloj sin rebotes
2. Dos chips en cadena16 LED manejados con los mismos tres cables2 × 74HC595QH′ → SER, relojes compartidos, 16 pulsos por palabra
3. Habilitación y arranque limpioLas salidas permanecen apagadas hasta que se cargan datos válidos+ resistencia en OE̅OE̅, SRCLR̅, estado indefinido al encender

Como en los talleres anteriores, el tema se aprovecha también sin materiales: el código reproduce el comportamiento del chip y el laboratorio permite probar las secuencias con un 595 virtual.

02 · Preparación

Materiales y herramientas

Lista de materiales.
Cant.ComponentePara qué sirve
274HC595 (registro de desplazamiento de 8 bits con registro de salida)La protagonista (el segundo, para la cadena)
174HC00 (cuatro NAND)Latch antirrebote del reloj manual (tema 7)
1Conmutador de palanca SPDTSRCLK limpio
1Interruptor deslizante SPDTDato SER (a +5 V o a masa)
1Pulsador normalmente abiertoRCLK (con 10 kΩ a masa)
8 + 8LED con resistencia de 1 kΩ en serieMostrar las salidas (16 en el montaje 2)
1 + 1Resistencia de 10 kΩ y pulsadorPull-up de OE̅ y su control (montaje 3)
3Condensador de 100 nFDesacople, uno por chip
1Protoboard, cables y fuente regulada de 5 VMontaje y alimentación

El multímetro alcanza para el montaje a mano. Para ver los dos relojes y la salida a la vez, un analizador lógico de 4 canales es lo ideal, aunque no imprescindible. Dibujá el esquema con los números de pin antes de cablear: el 595 tiene la salida QA en un lugar poco intuitivo.

Antes de dar tensión

  • Un 100 nF entre Vcc (pin 16) y GND (pin 8), pegado al chip.
  • SRCLR̅ (pin 10) a +5 V si no se usa; OE̅ (pin 13) a masa en los primeros montajes.
  • Ninguna entrada al aire: SER, SRCLK, RCLK, SRCLR̅ y OE̅ tienen siempre un nivel.
  • Cada LED con su resistencia; nunca un LED directo a una salida.

03 · El chip

Pines del 74HC595

El encapsulado DIP de 16 patas tiene una muesca en un extremo; el pin 1 queda a la izquierda de la muesca y los números siguen en sentido antihorario. Las salidas están repartidas en los dos lados, con QA «al otro lado» del resto:

Pinout estándar del 74HC595 (confirmalo en la hoja de datos de tu fabricante).
PinNombreFunciónPinNombreFunción
1QBSalida 2 (bit 1)16Vcc+5 V
2QCSalida 3 (bit 2)15QASalida 1 (bit 0)
3QDSalida 4 (bit 3)14SEREntrada serie de datos
4QESalida 5 (bit 4)13OE̅Habilitación de salidas (activa en bajo)
5QFSalida 6 (bit 5)12RCLKReloj del registro de salida (flanco ↑)
6QGSalida 7 (bit 6)11SRCLKReloj del desplazamiento (flanco ↑)
7QHSalida 8 (bit 7)10SRCLR̅Borra el desplazamiento (activo en bajo)
8GNDMasa9QH′Salida serie (para encadenar)

Según el fabricante, estos pines también se llaman SH_CP (SRCLK), ST_CP (RCLK), DS (SER), MR̅ (SRCLR̅) y Q7S (QH′). La función de cada uno es la misma.

Cómo se comporta

Tabla de función simplificada (X = sin importancia).
SeñalCondiciónEfecto
SRCLK ↑SRCLR̅ = 1SER entra en QA; cada bit del desplazamiento avanza; el de QH sale por QH′
RCLK ↑—El registro de salida copia los 8 bits del desplazamiento
SRCLR̅ = 0—El desplazamiento pasa a 0 (el registro de salida no cambia)
OE̅ = 1—QA..QH en alta impedancia (el dato sigue guardado)
OE̅ = 0—QA..QH muestran el registro de salida

Los dos relojes son independientes. Conceptualmente, el 595 equivale a un registro de desplazamiento tipo 74HC164 con un registro de salida de tres estados tipo 74HC374 detrás. Si ambos pines se unen, el registro de salida va siempre un pulso por detrás del de desplazamiento: se pierde la gracia de los dos relojes.

04 · Montaje 1

Ocho salidas con reloj manual

Primero un reloj que se pueda manejar con la mano. Reutilizamos el latch de NAND del tema 7 (74HC00) con el conmutador SPDT para generar SRCLK sin rebotes. El pulsador de RCLK no necesita antirrebote: si rebota, cada flanco copia el mismo dato al registro de salida, que ya tenía ese valor, y el resultado no cambia.

Conexiones del montaje 1. U1 = 74HC00 (reloj manual); U2 = 74HC595.
Chip y pinSe conecta a
U1 pin 14 / pin 7+5 V / masa, con 100 nF entre ambos
U1 pin 1 y pin 4Contactos A y B del conmutador, cada uno con 10 kΩ a +5 V; común del conmutador a masa
U1 pin 2 ↔ pin 6; pin 3 ↔ pin 5Cruce del latch (como en el tema 7)
U1 pines 9, 10, 12, 13Masa (compuertas sobrantes)
U1 pin 3 (Q)U2 pin 11 (SRCLK): el reloj de desplazamiento
U2 pin 16 / pin 8+5 V / masa, con 100 nF entre ambos
U2 pin 14 (SER)Centro del interruptor deslizante; sus extremos a +5 V y a masa
U2 pin 12 (RCLK)Pulsador a +5 V y 10 kΩ a masa (reposo en 0)
U2 pin 10 (SRCLR̅)+5 V (inactivo)
U2 pin 13 (OE̅)Masa (salidas siempre habilitadas)
U2 pines 15, 1, 2, 3, 4, 5, 6, 7 (QA..QH)Cada uno a un LED con 1 kΩ a masa

Pruebas

Secuencia de pruebas del montaje 1. Cada «pulso de SRCLK» es llevar la palanca a A (flanco ↑) y volver a B.
PasoAcciónLEDQué se comprueba
1Dar tensiónCualquier patrónEl registro de salida arranca sin valor definido
2SER = 1, un pulso de SRCLKSin cambioEl dato entró en el desplazamiento, pero los pines no lo ven
3Pulsar RCLKQA encendidoRCLK copia el desplazamiento a los pines
4SER = 0, un pulso de SRCLK; pulsar RCLKQB encendido, QA apagadoEl 1 avanzó una posición
5Siete pulsos más de SRCLK con SER = 0; pulsar RCLKTodos apagadosEl 1 salió por QH′ tras 8 pulsos
6Enviar 10110001 (MSB primero) y pulsar RCLKQH, QF, QE, QAOrden de los bits: el primero enviado termina en QH
7Mover la palanca varias veces sin pulsar RCLKSin cambioLos pines solo cambian con RCLK

Fijate en el paso 7: mientras se desplazan datos, los LED permanecen quietos. Con un solo reloj tendrías que ver cada bit pasar por todos los LED. Esa es la ventaja del registro de salida.

05 · Montaje 2

Dos chips en cadena

La salida serie QH′ (pin 9) entrega el bit que sale del último flip-flop del desplazamiento. Conectándola a SER del segundo chip, los bits que «sobran» pasan al segundo, y las dos mitades se comportan como un único registro de 16 bits. Los dos chips comparten SRCLK y RCLK:

Cambios respecto del montaje 1. U3 = segundo 74HC595.
ConexiónFunción
U2 pin 9 (QH′) → U3 pin 14 (SER)El bit que sale del primero entra al segundo
U2 pin 11 ↔ U3 pin 11 (SRCLK)Mismo reloj de desplazamiento
U2 pin 12 ↔ U3 pin 12 (RCLK)Misma orden de copia a la salida
U3 pin 10 (SRCLR̅) → +5 V; pin 13 (OE̅) → masaIgual que U2
U3 pin 16 / pin 8, con 100 nFAlimentación propia del segundo chip
U3 pines 15, 1..7 (QA..QH)Ocho LED más, cada uno con 1 kΩ

Una palabra completa son 16 bits, es decir 16 pulsos de SRCLK, y un único RCLK al final. Los primeros 8 bits que se mandan terminan en el segundo chip (U3); los últimos 8, en el primero (U2). Con el MSB primero, la palabra de 16 bits queda con el bit 15 en QH de U3 y el bit 0 en QA de U2. Si se envían solo 8 bits, el dato se queda en U2 y U3 conserva lo que tenía.

06 · Montaje 3

Habilitación y arranque limpio

Al encender, el registro de salida del 595 no tiene valor definido: los LED pueden quedar con cualquier patrón hasta que se envíe y copie el primer dato. Con OE̅ se esconde ese arranque: mientras OE̅ = 1, las salidas están en alta impedancia y los LED permanecen apagados.

Cambios respecto del montaje 1.
ConexiónFunción
U2 pin 13 (OE̅) → 10 kΩ a +5 VPull-up: al encender las salidas están deshabilitadas
U2 pin 13 → pulsador a masaMientras se mantiene pulsado, OE̅ = 0 y las salidas se habilitan
U2 pin 10 (SRCLR̅) → +5 VSigue sin usarse; queda inactivo

Secuencia de arranque correcta

  1. Encender con OE̅ en alto: los LED están apagados aunque el registro de salida tenga basura.
  2. Enviar 8 ceros con SRCLK (o dar un SRCLR̅ = 0 breve) y pulsar RCLK: ahora el registro de salida vale 00000000.
  3. Habilitar las salidas bajando OE̅: todos los LED siguen apagados, ahora por un dato válido.
  4. Desde acá se envían los datos reales.

SRCLR̅: el borrado que no se ve

Un pulso bajo en SRCLR̅ pone a cero el registro de desplazamiento, pero no el de salida: los LED siguen como estaban hasta el próximo RCLK. Es un error clásico esperar que SRCLR̅ apague los LED. Para eso hay que dar SRCLR̅ = 0 y luego un RCLK, o directamente deshabilitar con OE̅.

Pruebas

  • Apagar y encender diez veces con el pull-up de OE̅: los LED deben empezar siempre apagados. Después reemplazar el pull-up por masa y repetir: el patrón inicial varía.
  • OE̅ sin tocar los datos: cargar 10110001, subir OE̅ (se apagan) y bajarlo (reaparece el mismo patrón).
  • SRCLR̅: con 10110001 en los LED, bajar SRCLR̅ un momento: los LED no cambian; pulsar RCLK y se apagan todos.

07 · Cuando no funciona

Corriente, fallas y método

¿Cuánta corriente puede dar?

Los LED se encienden desde las salidas, y las salidas de un 595 tienen un límite. El orden de magnitud para el 74HC595 es de alrededor de 6 mA garantizados por pin con el nivel lógico correcto, un máximo absoluto de unos 35 mA por pin y de unos 70 mA para el total que circula por Vcc o GND (confirmalo en la hoja de datos). Con LED rojos (≈ 2 V) alimentados a 5 V:

Corriente por LED y total con las 8 salidas encendidas.
ResistenciaCorriente por LEDTotal (8 LED)Evaluación
330 Ω≈ 9 mA≈ 73 mASupera lo garantizado por pin y roza el límite del chip
1 kΩ3 mA24 mACómodo; brillo suficiente para indicadores
680 Ω≈ 4,4 mA≈ 35 mAAceptable y más luminoso

Para cargas más grandes (relés, tiras, displays potentes) las salidas del 595 no alcanzan: se agrega un transistor o un driver por salida (tema de «Componentes electrónicos»).

De síntoma a causa

Síntomas más comunes en los montajes de este tema.
SíntomaCausa probableCómo comprobarlo
Los LED no cambian nuncaOE̅ en alto, o falta alimentaciónMedir pin 13 (debe estar en 0 V) y pin 16 (5 V)
Los LED muestran el dato con un paso de atrasoRCLK unido a SRCLKRevisar que los pines 11 y 12 sean cables distintos
El patrón aparece espejado (QA ↔ QH)Se envía LSB primero, o los LED están cableados al revésMandar 10000000 y ver qué LED se enciende
El patrón salta de a más de una posiciónSRCLK con rebotesPasar el reloj por el latch; mirar SRCLK con el osciloscopio
Con dos chips, el segundo repite el primeroQH′ no está conectado a SER del segundo, o SER está al aireComprobar el cable pin 9 → pin 14
El chip se calienta y los LED son débilesResistencias muy bajas o salida en cortocircuitoMedir corriente total; revisar cables entre salidas
SRCLR̅ no apaga los LEDComportamiento normal: solo borra el desplazamientoDar un RCLK después, o usar OE̅
Arranca con LED encendidosRegistro de salida sin inicializarUsar el pull-up de OE̅ y la secuencia de arranque

Armar por etapas

  1. Alimentación primero: Vcc, GND y el 100 nF en cada chip.
  2. Un bloque por vez: probar el reloj manual antes de conectarlo al 595.
  3. Un chip antes que dos: terminar y probar el montaje 1 antes de encadenar.
  4. Probar cada línea por separado: primero SRCLK sin RCLK, después RCLK.
  5. Cambiar una sola cosa a la vez cuando algo falla.
  6. Anotar el patrón observado y compararlo con el esperado: el error está entre el último paso correcto y el primero que falla.

08 · El taller en código

Simular, ordenar y encadenar

Los bloques reproducen el 74HC595 con sus dos registros, muestran la diferencia entre enviar MSB y LSB primero, encadenan dos chips y calculan los tiempos y las corrientes de una animación de LED.

Python en tu navegador. Los bloques son editables: cambiá los valores y presioná «Ejecutar Python». La primera vez tarda unos segundos en cargar.

Paso 1: el 595 con sus dos registros

class HC595:
    """74HC595: registro de desplazamiento + registro de salida + OE̅. Los textos se leen QH ... QA."""

    def __init__(self):
        self.sr = [0] * 8          # índice 0 = QA ... 7 = QH
        self.st = [0] * 8          # registro de almacenamiento (lo que ven los pines)
        self.oe_n = 0

    def srclk(self, ser):          # flanco ascendente de SRCLK (pin 11)
        self.sr = [ser] + self.sr[:-1]

    def rclk(self):                # flanco ascendente de RCLK (pin 12)
        self.st = self.sr[:]

    def srclr(self):               # SRCLR̅ = 0 (pin 10): borra solo el desplazamiento
        self.sr = [0] * 8

    def desplazamiento(self):
        return "".join(str(b) for b in reversed(self.sr))

    def pines(self):
        return "ZZZZZZZZ" if self.oe_n else "".join(str(b) for b in reversed(self.st))


def enviar(chip, byte, latch=True):
    for i in range(7, -1, -1):             # MSB primero
        chip.srclk((byte >> i) & 1)
    if latch:
        chip.rclk()


c = HC595()
enviar(c, 0b10110001, latch=False)
print("tras 8 SRCLK, sin RCLK:  desplazamiento", c.desplazamiento(), "pines", c.pines())
c.rclk()
print("tras un pulso de RCLK:   desplazamiento", c.desplazamiento(), "pines", c.pines())
enviar(c, 0b01001110, latch=False)
print("nuevo byte sin latch:    desplazamiento", c.desplazamiento(), "pines", c.pines(), "(los LED no cambiaron)")
c.oe_n = 1
print("con OE̅ = 1:              desplazamiento", c.desplazamiento(), "pines", c.pines(), "(el dato sigue guardado)")
c.oe_n = 0
c.srclr()
print("tras SRCLR̅ y OE̅ = 0:    desplazamiento", c.desplazamiento(), "pines", c.pines(), "(SRCLR̅ no toca el registro de salida)")

Después de 8 pulsos de SRCLK el desplazamiento vale 10110001, pero los pines siguen en 00000000 hasta el pulso de RCLK. Un segundo byte puede llenar el desplazamiento sin que los pines se muevan. OE̅ = 1 los pasa a Z sin borrar nada, y SRCLR̅ deja el desplazamiento en cero con los pines intactos. Cambiá los bytes y predecí cada línea antes de ejecutar.

Paso 2: MSB primero o LSB primero

def qh_a_qa(bits):
    sr = [0] * 8                               # sr[0] = QA ... sr[7] = QH
    for b in bits:
        sr = [b] + sr[:-1]
    return "".join(str(b) for b in reversed(sr))          # se muestra QH QG ... QA


byte = 0b10000000
msb = [(byte >> i) & 1 for i in range(7, -1, -1)]
lsb = [(byte >> i) & 1 for i in range(8)]
print("byte 0b10000000 (solo el bit 7 encendido); columnas QH QG QF QE QD QC QB QA")
print("  MSB primero ->", qh_a_qa(msb), "(bit 7 en QH: correcto)")
print("  LSB primero ->", qh_a_qa(lsb), "(bit 7 en QA: el byte llegó espejado)")
print()
q = qh_a_qa(msb)
print("cableado QA..QH a los LED D0..D7 (normal):  LED D7..D0 =", q)
print("cableado QA..QH a los LED D7..D0 (espejo):  LED D7..D0 =", q[::-1])

Con el MSB primero, el bit 7 termina en QH, que es lo esperado. Con el LSB primero, el mismo byte queda espejado y se enciende QA. Un cableado «al revés» de los LED produce el mismo efecto: dos errores distintos con el mismo síntoma, y por eso conviene enviar 10000000 para identificar cuál de los dos ocurre.

Paso 3: dos chips en cadena

class HC595:
    def __init__(self):
        self.sr = [0] * 8               # sr[0] = QA ... sr[7] = QH
        self.st = [0] * 8

    def srclk(self, ser):
        self.sr = [ser] + self.sr[:-1]

    def rclk(self):
        self.st = self.sr[:]

    def valor(self):
        return sum(b << i for i, b in enumerate(self.st))


def pulso(chips, ser):
    """Un SRCLK en una cadena: el bit de entrada entra al primero y QH' de cada chip alimenta al siguiente."""
    salientes = [c.sr[7] for c in chips]
    chips[0].srclk(ser)
    for i in range(1, len(chips)):
        chips[i].srclk(salientes[i - 1])


def enviar(chips, palabra, bits):
    for i in range(bits - 1, -1, -1):
        pulso(chips, (palabra >> i) & 1)
    for c in chips:
        c.rclk()                                # RCLK común a todos


U1, U2 = HC595(), HC595()               # U1 recibe del microcontrolador; su QH' va a U2
enviar([U1, U2], 0xA55A, 16)
print(f"16 bits 0xA55A:  U1 = 0x{U1.valor():02X}   U2 = 0x{U2.valor():02X}")

U1, U2 = HC595(), HC595()
enviar([U1, U2], 0xA5, 8)
print(f"solo 8 bits 0xA5: U1 = 0x{U1.valor():02X}   U2 = 0x{U2.valor():02X}   (el segundo chip no recibió nada)")

La palabra 0xA55A de 16 bits se reparte: U1 (el que recibe del microcontrolador) queda con la mitad baja, 0x5A, y U2 con la alta, 0xA5. Si el programa envía solo 8 bits, el byte queda en U1 y U2 permanece en 0. Es el error típico de olvidar que una cadena de dos chips necesita 16 pulsos.

Paso 4: tiempos y corriente de una animación

def cuadros_auto_fantastico(n=8):
    ida = [1 << i for i in range(n)]
    vuelta = ida[-2:0:-1]
    return ida + vuelta


frames = cuadros_auto_fantastico()
print("secuencia de salidas (cada una es un byte enviado):")
for f in frames:
    print(f"  {f:08b}")

f_clk = 1_000_000                              # reloj de desplazamiento
bits = 8
t_envio = bits / f_clk
print()
print(f"enviar un byte a {f_clk/1e6:g} MHz: {t_envio*1e6:g} us")
print(f"cuadros por segundo posibles: {1/t_envio:,.0f}")

vcc, vf = 5.0, 2.0
for r in (330, 1000):
    i = (vcc - vf) / r
    print(f"R = {r:4d} ohm: {i*1000:4.1f} mA por LED, {8*i*1000:5.1f} mA con 8 LED encendidos")

La secuencia de «auto fantástico» tiene 14 cuadros (ida y vuelta), cada uno un byte con un solo bit encendido. A 1 MHz, enviar un byte lleva 8 µs: el cuello de botella nunca es el 595 sino el tiempo que se elija entre cuadros. En corriente, con 330 Ω cada LED toma unos 9 mA (73 mA con los ocho a la vez, demasiado); con 1 kΩ son 3 mA y 24 mA en total. En esta animación hay un solo LED encendido a la vez, pero en el peor caso (todos encendidos) es lo que se debe mirar.

Los tres hechos que el código deja a la vista son los que más errores causan: dos relojes distintos, orden de bits y cantidad de pulsos. En hardware ningún error produce un mensaje; solo un patrón de LED equivocado.

09 · Exploración interactiva

El banco de pruebas

El simulador reproduce uno o dos 74HC595. Con «Pulso SRCLK» desplazás un bit (el valor de SER); con «Pulso RCLK» copiás el desplazamiento a la salida; «Enviar palabra» ejecuta de una vez todos los pulsos de SRCLK, MSB primero, y opcionalmente el RCLK final. Podés activar la cadena de dos chips, habilitar o no las salidas con OE̅ y armar el error clásico de unir RCLK con SRCLK. Las dos filas de la figura son los dos registros internos; los círculos son los LED.

74HC595 (uno o dos en cadena)

74HC595 simulado Tres filas: el registro de desplazamiento, el registro de salida y los LED. Cada columna es un bit, de QA a QH. Con dos chips en cadena hay 16 columnas. Los LED pasan a Z cuando OE̅ vale 1.
Desplazamiento (último…primero)00000000
Registro de salida00000000
Pines de salida00000000
Pulsos de SRCLK0
Pulsos de RCLK0
QH′ (salida serie)0

Un chip, todo en cero. Presioná «Enviar palabra» y observá que, con RCLK al final, los LED se actualizan de una vez.

Últimos 8 eventos desde el inicio de la simulación.
N.ºEventoSERDesplazamientoRegistro de salida
Sin eventos registrados.

Recorrido guiado

  1. Dejá la palabra 10110001 y presioná «Enviar palabra» con «Dar RCLK al terminar»: el desplazamiento y la salida valen 10110001, y se encienden QA, QE, QF y QH.
  2. Desmarcá «Dar RCLK al terminar», cambiá la palabra a 01001110 y enviála: el desplazamiento cambia, pero los pines siguen con el dato anterior. Presioná «Pulso RCLK»: ahora sí cambian, todos a la vez.
  3. Marcá OE̅ = 1: los pines pasan a «Z» y los LED se apagan. Desmarcalo: el dato reaparece. OE̅ no altera lo guardado.
  4. Presioná «SRCLR̅ = 0»: el desplazamiento queda en cero y la salida no cambia. Con «Pulso RCLK» recién se apagan.
  5. Enviá 10000000 y mirá cuál LED se enciende: el de QH. Es la prueba rápida para el orden de bits.
  6. Con SER = 1 y pulsos manuales de SRCLK, observá cómo el 1 avanza una posición por pulso y a los 8 pulsos aparece por QH′.
  7. Marcá «Dos chips en cadena»: ahora son 16 bits. Enviá 1010101111110000: la primera mitad termina en el segundo chip y la segunda en el primero. QH′ del primero alimenta al segundo.
  8. Marcá «Error: RCLK unido a SRCLK» y repetí con pulsos manuales: la salida siempre va un paso por detrás del desplazamiento y pasa por los estados intermedios. Es lo que se ve cuando se cablean mal los pines 11 y 12.
Desafío: apagar los LED con un solo cable de control

Con datos válidos en la salida, la forma más rápida de apagar todo sin tocar los datos es subir OE̅ (una sola operación, instantánea y reversible). La forma que modifica los datos es enviar ocho ceros y dar RCLK (ocho pulsos más uno), o dar SRCLR̅ = 0 y RCLK (dos eventos). Probá las tres en el simulador y contá cuántos eventos aparecen en la tabla en cada caso.

10 · Comprensión

Confusiones frecuentes

«SRCLK y RCLK son el mismo reloj con dos nombres»

No: SRCLK mueve los bits dentro del desplazamiento y RCLK copia el resultado a los pines. Son dos pines y dos acciones distintas. Unirlos es un error de cableado.

«Mientras desplazo, los LED muestran cada paso»

No, y esa es la gracia. Los pines solo cambian con RCLK, de una vez.

«SRCLR̅ apaga los LED»

Borra el registro de desplazamiento, no el de salida. Los LED se apagan después del próximo RCLK, o con OE̅.

«Al encender, las salidas del 595 están en cero»

Quedan en un estado indefinido. Se arranca con OE̅ en alto, se envían ceros, se da RCLK y recién entonces se habilita.

«El primer bit que mando termina en QA»

Termina en QH, el extremo más lejano. El último bit enviado queda en QA. Por eso se envía el MSB primero para que el bit 7 caiga en QH.

«Con dos chips basta con enviar 8 bits al segundo»

Los datos entran siempre por el primero. Para cargar el segundo hay que enviar 16 bits, y los primeros 8 son los que terminan allí.

«El 595 puede alimentar cualquier carga»

Cada salida entrega unos pocos mA de forma garantizada. Para cargas mayores hace falta un transistor o un driver por salida.

«Un pulsador sin antirrebote en RCLK causa los mismos problemas que en SRCLK»

No: copiar el mismo dato dos o tres veces es inofensivo. En SRCLK, cada rebote desplaza un bit de más y corrompe la palabra. Solo SRCLK necesita reloj limpio.

11 · Práctica guiada

Predecí antes de armar

1. Pulsos y destino

Con un solo 595, SER = 1 y ceros en las demás posiciones, ¿en qué salida está el 1 después de 1, 3 y 8 pulsos de SRCLK (sin más datos)? ¿Y cuántos pulsos hacen falta para que aparezca en QH′?

Ver solución

Después de 1 pulso el 1 está en QA; tras 3 pulsos, en QC; tras 8 pulsos, en QH. Aparece en QH′ al mismo tiempo que llega a QH (el pin 9 refleja el último flip-flop) y sale de la cadena en el pulso 9.

2. Qué bits mandar

Querés encender QA, QC y QH (y nada más). ¿Qué byte enviás, MSB primero, y qué orden de bits aparece en la línea SER?

Ver solución

QH = bit 7, QC = bit 2, QA = bit 0: el byte es 10000101, es decir 0x85. En SER salen, en este orden: 1, 0, 0, 0, 0, 1, 0, 1. Después de los 8 pulsos y un RCLK, esos tres LED encienden.

3. Cadena de tres

Con tres 595 en cadena, ¿cuántos pulsos de SRCLK y de RCLK lleva actualizar todas las salidas? ¿Cuánto tarda a 2 MHz?

Ver solución

Son 24 bits: 24 pulsos de SRCLK y 1 pulso de RCLK. A 2 MHz: 24 / 2 000 000 = 12 µs (más el RCLK, despreciable).

4. Cuál chip recibe qué

En una cadena de dos 595 (U1 recibe del microcontrolador, U2 desde QH′ de U1), se envían los 16 bits 0x1234 con el MSB primero. ¿Qué valor queda en cada chip?

Ver solución

Los primeros 8 bits enviados (0x12) llegan a U2 y los últimos 8 (0x34) se quedan en U1. Resultado: U1 = 0x34, U2 = 0x12. Si se quisiera lo contrario, se enviaría 0x3412.

5. Corriente

Con LED verdes (Vf ≈ 2,2 V) y 680 Ω, ¿cuánta corriente toma cada LED y el total con los ocho encendidos?

Ver solución

I = (5 − 2,2) / 680 ≈ 4,1 mA por LED, y 8 × 4,1 ≈ 33 mA en total. Cae dentro del orden de lo que el chip puede dar. Con 330 Ω serían 8,5 mA por LED y unos 68 mA: demasiado cerca del límite.

6. Diagnóstico

Enviás 10000000 y se enciende el LED de QA en lugar del de QH. Los otros patrones también aparecen espejados. ¿Cuáles son las dos causas posibles y cómo se distinguen?

Ver solución razonada

O el programa envía el LSB primero, o los LED están cableados en orden inverso (QA al LED de más peso). Se distinguen mirando el pin con un multímetro: si QA (pin 15) tiene 5 V al enviar 10000000, el chip recibió el orden invertido, es el programa; si QH (pin 7) tiene 5 V pero se enciende el LED “equivocado”, el error está en el cableado de los LED.

12 · Síntesis

Ideas para recordar

  • El 74HC595 es un desplazamiento de 8 bits más un registro de salida con tres estados: SRCLK mueve los bits, RCLK los copia a los pines.
  • Los pines solo cambian con RCLK, por eso los LED no muestran los pasos intermedios del desplazamiento.
  • El primer bit enviado termina en QH y el último en QA: se envía el MSB primero.
  • QH′ (pin 9) alimenta a SER del chip siguiente; SRCLK y RCLK se comparten. Una cadena de k chips necesita 8k pulsos y un RCLK.
  • OE̅ = 1 pone las salidas en Z sin borrar nada; SRCLR̅ borra solo el desplazamiento, no la salida.
  • Al encender, el registro de salida es indefinido: se arranca con OE̅ en alto, se carga un dato válido y se habilita.
  • Solo SRCLK necesita reloj sin rebotes; los rebotes de RCLK son inofensivos.
  • Cada salida da pocos mA: con LED, resistencias de 680 Ω a 1 kΩ; para cargas mayores, un transistor o driver.

¿Listo para el tema 16?

Antes de avanzar, explicá de memoria para qué sirve cada uno de los dos relojes del 595, en qué LED termina el primer bit enviado y cómo se garantiza que las salidas arranquen apagadas. Si podés justificar las tres respuestas, ya podés pasar de sacar datos a leerlos.

En el próximo tema armaremos el taller del 74HC165, el espejo del 595 para las entradas: un registro paralelo-serie que captura 8 interruptores a la vez y los entrega bit a bit.