키보드의 각 키는 스위치이고 이것의 입력을 받아서 처리하는 MCU는 I/O에 이 스위치가 연결된다. 하지만 모든 키에 I/O를 할당하기 위해서는 키보드의 갯수 만큼 I/O필요하므로 효율적이지 않다. 따라서 키보드 메트릭스 라는 것을 사용한다. 간단히 설명하면 MCU의 I/O에 여러개의 키를 연결하고 주기적으로 키를 스캔하는 방식이다.
키보드 매트릭스
위 그림에서 Row R0~R7은 MCU의 입력으로 주기적으로 스캔이되고, Column C0~C19까지는 MCU의 출력으로 5V에 연결이 되어 있다.
키보드 고스트 현상
키보드 고스트 현상은 여러개의 키가 눌려질때 어떤키가 인식이 안되거나 다른 키가 눌린것으로 인식이 되는 것이다. 아래 마이크로소프트 사이트에서 확인이 가능하다.
아래 그림의 경우 1) a와 c 키가 동시에 눌린경우는 각각의 키가 인식이 된다. 하지만 a, c, b가 같이 눌리는 경우, 보라색의 도통경로가 형성이 되어 d키도 눌린 것으로 인식이 된다. 이런 현상을 방지하기 위해 다이오드가 필요하다.
다이오드 연결
다음 그림과 같이 각 키에 다이오드를 연결하는데, 스캔 방향이 순방향이 되게 연결을 한다.