Cirkit Designer Logo
Cirkit Designer
Your all-in-one circuit design IDE
Home / 
Component Documentation

How to Use 74HC595: Examples, Pinouts, and Specs

Image of 74HC595
Cirkit Designer LogoDesign with 74HC595 in Cirkit Designer

Introduction

The 74HC595 is an 8-bit serial-in, parallel-out shift register with an output latch, manufactured by Arduino under the part ID "UNO". This component is widely used for serial-to-parallel data conversion, allowing users to control multiple output pins using only a few input pins. It is particularly useful in applications where microcontroller I/O pins are limited, such as LED matrix displays, seven-segment displays, and data storage systems.

By cascading multiple 74HC595 chips, users can expand the number of output pins even further, making it a versatile solution for projects requiring a large number of outputs.

Explore Projects Built with 74HC595

Use Cirkit Designer to design, explore, and prototype these projects online. Some projects support real-time simulation. Click "Open Project" to start designing instantly!
STM32-Controlled LED Display with 74HC595 Shift Register and 12-Bit DAC
Image of Harry Stim Breadboard: A project utilizing 74HC595 in a practical application
This circuit uses a 74HC595 shift register to control multiple LEDs via a common ground configuration, with a microcontroller providing serial data input. It includes decoupling capacitors for stability and a 12-Bit DAC, potentially for analog signal generation or reference voltage application.
Cirkit Designer LogoOpen Project in Cirkit Designer
Arduino-Controlled 74HC595 Shift Register LED Driver
Image of cube: A project utilizing 74HC595 in a practical application
This circuit consists of multiple 74HC595 shift registers daisy-chained together, controlled by an Arduino UNO. The shift registers are used to expand the number of digital outputs from the Arduino, allowing for control of multiple outputs with only a few pins. The circuit likely drives an array of LEDs or similar devices, as indicated by the series resistors connected to the outputs of the shift registers.
Cirkit Designer LogoOpen Project in Cirkit Designer
Arduino UNO-Based LED Control System with Touch Sensor and Shift Registers
Image of 8*8*8 LED CUBE: A project utilizing 74HC595 in a practical application
This circuit is a microcontroller-based LED control system using an Arduino UNO and multiple 74HC595 shift registers to drive various colored LEDs. The circuit also includes touch sensors for user input and transistors for switching, allowing for complex lighting patterns and user interaction.
Cirkit Designer LogoOpen Project in Cirkit Designer
Arduino UNO WiFi-Controlled Display and LED Interface
Image of TS Antonio: A project utilizing 74HC595 in a practical application
This circuit is designed to control multiple LEDs via a 74HC595 shift register, interfaced with an Arduino UNO with WiFi capability. It features an LCD display for user interface, a trimmer potentiometer for adjusting the display contrast, and an IR receiver for remote control functionality.
Cirkit Designer LogoOpen Project in Cirkit Designer

Explore Projects Built with 74HC595

Use Cirkit Designer to design, explore, and prototype these projects online. Some projects support real-time simulation. Click "Open Project" to start designing instantly!
Image of Harry Stim Breadboard: A project utilizing 74HC595 in a practical application
STM32-Controlled LED Display with 74HC595 Shift Register and 12-Bit DAC
This circuit uses a 74HC595 shift register to control multiple LEDs via a common ground configuration, with a microcontroller providing serial data input. It includes decoupling capacitors for stability and a 12-Bit DAC, potentially for analog signal generation or reference voltage application.
Cirkit Designer LogoOpen Project in Cirkit Designer
Image of cube: A project utilizing 74HC595 in a practical application
Arduino-Controlled 74HC595 Shift Register LED Driver
This circuit consists of multiple 74HC595 shift registers daisy-chained together, controlled by an Arduino UNO. The shift registers are used to expand the number of digital outputs from the Arduino, allowing for control of multiple outputs with only a few pins. The circuit likely drives an array of LEDs or similar devices, as indicated by the series resistors connected to the outputs of the shift registers.
Cirkit Designer LogoOpen Project in Cirkit Designer
Image of 8*8*8 LED CUBE: A project utilizing 74HC595 in a practical application
Arduino UNO-Based LED Control System with Touch Sensor and Shift Registers
This circuit is a microcontroller-based LED control system using an Arduino UNO and multiple 74HC595 shift registers to drive various colored LEDs. The circuit also includes touch sensors for user input and transistors for switching, allowing for complex lighting patterns and user interaction.
Cirkit Designer LogoOpen Project in Cirkit Designer
Image of TS Antonio: A project utilizing 74HC595 in a practical application
Arduino UNO WiFi-Controlled Display and LED Interface
This circuit is designed to control multiple LEDs via a 74HC595 shift register, interfaced with an Arduino UNO with WiFi capability. It features an LCD display for user interface, a trimmer potentiometer for adjusting the display contrast, and an IR receiver for remote control functionality.
Cirkit Designer LogoOpen Project in Cirkit Designer

Technical Specifications

The following table outlines the key technical details of the 74HC595:

Parameter Value
Supply Voltage (Vcc) 2V to 6V
Input Voltage (VI) 0V to Vcc
Output Current (IO) ±35 mA (per pin)
Maximum Clock Frequency 25 MHz (at 4.5V to 5.5V Vcc)
Operating Temperature -40°C to +125°C
Package Type DIP-16, SOIC-16

Pin Configuration and Descriptions

The 74HC595 has 16 pins, as described in the table below:

Pin Number 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)
11 SH_CP Shift register clock input
12 ST_CP Storage register clock input (latch pin)
13 OE Output enable (active low)
14 DS Serial data input
15 Q0 Parallel output pin 0
16 Vcc Supply voltage

Usage Instructions

How to Use the 74HC595 in a Circuit

  1. Power the Chip: Connect the Vcc pin (16) to a 5V power supply and the GND pin (8) to ground.
  2. Connect Control Pins:
    • Connect the DS pin (14) to the microcontroller's data output pin.
    • Connect the SH_CP pin (11) to the microcontroller's clock pin.
    • Connect the ST_CP pin (12) to the microcontroller's latch pin.
  3. Load Data:
    • Send serial data to the DS pin while pulsing the SH_CP pin to shift the data into the register.
    • Pulse the ST_CP pin to latch the data into the output register.
  4. Enable Outputs: Ensure the OE pin (13) is connected to ground to enable the outputs.

Important Considerations and Best Practices

  • Use current-limiting resistors on the output pins when driving LEDs to prevent damage to the chip.
  • If cascading multiple 74HC595 chips, connect the Q7' pin (9) of the first chip to the DS pin (14) of the next chip.
  • Keep the clock signal clean and free of noise to ensure proper data shifting.
  • Use decoupling capacitors (e.g., 0.1 µF) between Vcc and GND to stabilize the power supply.

Example Code for Arduino UNO

Below is an example of how to use the 74HC595 with an Arduino UNO to control 8 LEDs:

// Define the 74HC595 control pins
const int dataPin = 2;  // DS pin (14) connected to Arduino pin 2
const int clockPin = 3; // SH_CP pin (11) connected to Arduino pin 3
const int latchPin = 4; // ST_CP pin (12) connected to Arduino pin 4

void setup() {
  // Set control pins as outputs
  pinMode(dataPin, OUTPUT);
  pinMode(clockPin, OUTPUT);
  pinMode(latchPin, OUTPUT);
}

void loop() {
  // Example pattern to display on LEDs
  byte ledPattern = 0b10101010; // Alternating LEDs on/off

  // Send the pattern to the 74HC595
  digitalWrite(latchPin, LOW); // Disable latch
  shiftOut(dataPin, clockPin, MSBFIRST, ledPattern); // Send data
  digitalWrite(latchPin, HIGH); // Enable latch

  delay(500); // Wait for 500ms
}

Explanation of the Code

  • The shiftOut function sends 8 bits of data to the 74HC595, starting with the most significant bit (MSBFIRST).
  • The latchPin is toggled to transfer the shifted data to the output pins.
  • The ledPattern variable defines which LEDs are turned on or off.

Troubleshooting and FAQs

Common Issues

  1. Outputs Not Responding:

    • Ensure the OE pin (13) is connected to ground.
    • Verify that the ST_CP pin (12) is being pulsed after shifting data.
  2. Incorrect Output Pattern:

    • Check the order of bits in the data being sent (MSB vs. LSB).
    • Ensure the clock signal is stable and matches the timing requirements.
  3. Chip Overheating:

    • Verify that the output current does not exceed 35 mA per pin.
    • Use appropriate resistors for LEDs or other loads.

FAQs

Q: Can I cascade multiple 74HC595 chips?
A: Yes, connect the Q7' pin (9) of the first chip to the DS pin (14) of the next chip. Repeat for additional chips.

Q: What is the purpose of the OE pin?
A: The OE pin enables or disables all outputs. When high, all outputs are in a high-impedance state.

Q: Can the 74HC595 drive motors directly?
A: No, the 74HC595 cannot handle the high current required by motors. Use a motor driver circuit instead.