Un registre de desplaçament és un circuit integrat que ens permet controlar vuit sortides reals a partir de només tres potes del microcontrolador. Podem enviar els vuit bits un darrera l'altre fent servir dues potes del microcontrolador, una per enviar els bits (DS) i una com a rellotge o sincronisme (SH_CP). Primer enviem el valor que correspon al bit 7, després el del bit 6 i així successivament fins arribar al bit 0. Quan ja hem enviat tots els bits, podem copiar simultàniament els valors dels vuit bits sobre les sortides activant una altra pota (ST_CP).
A continuació es descriuen les diferents potes del registre de desplaçament 74HC595:

| Número pota | Nom | Funció | Número pota | Nom | Funció | ||
| 1 | Q1 | Sortida 1 | 9 | Q7' | Sortida del registre per entrar al registre següent | ||
| 2 | Q2 | Sortida 2 | 10 | MR | Reset | Quan el posem a zero, posa a zero tots els bits del registre | |
| 3 | Q3 | Sortida 3 | 11 | SH_CP | Clock | Quan s'activa, fa córrer el registre i copia DS sobre la posició 0 | |
| 4 | Q4 | Sortida 4 | 12 | ST_CP | Latch | Quan s'activa, copia el registre sobre les sortides | |
| 5 | Q5 | Sortida 5 | 13 | OE | Output enable | Quan es posa a 1, desconnecta les sortides | |
| 6 | Q6 | Sortida 6 | 14 | DS | Data | Entrada de dades | |
| 7 | Q7 | Sortida 7 | 15 | Q0 | Sortida 0 | ||
| 8 | GND | Alimentació 0 V | 16 | VCC | Alimentació +5 V | ||
En el següent diagrama es mostra com connectar el registre per controlar vuit LED.

A continuació hi ha una funció que envia el contingut de la variable Valor a un registre de desplaçament.
void EnviaR8(char Valor) {
char Port = 0; // Variable on guardem l'estat del port B
char Temp; // Variable temporal
for (signed char k = 1; k < 9; k++){
Temp = Valor & 0b10000000; // Agafa el bit de més a l'esquerra
// Temp només podrà valer 0 o 128
if (Temp == 0) { // Si val 0
Port = Port & 0b11101111; // Desactiva Data (bit 4)
} else { // Si val 128
Port = Port | 0b00010000; // Activa Data (bit 4)
}
Valor = Valor << 1; // Rodem els bits per situar el següent
PORTB = Port; // Ho posa al port B
Port = Port | 0b00100000; // Activa Clock (bit 5) i força lectura
PORTB = Port; // Ho posa al port B
Port = Port & 0b11011111; // Desactiva Clock (bit 5)
PORTB = Port; // Ho posa al port B
}
Port = Port | 0b01000000; // Activa Latch (bit 6) per copiar a les sortides
PORTB = Port; // Ho posa al port B
}
Els registres de desplaçament es poden posar en cadena. Així, si en posem dos podrem controlar setze sortides amb només tres potes del microcontrolador. La pota Q7' del primer registre ens dona el valor que hem d'entrar a la pota DS del segon. Per tant, el primer valor que entrem acabarà a la sortida 15 i el darrer a la sortida 0.
En el següent esquema es mostra com connectar dos registres per controlar setze LED.

Seguint el mateix criteri, podem encadenar tants registres com sigui necessari.

Aquesta obra d'Oriol Boix està llicenciada sota una llicència no importada Reconeixement-NoComercial-SenseObraDerivada 3.0.