74HC595 실험

이 번에는 74HC595 실험을 합니다. 74HC595는 직렬 데이터 입력을 8비트의 병렬로 출력할 수 있는 로직 IC(8-Bit Serial to Parallel Shift Register)입니다. 74HC595를 쓰는 가장 큰 이유는 한정된 디지털 IO로 많은 디지털 출력을 제어하기 위함입니다.

여기서는 3개의 디지털 IO포트로 8개의 LED를 제어하는 실험을 합니다. 즉, 아두이노 보드로 8개의 LED를 제어하기 위해서는 8개의 디지털 IO 포트가 필요하지만 74HC595를 사용하면 디지털 IO포트 3개만으로 8개의 LED를 제어할 수 있게 되는 것입니다.

아래와 회로도와 같이 아두이노 우노 보드와 LED를 연결하게 됩니다.

 

아래는 74HC595 IC의 핀맵과 기능 설명입니다.

 

아래는 74HC595 IC 의 구동 로직표입니다.

 

아래는 74HC595 IC 구동 타이밍도입니다.

이제 실제 구동을 하기 위해 아래와 같이 회로를 구성하시기 바랍니다.

 

소스코드

아래는 소스코드입니다. 아두이노 IDE에 붙여넣기 하여 컴파일하고 업로드합니다.

//74HC595 실험
//74HC595 10번핀:MR--->VCC; 13번핀:OE--->GND 으로 연결
int latchPin = 5;//74HC595 12번핀으로
int clockPin = 4;//74HC595 11번핀으로
int dataPin = 2; //74HC595 14번핀으로
void setup ()
{
  pinMode(latchPin,OUTPUT);
  pinMode(clockPin,OUTPUT);
  pinMode(dataPin,OUTPUT); //모두 출력으로 설정
}
void loop()
{
  for(int a=0; a<256; a++)// a의 값을 1씩 증가시고도 256이 되면 다시 0부터 다시 시작합니다.
  {
    digitalWrite(latchPin,LOW); // 74HC595가 데이터수신이 가능하도록 ST_CP핀을 LOW레벨로 만듭니다.
    shiftOut(dataPin,clockPin,MSBFIRST,a);
    /*dataPin:데이터 출력 핀. 데이터의 각 비트가 순차적으로 출력됩니다. 핀 모드를 출력으로 설정해야합니다.
      clockPin: 데이터 출력을 쉬프트(1비트이동) 클록 출력 핀. 핀 모드를 출력으로 설정해야합니다.
      bitOrder:데이터 시프트 순서 선택 비트. MSBFIRST는 최상위 비트 먼저, LSBFIRST는 최하위 비트 먼저.
      a:출력할 데이터 값*/
    digitalWrite(latchPin,HIGH); //ST_CP 핀을 HIGH 레벨로
    delay(1000); //1초 지연
  }  
}

 


Tags