8051/PIC > 2개 스위치 입력 해서 4개 LED 시프트 시키기

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

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


BASIC4MCU | 8051/PIC | 8051 | 2개 스위치 입력 해서 4개 LED 시프트 시키기

페이지 정보

작성자 키트 작성일2017-09-12 10:05 조회395회 댓글0건

본문

// P2.0 SW1
// P2.1 SW2
// P1.0~P1.3 LED
//-----------------------------------------------------
//SW정논리, LED정논리 동작인경우
//-----------------------------------------------------

#include 
<AT89C51.h>

void delay(long i){  while(i--); }

void main(void)
{
  char i=0;
  P1 = 1<<i;

  while(1){
      if(P2 & 0x03){           
//키가 하나라도 눌리면
          if( P2_0 ) i++;        
//왼쪽으로 시프트
          else if( P2_1) i--;    
//오른쪽으로 시프트

          if((i>3)||(i<0))i=0;   
//값이 비트3 넘어가면 비트0

          P1 = 1<<i;             
//i값에 해당하는 비트를 1

          while(P2 & 0x03);      
//키 누름 끝낼 때까지 대기

          delay(3000);           
// 위에서 키에서 손 떼는 것을 기다리므로 딜레이를 조금만 줌
      };
  };
}



//-----------------------------------------------------
//SW부논리, LED부논리 동작인경우
//-----------------------------------------------------

#include 
<AT89C51.h>

void delay(long i){  while(i--); }

void main(void){
  char i=0;

  P1 = ~(1<<i);
  while(1){
      if((P2 & 0x03)!=0x03){

          if( !P2_0 ) i++;
          else if( !P2_1) i--;

          if((i>3)||(i<0))i=0;

          P1 = ~(1<<i);

          while((P2 & 0x03)!=0x03);

          delay(3000);
      };
  };
}

 

직접 테스트 해본 것은 아니고 눈으로만 코딩 해봤습니다.

버그 있으면 알려주세요 ^^ 

 

8051은 스위치 눌렀을 때에 1이 되게 하려면

스위치를 +5V에 연결 해야하며 풀다운 저항을 내부 풀업저항에 비해서 상당히 작은 값을 연결 해야 합니다.

내부 풀업저항의 1/20 저항 값일 때에 0.25V이므로 1K옴 이하를 걸어주면 안전하게 0V 인식이 됩니다.

 

1일 때에 LED를 구동 하면

8051 포트의 High 출력의 전류는 순전히 내부 풀업 저항에 의존한 전류 밖에 안나옵니다.

따라서 포트 외부에 풀업저항을 걸어줘야 하는데 그경우 불필요한 전류가 계속 소모됩니다.

0일 때에 LED가 구동되게 회로를 구성 하는 것이 좋습니다.

 

외부에 풀다운 혹은 풀업저항 없이 사용하려면, 스위치나 LED를 부논리로 사용하는 것이 좋습니다.

댓글 0

조회수 395

등록된 댓글이 없습니다.

8051/PICHOME > 8051/PIC > 전체 목록

게시물 검색

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 ⓒ 2017
모바일버전으로보기