본문 바로가기
MCU/아두이노

아두이노에서 74HC573 사용하기

by linuxgo 2025. 9. 3.

1. 74HC573이란?

74HC573은 8비트 D형 래치(Octal D-Type Transparent Latch) IC입니다.
마이컴이 출력한 데이터를 잠시 저장(latch)하고, 필요할 때 병렬 출력으로 꺼내 쓸 수 있습니다.

74HC573

주요 핀 기능은 다음과 같습니다:

  • D0~D7: 입력 데이터
  • Q0~Q7: 출력 데이터
  • LE (Latch Enable)
    • HIGH: 입력(D)을 출력(Q)에 통과시킴
    • LOW: 이전 값 유지
  • OE (Output Enable, Active Low)
    • LOW: 출력 활성화
    • HIGH: 출력이 High-Z (삼상 상태)

즉, 마이컴에서 데이터를 보내고 LE 신호로 latch를 걸어주면, 그 값이 계속 유지됩니다.
이 방식은 I/O 확장, 버스 분리, 디스플레이 구동 등에 자주 사용됩니다.

2. 아두이노 연결 예시

예를 들어, 아래와 같이 핀을 연결할 수 있습니다:

74HC573 핀  아두이노 핀
D0~D7 D2 ~ D9
LE D10
OE D11
VCC 5V
GND GND

3. 아두이노 드라이버 클래스 코드

아래 코드는 74HC573을 제어하기 위한 간단한 드라이버 클래스입니다.

class HC573 {
private:
    uint8_t dataPins[8];   // D0~D7 핀
    uint8_t lePin;         // Latch Enable 핀
    uint8_t oePin;         // Output Enable 핀

public:
    HC573(const uint8_t dPins[8], uint8_t le, uint8_t oe) {
        for (int i = 0; i < 8; i++) {
            dataPins[i] = dPins[i];
        }
        lePin = le;
        oePin = oe;
    }

    void begin() {
        for (int i = 0; i < 8; i++) {
            pinMode(dataPins[i], OUTPUT);
            digitalWrite(dataPins[i], LOW);
        }
        pinMode(lePin, OUTPUT);
        pinMode(oePin, OUTPUT);

        digitalWrite(lePin, LOW);  // latch closed
        digitalWrite(oePin, LOW);  // output enable
    }

    // 8비트 데이터 출력 후 래치
    void write(uint8_t value) {
        for (int i = 0; i < 8; i++) {
            digitalWrite(dataPins[i], (value >> i) & 0x01);
        }

        // Latch pulse
        digitalWrite(lePin, HIGH);
        delayMicroseconds(1);
        digitalWrite(lePin, LOW);
    }

    // 출력 활성/비활성
    void enableOutput(bool enable) {
        digitalWrite(oePin, enable ? LOW : HIGH);
    }
};

 

4. 아두이노 예제 스케치

위 드라이버를 이용해서 74HC573에 0~255까지 순차적으로 값을 출력하는 예제입니다.

#include "HC573.h"

// D0~D7 핀 배열 (아두이노 D2~D9 사용)
uint8_t dataPins[8] = {2,3,4,5,6,7,8,9};  
HC573 latch(dataPins, 10, 11); // (D핀들, LE=10, OE=11)

void setup() {
  latch.begin();
  latch.enableOutput(true);  // 출력 활성화
}

void loop() {
  for (uint8_t i=0; i<256; i++) {
    latch.write(i);    // 0~255 값 출력
    delay(100);
  }
}

 

5. 활용 예시

  • LED 8개 제어: 8비트 값으로 한 번에 ON/OFF
  • 7세그먼트 디스플레이 구동: BCD 변환 후 표시
  • 버스 데이터 홀드: 마이컴이 다른 동작을 하는 동안 값 유지

✅ 정리

74HC573은 단순하지만 강력한 병렬 래치 IC입니다.
아두이노에서 쉽게 제어할 수 있으며, 위의 드라이버 클래스를 사용하면 74HC595처럼 편리하게 사용할 수 있습니다.