8 Array LED 아래에서 위로 움직이기

     8개의 LED를 output_hig (), output_low() 함수 또는 output_c () 함수를 사용하여 LED를 켜고 끔으로써 LED를 아래에서 위로 움직이게 할 수 있다. 회로는 앞 페이지 회로와 같이 기본회로를 사용한다.


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


     아래 그림 역시 위 회로를 빵판에 옮겨 놓은 기본회로로써 사용한 함수는 8개의 LED를 한번에 제어 할 수 있도록 output_c ()를 사용하였다.


PIC16F687을 사용하기 위하여 빵판에 꾸민 모양
(오른쪽 동영상을 참고하세요.)


아래 프로그램은 LED 가 아래에서 위로 하나씩 옮겨가는 프로그램 입니다.
각각의 상태(LED의 위치)를 배열로 저장하고 그 값을 출력 값으로 하였습니다.

PIC16F687을 사용하여 LED을 다루기 위한 프로그램은 다음과 같습니다.

//***********************************************************************
// 스위치를 누름에 따라서 LED를 순차적으로 올리고 내리기
//***********************************************************************										 
                    
#include  <16f687.h>                         //* pic16f687을 사용하기 위한 header file

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

void main (void)
{   int8 idx ;
    int8 led_data [9] = {0x00, 0x01, 0x02, 0x04, 0x08,0x10, 0x20, 0x40, 0x80} ; //* LED 켜짐을 배열로 지정
 
    set_tris_c (0x00) ;                            //* C 포트를 출력으로
    output_c (led_data [0]) ;                   //* C 포트 출력을 0 으로, LED를 모두 끔

    while (1) {
        for (idx = 0;idx >= 7;idx++) {
            output_c (led_data [idx]) ;        //* 배열에 맞는 LED 켬
            delay_ms (200) ;
        }
    } 
}

//***********************************************************************

      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