brunch

You can make anything
by writing

C.S.Lewis

by Cylogic Sep 24. 2020

35. LCD 디스플레이에 한글 출력하기.

1602A 커스텀 글꼴 사용

문자 출력을 기반으로 한 LCD 이거나 그래픽 출력을 기반으로 한 LCD 라이브러리이거나 알파벳과 숫자 폰트는 포함하고 있어서 손쉽게 출력이 가능하다. 


앞 서 배운 1602A 디스플레이는 16글자 X두줄의 문자를 디스플레이하도록 구성된 LCD 패널이다.

2004A 디스플레이는 20글자 X 네 줄의 문자를 디스플레이하도록 되어 있다. 패널의 이름에 들어간 4자리의 숫자는 한 줄의 글자 수와 줄 수를 표시하는 것을 알 수 있다. 그런데 이때의 문자는 알파벳을 포함한 키보드에서 입력이 가능한 영숫자 들이다.


한글이나 한자는 기본으로 출력할 수 있는 글자들이 아니다. 


알파벳을 기반으로 한 국가에서 만들어진 이유도 있겠지만, 한글이나 한자 폰트의 사이즈가 워낙 큰 것도 한 이유가 될 것이다.

그래서 한글을 출력하기 위해서는 그 폰트 파일을 프로그램에 포함하고 있거나, 필요한 글자만을 커스텀 글자로 만들어 등록하여야 한다.


전체 글자를 가지고 이야기하면 좋겠지만 필요한 커스텀 글자를 몇 자 등록하여 필요할 때 만 사용하는 것도 한 방법일 듯하여 이를 설명하도록 하겠다.


1602A 디스플레이를 자세히 보면 아래와 같이 가로 5, 세로 8의 작은 점들이 모여서 하나의 글자를 만드는 모습을 볼 수가 있다.

이러한 구조를 잘 이해한다면 다음과 같이 글자를 등록하면 된다.


byte BChar [] = {  

 B11110,   

 B10001,  

 B10001,  

 B11110, 

 B10001,   

 B10001,  

 B10001,  

 B11110 

};


이 코드는 위의 글자를 등록하는 코드이다.

글자의 검은 부분은 1, 아무것도 없는 부분은 0으로 표시된 것을 알 수 있다.


C 프로그램에서 B는 Binary 데이터를 표시하는 첫 문자이고 그 뒤에 따라오는 글자는 1과 0의 조합으로, 하나의 숫자 B11110이 위의 글자 한 줄을 표현하는 것이다.

이와 비슷한 방법으로 

한글 ㄱ, ㅏ, ㅁ, ㅅ  4개의 글자를 등록해 보자.


byte Giyuk [] = {

  B11111,

  B00001,

  B00001,

  B00001,

  B00001,

  B00001,

  B00001,

  B00001

};


byte Ah [] = {

  B00100,

  B00100,

  B00100,

  B00111,

  B00100,

  B00100,

  B00100,

  B00100

};


byte Mium []={

  B11111,

  B10001,

  B10001,

  B10001,

  B10001,

  B10001,

  B10001,

  B11111  

};


byte Siot [] = {

  B00100,

  B00100,

  B00100,

  B01010,

  B01010,

  B10001,

  B10001,

  B10001

};


이 4개의 글자를 등록하고 디스플레이하는 방법은 다음과 같다.

글자의 위치와 해당 글자 이름을 아래와 같은 명령어에 넣으면 등록이 된다.

  lcd.createChar(0, Giyuk); 

  lcd.createChar(1, Ah); 

  lcd.createChar(2, Mium);

  lcd.createChar(3, Siot);


이제 ㄱ,ㅏ,ㅁ,ㅅ 이 0,1,2,3번에 등록이 되었다.


이를 디스플레이하는 방법은 영문과 조금 다르다.

만일 ㄱ을 첫 번째 줄 두 번째 칸에 쓰려고 하면 아래와 같이 하면 된다.

  lcd.setCursor(1,0);

  lcd.write(0); // 0번에 등록된 글자 출력


전체 코드를 아래와 같이 만들고 실행하면 결과는 사진과 같이 된다.


원하는 글자를 디자인하고 이를 편하게 코드로 등록하려면 아래의 사이트를 방문하면 된다.

https://maxpromer.github.io/LCD-Character-Creator/

이번 강좌에서 설명한 내용을 확장하여 2,350자의 한글 완성자 모두를 등록하거나, 조합형 꼴을 만들어 11,172자의 모든 조합 한글을 만들 수 있다면 LCD 패널에서 모든 한글이 구현되는 시스템을 만들 수 있다.

그러나 5X8의 구조에 글자를 끼워 넣는 텍스트 기반의 LCD가 아니라 자유롭게 글꼴을 디자인하여 표현할 수 있는 그래픽 디스플레이가 필요하다. 


이 문제는 차후에 그래픽 LCD 패널을 사용할 때 다시 한번 이야기하도록 하겠다.


매거진의 이전글 34. LCD 디스플레이(1602A) 사용법
작품 선택
키워드 선택 0 / 3 0
댓글여부
afliean
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari