LCD 구조
내부 구성
Text LCD 내부구조는 일반적으로 LCD 컨트롤러, LCD 드라이버, LCD패널, 백라이트로 구성되어 있다.
▪ IR(Instruction Register) = 여러 기능을 제어하는 명령을 저장한 레지스터
▪ DR(Data Register) = 글자를 나타내기 위해 데이터를 저장하는 레지스터
▪ CG ROM(Character Generator ROM) = 표시할 문자 데이터를 저장하는 ROM
▪ CG RAM(Character Generator RAM) = 문자코드를 실제 문자 폰트로 변환 하는 ROM
▪ DD RAM(Display Data RAM) = 사용자 정의문자를 저장하는 RAM
레지스터 (Registers)
LCD 컨트롤러는 2개의 8비트 레지스터가 존재한다. 즉, 인스트럭션 레지스터(IR) 와 데이터 레지스터(DR)인데 이들은 LCD모듈의 4번 핀인 RS(Register Select) 신호단자에 어떠한 신호가 인가되느냐에 따라서 선택된다.
① IR(Instruction Register)
LCD화면 클리어, 커서 쉬프트, 글자 ON/OFF등 LCD의 제어명령 정보를 저장한다. DD RAM과 CG RAM의 표시를 위한 어드레스 정보를 저장한다.
② DR(Data Register)
DD RAM혹은 CG RAM에 써넣기 위한 데이터를 저장하거나, DD RAM 혹은 CG RAM으로부터 읽어진 데이터가 일시적으로 저장되는 레지스터이다. CPU로부터 데이터 레지스터(DR)에 써넣은 데이터는 LCD의 내부적인 동작에 의해서 DD RAM 또는, CG RAM에 자동적으로 써넣어 진다. LCD로부터 데이터를 읽기 위해서 어드레스 정보를 명령 레지스터(IR)에 써넣으면 DD RAM 또는 CG RAM으로부터 DR에 내부적인 동작에 의해서 자동 저장되고, DR에 저장된 데이터가 CPU 로 읽어지게 된다.
Instruction의 종류
Instruction
|
DB7
|
DB6
|
DB5
|
DB4
|
DB3
|
DB2
|
DB1
|
DB0
|
표시 클리어
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
1
|
엔트리 모드
|
0
|
0
|
0
|
0
|
0
|
0
|
I/D
|
S
|
Cursor Home
|
0
|
0
|
0
|
0
|
0
|
0
|
1
|
X
|
표시 On/Off
|
0
|
0
|
0
|
0
|
1
|
D
|
C
|
B
|
Address Set
|
1
|
A6
|
A5
|
A4
|
A3
|
A2
|
A1
|
A0
|
커서 shift
|
0
|
0
|
0
|
1
|
S/C
|
R/L
|
X
|
X
|
Function Set
|
0
|
0
|
1
|
DL
|
N
|
FL
|
X
|
X
|
표시 클리어
LCD의 화면의 내용들을 클리어하고 나서 커서 위치는 홈(0번지)으로 돌아간다.
엔트리 모드
DB2번 비트가 1인 경우로서 커서의 움직이는 방향을 설정하거나, 글자가 표기된 표시부분(디스플레이)을 시프트 할 것인지를 결정하는 것이다. 또한 이들의 동작은 데이터 쓰기/읽기 동안에 수행된다. 이 명령이 실행되는 시간은 37μs 이 걸리므로 시간지연을 주어야 한다.
- I/D : D.D.RAM의 어드레스를 증가(증가:I/D =1) 혹은 감소(감소:I/D =0)를 결정한다.
- S : 글자가 표기된 전체 디스플레이를 오른쪽/왼쪽으로 이동시키기 위한 변수이다.
▪ S=1, I/D =1 : 글자가 표기된 디스플레이는 왼쪽으로 시프트 한다.
▪ S=1, I/D =0 : 글자가 표기된 디스플레이는 오른쪽으로 시프트 한다. (※ 이때 커서위치는 변하지 않는다.)
▪ S=0 : 글자가 표기된 디스플레이는 시프트 되지 않는다.
Cursor Home
LCD에 글자가 표기되는 밑 부분에 커서가 존재하는데 이 커서를 홈의 위치(0번지)로 돌아가게 하는 것으로 DD RAM의 내용은 변하지 않는다.(즉, 표시된 글자는 변하지 않는다.) 명령의 실행 시간은 1.52ms시간이 걸리므로 시간지연을 하여주어야 한다.
표시 On/Off Control
DB3번 비트가 1인 경우로서 전체 디스플레이(D)의 ON/OFF 제어, 커서(C)의 ON/OFF 제어, 그리고 커서위치에 있는 문자를 깜빡(B)이게 하는 기능을 한다.
- D : 글자가 표기되는 디스플레이를 ON/OFF하기 위한 변수이다.
D=1 이면 글자가 표기되는 디스플레이부분이 ON되어서 글자가 나타난다.
D=0 이면 글자가 표기되는 디스플레이부분이 OFF되어서 글자가 나타나지 않는다.
( ※ 이때, 디스플레이부분의 글자 데이터가 DD RAM에 남아 있기 때문에 D=1로 하면 글자가 디스플레이 부분에 다시 나타난다. )
- C : 커서부분의 ON/OFF 제어하는 변수이다.
C=1 이면 커서가 나타난다.
C=0 이면 커서가 나타나지 않는다. (5×8의 문자 폰트의 경우 8행째에, 5×10도트 경우 11행째에 커서가 존재한다. )
- B : 커서의 위치에 있는 문자를 깜박이게 하는 변수이다.
B=1 이면 커서 위치의 문자를 깜박인다.
B=0 이면 커서 위치의 문자를 깜박이지 않는다.
Address Set
DB7번의 비트가 1인 경우로서 DD RAM의 어드레스를 설정하는데 이용된다. 어드레스의 설정 후 DD RAM의 데이터를 받거나 전송할 수 있다. DD RAM의 어드레스는 DB7~DB0 7비트까지 설정가능하며 이 번지가 설정되면 디스플레이 라인은 설정하는 N의 값에 따라서 번지가 결정된다.
(즉, N = 0 : ADD는 0x00 ~ 0x4F, N =1 : ADD는 0x00~0x27(첫 번째 라인) , 0x40~ 0x67(두 번째 라인)의 번지 값을 갖는다.)
커서 shift
B4번 비트가 1인 경우로서 DD RAM의 내용을 변화하지 않는 상태에서 커서를 움직이게 하고, 글자가 표기되는 디스플레이부분을 시프트 하기 위한 명령어이다. 이들의 기능은 S/C, R/L에 어떠한 값을 설정하느냐에 따라서 결정되어진다.
-S/C =0, R/L =0 : 커서는 왼쪽으로 이동한다.(어드레스 카운터를 -1 감소한다)
-S/C =0, R/L =1 : 커서는 오른쪽으로 이동한다.(어드레스 카운터를 +1증가한다)
-S/C =1, R/L =0 : 전체의 디스플레이와 커서를 왼쪽으로 쉬프트 한다.
-S/C =1, R/L =0 : 전체의 디스플레이와 커서를 오른쪽으로 쉬프트 한다.
Function Set
DB5번 비트가 1인 경우로서 LCD를 사용하기에 앞서 우선되어야할 LCD의 초기화를 설정하기 위한 명령을 나타낸다. 이 명령어가 설정하는 기능은 몇 비트로서 인터페이스를 할 것인지를 결정하는 데이터라인(DL), 글자를 표기하는 디스플레이의 총 라인수(N), 글자 폰트를 나타내기 위한 폰트(F)로서 구성되어져 있으며, 이 명령어가 실행되기 위한 시간은 37μs이다.
- DL : 몇 비트의 라인으로서 인터페이스를 할 것인지를 결정한다.
DL =1 이면 8비트(DB7~DB0)라인을 사용해서 인터페이스 할 수 있다.
DL =0 이면 4비트(DB7~DB4)라인을 사용해서 인터페이스 할 수 있다.
(이때는 상위 4비트의 데이터 전송을 하고, 다음에 하위 4비트의 데이터를 전송해야 한다. )
- N : 글자를 표기하는 디스플레이 라인의 수를 결정한다.
- F : 글자 폰트를 결정한다.
N
|
F
|
표시행수
|
문자폰트
|
듀티비
|
0
|
0
|
1
|
5X7 도트
|
1/8
|
0
|
1
|
1
|
5X10 도트
|
1/11
|
1
|
X
|
2
|
5X7 도트
|
1/16
|
LCD 구동(초기화)
Rs
|
R/W
|
DR
|
DB6
|
DB5
|
DB4
|
DB3
|
DB2
|
DB1
|
DB0
|
15ms 이상 delay
| |||||||||
0
|
0
|
0
|
0
|
1
|
1
|
*
|
*
|
*
|
*
|
4.1ms 이상 delay
| |||||||||
0
|
0
|
0
|
0
|
1
|
1
|
*
|
*
|
*
|
*
|
100us 이상 delay
| |||||||||
0
|
0
|
0
|
0
|
1
|
1
|
*
|
*
|
*
|
*
|
0
|
0
|
0
|
0
|
1
|
1
|
N
|
FL
|
*
|
*
|
0
|
0
|
0
|
0
|
0
|
0
|
1
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
1
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
1
|
I/D
|
S
|
댓글 없음:
댓글 쓰기