이글의 전부 또는 일부, 사진, 소스프로그램 등은 저작자의 동의 없이는 상업적인 사용을 금지합니다. 또한, 비상업적인 목적이라하더라도 출처를 밝히지 않고 게시하는 것은 금지합니다.


 

2. LTBE9H372K8K와 ATMEGA128 Board와 연결하기

 

 

 

1편에서는 GLCD LTBE9H372K8K(이하 LTBE9H372)의 신호 핀 기능을 알아낸 과정을 가볍게 기술하였습니다. 이 글에서는 LTBE9H372와 ATmega128 V3.1 Board와 연결하여 동작 시켜 보도록 하겠습니다.

 

동작 테스트로 영문과 한글 문자를 출력할 예정입니다. 인터넷 상에 있는 각종 그래픽 함수들을 응용할 수도 있을 것 같습니다. 다만, 16MHz 클럭을 사용하는 avr 시스템에서 인터럽트 서비스 루틴을 952 클럭 안에 마쳐야하기 때문에, 어셈블리어로 프로그램 해야 한다는 한계가 있습니다.

 

 

물론 인터럽트 서비스 부분만 어셈블리어로 작성하고 C와 mixed 프로그래밍을 할 수도 있을 것입니다. 나중에 시간적 여유가 생기면 시도해 보도록 하겠습니다. avr 프로그래밍은 주로 어셈블리어로 해와서 C로 프로그래밍하는 것이 좀 낯섭니다. 

 

 

앞의 1편에서 핀 기능을 모두 찾았으므로 이 핀들을 다음과 같이 연결합니다.

 

Function

LTBE9H372 커넥터 

ATMEGA128 V3.1

FLM

PB3 

CL1

2

PB2 

CL2

3

PB1

Vdd

4

5V

Vss

5

0V

Vee

6

-17V

D0

7

PE0

D1

8

PE1

D2

9

PE2

D3

10

PE3

DispOff

11

PB0 

NC

12

 

 

 

 

 

atmega128 V3.1 board를 LTBE9H372와 연결한 사진입니다.

 

 


 

맨 위쪽에 있는 붉은색 보드가 atmega128 V3.1 board입니다. 이 보드를 브레드보드에 장착하였습니다. 맨 아래쪽에 보이는 LTBE9H372는 FFC 케이블을 변환 커넥터를 통해서 브레드보드에 연결하고, 케이블로 두 장치를 연결하였습니다.

 

전원은 5V를 공급 중이며, LTBE9H372의 Vee에 -17V를 공급해 주어야하기 때문에 별도로 - 전원을 입력 받아 반고정 저항으로 -17.9V를 만들어 공급하고 있습니다. 

 

16dot * 16dot 크기의 조합형 한글 폰트와 8dot * 16dot 크기의 영문 폰트를 atmega128에 내장시켜서 글자를 표현하는 모습입니다.

 

앞의 글 컨트롤러 없는 GLCD 제어하기(http://mcus.tistory.com/26) 에서 다룬 바대로, 글자를 표현하는 함수들은 폰트이미지를 video ram에 뿌려 주고 있습니다. video ram의 내용을 실제로 화면에 나타내주는 일은 Timer interrupt 서비스 루틴이 담당하고 있습니다. 앞의 글에서는 Timer0 Compare Interrupt를 사용했습니다. LTBE9H372를 크게 촬영한 사진입니다.

 


 

위 예제 내부에 구현한 함수 몇가지에 대한 설명만 간단히 붙이고 글을 마치고자 합니다. 이 함수들은 첨부한 소스프로그램 파일에는 없고, 첨부한 소스프로그램에서 .INCLUDE문으로 포함시키는 LTBE_Display.asm 파일에 있습니다. 해당 파일은 공개하지 않을 예정입니다.

 

1) GOTOXY 함수 : 출력할 위치를 정한다. x축, y축 모두 8dot 단위로 출력 위치를 변경할 수 있도록 하였습니다. 즉 출력 위치 (1,2)는 도트 단위로하면 (8,16)입니다.

 

2) CLEAR 함수 : 화면을 모두 지웁니다. 실제로는 video ram을 모두 0으로 기록합니다.

 

3) DisplayAscii 함수 : 8dot * 16dot의 영문자 하나를 출력합니다. 출력 후에 다음 출력 x좌표를 1증가 시킵니다. 이 함수 내에서 0x0D(CR)과 0x0A(LF)를 처리합니다.

 

4) DisplayHangeul 함수 : 조합형 한글 KSSM 코드의 한글 한 글자를 출력합니다. 출력할 때에 줄바뀜 때문에 한글이 반쪽으로 갈라지지 않도록 맨 마지막 자리에서 출력할 때에는 다음 행으로 옮겨서 출력합니다. 위 사진의 중간 부분에 "15행으로 출력합니다." 부분에서 "출력합니다."는 원래 붙어 있는 것인데, "합"자가 반으로 갈라지지 않도록 이 함수에서 자동으로 다음 줄에 출력한 것입니다. 한글 출력 후에 다음 출력 x좌표를 2증가 시킵니다.

 

5) KSC5601ToKSSM 함수 : 완성형 KSC5601 코드를 조합형 KSSM 코드로 변환해 주는 함수입니다.

 

6) PUTSTRING 함수 : 하나의 문자열 안에 들어 있는 영문자와 한글(KSC5601코드)를 구별하여, 영문자는 DisplayAscii 함수로 출력하고 한글은 KSC5601ToKSSM 함수와 DisplayHangeul 함수로 출력합니다.

 

7) PutPixel 함수 : 도트 단위 좌표에 점을 하나 찍습니다. 나중에 선, 원 등 여러 도형을 출력할 때에 기본적으로 사용 예정인 함수입니다. 

 

이런 방법으로 LTBE9H372를 사용한다는 방법을 보여 드렸습니다. 나머지 기능은 여러분들께서 더 살찌우셔서 제게 가르쳐 주시기 바랍니다.

 


블로그 이미지

엠쿠스

Microprocessor(STM32, AVR)로 무엇인가를 만들어 보고자 학습 중입니다.

,