Study/AVR ATmega128 Easy Processor Kit

9. Dip Switch 및 외부 LED 제어

오늘은 저번 시간에 배운 외부 LED와 함께 Dip Switch를 제어 실험을 해보려고 합니다.


힘을 내서 진도를 나가 볼까요??


우선 실험을 하기전에 Dip Switch란 무엇인지, 해당 소자의 회로가 어떻게 Kit에 구성되어 있는지 살펴보도록 하죠~~!!


 - Dip Switch란?

 Dip Switch는 일련의 ON-OFF 스위치로서, 양단의 회로를 이어주는 역할을 한다고 해요. 또한, 하드웨어의 변경 없이 사용자가 회로기판 상에서 기능을 임의로 선택할 수 있답니다.


 이제 딥 스위치가 어떤 것인지 알았고.. 다음은 회로를 한번 살펴 볼까요??'

 - 딥스위치 회로도

 

 회로를 보니 SN74HC541이라는 칩이 사용되고, 풀업저항이 연결되어 있네요!! 풀업저항은 다들 아시죠? 이전 시간에 했답니다!! 모르신 분들은 8. AVR의 GPIO 특성 이해 파트를 참고하세요!(http://feelsoverygood.tistory.com/60)

 그럼 스위치가 OFF일 때 1이, ON일 때 0이 칩에 입력되는 것을 알 수 있어요.


 칩에 대해서 살펴보고 가야겠죠?ㅎ

 - 딥스위치 칩

 다이어그램을 보니 OE1, OE2Low신호가 입력되면 1의 값이 버퍼에 들어가게 되네요. 따라서 A값 그대로 출력되며, OE1, OE2 둘 중 하나라도 High신호가 입력되면 0의 값이 버퍼에 들어가게 되므로, Z(임피던스)값이 나오게 됩니다!!


 - 실습


 그럼 이제 소자에 대한 준비는 완료 되었으니, 프로테우스를 이용해 실험에 대해 간단하게 시뮬레이션을 해보도록 할게요. 먼저 AVR Studio 4를 켜신 다음에 아래의 소스코드를 컴파일 해서 HEX 파일을 생성해 두세요!!


#include <avr/io.h>

 

int main()

{

    MCUCR = 0x00; /* 내부 메모리를 사용하겠다는 신호입니다만 시뮬레이션 상 직접 연결하므로 아무문제 없답니다. */

 

    DDRD = 0x00; // D포트 입력으로 설정

    DDRF = 0xFF; // F포트 출력으로 설정 => 해당 내용들은 kit를 이용할 때는 사용하지 않아요!!ㅎ

 

    whil7e(1)

    {

        PORTF = PIND; // F포트를 D포트 입력값으로 변경 즉, 스위치 동작에 따라 LED 켜짐

    }

}


 간단히 이야기해서 스위치에 따라 LED가 동작하는 것입니다~!! 이제 프로테우스를 실행시켜 아래 그림처럼 구성합니다~! 어떻게 하는건지는 다들 아시죠??? 모르시는 분들은 해당 강의 4. 프로테우스 사용법을 참조해 주세요!!(http://feelsoverygood.tistory.com/29)



 아주 깔끔하게 동작함을 알 수 있습니다. 참고로 LED가 10개인거 아시죠??? 맨 위 2개는 안켜지는게 당연한겁니다!!


 드디어!! 이제 본론인 실험을 시작하도록 하죠. 다시 AVR Studio 4를 켜시고 아래의 소스코드를 작성해 보도록 하죠.^^


 아아~~ 그전에 지난번 외부 LED 제어 시간에 배운 것들 잘 기억하고 계시죠?ㅎㅎ


DIP_SW_CS가 딥 스위치 외부 메모리 주소로 0x8000 인 것을 알겠네요. 마찬가지로 외부 LED 또한 0x4800 으로 맵핑이 되어 있어요. 그럼 맨 처음에 선언부터 해야겠죠?


#include <avr/io.h>

#define LED_CS (*(volatile unsigned char *)0x4800) // LED 외부 메모리 사용 위함

#define DIP_SW_CS (*(volatile unsigned char *)0x8000) // DIP Switch 외부 메모리 사용 위한 정의 0x8000

 

int main()

{

    MCUCR = 0x80; // 외부 메모리 사용

    unsigned char data =0x00; // data 변수 0x00 설정

    while(1)

    {

        data = DIP_SW_CS; // DIP Switch 입력을 data에 지정

        LED_CS = data; // DIP Switch에 따라 외부 LED 작동

    }

}



해당 결과의 사진입니다!! 간단하죠?ㅎㅎㅎ 오른쪽의 빨간박스 안이 딥스위치에요 ㅎㅎ 사진이 이래서 그런데 아래 부분부터 1111 0000 으로 입력하여 LED의 하위 4개가 켜진 것입니다~~


그럼 이제 이를 이용해서 여러가지 작품을 만들 수 있겠죠??


오늘은 여기까지 입니다!! 다음 시간에는 LED와 Dip Switch를 활용한 심화 작품들을 만들어 볼게요!!




,

최근 댓글

최근 트랙백

알림

이 블로그는 구글에서 제공한 크롬에 최적화 되어있고, 네이버에서 제공한 나눔글꼴이 적용되어 있습니다.

링크

Yuria

카운터

Today :
Yesterday :
Total :