1. 74HC573이란?
74HC573은 8비트 D형 래치(Octal D-Type Transparent Latch) IC입니다.
마이컴이 출력한 데이터를 잠시 저장(latch)하고, 필요할 때 병렬 출력으로 꺼내 쓸 수 있습니다.
주요 핀 기능은 다음과 같습니다:
- 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처럼 편리하게 사용할 수 있습니다.
'MCU > 아두이노' 카테고리의 다른 글
아두이노에서 74HC157 / 74HC153 멀티플렉서(MUX) 제어 (0) | 2025.09.10 |
---|---|
아두이노에서 74HC93 / 74HC161 / 74HC163 Binary Counter 사용하기 (0) | 2025.09.10 |
아두이노에서 74HC165 (병렬 → 직렬 변환기) 사용하기 (0) | 2025.09.03 |
아두이노에서 74HC154 제어하기 (0) | 2025.09.03 |
Arduino UNO R4에서 DMA 설정 및 사용하기 (0) | 2025.08.20 |
AVR128DA48 Curiosity Nano를 아두이노 보드 만들기 | 어셈블리 코드로 1602 LCD 제어(Controlling 1602 LCD with AVR128DA48 Curiosity Nano Using Arduino DxCore) (0) | 2025.08.14 |
Arduino UNO R4: RA4M1 I2C 드라이버 구현 (Implementing I2C Driver with RA4M1) (0) | 2025.08.13 |
Arduino Nano 33 IoT로 LSM6DS3 센서 데이터를 BLE로 전송하기(Sending LSM6DS3 Sensor Data via BLE with Arduino Nano 33 IoT) (0) | 2025.08.03 |