The 74HC Logic Family: A Practical Guide to the Chips Every Maker Should Know

The 74HC series is the workhorse of digital electronics. These CMOS chips replace piles of discrete transistors, extend microcontroller pin counts, and clean up noisy signals for a few cents each. A single 74HC595 adds eight outputs to an Arduino using only three pins. A 74HC14 turns a sloppy button signal into a crisp logic edge. Learn a handful of these ICs and you can solve most glue-logic problems without writing a line of extra firmware.

Quick Takeaways

  • 74HC is high-speed CMOS logic: supply range 2V to 6V, typical propagation delay around 8 ns at 5V, and near-zero static current.
  • It is not pin-for-pin voltage compatible with TTL (74LS). Use 74HCT when a 5V TTL output must drive an HC input.
  • Never leave an input floating. Tie unused inputs to VCC or GND, or the chip may oscillate and run hot.
  • The five chips to know first: 74HC595 (shift register), 74HC165 (parallel-in shift register), 74HC138 (decoder), 74HC14 (Schmitt inverter), 74HC245 (bus transceiver).
Feature 74HC 74LS 74HCT
Technology CMOS Bipolar TTL CMOS, TTL-level inputs
Supply voltage 2–6V 4.75–5.25V 4.5–5.5V
Static power Near zero High (mW per gate) Near zero
Input high threshold (5V supply) ~3.5V ~2.0V ~2.0V
Output drive ±4–6mA 8mA sink / 0.4mA source ±4–6mA
Best for Modern 3.3V/5V designs Legacy TTL repair TTL-to-CMOS interfacing

What the 74HC Series Actually Is

The “74” prefix marks the commercial temperature range (0°C to 70°C) of a numbering scheme dating to the 1960s. Military parts used “54”. The letters after it define the process technology. HC stands for High-speed CMOS. It uses complementary MOSFET pairs in every gate, so the chip draws current only while switching.

Three facts shape every design decision:

  1. Wide supply range. A 74HC chip runs from 2V to 6V, so it works on a 3.3V ESP32 board as well as a 5V Arduino Uno.
  2. Rail-to-rail outputs. Outputs swing close to VCC and GND under light load.
  3. Fast but not instant. Propagation delay is roughly 8–15 ns, with maximum toggle rates in the tens of MHz.

The 74HC family shares its function numbering with older logic. A 74HC00 is four NAND gates, just like the 7400 and 74LS00. Pinouts match, so datasheet knowledge carries across families.

Voltage Levels and Logic Thresholds

CMOS inputs switch near half the supply voltage. At VCC = 5V, the datasheet guarantees:

  • VIH (min): 3.5V, the lowest voltage read as logic HIGH
  • VIL (max): 1.5V, the highest voltage read as logic LOW
  • VOH (min): 4.4V at light load
  • VOL (max): 0.1V at light load

Connecting 3.3V Outputs to 74HC Inputs at 5V

This is the most common maker mistake. A 3.3V GPIO from an ESP32 or Raspberry Pi Pico outputs about 3.3V, which falls below the 3.5V VIH of a 5V 74HC chip. The result is unreliable logic.

You have three clean options:

  • Power the 74HC at 3.3V. All levels scale with VCC. This is the simplest fix.
  • Use a 74HCT part. Its input threshold of about 2V accepts 3.3V signals on a 5V supply.
  • Use a dedicated level shifter such as the 74LVC245 or TXB0108.

Driving 5V Inputs from a 74HC Output

A 74HC powered at 3.3V cannot reliably drive a 5V HC input. Pair it with a 74HCT device at the destination, or use a level shifter.

Output Drive and Power Considerations

Each 74HC output sources or sinks about 4mA (standard gates) to 6mA (bus drivers like the 74HC245, which can reach ±7.8mA). That is enough for a single low-current LED with a 1kΩ resistor, but not for a relay coil or motor.

Rules of thumb:

  • LEDs: Use 330Ω–1kΩ series resistors. At 5V and 1kΩ, the LED sees about 2–3mA.
  • Total package current: Stay under roughly 50mA through VCC or GND pins on the whole chip.
  • Loads above 20mA: Add an NPN transistor (2N2222) or logic-level MOSFET (2N7000, IRLZ44N).

Always place a 100nF ceramic decoupling capacitor between VCC and GND, as close to the chip as possible. Fast CMOS edges create current spikes that cause ringing and false triggering without it.

Unused Inputs: The Silent Killer

CMOS inputs have extremely high impedance. A floating input picks up stray charge and hovers near the switching threshold. Both the P-channel and N-channel transistors conduct simultaneously, causing excess current and unpredictable output.

  • Tie unused gate inputs to GND (for AND/NAND) or VCC (for OR/NOR), whichever leaves the logic function unchanged.
  • Tie unused gates’ inputs to a fixed level and leave their outputs unconnected.
  • Use 10kΩ pull-ups or pull-downs on inputs that connect to switches or connectors.

The Essential 74HC Chips

74HC595: 8-Bit Shift Register (Output Expander)

The 74HC595 converts serial data into eight parallel outputs. Three microcontroller pins control it, and chaining multiple chips adds eight outputs each.

Pin Name Function
14 SER (DS) Serial data input
11 SRCLK (SHCP) Shift register clock
12 RCLK (STCP) Storage (latch) clock
13 OE Output enable, active LOW (tie to GND)
10 SRCLR Shift register clear, active LOW (tie to VCC)
15, 1–7 QA–QH Parallel outputs
9 QH’ Serial out for daisy-chaining
16 / 8 VCC / GND Power

Arduino code: counting in binary on eight LEDs

// 74HC595 binary counter
const uint8_t DATA_PIN  = 11; // SER   -> pin 14
const uint8_t CLOCK_PIN = 13; // SRCLK -> pin 11
const uint8_t LATCH_PIN = 10; // RCLK  -> pin 12

void setup() {
  pinMode(DATA_PIN, OUTPUT);
  pinMode(CLOCK_PIN, OUTPUT);
  pinMode(LATCH_PIN, OUTPUT);
}

void loop() {
  for (uint16_t i = 0; i < 256; i++) {
    digitalWrite(LATCH_PIN, LOW);                 // Hold outputs steady while shifting
    shiftOut(DATA_PIN, CLOCK_PIN, MSBFIRST, i);   // Clock 8 bits into the shift register
    digitalWrite(LATCH_PIN, HIGH);                // Rising edge copies bits to the outputs
    delay(100);
  }
}

To daisy-chain, connect QH’ of the first chip to SER of the second, and tie both SRCLK and RCLK lines together. Call shiftOut() once per chip, with the last byte sent landing in the first chip.

74HC165: 8-Bit Parallel-In, Serial-Out (Input Expander)

The 74HC165 is the mirror image of the 595. It captures eight inputs at once and shifts them out serially, ideal for button matrices and DIP switch banks. Pulse PL (parallel load, pin 1) LOW to latch the inputs, then clock data out of Q7 (pin 9).

74HC138: 3-to-8 Line Decoder

Three address pins (A0–A2) select exactly one of eight active-LOW outputs (Y0–Y7). Use it for chip-select signals, address decoding in memory-mapped designs, and multiplexing displays. Enable pins E1, E2 (active LOW) and E3 (active HIGH) allow cascading to 4-to-16 or larger decoders.

74HC14: Hex Schmitt-Trigger Inverter

Six inverters with hysteresis: the input threshold for rising signals (about 2.7V at 5V) differs from falling signals (about 1.8V). This cleans up slow, noisy, or bouncing signals. Typical uses:

  • Switch debouncing with an RC filter (10kΩ and 100nF gives a time constant of 1 ms)
  • Squaring up sine waves or sensor outputs
  • Building a simple relaxation oscillator

74HC245: Octal Bus Transceiver

Eight bidirectional buffers with a direction pin (DIR) and output-enable pin (OE). It buffers address and data buses and is a popular level-adjusting buffer between an Arduino and 5V peripherals when powered appropriately.

74HC00, 74HC08, 74HC32, 74HC04

Basic gates: quad NAND, quad AND, quad OR, and hex inverter. Use them as glue logic instead of burning microcontroller cycles.

74HC Quick Reference: Common Parts

Part Function Package Pins Key Use
74HC00 Quad 2-input NAND 14 Universal glue logic
74HC04 Hex inverter 14 Signal inversion
74HC14 Hex Schmitt inverter 14 Debouncing, signal conditioning
74HC138 3-to-8 decoder 16 Chip select
74HC165 PISO shift register 16 Input expansion
74HC245 Octal bus buffer 20 Bus isolation
74HC595 SIPO shift register + latch 16 Output expansion
74HC4051 8-channel analog mux 16 Analog signal switching

74HC vs. Other Logic Families

Criterion 74HC 74AHC 74LVC 4000 series
Supply range 2–6V 2–5.5V 1.65–3.6V (5V-tolerant inputs) 3–15V
Speed Medium (~8 ns) Fast (~5 ns) Fast (~3–5 ns) Slow (~100 ns)
Output current ±4–6mA ±8mA ±24mA ~1–8mA
Cost Very low Low Low Very low
3.3V MCU friendly Yes (at 3.3V supply) Yes Best Marginal
Best for General maker work Faster 5V designs Mixed 3.3V/5V systems High-voltage logic

For hobby builds, 74HC gives the best mix of availability, price, and forgiving electrical behavior.

Real-World Project: Eight-LED Chaser with a 74HC595 and Debounced Button

Parts list

  • 1x Arduino Uno (or compatible)
  • 1x 74HC595 shift register
  • 1x 74HC14 Schmitt inverter (debounce stage)
  • 8x LEDs with 8x 330Ω resistors
  • 1x pushbutton, 1x 10kΩ resistor, 1x 100nF capacitor
  • 2x 100nF decoupling capacitors

Wiring

  1. Power both ICs from 5V and GND, with a 100nF capacitor across each chip’s supply pins.
  2. Connect 74HC595 pins as in the pinout table. Tie OE to GND and SRCLR to 5V.
  3. Wire each output QA–QH through a 330Ω resistor to an LED anode. Connect cathodes to GND.
  4. Debounce: connect the button between 5V and the 74HC14 input, with a 10kΩ pull-down to GND and a 100nF capacitor from the input to GND. Feed the inverter output into Arduino pin D2. Tie unused 74HC14 inputs to GND.

Firmware

const uint8_t DATA_PIN  = 11;
const uint8_t CLOCK_PIN = 13;
const uint8_t LATCH_PIN = 10;
const uint8_t BTN_PIN   = 2;   // Inverted by 74HC14: LOW when pressed

uint8_t pattern = 0b00000001;
bool lastState = HIGH;

void writeLEDs(uint8_t value) {
  digitalWrite(LATCH_PIN, LOW);
  shiftOut(DATA_PIN, CLOCK_PIN, MSBFIRST, value);
  digitalWrite(LATCH_PIN, HIGH);   // Update all eight outputs simultaneously
}

void setup() {
  pinMode(DATA_PIN, OUTPUT);
  pinMode(CLOCK_PIN, OUTPUT);
  pinMode(LATCH_PIN, OUTPUT);
  pinMode(BTN_PIN, INPUT);
  writeLEDs(pattern);
}

void loop() {
  bool state = digitalRead(BTN_PIN);
  if (lastState == HIGH && state == LOW) {      // Falling edge = press
    pattern = (pattern << 1) | (pattern >> 7);  // Rotate left by one bit
    writeLEDs(pattern);
  }
  lastState = state;
}

The hardware debounce removes the need for software delays, so the loop stays responsive.

Troubleshooting 74HC Circuits

Symptom Likely Cause Fix
Outputs flicker randomly Floating input or missing decoupling Tie unused pins; add 100nF cap
Chip gets warm Floating inputs or output short Check for unconnected pins and shorts
3.3V MCU signal ignored VIH above 3.3V at 5V supply Power chip at 3.3V or use 74HCT
595 shows garbage after power-up SRCLR or OE floating Tie SRCLR to VCC, OE to GND
Dim or weak LEDs Exceeding output drive Add transistor buffer or use 74HC245
Latch updates early Clock/latch wires swapped Verify SRCLK vs. RCLK pins
ESD damage Static discharge Handle with grounded wrist strap

Design Tips for Reliable Builds

  • Place the decoupling capacitor within a centimeter of the supply pins.
  • Keep clock lines short on breadboards. Long jumpers pick up crosstalk at MHz speeds.
  • Add a 100Ω series resistor on clock lines to damp ringing.
  • Check the datasheet for the absolute maximum input voltage: usually VCC + 0.5V. A 5V signal into a 3.3V-powered 74HC will stress the input protection diodes.
  • Prefer DIP packages for breadboards and SOIC/TSSOP for PCBs.

Frequently Asked Questions

What does 74HC stand for?

74 is the commercial-grade logic numbering series, and HC means High-speed CMOS. The family combines CMOS power efficiency with speeds close to older bipolar TTL logic.

Can I use a 74HC chip with a 3.3V microcontroller?

Yes. Power the 74HC at 3.3V so input thresholds scale to match your MCU. Do not power it at 5V with 3.3V inputs, because the VIH of about 3.5V will not be met. Use a 74HCT part or a level shifter if you must mix voltages.

What is the difference between 74HC and 74HCT?

Both are CMOS. 74HC uses CMOS input thresholds (about half of VCC). 74HCT uses TTL-compatible thresholds (about 2V), so it accepts 3.3V and TTL outputs on a 5V supply. HCT only operates from 4.5–5.5V.

How many 74HC595 chips can I daisy-chain?

There is no fixed limit. Practical limits come from clock speed, signal integrity, and total supply current. Chains of ten or more are common in LED matrices, usually with a bulk capacitor (10µF) near the power entry point.

Hot this week

iOS Architecture Explained: Darwin, XNU, and Core Services

Learn how iOS architecture works, from the Darwin kernel and XNU to Core Services and Cocoa Touch. Read the full technical breakdown now.

Android Architecture Explained: From Linux Kernel to Apps

Learn how Android’s layered architecture works, from the Linux kernel and HAL to ART and apps. Follow the commands and inspect your own device today.

Windows NT Architecture Explained: Kernel, Executive, and Subsystems

Learn how the Windows NT kernel, Executive, HAL, and subsystems work together. Inspect each layer with real commands. Read the full guide.

The Linux Kernel Explained: Architecture, Modules, and How It Boots

Learn how the Linux kernel works: its architecture, loadable modules, and full boot sequence. Includes commands, tables, and fixes. Read the guide.

The Most Secure Operating Systems: What the Evidence Shows

Compare the most secure operating systems by kernel design, patch cadence, and exploit data. See which OS fits your threat model. Read the guide.

Topics

iOS Architecture Explained: Darwin, XNU, and Core Services

Learn how iOS architecture works, from the Darwin kernel and XNU to Core Services and Cocoa Touch. Read the full technical breakdown now.

Android Architecture Explained: From Linux Kernel to Apps

Learn how Android’s layered architecture works, from the Linux kernel and HAL to ART and apps. Follow the commands and inspect your own device today.

Windows NT Architecture Explained: Kernel, Executive, and Subsystems

Learn how the Windows NT kernel, Executive, HAL, and subsystems work together. Inspect each layer with real commands. Read the full guide.

The Linux Kernel Explained: Architecture, Modules, and How It Boots

Learn how the Linux kernel works: its architecture, loadable modules, and full boot sequence. Includes commands, tables, and fixes. Read the guide.

The Most Secure Operating Systems: What the Evidence Shows

Compare the most secure operating systems by kernel design, patch cadence, and exploit data. See which OS fits your threat model. Read the guide.

Monitor Linux Performance: top, htop, btop, vmstat, and iostat

Learn to monitor Linux performance with top, htop, btop, vmstat, and iostat. Read every metric, spot bottlenecks, and fix them. Start tuning now.

Linux Administration Roadmap: What to Learn After the Basics

Move past Linux basics. Follow this step-by-step sysadmin roadmap with commands, configs, and labs. Start building real server skills today.

PowerShell for Beginners: Commands Every Windows User Should Know

Learn the PowerShell commands every Windows user needs: navigation, files, processes, services, and networking. Copy, paste, and start now.

Related Articles

Popular Categories