아두이노 74HC573 Latch 사용방법
Software/Arduino2023. 4. 17. 16:53
반응형
74HC573 는 TTL 시리즈 중에서 8bits Latch IC 로 원하는 출력값을 다음 변경전까지 유지시키기 위한 용도로 사용합니다.
제 경우에는 주로 릴레이 On, Off 에 많이 사용했습니다.
그런데 주로 아두이노나노 보드를 사용하다 보니 출력 핀수가 적어서 시리얼로 제어가 가능한 74hc595 를 많이 사용했습니다.
아두이노 메가 처럼 IO 핀이 많은 경우나 HC245 와 같은 입출력 포트를 같은 라인으로 사용할 경우 적용하면 좋을듯 하여
코드를 만들어 보았습니다.
class HC573Latch
{
public :
void HC573Latch(uint8_t le, uint8_t enable, // OE 단자를 사용할 경우
uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3,
uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7);
void HC573Latch(uint8_t le, // OE 단자를 GND로 묶었을 경우
uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3,
uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7);
void latch8bits(uint8_t value) ;
private :
bool _oe_used ; // OE 단자의 사용 여부
uint8_t _output_enable ; // activated by a LOW
uint8_t _latch_pin; // activated by a HIGH pulse.
uint8_t _data_pins[8];
void pulseEnable();
} ;
//-----------------------------------------------------------------------
void HC573Latch(uint8_t le, uint8_t enable, // OE 단자를 사용할 경우
uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3,
uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7)
{
_output_enable = enable ;
_latch_pin = le ;
_oe_used = true ;
_data_pins[0] = d0 ;
_data_pins[1] = d1 ;
_data_pins[2] = d2 ;
_data_pins[3] = d3 ;
_data_pins[4] = d4 ;
_data_pins[5] = d5 ;
_data_pins[6] = d6 ;
_data_pins[7] = d7 ;
digitalWrite(_output_enable, HIGH) ;
}
//-----------------------------------------------------------------------
void HC573Latch(uint8_t le, // OE 단자를 GND로 묶었을 경우
uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3,
uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7)
{
_latch_pin = le ;
_oe_used = false ;
_data_pins[0] = d0 ;
_data_pins[1] = d1 ;
_data_pins[2] = d2 ;
_data_pins[3] = d3 ;
_data_pins[4] = d4 ;
_data_pins[5] = d5 ;
_data_pins[6] = d6 ;
_data_pins[7] = d7 ;
}
//-----------------------------------------------------------------------
void HC573Latch::latch8bits(uint8_t value)
{
if(_oe_used == true) digitalWrite(_output_enable, LOW) ;
for (int i = 0; i < 8; i++)
{
digitalWrite(_data_pins[i], (value >> i) & 0x01); // 데이타 핀에 데이타를 출력한다.
}
pulseEnable(); // Latch 단자를 on->off 하여 출력을 변경한다.
if(_oe_used == true) digitalWrite(_output_enable, HIGH) ;
}
//-----------------------------------------------------------------------
void HC573Latch::pulseEnable(void)
{
digitalWrite(_latch_pin, HIGH);
delayMicroseconds(1);
digitalWrite(_latch_pin, LOW);
}
//-----------------------------------------------------------------------
반응형
'Software > Arduino' 카테고리의 다른 글
아두이노 타이머 사용 방법 (0) | 2023.02.06 |
---|---|
아두이노 EEPRom 읽고 쓰기 (0) | 2023.02.06 |
아두이노 비트필드(bit field)를 이용한 버튼입력 처리 (0) | 2023.01.17 |
아두이노 시리얼 통신( PC <-> 아두이노 ) (0) | 2023.01.17 |
댓글()