ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [AVR] CLCD의 Instruction Table을 통한 헤더파일 작성
    AVR study 2013. 1. 29. 17:38
    반응형

    이번 포스팅에서는 LCD의 명령을 통해서 비트를 설정하고 원하는 문자열을 출력하기 위한 헤더파일을 작성해 보겠습니다.

     

    ♣ LCD의 구조

     

    이전 포스팅에서와 같은 그림입니다.

     

    (1) 레지스터

    LCD 모듈은 2개의 8비트 레지스터, Istruction Register(IR)와 Data Register(DR)를 가지고 있다.

     

    ▶ Istruction Register (IR) : 명령 레지스터

    화면의 지움, 화면 시프트 등 LCD 동작 명령을 내리거나 드라이버 내의 DDRAM, CGRAM 주소를 설정하는데 사용한다.

     

    ▶ Data Register (DR) : 데이터 레지스터

    화면에 표시할 데이터, 새로운 글꼴에 대한 데이터를 임시로 저장하는 레지스터이다. DR에 데이터를 쓰면 IR로 지정된 주소의 DDRAM또는 CGRAM에 데이터가 전달된다. DR의 데이터를 읽으면 지정된 주소의 DDRAM 또는 CGRAM에 데이터가 CPU에 전달된다.

     

    (2) Busy Flag (BF)

    BF는 LCD가 다음 명령을 받을 수 있는지 상태를 나타낸다. BF = 1이면 내부동작 중인 상태로 명령을 받을 수 없다.

     

    (3) Address Counter (AC) : 어드레스 카운터

    어드레스 카운터는 DDRAM 어드레스 카운터와 CGRAM 어드레스 카운터가 있다. 각각 데이터 쓰기/읽기를 할 DDRAM과 CGRAM의 주소를 나타낸다. IR 레지스터에 주소를 써넣음과 동시에 해당 어드레스 카운터에 값이 세트된다. 각 RAM에 데이터를 써넣으면 어드레스 카운터는 자동적으로 1 증가한다.

     

    (4) 제어 신호

    ■ EN : LCD에 입출력을 허용하는 인에이블 신호이다.

    ■ RS : DR 또는 IR 레지스터를 정해주는 신호이다.

    ■ RW : 읽기/쓰기를 정해주는 신호이다.

     

    (5) Display Data RAM (DDRAM)

    DDRAM은 화면에 표시할 8비트 문자를 저장하는 곳으로 80x8 비트의 용량을 갖는다. 화면에 표시되지 않는 영역의 RAM은 일반적인 메모리로 사용될 수 있다. 다음은 2라인 16문자를 표시할 때 DDRAM의 주소와 화면 위치의 관계를 보여준다. DDRAM의 01번지에 글자 'A' 를 쓰면 화면 0행 1열에 'A'가 나타난다.

     

     

     

     

     

     

    화면 0행

     

    화면 1행

     

     

    (6) Character Geneator ROM (CGROM)

    CGROM은 8비트 문자 코드에 따라 5x8 도트 문자 또는 5x10 도트 문자를 형성한다.

    표에서 CGRAM (1)~(8)로 표시된 공간은 사용자가 글꼴을 정의해서 사용할 수 있는 부분이다.

     

     

    (7) Character Generator RAM (CGRAM)

    대부분의 LCD는 한글 폰트를 지원하지 않는다. 따라서 한글을 디스플레이하기 위해서는 사용자가 임의로 글꼴을 정의해야 한다.

    LCD에는 몇 개의 글꼴을 사용자가 만들 수 있는데 다음 표는 정의한 글꼴을 나타낸다. 문자코드, CGRAM 주소, 5x7 도트 사용자 글꼴의 관계를 나타낸다.

     

     

    ♣ LCD Instruction Table

     

    - 화면 소거 명령어 (Clear Display)

    - 커서를 홈으로 옮기는 명령어 (Return Home)

    - 엔트리 모드 세트 명령어 (Entry Mode Set)

    - 화면 On/Off 제어 명령어 (Display On/Off Control)

    - 커서 혹은 화면 이동 명령어 (Cursor or Display Shift)

    - 기능 세트 명령어 (Function Set)

    - CGRAM 주소 설정

    - DDRAM 주소 설정

    - 비지 플래그 읽기

    - DDRAM 혹은 CGRAM 데이터 쓰기

    - DDRAM 혹은 CGRAM 데이터 읽기

    (1) Clear Display

    전체 화면을 지우고 DDRAM 주소를 0으로 설정한 수 커서를 홈 위치로 옮기며 DDRAM 주소 카운터를 0으로 한다.

     RS

    RW 

     DB7

     DB6

     DB5

     DB4

     DB3

     DB2

     DB1

     DB0

     0

    0

     

    (2) Return Home

    커서를 홈 위치로 옮긴다. DDRAM의 주소 카운터를 0으로 하고 디스플레이 시프트 된 것을 본래의 위치로 되돌린다.

    RS

    RW

    DB7

    DB6

    DB5

    DB4

    DB3

    DB2

    DB1

    DB0

    0

    0

    0

    0

    0

    0

    0

    0

    1

    x

     

    (3) Entry Mode Set

    커서의 진행 방향 및 화면의 이동 여부를 결정한다. S가 0이면 Shift되지 않는다. I/D가 1인 경우에 S=1이면 좌로 화면 이동, S=0이면 우로 화면 이동한다.

    RS

    RW

    DB7

    DB6

    DB5

    DB4

    DB3

    DB2

    DB1

    DB0

    0

    0

    0

    0

    0

    0

    0

    1

    1/D

     

     I/D

    기능 

    0

    0

     커서 좌층 이동, 화면 이동 없음 

    0

    1

     커서 좌층 이동, 화면 이동

    1

    0

     커서 우측 이동, 화면 이동 없음

    1

    1

     커서 우측 이동, 화면 이동

     

    (4) Display On/Off

    화면의 ON/OFF, 커서의 ON/OFF, 커서 위치의 문자의 점멸 여부를 결정한다.

    RS

    RW

    DB7

    DB6

    DB5

    DB4

    DB3

    DB2

    DB1

    DB0

    0

    0

    0

    0

    0

     0

    1

     D

     B

     

    D

    C

    B

    기능 

     0

    0

     0

    화면 OFF

    커서 OFF

    커서 점멸 OFF

     0

    0

     1

    화면 OFF

    커서 OFF

    커서 점멸 ON

     0

    1

     0

    화면 OFF

    커서 ON

    커서 점멸 OFF

     0

    1

     1

    화면 OFF

    커서 ON

    커서 점멸 ON

     1

    0

     0

    화면 ON

    커서 OFF

    커서 점멸 OFF

     1

    0

     1

    화면 ON

    커서 OFF

    커서 점멸 ON

     1

    1

     0

    화면 ON

    커서 ON

    커서 점멸 OFF

     1

    1

     1

    화면 ON

    커서 ON

    커서 점멸 ON

     

    (5) Cursor Or Display Shift

    DDRAM의 내용을 변경하지 않고 화면 혹은 커서를 오른쪽이나 왼쪽으로 이동시킨다.

    RS

    RW

    DB7

    DB6

    DB5

    DB4

    DB3

    DB2

    DB1

    DB0

    0

    0

    0

    0

    0

     S/C

    R/L 

     

     S/C

    R/L 

    기능 

     0

     0

    커서 선택

    커서 좌측 이동

     0

     1

    커서 선택

    커서 우측 이동

     1

     0

    화면 선택

    화면 좌측 이동

     1

    1

    화면 선택

    화면 우측 이동

     

    (6) Function Set

    데이터 버스 인터페이스의 4bit/8bit의 여부, 화면 표시 행수의 1행/2행 여부, 문자 폰트의 5x8 / 5x11의 여부를 결정한다.

    RS

    RW

    DB7

    DB6

    DB5

    DB4

    DB3

    DB2

    DB1

    DB0

    0

    0

    0

    0

     1

    DL 

    X

    X

     

     DL

    N

    F

    기능 

     0

    0

    0

     4bit

    화면 1행

    5 x 8 Font

     0

    0

     1

    4bit

    화면 1행

    5 x 11 Font

     0

    1

     0

    4bit

    화면 2행

    5 x 8 Font

     0

    1

     1

    4bit

    화면 2행

    5 x 11 Font

     1

    0

     0

    8bit

    화면 1행

    5 x 8 Font

     1

    0

     1

    8bit

    화면 1행

    5 x 11 Font

     1

    1

     0

    8bit

    화면 2행

    5 x 8 Font

     1

    1

     1

    8bit

    화면 2행

    5 x 11 Font

     


     

    ♣ 명령어를 통한 헤더파일 작성

     

     

     

    #define CMD_CREAR_DISPLAY     0x01 //1. Clear Display
    #define CMD_RETURN_HOME      0x02 //2. Return Home
    //3. Entry Mode Set
    #define CMD_ENTRY_MODE_SET_OPTION1   0x04 // cursor [left], Display shift[none]
    #define CMD_ENTRY_MODE_SET_OPTION2   0x05 // cursor [left], Display shift[]
    #define CMD_ENTRY_MODE_SET_OPTION3   0x06 // cursor [right], Display shift[none]
    #define CMD_ENTRY_MODE_SET_OPTION4   0x07 // cursor [right], Display shift[]
    //4. Display On/Off
    #define CMD_DISPLAY_OPTION1     0x08 // Display [Off], Cursor [Off], Cursor Blink [Off]
    #define CMD_DISPLAY_OPTION2     0x09 // Display [Off], Cursor [Off], Cursor Blink [On]
    #define CMD_DISPLAY_OPTION3     0x0A // Display [Off], Cursor [On], Cursor Blink [Off]
    #define CMD_DISPLAY_OPTION4     0x0B // Display [Off], Cursor [On], Cursor Blink [On]
    #define CMD_DISPLAY_OPTION5     0x0C // Display [On], Cursor [Off], Cursor Blink [Off]
    #define CMD_DISPLAY_OPTION6     0x0D // Display [On], Cursor [Off], Cursor Blink [On]
    #define CMD_DISPLAY_OPTION7     0x0E // Display [On], Cursor [On], Cursor Blink [Off]
    #define CMD_DISPLAY_OPTION8     0x0F // Display [On], Cursor [On], Cursor Blink [On]
    //5. Cursor or Display Shift
    #define CMD_CURSOR_DISPLAY_SHIFT_OPTION1 0x10 // [Cursor] Select, Cursor Shift [Left]
    #define CMD_CURSOR_DISPLAY_SHIFT_OPTION2 0x14 // [Cursor] Select, Cursor Shift [Right]
    #define CMD_CURSOR_DISPLAY_SHIFT_OPTION3 0x18 // [Display] Select, Display Shift [Left]
    #define CMD_CURSOR_DISPLAY_SHIFT_OPTION4 0x1C // [Display] Select, Display Shift [Right]
    //6. Function Set
    #define CMD_FUNCTION_SET_OPTION1   0x20 // [4]bit mode, [1] line, [5x8] Font
    #define CMD_FUNCTION_SET_OPTION2   0x24 // [4]bit mode, [1] line, [5x11] Font
    #define CMD_FUNCTION_SET_OPTION3   0x28 // [4]bit mode, [2] line, [5x8] Font
    #define CMD_FUNCTION_SET_OPTION4   0x2C // [4]bit mode, [2] line, [5x11] Font
    #define CMD_FUNCTION_SET_OPTION5   0x30 // [8]bit mode, [1] line, [5x8] Font
    #define CMD_FUNCTION_SET_OPTION6   0x3C // [8]bit mode, [1] line, [5x11] Font
    #define CMD_FUNCTION_SET_OPTION7   0x34 // [8]bit mode, [2] line, [5x8] Font
    #define CMD_FUNCTION_SET_OPTION8   0x38 // [8]bit mode, [2] line, [5x11] Font

     

     

    반응형
Designed by Tistory.