AVR > 74HC595 출력 포트 확장

TODAY1,316 TOTAL735,023
사이트 이용안내
Login▼/회원가입
최신글보기 질문게시판 기술자료 동영상강좌

아두이노 센서 ATMEGA128 PWM LED 초음파 AVR 블루투스 LCD UART 모터 적외선


BASIC4MCU | AVR | 포트 | 74HC595 출력 포트 확장

페이지 정보

작성자 키트 작성일2017-08-25 17:12 조회808회 댓글0건

본문

3660040649_UtEMpjAH_hc595-1_ekit.gif3Ftype3Dw740

10번 크리어 단지는 Vcc처리 했습니다만
래치는 기본적으로 어떤 데이터가 들어있을지 모르므로 전원 투입시 출력이 지멋대로 나오게 됩니다.
이를 해결하기 위해서는 POWR-ON 리셋 회로를 만들어서 크리어 시키는 것이 좋습니다.
크게 신경쓰이지 않으면 VCC에 연결 하면 됩니다.

//--------------------------------------------------------------------

#include
#include
//
#define DATA  PORTC.0
#define CLK   PORTC.1
#define LATCH PORTC.2
//
void HC595_WR(char ch){
    signed char c;

    for(c=7; c>=0; c--){ DATA=(ch>>c)&1; CLK=1; CLK=0; } // MSB 먼저, LSB 나중
}
//

void main(void){
  DDRC=0xff;    //PORTC 출력
  while(1) {
    HC595_WR(4); // 1번째 HC595
    HC595_WR(3); // 2번째 HC595
    HC595_WR(2); // 3번째 HC595
    HC595_WR(1); // 4번째 HC595
    LATCH=1; LATCH=0;
    delay_ms(1000);
  }
}

//--------------------------------------------------------------------

//--------------------------------------------------------------------
#include
#include
//
#define DATA  PORTC.0
#define CLK   PORTC.1
#define LATCH PORTC.2
//
void HC595_WR(char ch){
    
signed char c;

    for(c=7; c>=0; c--){ DATA=(ch>>c)&1; CLK=1; CLK=0; } // MSB 먼저, LSB 나중
}
//

void main(void){
  unsigned long L=0;
  DDRC=0xff;    //PORTC 출력
  while(1) {
    HC595_WR(L>>24);  // 1번째 HC595
    HC595_WR(L>>16);  // 2번째 HC595
    HC595_WR(L>> 8);  // 3번째 HC595
    HC595_WR(L&0xFF); // 4번째 HC595
    LATCH=1; LATCH=0;
    delay_ms(100);
  }
}
//--------------------------------------------------------------------

//--------------------------------------------------------------------
#include
#include
//
#define DATA  PORTC.0
#define CLK   PORTC.1
#define LATCH PORTC.2
//
void HC595_WR(unsigned long sh){
    
signed char c;

    for(c=31; c>=0; c--){ DATA=(sh>>c)&1; CLK=1; CLK=0; } // MSB 먼저, LSB 나중
    LATCH=1; LATCH=0;
}
//

void main(void){
  unsigned long L=0;
  int i=0;
  DDRC=0xff; //PORTC 출력
  while(1){
      L=1<=32)i=0; delay_ms(100);
  }
}
//--------------------------------------------------------------------

//--------------------------------------------------------------------
#include
#include
//
#define DATA  PORTC.0
#define CLK   PORTC.1
#define LATCH PORTC.2
//
void main(void){
  int i;
  DDRC=0xff; //PORTC 출력
  while(1){
      for(i=31;i>=0;i--){ DATA=(0x80000000>>i)&1; CLK=1; CLK=0; LATCH=1; LATCH=0; delay_ms(100); } // MSB먼저
  }
}
//--------------------------------------------------------------------

댓글 0

조회수 808

등록된 댓글이 없습니다.

AVRHOME > AVR > 전체 목록

게시물 검색

2019년 1월 2월 3월 4월 5월 6월 7월 8월 9월 10월 11월 12월
2018년 1월 2월 3월 4월 5월 6월 7월 8월 9월 10월 11월 12월
Privacy Policy
MCU BASIC ⓒ 2019
모바일버전으로보기