스위치로 LED 켜기 input ()

      이 페이지에서는 스위치를 읽기위한 간단한 프로그램으로 신호를 출력하는 것 반대의 입장입니다. 스위치의 상태를 읽기 위한 것으로 명령어는 input (pin name)입니다. 스위치의 입력 또는 센서 출력을 디지탈 형식으로 읽어들일 때 사용합니다. 아래 회로는 스위치를 사용하여 스위치가 눌렸을때 LED를 켜기 위한 회로로서 RB7을 통하여 스위치의 상태를 읽고 RC2를 사용하여 LED를 켜고 끄도록 하였습니다. 이런경우 스위치를 읽는 부분을 디지탈 입력이라고 하며 LED 를 켜고 끄기위한 부분을 디지탈 출력이라고 합니다.


PIC16F18345/687을 사용하기 위한 기본 회로


      아래 그림은 위 회로를 빵판에 적용한 것으로 Tact 스위치를 사용(왼쪽 아래)하였고 PIIN B7에 연결하였습니다(pull-up 저항 반드시 필요).


PIC16F18345을 사용하기 위하여 빵판에 꾸민 모양
(그림을 마우스로 클릭하면 간단한 동영상을 볼 수 있다.)


2. Digital Input 명령어: input ()  (CCS-C Manual 참고)

     - input (pin name): 0 또는 1의 값으로 pin name 신호를 읽음

     input (pin name)은 pin name으로 신호를 high 또는 low 신호를 받아들여 1 또는 0의 값을 얻을 수 있다. 만약 input (PIN_B7) 이라고 프로그램하면 PIN_B7(RB7) 즉 10번 핀에 인가된 전압이 5 V인경우 input (PIN_B7)의 값은 1로 인식한다. 만약 인가된 전압이 0 V인경우 input (PIN_B7)의 값은 0로 인식한다.

     회로에서 스위치를 누르지 않으면 10 번 핀(RB7)에 5 V가 걸리게 되고 입력 명령에 의해 1의 값을 가지게 된다.
bitSW = input (PIN_B7) ; 로 프로그램 한다면 이때 bitSW의 값은 1이 된다.

     만약 스위치를 누르면 10 번 핀(RB7)에 0 V가 걸리게 되고 입력 명령에에 의해 0의 값을 가지게 된다.
bitSW = input (PIN_B7) ; 로 프로그램 한다면 이때 bitSW의 값은 0이 된다.

     따라서 스위치를 읽고 그 값에 따라 LED를 켜고 끌려면 아래와 같이 프로그램하면 된다.

//***********************************************************************
// 스위치를 읽어 LED 켜기
//***********************************************************************  											 
                    
    #include  <16f687.h>                         //* pic16f687을 사용하기 위한 header file

    #fuses    HS                                        //* 4 MHz:XT, 4 MHz 이상: HS
    #use      delay (clock = 20000000)      //* 사용한 크리스탈

    void main (void)
    {	
        int1 bitSW ;                                 //* 1 bit bitSW 변수 선언

        while (1) {
            bitSW = input (PIN_B7) ;                      //* 스위치(PIN_B7) 의 상태 신호를 읽음

            if (bitSW == 0) output_high (PIN_C2) ; //* 스위치의 상태가 0(눌렸으면) PIN_C2 출력을 High (5V) 로
            else output_low  (PIN_C2) ;                 //* 그렇지 않으면 (스위치를 눌리지 않았으면) PIN_C2 출력을 Low (0V) 로
        }
    }
//***********************************************************************

      input (PIN_B7)은 PIN_B7의 상태를 0 또는 1의 Digital 신호로 읽으라는 함수로 그 결과 값은 0 또는 1 이다. 위 프로그램에서는 input 함수를 통하여 스위치의 상태(눌리면 0, 아니면 1)를 읽어 bitSw에 저장을 하고, 그 값이 0 이면(스위치가 눌림) LED를 켜고 (output_high (PIN_C2) ;), 그렇지 않으면 (1 이면) LED를 끄는(output_low (PIN_C2) ;) 프로그램이다. 따라서 위 프로그램은 스위치가 눌리면 LED를 켜고 그렇지 않으면 LED를 끄는 프로그램으로, input () 함수는 output_high (), output_low () 명령어와 함께 같이 매우 중요한 함수이며, MCU 에서 가장 많이 사용하는 명령어이다.




< Prev
TOP
Next >