목차
WAT-KEY 4×4 키 매트릭스
ATMEGA128 등의 MCU 에 연결하여 10pin 플랫 케이블에 연결하여 사용할 수 있는 키 매트릭스 모듈입니다.
핀 기능은 다음과 같습니다.
핀번호 | 기능 |
---|---|
1 | KEY_SET0 |
2 | KEY_SET1 |
3 | KEY_SET2 |
4 | KEY_SET3 |
5 | KEY_VAL0 |
6 | KEY_VAL1 |
7 | KEY_VAL2 |
8 | KEY_VAL3 |
9 | VCC |
10 | GND |
키패드 회로
4×4 배열의 스위치를 제어하는 방법입니다.
여러 가지 방법이 있지만 그 중 간단하게 구성한 회로입니다.
하나의 스위치 값 읽기
먼저 회로를 살펴 보면 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 | 눌림 | 눌림 | 눌림 | 눌림 |
예제
http://whiteat.com/bPDS_AVR/57204 에서 EX_01_05.zip 예제를 제공합니다.