4x4 배열의 스위치를 제어하는 방법을 알아 보겠습니다.
여러 가지 방법이 있지만 그 중 간단한 방법으로 회로를 구성할 수 있습니다.
하나의 스위치 값 읽기
먼저 회로를 살펴 보면 SET 이 4개, VALUE 가 4개 있습니다.
SET 으로 '1', '0' 신호를 주고 VALUE 로 '0'인지, '1'인지 판단 할 수 있습니다.
스위치가 모두 눌러지지 않은 상태라면 VALUE 는 모두 '1'이 됩니다.
우측하단의 SW16 의 값을 읽으려면 어떻게 해야 할까요?
KEY_SET3을 LOW 로 설정하고 KEY_VAL3을 읽어서
HIGH 이면 키가 눌리지 않았고, LOW이면 키가 눌리지 않았음을 확인 할 수 있습니다.
SW15 를 확인하려면 KEY_SET3을 LOW 로 설정하고 KEY_VAL2 를 읽으면 알 수 있습니다.
SW6 를 확인하려면 KEY_SET1을 LOW 로 설정하고 KEY_VAL1 를 읽으면 알 수 있습니다.
한 줄(4개)의 스위치 값 읽기
스위치를 하나하나 체크하면 많은 시간이 걸립니다. 한번에 1줄 모두의 스위치 값을 읽는 방법을 알아보겠습니다.
위의 회로를 그대로 사용하며 ATMEGA128 의 PORTA 에 연결하는 예입니다.
KEY_VAL3, KEY_VAL2, KEY_VAL1, KEY_VAL0 을 각각 PORTA.3, PORTA.2, PORTA.1, PORTA.0에 연결하였습니다.
KEY_SET3을 LOW 로 하고 PINA 를 읽으면 SW13, SW14, SW15, SW16 의 상태를 알 수 있습니다.
BYTE byteKEY = PINA & 0x0F;// PORTA3 ~ PORTA0 값 읽기
byteKEY 가 0x0F 이면 모든 키가 눌러지지 않은 상태이고 0x00 이면 모든 키가 눌러진 것입니다.
< byteKEY 값에 따른 스위치 누름 상태 >
byteKEY 값 |
SW13 |
SW14 |
SW15 |
SW16 |
0x0F |
안 눌림 |
안 눌림 |
안 눌림 |
안 눌림 |
0x0E |
눌림 |
안 눌림 |
안 눌림 |
안 눌림 |
0x0D |
안 눌림 |
눌림 |
안 눌림 |
안 눌림 |
0x0C |
눌림 |
눌림 |
안 눌림 |
안 눌림 |
0x0B |
안 눌림 |
안 눌림 |
눌림 |
안 눌림 |
0x0A |
눌림 |
안 눌림 |
눌림 |
안 눌림 |
0x09 |
안 눌림 |
눌림 |
눌림 |
안 눌림 |
0x08 |
눌림 |
눌림 |
눌림 |
안 눌림 |
0x07 |
안 눌림 |
안 눌림 |
안 눌림 |
눌림 |
0x06 |
눌림 |
안 눌림 |
안 눌림 |
눌림 |
0x05 |
안 눌림 |
눌림 |
안 눌림 |
눌림 |
0x04 |
눌림 |
눌림 |
안 눌림 |
눌림 |
0x03 |
안 눌림 |
안 눌림 |
눌림 |
눌림 |
0x02 |
눌림 |
안 눌림 |
눌림 |
눌림 |
0x01 |
안 눌림 |
눌림 |
눌림 |
눌림 |
0x00 |
눌림 |
눌림 |
눌림 |
눌림 |
관련 제품입니다.
'데이터시트' 카테고리의 다른 글
ATMEGA8A-AU (0) | 2012.03.07 |
---|---|
Package information - SO16−28 [WIDE] (0) | 2011.08.28 |
가변저항(Potentiometer) 3362 (1) | 2011.07.07 |
LED ON (0) | 2011.01.30 |
5101ASR , FND Anode (0) | 2011.01.22 |