이번에는 TEXT LCD를 제어 하는 것을 공부 해 보았다.
LCD 제어 하는 것을 처음 하는 것이라 공부를 하면서 한다고
시간 좀 걸렸다.
먼저 브레드 보드 판을 조금 수정했는데 그것을 보면
이런식으로 LCD에 맞추어 포트를 연결 하고 가변저항도 달았다.
처음에는 아무것도 모르는 상태라서 인터넷의 카페에 있는 소스를 사용하여 출력을 시켜 보았는데
생각대로 출력이 되지 않아서 많은 고생을 했다.
지금은 그래도 어느정도 소스를 이해 하고 LCD 제어 내용도 조금은 이해를 하여
쉽게 할 수 있었지만..
여기에서 중요한것은 지금 포트 A, B를 사용하고 있는데
여기에서 ISP를 사용하여 꿉을 때는 꼭 포트 B의 ISP 핀 부분을 제거 하든지
LCD를 떼어서 사용을 안한 상태에서 해야 된다는 것을 알게되었다.
제거를 안하게 되면 계속 연결이 안된다고 하는 (-24) 오류가 생기는 것을 알게 되었다.
간단하게 LCD에 대해서 알아보면
먼저 핀의 종류는 14핀과 16핀이 있는데
16핀을 먼저 보게 되면
A라고 되어 있는 곳은 15핀이고 K라고 되어 있는 곳은 16핀이다.
이렇게 15, 16핀은 백 라이트를 사용할 때 필요하다.
즉 백라이트가 없으면 14핀의 LCD가 된다는 것이다.
여기에 4,5번핀이 명령어를 쓰는지 데이터를 읽고 쓰는 것을 하도록 하는 핀이며
6번핀은 LCD가 동작 하도록 신호를 주는 것이며
7~14핀은 데이터를 받는 곳이다
4번 5번핀의 값을 보면서 설명을 간단하게 하면
RS(4) R/W(5) 내용
0 0 IR(Instruction Register) 쓰기 동작
0 1 Busy 플래그 / 어드레스 카운터 읽기
1 0 DR(Data Register) 쓰기 동작
1 1 DR(Data Register) 읽기 동작
이렇게 알면 된다.
여기서 LCD의 명령어들을 보게 되면
주로 쓰는 것을 간단하게 보면
Clear Display는 0x01로 LCD화면을 깨끗하게 만들고 1행 1열로 커서를 이동시키는 명령어이며
Entry Mode Set은 커서의 움직이는 방향과 디스플레이 이동 여부를 설정하는 것으로
I/D는 커서의 방향 설정으로 1은 어드레스를 +1로 하고 커서를 우측으로 이동
0은 어드레스를 -1로 하고 커서를 좌측으로 이동
S는 디스플레이 이동 여부로 1은 데이터를 써넣은 후에 표시전체를 좌나 우로 이동시키기 위한 설정
비트이며 0은 동작하지 않도록 한다.
Display ON/OFF Control은 DDRAM의 내용을 변경 시키지 않은 상태에서 커서를 움직이거나 표시 전체를 이동하는 것으로
S/C가 0이고 R/L이 0일때 커서의 위치를 좌로 이동
S/C가 0이고 R/L이 1일때 커서의 위치를 우로 이동
S/C가 1이고 R/L이 0일때 표시와 커서를 좌로 이동
S/C가 1이고 R/L이 1일때 표시와 커서를 우로 이동
Function Set은 인터페이스 길이를 결정하거나 표시 행수와 문자 폰트를 설정할 때 사용 하는 것으로
DL가 1일 경우는 7~14번 핀 모두를 사용한다는 것이고
0일 경우는 11~14번 핀만 사용한다는 것
N이 0이면서 F가 0일 경우는 표시 라인이 1이고 글자 폰트는 5*7폰트를 사용하며 듀티비는 1/8
N이 0이면서 F가 1일 경우는 표시 라인이 1이고 글자 폰트는 5*10폰트를 사용하며 듀티비는 1/11
N이 1이면 F에 상관없이 표시 라인이 2이고 글자 폰트는 5*7폰트를 사용하며 듀티비는 1/16
이정도만 알고 있으면 괜찮을 것 같았다.
참고 : HY-1602H-803의 데이터 시트
'AVR' 카테고리의 다른 글
TEXT LCD 제어 실습(외부 인터럽트) (0) | 2009.07.21 |
---|---|
TEXT LCD 제어 실습 (0) | 2009.07.17 |
외부 인터럽트를 이용한 LED 켜고 끄기(실습) (0) | 2009.07.03 |
외부 인터럽트를 이용한 LED 켜고 끄기(이론) (0) | 2009.07.03 |
버튼 입력 받아 LED 켜고 끄기 (0) | 2009.07.02 |