SCEA117 July 2022 SN74HCS164 , SN74HCS164-Q1 , SN74HCS165 , SN74HCS165-Q1 , SN74HCS595 , SN74HCS595-Q1
Shift registers provide a simple, low cost, and flexible method for increasing the total number of input or output (IO) pins on a system controller. The fact that shift registers can be connected in series, or daisy-chained together, means that very few IO pins are required to support a large number of devices. The only two real caveats for their use are that they cannot provide a significant amount of power directly, and the IO signals must be much slower than the system clock.
Stepper motors require multiple relatively slow input signals that can be controlled through shift registers so long as the power for driving the motors comes from separate dedicated drivers. Appliances such as air conditioners, washers, dryers, and refrigerators commonly use stepper motors that benefit from shift registers. Industrial electronics such as servo motor drive controls for multi- or single-axis motors utilize shift registers for the same reasons.
It is also common to see shift registers in user interfaces for both LED control and keypad polling since humans are generally able to discern differences only on the millisecond time scale. Medical applications such as oxygen concentrators utilize shift registers for monitoring keys and lighting indicators. Similarly, fire control panels and elevator control panels commonly use shift registers for LED outputs and button inputs.
This document provides a complete description of the most common shift register functions (164, 165, 595), an explanation of how each common function operates, key design concepts to prevent issues when using them, and an example system design utilizing existing parts.
All trademarks are the property of their respective owners.
There are three primary types of shift registers: Serial-In Parallel-Out (SIPO), Parallel-In Serial-Out (PISO), and so-called universal shift registers, which contain both parallel-in and parallel-out connections. Often these are shortened to parallel-in, parallel-out, and universal, as the parallel connections are the key concern. All shift registers have serial input and output connections to allow for series connection (aka daisy chaining) of devices.
Parallel-in shift registers are used to increase the number of inputs on a controller, an application often referred to as input expansion. Devices like the SN74HCS165 provide eight additional inputs per integrated circuit (IC).
Parallel-out shift registers are used to increase the number of outputs on a controller, an application often referred to as output expansion. Devices like the SN74HCS164 provide eight additional outputs per IC.
Universal shift registers provide the ability to switch between reading inputs into the internal registers or sending the internal data to outputs. They are not used as commonly, however, as they provide fewer storage bits than their dedicated input- or output-type counterparts. For example, a 16-pin universal shift register like the CD74HC194 can be used for inputs or outputs, however it can only contain up to 4 bits of data, while the aforementioned SN74HCS165 and SN74HCS164, both of which are also in 16-pin packages, can hold eight bits of data each.