El 74HC165 es un registro de desplazamiento de entrada paralela a salida serial (Parallel-In Serial-Out - PISO). Su función principal es leer el estado de 8 entradas digitales al mismo tiempo y enviarlas al microcontrolador usando un solo pin de datos.
Simulación del proyecto
Se realizo el circuito con la plataforma wokwi, revisa el funcionamiento a continuación:
Hoja de datos de 74hc165
Revisa la hoja de datos en: https://www.alldatasheet.com/datasheet-pdf/view/15549/PHILIPS/74HC165.html
Pines del circuito integrado 74hc165
| Pin | Nombre | Tipo | Descripción |
|---|---|---|---|
| 1 | PL o SH/LD (Parallel Load / Shift Load) | Entrada | Controla el modo de funcionamiento. En LOW carga el estado de las entradas A-H al registro interno. En HIGH habilita el desplazamiento serial de los datos. Es un pin activo en nivel bajo. |
| 2 | CP (Clock) | Entrada | Entrada de reloj. En cada flanco ascendente (LOW → HIGH) desplaza un bit del registro hacia la salida serial cuando SH/LD está en HIGH. |
| 3 | E | Entrada Paralela | Entrada digital número 5 que se almacena en el registro cuando se realiza la carga paralela. |
| 4 | F | Entrada Paralela | Entrada digital número 6 que se captura durante la carga paralela. |
| 5 | G | Entrada Paralela | Entrada digital número 7 que se captura durante la carga paralela. |
| 6 | H | Entrada Paralela | Entrada digital número 8. Es el último bit del registro paralelo. |
| 7 | QH | Salida Serial | Salida serial principal del registro. Los datos salen bit a bit sincronizados con el reloj. Este pin se conecta normalmente al microcontrolador o al siguiente registro. |
| 8 | GND | Alimentación | Tierra o referencia de 0 V del circuito integrado. |
| 9 | QH' (QH complementaria o Serial Out) | Salida Serial | Salida utilizada principalmente para encadenar otro 74HC165. Contiene el dato serial desplazado con una temporización adecuada para conexión en cascada. |
| 10 | SER (Serial Input) | Entrada Serial | Entrada serial utilizada cuando se conectan varios 74HC165 en cascada. Permite introducir un bit adicional durante el desplazamiento. |
| 11 | A | Entrada Paralela | Entrada digital número 1. Es la primera que se captura durante la carga paralela. |
| 12 | B | Entrada Paralela | Entrada digital número 2. |
| 13 | C | Entrada Paralela | Entrada digital número 3. |
| 14 | D | Entrada Paralela | Entrada digital número 4. |
| 15 | CE o CLK INH (Clock Enable / Clock Inhibit) | Entrada | Habilita o bloquea el reloj. En LOW permite que el reloj funcione normalmente. En HIGH ignora los pulsos de reloj y el registro permanece sin desplazarse. |
| 16 | VCC | Alimentación | Alimentación positiva del circuito. Normalmente funciona entre 2 V y 6 V (3.3 V o 5 V son los valores más comunes). |
¿Para qué sirve?
Imagina que tienes un Arduino Uno.
- Tiene un número limitado de entradas digitales.
- Pero quieres conectar:
- 32 botones
- 24 interruptores
- 16 sensores digitales
En lugar de ocupar una entrada por cada dispositivo, puedes utilizar varios 74HC165.
Con un solo 74HC165:
- Lees 8 entradas digitales
- Utilizas solamente 3 pines del Arduino
Con cuatro 74HC165:
- Lees 32 entradas
- Sigues usando únicamente 3 pines
Conexión con Arduino Uno
| Arduino | 74HC165 |
|---|---|
| D11 | Q7 |
| D12 | CLK |
| D8 | SH/LD |
| D9 | CE |
| 5V | VCC |
| GND | GND |
Código
const int dataPin = 4; // QH
const int clockPin = 2; // CLK
const int latchPin = 3; // SH/LD
void setup() {
Serial.begin(9600);
pinMode(dataPin, INPUT);
pinMode(clockPin, OUTPUT);
pinMode(latchPin, OUTPUT);
}
void loop() {
// Load input bits into latches
digitalWrite(latchPin, LOW);
digitalWrite(latchPin, HIGH);
for (int i = 0; i < 8; i++) {
int bit = digitalRead(dataPin);
Serial.print(bit ? "1" : "0");
// Shift out the next bit to QH
digitalWrite(clockPin, HIGH);
digitalWrite(clockPin, LOW);
}
Serial.println();
delay(1000);
}