본문 바로가기
코스웨어/16년 스마트컨트롤러

2016-07-05_조재찬_스터디일지-LCD 모듈 제어

by 알 수 없는 사용자 2016. 7. 5.
728x90
반응형

IR (명령 레지스터) : LCD 모듈 환경 설정

DR (데이터 레지스터) : LCD 모듈에 글자를 나타내기 위한 데이터 값 기록



LCD 컨트롤러 내부는 IR,DR과 문자를 표시하기 위해 사용되는 DDRAM, CGRAM, CGROM으로 구성



LCD 모듈은 보통 총 14핀 또는 16핀 구성 (16핀은 백라이트 구동을 위한 전원단자 2핀 추가)


1,2번 : LCD 모듈 구동전원 인가

3번 : LCD 표시장치 밝기 조절 (밝기 조절시 가변저항 연결, 필요없으면 GND 연결)


4-6 : LCD 제어 (RS, R/W, E) 

RS (4번) - 입력단자로서 LCD 모듈의 명령 또는 데이터 레지스터 선택

0이면 IR, 1이면 DR 선택


R/W (5번) - 데이터 또는 명령을 읽고, 쓰기할때 사용

0이면 쓰기 (CPU에서 LCD 모듈로 데이터 씀)

1이면 읽기 (LCD모듈에서 CPU로 데이터 읽음)


E (6번) - 활성화되어있으면 데이터 교환이 이루어짐

HIGH (1 입력) 일때 데이터 교환 가능, 0일때는 데이터 교환 불가능


7-14 : Data Bus (4비트 방식 제어시 11-14번만 이용됨)

마이크로 컨트롤러와 인터페이스를 할 경우에는 읽기 쓰기 타이밍을 고려해야 함(데이터 시트 타이밍도 참고)




IR (명령 레지스터)

: LCD의 제어에 필요한 명령 저장, 표시 데이터 DDRAM 위치주소와 문자발생기 CGRAM 위치 지정하기 위한 주소정보 저장


DR (데이터 레지스터)

: 화면에 표시할 데이터 또는 새로운 글꼴에 대한 데이터 임시 저장

데이터를 쓸 때는 IR에 의해 지정된 DDRAM 또는 CGRAM 주소로 데이터 전달

읽을때는, IR에 의해 지정된 DDRAM 또는 CGRAM 주소의 데이터가 마이크로 컨트롤러로 전달



제어 명령어는 데이터 시트를 참고

HY-1602W-204-LCD.pdf

케릭터 LCD 명령어 설명.pdf




비지 플래그 

: 연속적으로 LCD 모듈에 제어명령이 입력될 때, LCD 모듈이 이 명령을 처리할 수 있는가를 나타내는 상태 표시 플래그 

RS가 0 (IR), R/W가 1(읽기)일때 출력된다.


BF = 0 : LCD 모듈로 다음 명령을 쓸 수 있다.

BF = 1 : LCD 컨트롤러가 현재 IR로 입력된 명령어 처리하는 상태, 다음 제어 명령을 쓸수 없는 상태를 나타냄.








DDRAM (Display Data RAM)

화면에 표시할 8비트 문자를 저장 (표시되지 않는 영역의 RAM은 일반적 데이터 저장용 메모리로 사용가능)


CGROM (Character Generator ROM)

문자 패턴을 저장




 HY-1602W-204-LCD.pdf (CGROM에 저장된 내용은 데이터 시트 11p 참고)




CGRAM (Character Generator RAM)

사용자가 원하는 문자 패턴을 만들때 사용



화면 클리어

#define CLR    0x01 // 화면 전체 클리어 후, Return Home 명령


커서 홈

#define HOME  0x02 // 커서만 홈 위치로 보내는 명령


엔트리 모드 셋

: LCD 모듈에 데이터를 쓰기/읽기 수행할 경우 DDRAM주소 즉, 커서 위치를 오른쪽으로 증가 또는 왼쪽으로 감소시킬것인가를 결정하는 기능 수행

또한, 커서 위치는 변하지 않고 화면을 이동시킬지(shift) 결정



DB2 bit를 1로 설정 


1비트=I/D

I/D = 1일때 커서 또는 깜박임 위치가 우측 이동 (주소 +1)

I/D = 0일때 커서 또는 깜박임 위치가 좌측 이동 (주소 -1)


0비트=S    

S = 1, I/D=1일 때, 좌로 쉬프트

S = 1, I/D=0일 때, 우로 쉬프트

S = 0, 화면 쉬프트 되지 않음


* CGRAM도 같은 방법으로 적용



Display ON/OFF Control

: 화면의 ON/OFF, 커서의 ON/OFF, 커서위치에 있는 문자 점멸 등의 기능 설정

예) IR_Write(0x0E); // Display on/off DDRAM, 커서를 화면에 표시


* 더 자세한 명령어 설정은 데이터 시트 참고


커서 표시 시프트

: 커서의 위치 또는 표시할 데이터의 읽기 또는 쓰기없이 (DDRAM 내용 변경없이)

오른쪽/왼쪽으로 이동.


2줄을 표시할 경우 첫번째줄의 끝을 넘을 경우 두번째 줄 이동


* 첫번째줄과 두번째 줄이 동시 이동

데이터 쉬프트해도 두번째 줄 데이터는 첫번째 줄에 표시안됨

쉬프트 해도 AC는 변하지 않음



Function Set

: Function Set은 LCD를 사용하기 앞서 선행되어야 한다.

(busy flag와 어드레스 명령을 제외한 다른 명령이 실행되기전에 프로그램 앞 부분에 실행되어야 함)



DL : 인터페이스 길이

1이면 데이터 길이 8비트 설정

0이면 데이터 길이 4비트 설정 (DB7-DB4사용), 이 경우 두번에 나누어 먼저 상위 4비트 전송하고, 하위 4비트 전송해야 함


N : 표시줄의 숫자 (0이면 1줄, 1이면 2줄)


F : 문자 폰트 설정 (0이면 5x8, 1이면 5x10)




CGRAM, DDRAM 주소 설정



CGRAM에 새로운 문자를 만들고자 할 경우 IR레지스터의 DB6 비트를 1로 설정(AC는 주소로서 전달)


DDRAM에 주소를 설정한 후에 데이터를 송수신하려면 DB7 비트를 1로 설정

N=0이면 한개의 라인을 가지며, 7비트 (AC0-AC6)는 0x00~0x4F로 설정


N=1이면, 두개의 줄을 가지며

첫번째 줄의 주소는 0x00~0x27

두번째 줄의 주소는 0x40~0x67까지로 설정

728x90