Character LCD에 데이터/명령어 입력하기(Write)
arm칩과 character lcd를 연결해보겠다.
우선 캐릭터 lcd의 data sheet를 다운받는다.
모델명(16216D-4-B102A)으로 구글에서 검색해보니 쉽게 다운이 가능했다.
위의 표는 해당 모델의 각 핀의 역할에 대해서 서술한 것이다.
1~3번과 15, 16번 핀은 전원과 관련된 핀이고,
4~6번은 데이터 입출력 컨트롤을 할 수 있는 핀이다.
7~14번은 데이터 전송 버스 핀이다.
전원핀은 VCC GND에 맞춰서 연결해주면 되고, 데이터 버스 핀(7~14)는 한번에 8 bit씩 전송가능한 데이터 전송 경로이다.
이 중 데이터를 전송할것인지 수신할것인지를 컨트롤 할 수 있는 4, 5, 6번 핀이 가장 중요하다.
이제 4, 5, 6번핀의 사용법을 알려주는 TIMING DIAGRAM을 살펴보자.
아래 표는 WRITE명령을 수행할 때의 다이어그램이다.
위의 표는 가로축은 시간을 표시하고 세로축은 HIGH냐 LOW냐를 알려준다.
① : 모두 대기 상태로 HIGH와 LOW상태가 같이 혼재하는 것은 쓰레기값이 들어가 있는것을 표현한다.
② : RS - H와 L이 교차하는 상태(데이터 OR 명령어)는 둘 중하나를 선택하는 중이라는 표시다.
R/W - H가 하강하고 있는데 R/W에서 LOW상태는 데이터 입력(WRITE)이다.
지금 이 표는 WRITE명령을 수행할 때의 다이어그램이므로 LOW로 하강하는 상태를 보여준다.
③ : RS - 이미 Data 인지 Instruction 인지 선택한 상태이다.
R/W - WRITE모드인 LOW로 지정되어있다.
E - Data가 전송할 수 있도록 Low에서 High로 변화중이다.
④ : E - Data가 전송될 수 있는 상태로 세팅되었다.
DB0~7 - 데이터 버스에 전송할 데이터를 준비 중이다.
⑤ : DB0~7 - 데이터 버스를 통하여 열심히 전송 중이다.
⑥ : E - 데이터 전송을 마무리 짓기 위해 Low로 하강 중.
DB0~7 - 계속 유효한 데이터를 전송 중.
⑦ 모두 원상태로 복귀중인 모습이다.
위의 ①~⑦번 상태가 데이터 전송의 한 싸이클을 나타낸다.
데이터를 전송할 때 마다 이와같은 과정을 반복하게 된다.
핀의 신호가 바뀌는 순서를 정리하자면
① 4번 RS핀이 데이터인지 명령어인지 선택하고 5번 R/W핀이 WRITE 상태로 바뀐다.
② 6번 E핀이 데이터가 전송 가능하도록 Low에서 High로 바뀐다.
③ 7~14번 DB핀이 데이터를 전송한다.
의 순서를 거치게 된다.
LCD에 원하는 대로 데이터를 쓰려면(Write) 위와 같은 순서를 지켜
프로그래밍을 해야 하는 것이다.