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


 

 

 

 

 

1. MGG19264 초기화

 

다음은 MGG19264를 초기화하는 함수 G19264입니다. 함수에서 호출하는 기능은 주석을 참조하기 바랍니다.

//////////////////////////////////////////////////
// G19264_INIT
// PARAM NONE
// RETURN NONE
// CHANGED AL
//////////////////////////////////////////////////
G19264_INIT:
    LDI   AL,ST7565P_LCD_BIAS_9      // 전압 bias를 1/9로 설정
    RCALL G19264_WRITE_COMMAND
    LDI   AL,ST7565P_SEGMODE_NORMAL  //열의 진행방향을 정방향으로 (0에서 131로)
    RCALL G19264_WRITE_COMMAND
    LDI   AL,ST7565P_COMMODE_REVERSE //행의 진행 방향을 역방향으로 (64에서 0으로)
    RCALL G19264_WRITE_COMMAND
    LDI   AL,0x23                    //Regulation ratio 4.5로 설정
    RCALL G19264_WRITE_COMMAND
          //Power Set ON (booster, Regulator, Follow Circuit)
    LDI   AL,ST7565P_PWR_CTRL_SET | ST7565P_BOOSTER_ON | ST7565P_REGULATOR_ON | ST7565P_FOLLOW_CIRCUIT_ON
    RCALL G19264_WRITE_COMMAND
    LDI   AL,ST7565P_SETEV_CMD       //EV(Electric volume)을 0x34로 설정
    RCALL G19264_WRITE_COMMAND
    LDI   AL,0x34
    RCALL G19264_WRITE_COMMAND
    LDI   AL,ST7565P_STARTLINE_CMD   //start line을 0으로
    RCALL G19264_WRITE_COMMAND
    LDI   AL,ST7565P_DISPLAY_ON      //display on
    RCALL G19264_WRITE_COMMAND
    RCALL G19264_CLEAR               //clear screen
    RET

 



전원을 투입하면 GLCD의 내부 메모리에는 임의의 값이 기록되어 있습니다. 가급적 전원이 안정되도록 전원이 투입된 후 40 ~ 50mS 이상 경과한 다음에, 내부 메모리에 0 또는 다른 값을 기록하여 화면을 정리해야 합니다.

 

다음은 ST7565P 내부 메모리에 0을 써 넣는 함수 G19264_CLEAR입니다.

//////////////////////////////////////////////////
// G19264_CLEAR
// PARAM NONE
// RETURN NONE
// CHANGED NONE
//////////////////////////////////////////////////
G19264_CLEAR:
  RCALL G19264_CLEAR_CS2
  RJMP G19264_CLEAR_CS1

//////////////////////////////////////////////////
// G19264_CLEAR_CS1
// PARAM NONE
// RETURN NONE
// CHANGED NONE
//////////////////////////////////////////////////
G19264_CLEAR_CS1:
  PUSH AL
  LDI  AL,0
  RJMP G19264_CLEAR_CS

//////////////////////////////////////////////////
// G19264_CLEAR_CS2
// PARAM NONE
// RETURN NONE
// CHANGED NONE
//////////////////////////////////////////////////
G19264_CLEAR_CS2:
  PUSH AL
  LDI  AL,G19264_COLUMNS / ASCII_FONTSIZE_X
// RJMP G19264_CLEAR_CS

//////////////////////////////////////////////////
// G19264_CLEAR
// PARAM NONE
// RETURN NONE
// CHANGED NONE
//////////////////////////////////////////////////
G19264_CLEAR_CS:
  PUSH AH
  PUSH BL
  PUSH BH
  MOV  BH,AL
  LDI  AH,G19264_PAGES - 1
G19264_CLEAR_CS_LOOP:
  MOV  AL,BH
  RCALL G19264_GOTOXY
  LDI  BL,G19264_COLUMNS
  LDI  AL,0
G19264_CLEAR_CS_LOOP_LOOP:
  RCALL G19264_WRITE_DATA
  DEC  BL
  BRNE G19264_CLEAR_CS_LOOP_LOOP
  DEC  AH
  BRPL G19264_CLEAR_CS_LOOP
  LDI  AH,0
  RCALL G19264_GOTOXY
  POP  BH
  POP  BL
  POP  AH
  POP  AL
  RET

 

 

G19264_CLEAR 함수는 G19264_CLEAR_CS2 함수와 G19264_CLEAR_CS1 함수를 호출합니다. 두 함수의 차이는

 

 

 

 

2. ST7565P용 폰트

 

이전에 다루었던 GLCD인 LTBE9H372K8K와 TG322431은 데이터 한 바이트를 기록하면 X축 방향으로 8개의 점을 표시합니다. 반면에 앞의 2편 글에서 살짝 언급한 바와 같이 ST7565P는 Y축 방향으로 표시합니다.

 

 LTBE9H372K8K, TG322431의 경우

 

D7

D6

D5

D4

D3

D2

D1

D0

 

ST7565P의 경우

 

D0 

D1

D2

D3

D4

D5

D6 

D7

 

 

한 바이트를 화면에 출력하는 방식이 다르므로 비트맵 방식의 폰트로된 문자를 출력하는 방식도 달라야 합니다.

 

 

1) 8 * 16 크기의 영문자 표시 방법

 

LTBE9H372의 경우

 

① 한 바이트 출력

② 다음 행으로 이동

위와 같은 작업을 16회 반복

 

ST7565의 경우

 

① 한 바이트 씩 8열 출력

② 다음 page로 이동

①을 시작한 열로 이동

④ 한 바이트씩 8열 출력

 

 

2) 16 * 16 크기의 한글 표시 방법

 

LTBE9H372의 경우

 

① 두 바이트 출력

② 다음 행으로 이동

위와 같은 작업을 16회 반복

 

ST7565의 경우

 

① 한 바이트 씩 16열 출력

② 다음 page로 이동

①을 시작한 열로 이동

④ 한 바이트씩 16열 출력

 

 

 




블로그 이미지

엠쿠스

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

,