18
- 1 -

0& 0+').+.,'1.23$1+4 5$46'.17849+$).*7#$9:/*-.*/0& &$;+1'*:; …¿¼티... · 2015-03-25 · - 5 - Ãyàý[ :, Å ~g oZ[ Ík Ý Ârî [ ,¯2[ Ík Ík ,CJJJM ,e fghdoÛjo½; ~zT x

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: 0& 0+').+.,'1.23$1+4 5$46'.17849+$).*7#$9:/*-.*/0& &$;+1'*:; …¿¼티... · 2015-03-25 · - 5 - Ãyàý[ :, Å ~g oZ[ Ík Ý Ârî [ ,¯2[ Ík Ík ,CJJJM ,e fghdoÛjo½; ~zT x

- 1 -

쿼티 키보드의 한글 오토마타 개발과

ATMEGA128을 이용한 한글 전광판 시스템 설계

박찬진*․이장주*․김민재**․서태준**․문용식***․정정원**

*경성대학교 전자공학과**경성대학교 전기공학과***경성대학교 경제학과

(2012년 11월 23일 접수 ; 2012년 12월 12일 승인)

Development of Hangul Automata for a Qwerty

Keyboard System and Design Hangul Electronic

Display System Using ATMEGA128

Chan-Jin Park*․Jang-Ju Lee*․Min-Jae Kim**․

Tae-Jun Seo**․Yong-Sic Moon***․Jung Won Jung**

*Department of Electronic Engineering, Kyungsung University*Department of Electrical Engineering, Kyungsung University

*Department of Economic, Kyungsung University

ABSTRACT

This study tries to realize the system that can output alphabets, Korean typed by the

qwerty keyboard on the electronic display. For controlling ATMEGA128, this study

makes a qwerty keyboard that is controlled by mini ports. Also this study develops the

algorithm that inputs the Korean from qwerty keyboard and builds a the system that

outputs the Korean on the electronic display.

Key Word : 한글오토마타, 퀴티키보드, 조합형 코드

Page 2: 0& 0+').+.,'1.23$1+4 5$46'.17849+$).*7#$9:/*-.*/0& &$;+1'*:; …¿¼티... · 2015-03-25 · - 5 - Ãyàý[ :, Å ~g oZ[ Ík Ý Ârî [ ,¯2[ Ík Ík ,CJJJM ,e fghdoÛjo½; ~zT x

- 2 -

1. 서 론

현대에는 IT 산업의 발달로 인하여 일상

생활에 IT기기들은 다양하게 사용된다. 예

를 들면 Smart phone, Tablet PC 등이 있

다. 한국에서 이 기기들을 사용하는 데에

있어서 한글의 입력은 필연적일 수 밖에 없

다. 따라서 더욱 편리하고, 기능적인 한글

입력 방법들이 많이 연구되고 있다. Smart

Phone만 보더라도 삼성, LG, Apple사등이

각각의 입력 방식을 가지고 있다.

삼성의 입력 방식은 간단하지만 많은 입

력 횟수를 요구하여 입력 속도가 느리고,

LG는 비교적 많은 개수의 입력 버튼을 필

요로 하고, 친근하지도 않아 처음 접하면

많은 불편함을 가진다. Apple이 사용하는

qwerty 방식은 입력 버튼이 매우 작기 때

문에 많은 오타를 발생시킨다. 더욱 편리하

고 기능적인 입력 방법들이 연구되어야 한

다.

더욱 편리하고 기능적인 입력 방법을 찾

기 위해서는 기존에 있는 입력 방식들이 어

떻게 구성되었는가를 구체적으로 이해해야

하지만 기존의 입력방식의 단점을 조금만

보완해도 충분히 보다 편리하고 기능적인

입력 방법을 개발할 수 있다고 판단되어 본

연구에서는 가장 많이 사용되고 보급되어

있는 qwerty 키보드의 입력 방식 또는

qwerty 키보드의 한글 입력 방식을 연습장

에 직접 하나하나 입력을 실시하여 확인 후

마이크로 컨트롤러를 이용하여 한글 오토마

타로 재구성 하였다.

2. 한글코드의 종류과 특징

2.1한글과 영어의 차이점

한글은 영어보다 글자를 표기하는 방식이 어렵

다. 그 이유는 한글과 영어에는 글자 표기방식의

차이가 있기 때문이다. 따라서 많은 공학자들은

다양한 한글 코드 방식을 구상하였다.

2.1.1 한글과 영어의 글자 형성 방식

글자를 구성하는 방식은 모아쓰기와 풀어쓰기

가 있다. 모아쓰기는 한글처럼 자음과 모음을

조합해서 하나의 글자로 만들어 쓰는 표기 방

식이고 풀어쓰기는 영어의 알파벳처럼 자음과

모음을 순서대로 써나가는 표기 방식이다. 표

기방식의 차이점에 의해 한글은 영어보다 더

많은 폰트의 개수를 가진다. 따라서 영어보다

한글이 가지는 데이터의 크기가 크다.

2.1.2 한글과 영어의 데이터 특징

(1) 폰트의 개수

한글은 모아쓰기 방식을 이용하여 자음과

모음을 조합해 하나의 폰트로 이루어지며

글자의 개수는 뷁,햏,앟 등 같은 글자를 제

외하고 정확한 한글폰트만 2,350자로 구성되

어 있다. 그리고 뷁,햏,앟 등 잘 쓰지 않는 폰

트의 개수까지 합치면 총 11,172자로 구성된다.

영어는 풀어쓰기 방식을 이용하여 자음과 모

음이 하나의 폰트로 이루어져있으며 대소문자

의 폰트로만 구성되어 있기 때문에 총 26개의

폰트만 가진다.

(2) 폰트의 데이터 크기

1 byte의 크기는 256 bits이기 때문에 1

byte로 한 글자를 매칭 한다면 최대 256개

의 글자를 표현할 수 있다.

영어는 총 26자이기 때문에 1 byte에 충

분히 모든 문자를 입력하는 것이 가능하다.

반면, 한글의 개수는 256자를 넘기 때문에

1 byte로 표시 될 수 없다. 하지만 2 bytes

의 크기는 65,536이기 때문에 2 bytes로 매

칭한다면 최대 65,536자를 표현할 수 있다.

Page 3: 0& 0+').+.,'1.23$1+4 5$46'.17849+$).*7#$9:/*-.*/0& &$;+1'*:; …¿¼티... · 2015-03-25 · - 5 - Ãyàý[ :, Å ~g oZ[ Ík Ý Ârî [ ,¯2[ Ík Ík ,CJJJM ,e fghdoÛjo½; ~zT x

- 3 -

따라서 초성, 중성, 종성을 조합해서 만드는

한글 코드 형식은 2 bytes 내에서 표현이 가

능하다. 그렇기 때문에 영어와 다르게 한글은

한 글자의 데이터 길이가 2 bytes로 구성된다.

2.2 한글 코드의 종류

한글을 표현할 때 어떻게 데이터의 형식을 구현

할 것인가에 대해 많은 공학자들은 연구하였고 현

재크게 5 가지 방법이가장많이사용되고 있다.

2.2.1 바이트 한글 코드

3 bytes 한글 코드는 한글 한 음절을 초성, 중성,

종성으로 나누고 각각 한 byte씩 배정하여 처리하

는 것으로 한글 한 음절을 처리하기 위해서 3

bytes를 사용한다. 일종의 조합형 코드이지만 한

글 1음절을 표현할 때 2 bytes 조합형 코드보다 1

byte를 더 많이 사용하기 때문에 비효율적이다.

2.2.2 ksc5601

한글을 음절 단위로 순서대로 배치하여 각각의

코드값을 부여하는 방식이다. 구현 방식을 보면

첫 번째만 byte와 두 번째 byte 모두 164~256까지

의 영역만을 사용한다. 따라서 한글 표현의 한계

및 한글의 자소 분리, 입출력 문제 등을 가진다.

2.2.3 상용 조합형 한글 코드

한글 한 음절을 초성, 중성, 종성으로 나누

어 각각 5 bits씩 배정하고 7 bits 아스키 코

드에서 사용하지 않는 최상위 비트(MSB)에

1로 배정하여 2 bytes로 처리한다. 최상위

비트가 1로 되었으면 한글 한 음절로 해석하

고 0으로 되어 있으면 영문자로 구분한다.

완성형 코드의 문제를 다소 개선하였다.

2.2.4 유니코드

유니코드2.0에서는 한글은 두 가지 영역으로

배정받았다. 첫 번째는 현대 한글 11,172자를 완

성형 방식의 코드순으로 배열한 것인데, 한글

11,172자는 완성형처럼 완성된 음절을 기준으로

배정하였다. KSC5601 완성형 코드와는 다르게

일정한 조합 규칙을 유지하고 있어서 사용하기

편리하다. 두 번째는 모음과 자음만 따로 사용

할 경우인데 그 데이터에 대한 코드 값은 일정

한 값으로 지정되어 있다.

2.3 조합형 코드의 필요성

조합형 코드는 다른 코드 방식에 비해 한글 오

토마타에 적합한 데이터 형식이다. 조합형 코드

를 알아보고 한글 오토마타에 적합한지 알아보았

다.

2.3.1 조합형 코드의 데이터 용량

조합형 폰트 코드의 용량은 초성(20) * 8벌 *

32 Kbytes + 중성(22) * 4벌 * 32 Kbytes +

종성(28) * 4벌* 32 Kbytes = 11,520 Kbytes

(약 11 Kbytes)가 된다. ATMEGA128의 프로

그래밍이 가능한 용량이 128 Kbytes 이기 때

문에 충분이 코딩이 가능한 용량이다.

2.3.2 완성형 폰트가 사용될 수 없는 이유

조합형 코드를 이용하지 않은 모든 한글의 폰트

를 사용 할 경우 111,72(글자) * 32 Kbytes =

357,504 Kbytes(약 349 Kbytes)를 차지한다.

ATMEGA128은 코팅용량이 128 Kbytes를 넘기

때문에 완성형 코딩으로 코딩이 불가능하다.

2.3.3완성형 코드와 조합형 코드

조합형 코드가 아닌 완성형의 경우는 2,350자

를 저장해야 하므로 2,350자 * 32 Kbytes =

75,200 Kbytes(약 73 Kbytes)의 용량을 차지

하지만 ATMEGA128은 128 Kbytes까지 코딩

이 가능하기 때문에 불가능한 코딩이 아니다.

그러나 한글의 모든 글자를 표시 할 수 없기

때문에 원래 설계의 목표를 벗어나게 된다.

Page 4: 0& 0+').+.,'1.23$1+4 5$46'.17849+$).*7#$9:/*-.*/0& &$;+1'*:; …¿¼티... · 2015-03-25 · - 5 - Ãyàý[ :, Å ~g oZ[ Ík Ý Ârî [ ,¯2[ Ík Ík ,CJJJM ,e fghdoÛjo½; ~zT x

- 4 -

그래서 한글 테이블을 사용하여 조합형 한글

코드를 코딩해야 한다.

2.3.4 유니코드와 조합형코드

유니코드는 모든 완성된 글자 즉, 초성과

중성 또는 초성과 중성과 종성으로 구성된

글자의 폰트규칙에 의해 결정된다. 그러나

자음 또는 모음이 단독으로 쓰일 경우에는

규칙이 아닌 정해진 특정 값에 의해 결정된

다. 그에 반해 조합형 코드는 모든 완성된

글자뿐만 아니라 자음 또는 모음이 단독으

로 쓰일 경우에도 규칙에 의해 결정된다.

따라서 조합형 코드가 유니코드보다 한글

입력하는 시스템을 구축하는데 더욱 유리하

다.

2.4 조합형 코드의 특징

2.4.1 조합형 코드의 폰트의 형태

그림 1.글자 형태에 따른 자음 ‘ㄱ’형태

초성, 중성, 종성의 글자를 조합하여 코딩

되어 있기 때문에 글자 형태가 좋지 않을

것이라고 착각할 수 있다. 그러나 위와 같

이 일반적인 글자 폰트처럼 '가'의 ㄱ, '갈'

의 ㄱ, '고'의 ㄱ, 등이 모두 같은 초성의

ㄱ 이지만 모양과 크기가 다르다. 조합형

코드는 한글 테이블을 이용하면 각 글자의

상황에 맞는 글자의 폰트가 들어가기 때문

에 사용하여도 글자 폰트의 형태는 크게 나

쁘지 않다.

2.4.2 조합형 코드의 데이터 형식

표 1. 조합형 코드 표

번호 초성(20자) 중성(22자) 종성(28자)

0

1 fill code 0 fill code 0

2 ㄱ 1 fill code 0 ㄱ 1

3 ㄲ 2 ㅏ 1 ㄲ 2

4 ㄴ 3 ㅐ 2 ㄳ 3

5 ㄷ 4 ㅑ 3 ㄴ 4

6 ㄸ 5 ㅒ 4 ㄵ 5

7 ㄹ 6 ㅓ 5 ㄶ 6

8 ㅁ 7 ㄷ 7

9 ㅂ 8 ㄹ 8

10 ㅃ 9 ㅔ 6 ㄺ 9

11 ㅅ 10 ㅕ 7 ㄻ 10

12 ㅆ 11 ㅖ 8 ㄼ 11

13 ㅇ 12 ㅗ 9 ㄽ 12

14 ㅈ 13 ㅘ 10 ㄾ 13

15 ㅉ 14 ㅙ 11 ㄿ 14

16 ㅊ 15 ㅀ 15

17 ㅋ 16 ㅁ 16

18 ㅌ 17 ㅚ 12

19 ㅍ 18 ㅛ 13 ㅂ 17

20 ㅎ 19 ㅜ 14 ㅄ 18

21 ㅝ 15 ㅅ 19

22 ㅞ 16 ㅆ 20

23 ㅟ 17 ㅇ 21

24 ㅈ 22

25 ㅊ 23

26 ㅋ 24

27 ㅌ 25

28 ㅍ 26

29 ㅎ 27

최상위 bit는 1로 정해져있고 그 다음부터 5

bits는 초성의 데이터가 들어오고 그 다음부

터 5 bits는 중성의 데이터가 들어오고 그 다

음 5 bits는 종성의 데이터가 들어온다.

초성과 중성 그리고 종성의 데이터는 표에

의해 결정된다.

예를 들어 표1에 의하면 '한' 이라는 글자

를 조합할 경우 초성: 0b10100, 중성: 0b00011,

종성: 0b00101의 값을 가진다. 따라서 ‘한’의

조합코드는 0b110110001100101 이라는 값을

가지게 된다. 한글 오토마타의 구성에서의

Page 5: 0& 0+').+.,'1.23$1+4 5$46'.17849+$).*7#$9:/*-.*/0& &$;+1'*:; …¿¼티... · 2015-03-25 · - 5 - Ãyàý[ :, Å ~g oZ[ Ík Ý Ârî [ ,¯2[ Ík Ík ,CJJJM ,e fghdoÛjo½; ~zT x

- 5 -

장점은 모든 글자 즉, 완성된 형태의 한글

(초성과 중성 또는 초성과 중성 그리고 종

성으로 이루어진 글자)이 아닌 글자도(초성

또는 중성 또는 종성 예) ㄱ, ㅏ, ㄳ 등) 조

합형 코드의 표에 의해 결정되고 출력된다.

예를들어ㄱ의초성은초성:0b00010, 중성:0b00010,

종성:0b00001 으로 값을 가진다. 따라서 “ㄱ”의 글

자 조합형 코드는 0b1000100001000001 라는 값

을 가진다.

2.4.4 조합형코드에서의한글과아스키코드의구별법

그림 2. 한글과 아스키 코드의 구별법

그림2는 입력받은 문자열을 한글과 아스키

코드를 구별하는 흐름도이다.

2.3.3 (1)에서 설명한것과 같이 조합형 코드는

16 bits 중 최상위 bit가 1의 값을 가진다. 그에

반해 아스키 코드는 8 bits 중 최상위 bit가 0의

값을 가진다. 이를 이용하여 한글일 경우 16 bits

를 읽고 아스키 코드일 경우는 8 bits를 읽는다.

조합형 코드에서 초성만 입력하더라도 하위 8bits

의 값은 0의 값을 가지지 않는다. 표1에서 중성과

종성의 값들을 보면 fill code라고 불리는 아무런

값을 가지지 않는 코드가 종성일 경우 0b00001의

값을 가지고 중성일 경우 0b00010의 값을 가진다.

즉, 한글의 하위 8bits는 0b00100001의 값을 가진

다. 그렇기 때문에 한글과 영어를 입력하지 않은

경우에는 0의 값을 가진다.

3. 쿼티 키보드

쿼티 키보드(qwerty keyboard)란 자판 맨

위 영문자 줄에 6개의 영문자 키가 왼쪽부

터 Q, W, E, R, T, Y의 순서로 배열되어

있어서, 쿼티라고 부르게 되었다. 쿼티 키보

드는 전통적인 타자기의 자판 배열로 등장

하여 컴퓨터 키보드의 표준으로 사용되고

있다.

3.1 설계한 키보드

자체 제작된 쿼티 키보드의 키 설정은 표2

와 같이 설계되었고 컴퓨터용 쿼티 키보드

를 모방하여 설계하였다.

기존의 쿼티 키보드와 자체 제작한 쿼티

키보드를 비교 할 경우 연음과 경음을 설정

하는 방법이 다르다. 기존의 쿼티 키보드의

경우 shift + 특정자음(ㅂ,ㅈ,ㄷ,ㄱ,ㅅ)을 입

력하거나 자음만 입력하는 방식이지만 자체

제작한 쿼티 키보드는 글자모드버튼으로 연

음과 경음을 설정할 수 있도록 설계 되었

다. 그 외 나머지 모든 부분은 쿼티 키보드

와 동일한 기능을 가지고 있다.

1 Q/qㅂㅃ A/a ㅁ Z/z ㅋ

2 W/wㅈㅉ S/s ㄴ X/x ㅌ

3 E/eㄷㄸ D/d ㅇ C/c ㅊ

4 R/r ㄱㄲ F/f ㄹ V/v ㅍ

5 T/t ㅅㅆ G/g ㅎ B/b ㅠ

6 Y/y ㅛ H/h ㅗ N/n ㅜ

7 U/u ㅕ J/j ㅓ M/m ㅡ

8 I/i ㅑ K/k ㅏ 지우기

9 O/o ㅐ L/l ㅣ 띄우기

0 P/p ㅔ 색깔설정- 글자 모드

수정/동작 색깔 모드 색깔설정+ 한/영

표 2. 자체 설계한 키보드

Page 6: 0& 0+').+.,'1.23$1+4 5$46'.17849+$).*7#$9:/*-.*/0& &$;+1'*:; …¿¼티... · 2015-03-25 · - 5 - Ãyàý[ :, Å ~g oZ[ Ík Ý Ârî [ ,¯2[ Ík Ík ,CJJJM ,e fghdoÛjo½; ~zT x

- 6 -

3.2 키보드 회로 제작 및 구성

하드웨어 부분에서 44개의 스위치를 적은

핀의 숫자로 작동가능하게 구상하였고 소

프트웨어 부분에서는 스위치에 대한 채터

링에 관한 오동작을 줄이도록 구상하였다.

그림3과 같이 쿼티 키보드의 회로를 구상

하였고 적은 핀의 숫자로 많은 스위치를

제어하기 위해 행렬식 키보드 방식과 디코

더 방식을 사용하였다.

3.3 행렬식 키보드와 비행렬식 키보드

3.3.1 비행렬식 키보드

그림4는 마이크로 컨트롤의 입력 핀과 스

위치를 1:1로 연결하는 방식으로 구성되어

있다.

그림 4. 비행렬식 키보드 회로도

그림4의 회로는 스위치를 누르지 않는 경

우 마이크로 컨트롤의 입력 핀에 GND값이

들어가고 스위치를 누르고 있는 경우에는

마이크로 컨트롤의 입력 핀에 VCC Main값

이 들어간다.

3.3.2 행렬식 키보드

그림5는 4*4 행렬식 키보드는 구성되어 있

다.

행렬식 키보드는 키들이 N*M 행렬으로

구성되어 있으며 N*M의 행렬식 키보드를

제어하는데 필요한 핀은 N+M개이다.

마이크로 컨트롤의 출력 포트(A포트)에서

특정한 하나의 비트 출력만 선택하여 레벨

을 변화시키고 마이크로 컨트롤의 입력포트

(B포트)에서 4비트를 입력 받아 어떤 스위

치가 눌러졌는지 인지하는 방법이다.

그림 5. 행렬식 키보드 회로도

그림 3. 자체 키보드의 전반적인 회로 구상도

Page 7: 0& 0+').+.,'1.23$1+4 5$46'.17849+$).*7#$9:/*-.*/0& &$;+1'*:; …¿¼티... · 2015-03-25 · - 5 - Ãyàý[ :, Å ~g oZ[ Ík Ý Ârî [ ,¯2[ Ík Ík ,CJJJM ,e fghdoÛjo½; ~zT x

- 7 -

3.3.3 행렬식 키보드와 비행렬식 키보드의 비교

행렬식 키보드는 비행렬식 키보드에 비해

하드웨어 구조와 프로그램이 복잡하다. 그

렇지만 그림6과 같이 행렬식 키보드와 비행

렬식 키보드에서 스위치 개수가 증가함에

따라 행렬식과 비행렬식의 마이크로 컨트롤

의 핀의 개수의 차이가 현저히 난다는 것을

알 수 있다.

0

20

40

60

80

100

120

스위치의

개수

1 6 10 14 18

핀의 개수

비행렬식 행렬식

그림 6. 행렬식과 비행렬식의 소요 핀 개수

비교

3.4 행렬식 키보드에서의 디코더 칩의

활용

그림 7. 74HC138 핀 구성

표 3 74HC138 진리표

INPUTS OUTPUTS

E1 E2 E3 A0 A1 A2 Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7

H X X X X X H H H H H H H H

X H X X X X H H H H H H H H

X X L X X X H H H H H H H H

L L H L L L H L L L L L L L

L L H L L H L H L L L L L L

L L H L H L L L H L L L L L

L L H L H H L L L H L L L L

L L H H L L L L L L H L L L

L L H H L H L L L L L H L L

L L H H H L L L L L L L H L

L L H H H H L L L L L L L H

그림7은 74HC138의 핀 구성을 나타내고,

표3은 74HC138에 대한 진리표이다.

표3처럼 E1과 E2은 low의 값을 주고 E3

은 high의 값을 주었을 경우 디코더의 칩의

기능이 활성화 되고 디코더 출력 핀의 값은

A1, A2, A3에 의해 결정된다.

그림 8. 디코더의 칩을 활용

그림 8은 행렬식 키보드에서 디코더를 활

용하여 포트의 숫자를 줄이는 구상도이다.

이 구상도는 행렬식 키보드에서 출력핀과

연결하여 더 적은 포트로 행렬식 키보드를

제어하는 구상도이다.

그림 8에서는 아래의 디코더를 이용하여 어

떤 디코더를 사용할 것인지 결정하고 A0,

A1, A2를 이용하여 결정된 디코더의 출력핀

의 값을 결정한다.

Page 8: 0& 0+').+.,'1.23$1+4 5$46'.17849+$).*7#$9:/*-.*/0& &$;+1'*:; …¿¼티... · 2015-03-25 · - 5 - Ãyàý[ :, Å ~g oZ[ Ík Ý Ârî [ ,¯2[ Ík Ík ,CJJJM ,e fghdoÛjo½; ~zT x

- 8 -

3.5 채터링 방지 알고리즘

3.5.1 채터링

기구적 접점(스위치,릴레이 푸쉬스위치)이

on/off 할 때 접점 혹은 스프링 바운드로

수 ms ~ 수십 ms의 on/off 반복되어 여러

개의 입력 신호가 중첩되거나 오동작을 발

생시키는 현상을 의미한다. 예를 들어 푸쉬

스위치를 누를 때마다 카운터가 1개씩 올라

가도록 회로를 설계했지만 실제동작은 2~3

개 혹은 몇 개가 올라가는 경우가 있다. 이

런 경우의 문제점은 채터링에 의한 오동작

이 대부분이다.

3.5.2 채터링 방지 알고리즘

그림 9는 채터링 방지 흐름도이다.

그림 9. 채터링 방지 흐름도

그림9의 키스캔 소스는 폴링 방식으로 스

위치를 인식하도록 설계했다. 이전의 입력

값 여부 판별은 이전에 인식했던 스위치 입

력데이터와 지금 인식한 스위치 입력데이터

가 같은 경우에 소스에서 스위치를 누르고

있었다고 판단하여 스위치에 대한 이벤트을

발생시키지 않는다. 그러나 이전에 인식했

던 스위치 입력데이터와 지금 인식한 스위

치입력 데이터가 다를 경우에는 새로운 데

이터가 입력됐다 또는 스위치가 떨어졌다고

인식한다. 새로운 데이터가 들어올 경우에

는 스위치에 대한 이벤트를 발생시킨다.

시간지연은 너무 긴 시간 또는 너무 짧은

시간으로 설정하면 안 된다. 왜냐하면 너무

긴 시간으로 설정하면 폴링방식으로 한번

돌 때 여러 번의 스위치를 누를 시 시간 안

에 단 하나의 스위치에 대한 값만 인식받기

때문이다. 너무 짧은 시간으로 설정하면 채

터링이 잡히기 전에 채터링에 의한 중복된

신호를 인식받아 다수의 똑같은 스위치값이

인식된다. 그렇기 때문에 적절한 시간을 설

정하여 채터링라는 잡음를 방지하도록 한

다.

4. 한글 오토마타

4.1 한글 특징에 따른 한글 오토마타 구

현의 주의점

한글은 크게 자음과 모음으로 구분된다.

그 중 모음은 중성이라고도 불리고 자음은

초성과 종성으로 구분되어 있다. 여기서 초

성과 종성의 글자 종류는 초성에서 없는 글

자가 종성에 존재하기도 하고 종성에 없는

글자가 초성에 존재하기도 한다. 한글 오토

마타 구현에 있어서 이 차이점은 반드시 유

의해야 한다. 한글 오토마타로 글자를 입력

할 경우 종성의 일부 또는 종성의 모든 데

이터 다음 글자의 데이터가 넘어가 새로운

글자를 만들기도 한다. 그렇기 때문에 이점

을 유의하여 제작해야 한다.

초성

ㄱ ㄲ ㄴ ㄷ ㄸ ㄹ ㅁ ㅂ ㅃ

ㅅ ㅆ ㅇ ㅈ ㅉ ㅊ ㅋ ㅌ ㅍ

중성

ㅏ ㅐ ㅑ ㅒ ㅓ ㅔ ㅕ ㅖ ㅗ

ㅘ ㅙ ㅚ ㅛ ㅜ ㅝ ㅞ ㅟ ㅠ

ㅡ ㅢ ㅣ

종성

ㄱ ㄲ ㄳ ㄴ ㄵ ㄶ ㄷ ㄹ ㄺ

ㄻ ㄼ ㄽ ㄾ ㄿ ㅀ ㅁ ㅂ ㅄ

ㅅ ㅆ ㅇ ㅈ ㅊ ㅋ ㅌ ㅍ ㅎ

표 4 초성과 중성 그리고 종성

Page 9: 0& 0+').+.,'1.23$1+4 5$46'.17849+$).*7#$9:/*-.*/0& &$;+1'*:; …¿¼티... · 2015-03-25 · - 5 - Ãyàý[ :, Å ~g oZ[ Ík Ý Ârî [ ,¯2[ Ík Ík ,CJJJM ,e fghdoÛjo½; ~zT x

- 9 -

4.2 자음과 모음

표5는 중성을 쿼티키보드에서 입력하는 방

법이다. 쿼티키보드에서 특정중성들은 두

개까지 입력이 가능하고 이 조합으로 새로

운 중성을 만든다.

표6은 초성과 종성에 대한 자음을 쿼티키

보드로 입력하는 방법이다.

Q, W, E, R, T, Y에 대한 키는 연음과 경

음의 설정에 따라 ㅂ,ㅅ,ㅈ,ㄷ,ㄱ,ㅅ과 ㅃ,ㅉ,

ㄸ,ㄲ,ㅆ으로 입력할 수 있다.

쿼티키보드는 초성과 종성의 차이점이 있

다. 먼저 글 4.1에서 언급 했듯이 초성에 있

는 글자(ㄸ,ㅃ,ㅉ,)가 종성에는 없고, 종성에

있는 글자(ㄳ,ㄵ,ㄶ,ㄺ,ㄻ,ㄼ,ㄽ,ㄾ,ㄿ,ㅀ,ㅄ)는

초성에 없다. 쿼티키보드에서 초성은 한 번

에 입력이 가능하지만, 종성은 한 번 입력

할 수도 있고, 두 번을 입력해 새로운 종성

을 조합할 수도 있다.

표 5. 중성을 입력하는 방법

모음 방법

ㅏ K/k 버튼 누름

ㅐ 연음 설정 후 버튼 O/o 누름

ㅑ I/i 버튼 누름

ㅒ 연음 설정 후 버튼 O/o 누름

ㅓ J/j 버튼 누름

ㅔ 연음 설정 후 버튼 P/p 누름

ㅕ U/u 버튼 누름

ㅖ 연음 설정 후 버튼 P/p 누름

ㅗ G/g 버튼 누름

ㅘ G/g 누르고다음에 K/k 버튼누름

ㅙ G/g 누르고 다음에 O/o 버튼 누름

ㅚ H/h 누르고 다음에 L/l 버튼 누름

ㅛ G/g 버튼 누름

ㅜ G/g 버튼 누름

ㅝ F/f 누르고 다음에 R/r 버튼 누름

ㅞ F/f 누르고 다음에 R/r 버튼 누름

ㅟ F/f 누르고 다음에 R/r 버튼 누름

ㅠ B/b 버튼 누름

ㅡ M/m 버튼 누름

ㅢ M/m 누르고 다음에 L/l 버튼 누름

ㅣ L/l 버튼 누름

표 6. 초성과 종성을 입력하는 방법

자음 방법

ㄱ 연음 설정 후 버튼 R/r 누름

ㄲ 연음 설정 후 버튼 R/r 누름

ㄴ S/s 누름

ㄷ 연음 설정 후 R/r 버튼 누름

ㄸ 연음 설정 후 R/r 버튼 누름

ㄹ F/f 버튼 누름

ㅁ A/a 버튼 누름

ㅂ 연음 설정 후 Q/q 버튼 누름

ㅃ 연음 설정 후 Q/q 버튼 누름

ㅅ 연음 설정 후 T/t 버튼 누름

ㅆ 연음 설정 후 T/t 버튼 누름

ㅇ D/d 버튼 누름

ㅈ 연음 설정 후 W/w 버튼 누름

ㅉ 연음 설정 후 W/w 버튼 누름

ㅊ C/c 버튼 누름

ㅋ Z/z 버튼 누름

ㅌ X/x 버튼 누름

ㅍ V/v 버튼 누름

ㅎ G/g 버튼 누름

자음 방법

ㄱ 연음 설정 후 버튼 R/r 누름

ㄲ 연음 설정 후 버튼 R/r 누름

ㄳ R/r 누르고다음에 T/t 버튼누름

ㄴ S/s 누름

ㄵ S/s 누르고다음에W/w버튼누름

ㄶ S/s 누르고다음에 G/g 버튼누름

ㄷ 연음 설정 후 R/r 버튼 누름

ㄹ F/f 버튼 누름

ㄺ F/f 누르고다음에 R/r 버튼누름

ㄻ F/f 누르고다음에 A/a 버튼누름

ㄼ F/f 누르고다음에 Q/q 버튼누름

ㄽ F/f 누르고다음에 T/t 버튼누름

ㄾ F/f 누르고다음에 X/x 버튼누름

ㄿ F/f 누르고다음에 V/v 버튼누름

ㅀ F/f 누르고다음에 G/g 버튼누름

ㅁ A/a 버튼 누름

ㅂ 연음 설정 후 Q/q 버튼 누름

ㅄ Q/q 누르고다음에 T/t 버튼누름

ㅅ 연음 설정 후 T/t 버튼 누름

ㅆ 연음 설정 후 T/t 버튼 누름

ㅇ D/d 버튼 누름

ㅈ 연음 설정 후 W/w 버튼 누름

ㅊ C/c 버튼 누름

ㅋ Z/z 버튼 누름

ㅌ X/x 버튼 누름

ㅍ V/v 버튼 누름

ㅎ G/g 버튼 누름

Page 10: 0& 0+').+.,'1.23$1+4 5$46'.17849+$).*7#$9:/*-.*/0& &$;+1'*:; …¿¼티... · 2015-03-25 · - 5 - Ãyàý[ :, Å ~g oZ[ Ík Ý Ârî [ ,¯2[ Ík Ík ,CJJJM ,e fghdoÛjo½; ~zT x

- 10 -

4.3 한글 오토마타 구현 내용

그림 10. 전반적인 한글 오토마타 흐름도

그림 10은 종성만 출력되는 경우를 제외하

고 모든 경우에 출력되도록 설계된 구상도

이다. 위에서 설명했듯이 초성과 종성에서

같은 자음도 있지만 다른 자음도 존재한다.

만약 초성과 종성을 자음만 출력하고 싶은

경우에는 글자를 출력해야 하는 부분이 초

성과 종성 중에서 어느 것을 출력해야 하는

지가 명확하지 않기 때문에 완성도를 높이

기 위해 종성을 제외한 한글 오토마타를 출

력하기 위한 순서도 작성하였다.

설명 1은 아무런 입력하지 않는 경우에서

‘ㅏ’와 같이 모음을 입력할 경우에는 중성이

입력되고 다음칸으로 넘어간다. ‘ㄱ’과 같이

자음을 입력할 경우에는 초성에 자음이 들

어간다.

설명 2는 초성만 입력된 경우에서 ‘ㅏ’와

같이 모음을 입력할 경우에는 이전의 입력

된 초성과 중성이 조합되어 입력된다. ‘ㄱ’

과 같이 자음을 입력할 경우에는 그 다음

칸에 초성의 자음이 들어간다.

설명 3은 초성과 중성이 조합되어 입력된

경우에서 ‘ㅏ’와 같이 모음을 입력할 경우

이전의 중성과 비교하여 조합이 가능하지

판별하고 가능 할 경우에는 이전의 중성 대

신 조합된 중성이 들어간다. 만약 불가능할

경우에는 다음칸에 중성이 입력되고 그 다

음칸으로 넘어간다. 또한 ‘ㄱ’과 같이 자음

을 입력할 경우에는 종성에 자음이 들어간

Page 11: 0& 0+').+.,'1.23$1+4 5$46'.17849+$).*7#$9:/*-.*/0& &$;+1'*:; …¿¼티... · 2015-03-25 · - 5 - Ãyàý[ :, Å ~g oZ[ Ík Ý Ârî [ ,¯2[ Ík Ík ,CJJJM ,e fghdoÛjo½; ~zT x

- 11 -

다.

설명 4는 초성과 조합된 중성이 조합되어

입력된 경우 ‘ㅏ’와 같이 모음을 입력할 경

우에는 다음칸에 중성이 입력되고 그 다음

칸으로 넘어간다. 그리고 ‘ㄱ’과 같이 자음

을 입력할 경우에는 종성에 자음이 들어간

다.

설명 5는 초성과 중성 그리고 종성이 조합

되어 입력된 경우 ‘ㅏ’와 같은 모음을 종성

뒤에 입력할 때 기존에 입력된 초성과 중성

으로만 글자를 형성하고 그 다음칸에 그 전

에 입력한 종성이 초성으로 넘어가고 새롭

게 입력한 모음이 중성으로 입력된다. 그리

고 ‘ㄱ’과 같이 자음을 입력할 경우에는 이

전의 종성과 비교하여 조합이 가능하지 판

별하고 가능 할 경우에는 이전의 종성 대신

조합된 종성이 들어간다. 만약 불가능 할

경우 다음 칸에는 초성이 입력된다.

설명 6은 초성과 중성 그리고 조합된 종성

이 조합되어 입력된 경우 ‘ㅏ’와 같이 모음

을 입력할 때 기존에 입력된 초성과 중성

그리고 조합하기 이전에 입력된 종성만 글

자를 형성하고 그 다음 칸에 조합되기 직전

에 입력된 종성이 초성으로 들어가 새롭게

입력한 모음이 중성으로 입력된다. 그리고

‘ㄱ’과 같이 자음을 입력할 경우에는 다음칸

에 초성의 자음이 들어간다.

5. 실험 및 결과

5.1 한글 오토마타 구현 1

5.1.1 실험 목적 및 방법

실험목적 및 방법은 그림 11의 내용을 구

현한다.

5.1.2 실험 결과 및 구현 내용

그림 12. 빈 공간에 ‘ㅏ’을 입력한 결과

그림 13. 빈 공간에 ‘ㄱ’을 입력한 결과

그림 14 . ‘ㅏ’만 입력한 상태에서 ‘ㅏ’을 입력한

결과

그림 11. 설명1의 흐름도

Page 12: 0& 0+').+.,'1.23$1+4 5$46'.17849+$).*7#$9:/*-.*/0& &$;+1'*:; …¿¼티... · 2015-03-25 · - 5 - Ãyàý[ :, Å ~g oZ[ Ík Ý Ârî [ ,¯2[ Ík Ík ,CJJJM ,e fghdoÛjo½; ~zT x

- 12 -

그림 12는 아무런 입력을 하지 않은 상태에

서 모음‘ㅏ’를 입력할 때 나타난 결과이고 그

림 13은 아무런 입력을 하지 않는 상태에서

자음‘ㄱ’을 입력할 때 나타난 결과이다.

그림 14는 아무런 입력을 하지 않은 상태에

서 모음‘ㅏ’를 연속적으로 입력할 때 나타난

결과이다. 그림 12의 구상도처럼 연속적인

모음이 들어올 경우에는 새로운 칸에 모음이

연속적으로 적히게 제작되었다.

아무런 입력을 하지 않는 상태에서 모음을

입력할 경우에는 문자열을 저장할 char형 배

열에서 최상위 bit는 1로 두고 그 다음 5

bits는 초성의 fill code로써 0b00001을 입력

하고 그 다음 5 bits는 표 1에서 입력한 모음

의 값을 찾아서 입력한다. 그리고 마지막 5

bits는 종성의 fill code로써 0b00001을 입력

하고 주소값을 2만큼 증가시킨다.

아무런 입력을 하지 않은 상태에서 자음을

입력할 경우 문자열을 저장할 char형 배열에

서 최상위 bit는 1로 두고 그 다음 5 bits는

표1에서 입력한 자음의 값을 찾아 입력하고

그 다음 5 bits는 중성의 fill code로써

0b00010을 입력한다. 그리고 마지막 5 bits는

종성의 fill code로써 0b00001을 입력한다.

5.2 한글 오토마타 구현 2

5.2.1 실험 목적 및 방법

실험목적 및 방법은 그림 15의 내용을 구

현한다.

그림 15. 설명2의 흐름도

5.2.2 실험 결과

그림 16. ‘ㄱ’만 입력한 상태에서 ‘고’을

입력한 결과

그림 17. ‘ㄱ’만 입력한 상태에서 ‘ㄱ’을

입력한 결과

그림 14는 초성만 입력한 상태에서 모음

‘ㅗ’를 입력할 때 나타난 결과이고 그림 15s

는 초성만 입력한 상태에서 자음‘ㄱ’을 입력

할 때 나타난 결과이다.

초성만 입력한 상태에서 모음을 입력할 경

우 문자열을 저장할 char형 배열에서 최상

위 bit는 1로 두고 그 다음 5bits는 표 1에

서 이전에 입력한 초성의 값을 찾아서 입력

한다. 그 다음 5bits는 표 1에서 입력한 모

음의 값을 찾아서 입력한다. 그리고 마지막

5bits는 종성의 fill code로써 0b00001을 입

력한다.

초성만 입력한 상태에서 자음을 입력할 경

우 문자열을 저장할 char형 배열에서 주소

값을 2만큼 증가시키고 최상위 비트는 1로

Page 13: 0& 0+').+.,'1.23$1+4 5$46'.17849+$).*7#$9:/*-.*/0& &$;+1'*:; …¿¼티... · 2015-03-25 · - 5 - Ãyàý[ :, Å ~g oZ[ Ík Ý Ârî [ ,¯2[ Ík Ík ,CJJJM ,e fghdoÛjo½; ~zT x

- 13 -

두고 그 다음 5bits는 표1에서 입력한 자음

의 값을 찾아서 입력하고 그 다음 5bits는

중성의 fill code로써 0b00010을 입력한다.

그리고 마지막 5bits는 종성의 fill code로써

0b00001을 입력한다.

5.3 한글 오토마타 구현 3

5.3.1 실험 목적 및 방법

실험목적 및 방법은 그림 18의 내용을 구

현한다.

그림 18 설명3의 흐름도

5.2.2 실험 결과

그림 19. 중성 조합의 흐름도

그림 20. ‘고’만 입력한 상태에서

‘ㅓ’을 입력한 결과

그림 21. ‘ㅏ’만 입력한 상태에서

‘ㅏ’을 입력한 결과

그림 22. ‘ㅏ’만 입력한 상태에서

‘ㅏ’을 입력한 결과

그림 20은 초성만 입력되어 있는 상태에서

모음을 두 번 눌렸을 때 글자가 입력되는

모든 경우를 나타내는 구성도이다.

첫 번째 모음에서 ‘ㅗ’을 입력하고 두 번째

모음에서 ‘ㅏ’, ‘ㅐ’, ‘ㅣ’을 입력할 경우와 첫

번째 모음에서 ‘ㅜ’을 입력하고 두 번째 모

음에서 ‘ㅓ’, ‘ㅔ’, ‘ㅣ’를 입력할 경우 그리고

첫 번째 모음에서 ‘ㅡ’을 입력하고 두 번째

모음에서 ‘ㅣ’을 입력할 경우에만 모음을 조

Page 14: 0& 0+').+.,'1.23$1+4 5$46'.17849+$).*7#$9:/*-.*/0& &$;+1'*:; …¿¼티... · 2015-03-25 · - 5 - Ãyàý[ :, Å ~g oZ[ Ík Ý Ârî [ ,¯2[ Ík Ík ,CJJJM ,e fghdoÛjo½; ~zT x

- 14 -

합한다.

그림 21은 초성과 한번만 입력한 중성으로

조합된 글자가 입력한 상태에서 이전에 입

력한 중성과 조합할 수 없는 모음‘ㅓ’를 입

력할 때 나타난 결과이고 그림 22은 초성과

한번만 입력한 중성으로 조합된 글자가 입

력한 상태에서 이전에 입력한 중성과 조합

할 수 있는 모음‘ㅏ’를 입력할 때 나타난 결

과이다. 그리고 그림 23는 초성과 한번만

입력한 중성으로 조합된 글자가 입력된 상

태에서 자음‘ㄹ’을 입력할 때 나타난 결과이

다.

초성과 모음을 입력한 상태에서 조합할 수

있는 모음을 입력할 경우에는 문자열을 저

장할 char형 배열에서 최상위 bit는 1로 두

고 그 다음 5 bits는 표 1에서 이전에 입력

한 초성의 값을 찾아서 입력한다. 그 다음

5 bits는 표 1에서 이전에 입력한 중성과

이번에 입력한 모음이 조합된 모음의 값을

찾아서 입력한다. 그리고 마지막 5 bits는

종성의 fill code로써 0b00001을 입력한다.

초성과 모음을 입력한 상태에서 조합할 수

없는 모음을 입력할 경우에는 문자열을 저

장할 char형 배열에서 주소값을 2만큼 증가

시키고 최상위 bit는 1로 두고 다음 5 bits

는 초성의 fill code로써 0b00001을 입력하

고 그 다음 5 bits는 표1에서 입력한 모음

의 값을 찾아서 입력한다. 그리고 마지막 5

bits는 종성의 fill code로써 0b00001을 입력

한다. 그리고 주소 값을 2만큼 증가시킨다.

초성과 모음을 입력한 경우에서 자음을 입

력할 경우에는 문자열을 저장할 char형 배

열에서 최상위 bit는 1로 두고 그 다음 5

bits는 표 1에서 이전에 입력한 초성의 값

을 찾아서 입력한다. 그 다음 5 bits는 표 1

에서 이전에 입력한 중성의 값을 찾아서 입

력한다. 그리고 마지막 5 bits는 표 1에서

입력한 자음의 값을 찾아서 입력한다.

5.4 한글 오토마타 구현 4

5.4.1 실험 목적 및 방법

실험목적 및 방법은 그림 23의 내용을 구

현한다.

그림 23. 설명4의 흐름도

5.4.3 실험 결과

그림 24. ‘ㅏ’만 입력한 상태에서 ‘ㅏ’을 입력한

결과

그림 25. ‘ㅏ’만 입력한 상태에서 ‘ㅏ’을 입력한

결과

Page 15: 0& 0+').+.,'1.23$1+4 5$46'.17849+$).*7#$9:/*-.*/0& &$;+1'*:; …¿¼티... · 2015-03-25 · - 5 - Ãyàý[ :, Å ~g oZ[ Ík Ý Ârî [ ,¯2[ Ík Ík ,CJJJM ,e fghdoÛjo½; ~zT x

- 15 -

그림 25는 초성과 조합된 중성으로써 조합

된 글자가 입력된 경우 그 뒤에 모음을 입

력할 때 나타난 결과이고 그림 26은 초성과

조합된 중성으로써 조합된 글자가 입력된

경우 그 뒤에 자음을 입력할 때 나타난 결

과이다.

초성과 조합된 중성을 입력한 경우 모음을

입력할 할 때에는 문자열을 저장할 char형

배열에서 주소값을 2만큼 증가시키고 최상

위 bit는 1로 두고 다음 5 bits는 초성의 fill

code로써 0b00001을 입력하고 그 다음 5

bits는 표1에서 입력한 모음의 값을 찾아서

입력한다. 그리고 마지막 5 bits는 종성의

fill code로써 0b00001을 넣는다. 그리고 주

소 값을 2만큼 증가시킨다.

초성과 조합된 중성을 입력한 경우 자음을

입력할 때 문자열을 저장할 char형 배열에

서 최상위 bit는 1로 두고 그 다음 5 bits는

표 1에서 이전에 입력한 초성의 값을 찾아

서 입력한다. 그 다음 5 bits는 표 1에서 이

전에 입력한 중성의 값을 찾아서 입력한다.

그리고 마지막 5 bits는 표 1에서 입력한

자음의 값을 찾아서 입력한다.

5.5 한글 오토마타 구현 5

5.5.1 실험 목적 및 방법

실험목적 및 방법은 그림 26의 내용을 구

현한다.

그림 26 설명5의 흐름도

5.5.2 실험 결과

그림 27. 종성 조합의 흐름도

그림 28. ‘괄’만 입력한 상태에서

‘ㅋ’을 입력한 결과

그림 29. ‘괄’만 입력한 상태에서

‘ㄱ’을 입력한 결과

Page 16: 0& 0+').+.,'1.23$1+4 5$46'.17849+$).*7#$9:/*-.*/0& &$;+1'*:; …¿¼티... · 2015-03-25 · - 5 - Ãyàý[ :, Å ~g oZ[ Ík Ý Ârî [ ,¯2[ Ík Ík ,CJJJM ,e fghdoÛjo½; ~zT x

- 16 -

그림 30. ‘괄’만 입력한 상태에서

‘ㅏ’을 입력한 결과

그림 28은 초성과 중성만 입력되어 있는

경우로 자음을 두 번 눌렸을 때 입력되는

모든 경우를 나타내는 구성도이다.

첫 번째 모음에서 ‘ㅗ’를 입력하고 두 번째

모음에서 ‘ㅏ’, ‘ㅐ’, ‘ㅣ’를 입력할 경우와 첫

번째 모음에서 ‘ㅗ’를 입력하고 두 번째 모

음에서 ‘ㅏ’, ‘ㅐ’, ‘ㅣ’를 입력할 경우 그리고

첫 번째 모음에서 ‘ㅗ’를 입력하고 두 번째

모음에서 ‘ㅣ’를 입력할 경우에만 모음을 조

합한다.

그림 29는 초성과 중성 그리고 한번만 입

력한 종성으로 조합된 글자를 입력한 경우

에서 이전에 입력한 중성과 조합할 수 없는

자음‘ㅓ’를 입력할 때 나타난 결과이고 그림

30은 초성과 중성 그리고 한번만 입력한 중

성으로 조합된 글자를 입력한 경우에서 이

전에 입력한 중성과 조합할 수 있는 자음

‘ㅏ’를 입력할 때 나타난 결과이다. 그리고

그림 31은 초성과 중성 그리고 한번만 입력

한 중성으로 조합된 글자를 입력한 경우 모

음‘ㄹ’을 입력할 때 나타난 결과이다.

초성과 중성 그리고 종성을 입력한 경우에

서 조합할 수 있는 자음을 입력할 때 문자

열을 저장할 char형 배열에서 최상위 bit는

1로 두고 그 다음 5 bits는 표 1에서 이전

에 입력한 초성의 값을 찾아서 입력한다.

그 다음 5 bits는 표 1에서 이전에 입력한

중성의 값을 찾아서 입력한다. 그리고 그

다음 5 bits는 표 1에서 이전에 입력한 종

성과 새로 입력한 종성이 조합된 모음의 값

을 찾아 입력한다.

초성과 중성 그리고 종성을 입력한 경우

조합할 수 없는 자음을 입력했을 때 문자열

을 저장할 char형 배열에서 주소값을 2만큼

증가시키고 최상위 bit는 1으로 두고 그 다

음 5 bits는 표 1에서 이전에 입력한 초성

의 값을 찾아서 입력한다. 그 다음 5 bits는

중성의 fill code로써 0b00010을 입력한다.

그리고 마지막 5bits는 종성의 fill code로써

0b00001을 넣는다. 그리고 주소 값을 2만큼

증가시킨다

초성과 중성 그리고 종성을 입력한 경우

모음을 입력할 경우에는 문자열을 저장할

char형 배열에서 주소값을 2만큼 증가시키

고 최상위 bit는 1로 두고 그 다음 5 bits는

표 1에서 이전에 입력한 종성의 값을 찾아

서 입력한다. 그 다음 표 1에서 이전에 입

력한 종성의 값을 찾아서 입력한다. 그리고

마지막 5bits는 종성의 fill code로써

0b00001을 넣는다. 그리고 주소 값을 2만큼

증가시킨다.

5.6 한글 오토마타 구현 6

5.6.1 실험 목적 및 방법

실험목적 및 방법은 그림 31의 내용을 구

현한다.

그림 31. 설명6의 흐름도

Page 17: 0& 0+').+.,'1.23$1+4 5$46'.17849+$).*7#$9:/*-.*/0& &$;+1'*:; …¿¼티... · 2015-03-25 · - 5 - Ãyàý[ :, Å ~g oZ[ Ík Ý Ârî [ ,¯2[ Ík Ík ,CJJJM ,e fghdoÛjo½; ~zT x

- 17 -

5.6.2 실험 결과

그림 32. ‘ㅏ’만 입력한 상태에서

‘ㅏ’을 입력한 결과

그림 33. ‘ㅏ’만 입력한 상태에서

‘ㅏ’을 입력한 결과

그림 33은 초성과 중성과 조합된 종성으로

조합된 글자를 입력한 경우 자음‘ㅓ’를 입력

할 때 나타난 결과이고 그림 34은 초성과

중성 그리고 조합된 중성으로 조합된 글자

를 입력한 경우 모음‘ㄹ’을 입력할 때 나타

난 결과이다.

초성과 중성 그리고 조합된 종성이 입력된

상태에서 자음을 입력할 경우에는 문자열을

저장할 char형 배열에서 주소값을 2만큼 증

가시키고 최상위 bit는 1로 두고 그 다음 5

bits는 표 1에서 이전에 입력한 초성의 값

을 찾아서 입력한다. 그 다음 5 bits는 중성

의 fill code로써 0b00010을 입력한다. 그리

고 마지막 5 bits는 종성의 fill code로써

0b00001을 넣는다. 주소 값을 2만큼 증가시

킨다.

초성과 중성 그리고 조합된 종성을 입력된

상태에서 모음이 입력될 경우에는 문자열을

저장할 char형 배열에서 주소값을 2만큼 증

가시키고 최상위 bit는 1로 두고 그 다음 5

bits는 표 1에서 이전에 입력한 종성의 값

을 찾아서 입력한다. 그 다음 표 1에서 이

전에 입력한 종성의 값을 찾아 입력한다.

그리고 마지막 5 bits는 종성의 fill code로

써 0b00001을 넣는다. 그리고 주소 값을 2

만큼 증가시킨다.

5.7 한글 광고판 구현

그림 34. 한글 광고판 전반적인 흐름도

그림 35. 한글 광고판 시스템

Page 18: 0& 0+').+.,'1.23$1+4 5$46'.17849+$).*7#$9:/*-.*/0& &$;+1'*:; …¿¼티... · 2015-03-25 · - 5 - Ãyàý[ :, Å ~g oZ[ Ík Ý Ârî [ ,¯2[ Ík Ík ,CJJJM ,e fghdoÛjo½; ~zT x

- 18 -

그림 35는 자체 제작된 한글 광고판 시스

템이고 그림 34는 한글 광고판 시스템 흐름

도이다.

글자 입력 모드에서는 11*4 행렬식 키보드

를 이용하여 한글, 대소문자 그리고 숫자를

입력할 때 마다 문자열을 저장한다. 그리고

글자 출력 모드에서는 저장된 문자열을 해

석하고 한글일 경우 16*16 한글폰트나 대소

문자 또는 숫자일 경우에는 16*8 아스키 코

드 폰트로 바꾸어서 저장한 뒤에 전광판에

그 글자들을 출력한다.

6. 결 론

IT산업이 발달함에 따라 많은 회사나 가정

에서는 생활과 업무의 효율화를 위하여 보

다 편리한 키보드 입력방식을 고안하고 있

다. 본 연구는 마이크로컨트롤러 ATMEGA

128을 이용해서 QWERTY 키보드의 한글

입력 방식을 소프트웨어와 하드웨어적 측면

에서 모두 자체 제작했다. 그리고 행렬식

키패드에 디코더 칩 응용하여 키패드를 제

작하였고 단순 행렬식 키패드보다 포트수를

줄이는데 성공했다. 이를 이용해 한글과 영

문(대소문자) 그리고 숫자 입력이 가능하고

그 입력한 문자열을 출력하는 한글 전광판

시스템을 구축하였다. 향후에는 기존에 나

온 다양한 한글 입력 방식을 분석하고 효율

적인 한글입력방식을 연구가 필요하다.

참 고 문 헌

[1] 권훈 ,김정희, 곽호영, “유니 코드를 바탕

으로 한 프로그램 상에서의 한글 자/모 구

별방법에 따른 연구”, 2004년도 한국 정보

과학회가을학술발표논문집, 2004

[2] 박장식, 윤병우 , “(AT90CAN128을 이

용한)CAN 통신 실무”, 2009.09

[3] 신동욱, 오창헌, “알기 쉽게 배우는

AVR ATmega128”, 2006.01

[4] http://cafe.daum.net/8051plus

[5] http://cafe.naver.com /carroty