[13호]4 x 11 키스캔 스위치로 한글 입력하는 광고판 설계
상반기 DIY 프로젝트 작품 공모전 – 도전상
4 x 11 키스캔 스위치로
한글 입력하는 광고판 설계
글 | Powersystem 실험실 박찬진 外 heyman6861@naver.com
심사평
비록 쉬운 동작이지만, 이를 일일이 직접 구현하는 것은 난이도면에서 만만하지 않을 것이다. 특히 요즘처럼 모듈별 제품이 출시되는 환경에서 하부 구조를 직접 조종하는 시도를 높이 샀다.
개발 동기 및 목적
1. 기존에 설계한 작품들
1) 기본적인 도트매트릭스
소개 : 도트매트릭스의 가장 기본적인 동작을 구현한 작품이고 POWERSYSTEM의 글자가 지나가도록 설계하였다.
단점 : 글자의 변경은 코딩 쪽에서 변경해야 한다.
2) 글자 변경이 가능한 도트매트릭스-1
소개 : 16개의 스위치를 이용하여 원하는 영문을 입력할 수 있도록 설계한다.
장점 : 기존의 작품(기본적인 도트매트릭스)보다 크기가 크게 설계되어 있고, 그것을 제어하는 포트가 적게 사용되
도록 설계되었다. 출력 글자도 코딩이 아닌 스위치로 변경이 가능하기 때문에 일반인들도 출력 글자 변경이 가능하다. 그리고 12개의 스위치로 모든 영어를 입력할 수 있도록 설계되었다.
단점 : 입출력은 도트매트릭스를 통해 동작하기 때문에 글자 입력이 등 많이 불편하다. 12개의 스위치로 영어를 입력해야 하기 때문에 빨리 영어를 입력하기가 힘들다. 그리고 출력 글자가 영어만 출력되기 때문에 한국인이 광고판으로 쓰기엔 무리가 좀 있다.
3) 글자 변경이 가능한 도트매트릭스-2
소개 : 글자 변경 가능한 도트매트릭스-1의 작품에서 한층 더 업그레이드된 작품이다. 또한 글자 변경이 가능한 도트매트릭스-1에서 없는 기능으로써 하이퍼 터미널에서 출력글자 변경이 가능하도록 설계하였다.
장점 : 지금의 동작 형태는 TEXT LCD 창에 띄우기 때문에 글자 변경이 가능한 도트매트릭스-1보다 한층 일반인들이 글자를 변경하기 쉽고, 또한 지금의 동작형태나 출력글자가 TEXT LCD에 적혀있기 때문에 완성도가 높아졌다. 또한 PC의 하이퍼 터미널에서 유저-프로토콜만 알고 있다면 쉽게 글자를 변경할 수 있도록 설계하였다.
단점 : 하이퍼 터미널에서의 제어는 기존에 없는 기능이지만 그래도 하이퍼 터미널로 제어하기에는 일반인들이 쉽게 하기는 힘들다.
4) 글자 변경이 가능한 도트매트릭스-3
소개 : 40개의 스위치를 이용하여 출력 글자를 변경할 수 있고 MFC 프로그램에서 글자를 변경할 수 있도록 구성되었다.
장점 : 40개의 스위치에서 글자를 변경할 수 있기 때문에 기존의 16개의 스위치보다 한결 쉽게 글자를 변경할 수 있고 MFC프로그램을 자체 제작하였기 때문에 하이퍼 터미널보다 쉽게 변경할 수 있다.
단점 : 기존의 시스템에서 입력 부분에 더 많은 스위치를 사용했기 때문에 부피가 더 커졌다.
2. 제작동기 및 목적
1) 제작 동기
기존의 시스템을 구축하면서 한가지 아쉬운 점이 존재했다. 그것은 시중에 나온 제품처럼 한글을 입력하여 동작시키지 못했다는 점이다. 그러나 더 큰 문제점은 한글의 제어에 대해 감조차 못 잡았다는 것이다. 그런데 128 x 64 그래픽 LCD을 공부하면서 한글출력 방식의 자료가 나와있었고, 그 방식을 토대로 한글 제어를 성공한 후 기존 시스템에서 아쉬운 점들을 통해 해결 방안을 구상할 수 있을 것만 같았다. 그래서 외부적인 도움을 받아서 한글 입력 쪽의 문제점을 해결하자고 생각했지만 유독 한글 오토마타에 대한 자료가 없었다. 그러나 우리는 한글 오토마타는 단순 프로그래밍이라고 판단하였기 때문에 기존의 한글입력방식을 모방하여 알고리즘 짜서 프로그래밍을 하면 충분히 가능성이 있다고 생각하여 제작하게 되었다.
2) 구동 목적
1) 한글, 영어, 숫자를 입력받아 광고판에 출력되도록 설계한다.
2) 한글, 영어, 숫자 입력 방식은 키보드 자판에서 모방하여 입력하도록 설계한다.
3) 한글일 경우 10글자(영어일 경우 20글자) 이상을 입력 받을 수 있도록 설계한다.
4) 글자 폰트 색깔 형태(12색깔)을 선택하여 동작하도록 설계한다.
단계별 과정
1.작품 설계 시나리오
2. 세부적인 작품 설계 시나리오
1) 128 x 64 LCD 테스트
목적 : 128 x 64 LCD 동작 방식을 익힌다. 내용 : TEXT LCD와 달리 128 x 64 LCD의 출력 방식은 폰트 또는 창에 띄울 내용을 직접 그려야 출력할 수 있다.
결과 : 128 x 64 LCD의 동작 방식을 익혔고 동작에 관한 함수에 대한 해석도 하였고, 그 결과로 128 x 64 LCD를 제어할 수 있게 되었다.
2) 128 x 64 LCD 한글 제어
목적 : 128 x 64 LCD에서 한글 출력 방식을 익힌다.
내용 : 조합형 코딩 방식을 이용하는 다른 방식보다 적은 데이터로 한글 출력할 수 있다 그래서 ATMEGA128에서 제어할 수 있도록 설계 되어진다.
결과 : 128 x 64 LCD에서 한글 출력 함수에 대한 것들을 익히고 한글 출력에 성공했다.
3) 4 x 11스위치 키스캔 회로 구성
목적 : 적은 포트의 수로 많은 스위치를 제어하도록 회로를 구상하고 테스트한다.
내용 : 동적 제어 방식(키스캔)과 디코더의 칩을 이용하여 다음과 같은 회로를 구성하였다.
결과 : 적은 포트의 숫자로 많은 스위치을 제어하는데 성공하였다.
4) 스위치 채터링 방지 소스
목적 : 채터링 방지 알고리즘을 구상한다.
내용 : 채터링이란 한번의 입력이 하드웨어상의 오류에 의해 여러 번의 입력되는 것을 말한다. 그렇기 때문에 채터링은 반드시 잡아주어야 한다 다음의 채터링 방지 알고리즘을 구상해 보았다.
결과 : 한번의 입력에 데이터 인식에 성공하였다.
5) 한글 입력 기술(LCD)
목적 : 컴퓨터의 키보드 자판 방식에 의한 한글을 입력하는 기술(한글오토마타)을 구현한다.
내용 : 키보드에 의한 한글 입력의 순서도를 구상하고 그 구상한 순서도에 맞게 어떻게 데이터화를 시켜 한글 출력을 할 것 인지 구상하여 설계하였다.
결과 : 종성만 입력되는 것과 중성과 종성이 합쳐져서 입력되는 것을 제외하고 모든 한글을 입력할 수 있도록 설계하였다.
6) 글자 지우기 기능(LCD)
목적 : 글자를 지우는 키와 띄우는 키를 구현한다.
내용 : 글자를 띄어서 쓰는 것은 단순히 16 x 8 공간에 아무것도 표시하지 않도록 한다. 그리고 글자 지우는 기능 구현은 글자 띄우는 것처럼 쉽지 않다. 왜냐하면 한글의 데이터는 2 바이트이고 또한 아스키 코드에 비해 폰트의 크기도 두배이다. 그렇기 때문에 한글과 영어를 구별하여 지우지 않으면 글자가 깨져서 출력되는 문제가 생기므로 이에 대한 문제점을 해결할 알고리즘을 구현한다.
결과 : 글자를 지울 때 글자가 깨지지 않고 지워지도록 설계하였다.
7) 도트매트릭스 테스트
목적 : 도트매트릭스의 구현 방식을 익힌다.
내용 : 도트매트릭스의 데이터 시트를 참고하여 도트매트릭스를 테스트한다.
결과 : 도트매트릭스의 구현 방식을 익혔고 테스트 프로그램을 습득하였다.
8) 도트매트릭스 색깔 제어
목적 : 색깔 제어가 가능하도록 설계한다.
내용 : 입력 글자(영문)에 동작하는 함수를 구현하고, 여기서 글자의 색깔과 배경의 색깔을 정할 수 있도록 구현하였다.
결과 : 영문에서 내가 원하는 색깔이 지나도록 함수를 만들었다.
9) 도트매트릭스 한글 제어
목적 : 도트매트릭스에서 한글이 출력되도록 설계한다.
내용 : 128 x 64 그래픽 LCD 도트매트릭스 SLM1606의 폰트 출력 방식이 다르다. 그렇기 때문에 128 x 64 그래픽 LCD에서 한글 출력에 성공했던 방법을 바로 사용할 경우에는 도트매트릭스의 출력 글자가 깨진다. 그렇기 때문에 중간에 데이터는 도트매트릭스 SLM1606의 폰트 입력 방식으로 바꾸어 입력되어야 한다.
결과 : 도트매트릭스에서 한글 출력을 성공하였다.
10) 전체 폼웨어 수정
목적 : 전체적으로 작품의 기술을 합치고 완성도를 높인다.
내용 : 스위치 동작 방식 기능을 구상하여 제작하고 128 x 64 LCD의 출력 방식을 생각하며 도트매트릭스 SLM1606의 한글 출력방식과 128 x 64 LCD의 한글오토마타 기술을 합쳐 완성도가 높은 작품을 제작한다.
결과 : 위와 같은 기능별 동작을 구상하여 제작되었고, 한글 오토마타와 도트매트릭스의 기술을 문제없이 합쳐 다음과 같은 작품이 완성되었다.
3. 제작 관련 사진
1) 도트매트릭스
다음과 같이 1P선을 이용하여 연결하여 테스트를 하면 된다.
2) 키스캔 스위치와 그래픽 LCD
다음 그림처럼 부분으로 나누어서 새로운 기판에 납땜을 하여 제작하였고, 10P선을 이용하여 ATMEGA128과 연결하여 테스트 프로그래밍을 통해 다음의 하드웨어가 잘 설계되었는지 테스트하였다.
키스캔 스위치의 경우에는 74HC238을 보호하기 위해 커넥터을 넣어서 설계하도록 한다. 그래픽 LCD는 납땜과 프로그래밍이 잘 되더라도 글자가 출력되지 않는 경우와 글자가 희미하게 나오는 경우가 발생한다. 그런 경우에는 아래에 보이는 가변저항의 문제에 의해 출력되지 않는 것이므로 가변저항을 돌려서 글자가 잘 나오게 맞추도록 한다.
3) 전체 완성된 사진
참고 웹 사이트
만물상 | http://www.manmullsang.com
뉴티씨 | http://www.newtc.co.kr 8051
플러스 | http://cafe.daum.net/8051plus
올데이터시트 | http://alldatasheet.co.kr
작품 동영상 | http://cafe.naver.com/carroty/153904