LCD 모듈의 특징 LCD 컨트롤러 내장으로 모든 디스플레이 기능을 명령어로 제어 8비트 혹은 4비트로 인터페이스 디스플레이 포맷 : 16문자, 2라인 글자 폰트 : 5 x 7 도트 +5[V] 단일 전원
내부 블록도
LCD 모듈 핀 기능
문자 코드 및 문자 모양 CG ROM 192종류 문자 5 x 7 도트 매트릭스
CG RAM 사용자 프로그램으로 문자 패턴 발생
LCD 모듈 명령 예
LCD 모듈 명령 예
LCD 초기화 전원 투입 Delay 15ms Delay 5ms Delay 100us COMMAND(0x3f); RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 1 * COMMAND(0x3f); Delay 5ms RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 1 * COMMAND(0x3f); Delay 100us RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 1 * COMMAND(0x3f); RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 1 COMMAND(0x38); // 8비트 모드 COMMAND(0x08); // 디스플레이 오프 COMMAND(0x01); // 디스플레이 클리어 COMMAND(0x06); // 엔트리 모드 셋 COMMAND(0x0f); // 디스플레이 온
명령어 COMMAND(0x01); //화면 클리어, 커서 홈 COMMAND(0x02); //홈 리턴, 커서 홈으로 셋 RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 1 COMMAND(0x01); //화면 클리어, 커서 홈 RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 1 COMMAND(0x02); //홈 리턴, 커서 홈으로 셋 COMMAND(0x80); //커서 1라인 1번째 COMMAND(0xc0); //커서 2라인 1번째 COMMAND(0xd0); //커서 라인 끝으로 RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 1 RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 1 S COMMAND(0x07); //커서 좌로 시프트(S=1) COMMAND(0x05); //커서 우로 시프트(S=0) COMMAND(0x0*); //화면, 커서 제어 디스플레이 ON(D=1), OFF(D=0) 커서 ON(C=1), OFF(C=0) 커서 깜빡임(B=1), 커서 안 깜빡임(B=0) RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 1 D C B RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 1 R/L COMMAND(0x1*); //커서 시프트 왼쪽으로 시프트(R/L=0), 오른쪽으로 시프트(RL=1) RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 1 R/L COMMAND(0x1*); //화면과 커서를 함꼐 시프트 R/L : 왼쪽으로 시프트(0), 오른쪽으로 시프트(1)
명령어 COMMAND(0x2*); //4비트 인터페이스(DL=0) COMMAND(0x3*); //8비트 인터페이스(DL=1) RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 1 DL N F COMMAND(0x2*); //4비트 인터페이스(DL=0) COMMAND(0x3*); //8비트 인터페이스(DL=1) 폰트결정 5X7(N=0, F=0), 5X10(N=0, F=1) RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 1 X COMMAND(0x40 | XX); C.G.RAM 어드레스 설정 RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 1 X C.G.RAM과 D.D.RAM에 데이터 쓰기 RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 1 X C.G.RAM과 D.D.RAM의 데이터 읽기 RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 1 BF X BF=1 이면 LCD 내부에서 명령수행 중으로 다음 명령을 받을 수 없다. BF=0 이면 명령을 받을 준비가 되어 있다.
예제 전원투입 및 LCD 초기화 실행 D.D.RAM에 데이터 쓰기 : ‘H’(0x48) RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 1 D.D.RAM에 데이터 쓰기 : ‘H’(0x48) RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 1 D.D.RAM에 데이터 쓰기 : ‘A’(0x41) RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 1 D.D.RAM에 데이터 쓰기 : ‘N’(0x4E) RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 1 D.D.RAM에 데이터 쓰기 : ‘G’(0x47) RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 1 COMMAND(0xc0); //커서 2라인 첫번째로 이동 RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 1 D.D.RAM에 데이터 쓰기 : ‘G’(0x47) RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 1 D.D.RAM에 데이터 쓰기 : ‘O’(0x4F) RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 1 D.D.RAM에 데이터 쓰기 : ‘N’(0x4E) RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 1 D.D.RAM에 데이터 쓰기 : ‘G’(0x47) RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 1 COMMAND(0x02); //커서 홈으로 이동
위치지정 COMMAND(0x80); //커서 1라인 1번째로 이동 RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 1 COMMAND(0x80); //커서 1라인 1번째로 이동 RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 1 CHAE_O(0x48); //D.D.RAM에 데이터 쓰기 : ‘H’ RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 1 COMMAND(0x87); //커서 1라인 8번째로 이동 RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 1 CHAE_O(0x48); //D.D.RAM에 데이터 쓰기 : ‘H’ RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 1 COMMAND(0xc0); //커서 2라인 1번째로 이동 RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 1 CHAE_O(0x47); //D.D.RAM에 데이터 쓰기 : ‘G’ RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 1 COMMAND(0xc4); //커서 2라인 5번째로 이동 RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 1 CHAE_O(0x47); //D.D.RAM에 데이터 쓰기 : ‘G’