

The 74HC595 is an 8-bit shift register with an output latch, designed for serial-to-parallel data conversion. It enables microcontrollers to control multiple outputs using only a few pins, making it an essential component in projects requiring efficient pin usage. The 74HC595 features a serial input, parallel output, and the ability to cascade multiple chips to expand the number of outputs. This makes it ideal for applications such as LED displays, motor control, and other scenarios where multiple outputs need to be controlled simultaneously.








The 74HC595 is a high-speed CMOS device with the following key specifications:
| Parameter | Value |
|---|---|
| Supply Voltage (Vcc) | 2V to 6V |
| Input Voltage Range | 0V to Vcc |
| Maximum Clock Frequency | 25 MHz (at 4.5V) |
| Output Current (per pin) | ±6 mA |
| Total Power Dissipation | 500 mW |
| Operating Temperature | -40°C to +125°C |
The 74HC595 comes in a 16-pin DIP/SOIC package. Below is the pinout and description:
| Pin Number | Pin Name | Description |
|---|---|---|
| 1 | Q1 | Parallel output pin 1 |
| 2 | Q2 | Parallel output pin 2 |
| 3 | Q3 | Parallel output pin 3 |
| 4 | Q4 | Parallel output pin 4 |
| 5 | Q5 | Parallel output pin 5 |
| 6 | Q6 | Parallel output pin 6 |
| 7 | Q7 | Parallel output pin 7 |
| 8 | GND | Ground (0V) |
| 9 | Q7' | Serial data output for cascading additional 74HC595 chips |
| 10 | MR | Master Reset (active LOW) - clears all outputs |
| 11 | SH_CP | Shift Register Clock Input - shifts data on rising edge |
| 12 | ST_CP | Storage Register Clock Input (Latch) - transfers data to output on rising edge |
| 13 | OE | Output Enable (active LOW) - enables/disables outputs |
| 14 | DS | Serial Data Input |
| 15 | Q0 | Parallel output pin 0 |
| 16 | Vcc | Supply Voltage |
SH_CP (Shift Clock) and ST_CP (Latch Clock) to GPIO pins on your microcontroller.DS (Serial Data Input) to the data pin of your microcontroller.OE to ground to enable outputs or to a GPIO pin for dynamic control.DS pin, synchronized with the SH_CP clock.ST_CP pin to latch the data into the output register.Q7' pin of the first chip to the DS pin of the next chip.SH_CP and ST_CP pins across all chips.Below is an example of how to control 8 LEDs using the 74HC595 and an Arduino UNO:
// Define 74HC595 control pins
const int dataPin = 2; // DS (Serial Data Input)
const int latchPin = 3; // ST_CP (Latch Clock)
const int clockPin = 4; // SH_CP (Shift Clock)
// Binary pattern to display on LEDs
byte ledPattern = 0b10101010;
void setup() {
// Set control pins as outputs
pinMode(dataPin, OUTPUT);
pinMode(latchPin, OUTPUT);
pinMode(clockPin, OUTPUT);
}
void loop() {
// Send data to the 74HC595
digitalWrite(latchPin, LOW); // Disable latch to load data
shiftOut(dataPin, clockPin, MSBFIRST, ledPattern); // Send data
digitalWrite(latchPin, HIGH); // Enable latch to update outputs
delay(500); // Wait for 500ms
ledPattern = ~ledPattern; // Invert pattern for next cycle
}
shiftOut function sends data serially to the 74HC595.latchPin ensures that the data is only displayed after it is fully loaded.ledPattern variable determines which LEDs are ON or OFF.OE pin is connected to ground or properly controlled.ST_CP and SH_CP pins are receiving clock signals.DS pin.latchPin is toggled after data is shifted in.Q7' pin of one chip and the DS pin of the next.Q: Can I use the 74HC595 with a 3.3V microcontroller?
A: Yes, the 74HC595 operates with supply voltages as low as 2V, making it compatible with 3.3V systems.
Q: How many 74HC595 chips can I cascade?
A: Theoretically, you can cascade as many as needed, but practical limits depend on signal integrity and timing constraints.
Q: What happens if I don't connect the OE pin?
A: The outputs will remain disabled. Connect OE to ground to enable the outputs.
Q: Can the 74HC595 drive high-power devices like motors?
A: No, the 74HC595 can only source/sink up to 6 mA per pin. Use external drivers or transistors for high-power devices.