재잼재잼의 티스토리

7. CLCD 사용하기 본문

MCU

7. CLCD 사용하기

재잼재잼 2019. 1. 22. 12:57

이번에는 MCU에서 데이터를 출력하기 위한 LCD에 대해서 알아보자.


16 * 2 CLCD를 사용한다.



1602 LCD 되겠다. 어디서든 쉽게 볼 수 있는 LCD고, 총 16개의 핀이 있다.


VSS, VDD, V0, RS, RW, E, D0~D7, A, K



각각의 핀은 위와 같은 역할을 수행한다.


LCD에 전원 공급을 위해서 1, 2, 3번 핀은 꼭 연결해 줘야하며, MCU에서 제어하기위해서는 4, 5, 6번 핀과, 7~14번 핀(8bit모드) 또는 11~14번 핀(4bit 모드)을 연결해 주어야한다.



15번, 16번은 꼭 LCD백라이트 핀으로 연결하지 않아도 동작에는 지장이 없지만 사람이 보는데 지장이 생긴다.


위 사진 처럼 잘 보기 힘들다. 그러니까 꼭 연결해주도록 하자...


----------------------------------------


이제 핀을 연결해야 하는데 어떻게 연결해야하나


데이터시트에 따르면 위와 같이 연결하면 되는데,,


VDD     ->    +5 V

V0        ->   가변저항

VSS      ->    GND

LED+    ->    +5V

LED-     ->    GND


을 제외한 나머지 핀은 MCU의 출력핀에 꽂아주면 된다. D0~14핀의 경우에는 사용하는 데이터 비트 모드에 따라 결정한다.


나는 4bit 모드를 사용하기 때문에 PD4~PD7까지 데이터 핀으로 사용하고, PB5~PB7까지는 RS, RW, E핀으로 사용하였다.


----------------------------------------------


사용을 위한 핀 설명


 RS


레지스터를 선택하기 위한 신호를 출력함.

HIGH(1) : 데이터 레지스터 ( Data Register )

LOW(0) : 명령 레지스터( Instruction Register )


 RW


읽기/쓰기 모드를 선택하기 위한 신호를 출력함 .

HIGH(1) : 읽기 모드

LOW(0) : 쓰기 모드


 E

 

읽기/쓰기 동작을 수행하기 위한 Enable신호를 출력함.

DDRAM에 수행할 명령어나 데이터를 저장하고 Enable신호가 LOW가 되는순간(하강엣지) 에서 DDRAM에 저장된 명령어/데이터를 처리한다.



즉, RS핀을 HIGH로, RW핀을 LOW로 두고, 데이터핀에 출력할 데이터를 입력한 다음, Enable의 하강엣지를 발생시키면 LCD에서 DDRAM에 저장된 데이터를 처리하여 화면에 표시하는 과정으로 동작한다.


-----------------------------------------


데이터의 경우 그냥 출력할 8bit의 데이터를 입력해주면 되지만, 명령 레지스터에 입력할때는 명령코드에 맞춰 입력해줘야한다.


LCD에서 처리할 수 있는 명령코드는 무엇인지 알아보자.



데이터시트를 토대로 정리한 표다.


위의 명령코드를 사용하여 LCD초기화를 진행하고, 데이터를 입력하는등의 작업을 수행한다.


--------------------------------


LCD를 사용하기 위해서는  LCD초기화를 진행해야한다. 초기화 작업을 진행하지 않거나, 정상적으로 완료되지 않았을 경우에는 LCD의 1행이 'ㅁ'로 채워진 화면을 출력한다.


초기화 순서는 다음과 같다(AVR Atmega128 마스터, 윤덕용, Ohm사 의 책을 참고함.)


1. 전원을 투입

2. 초기화 수행 이전에 30ms이상 대기

3. Function Set 명령(0011****)을 보내고 4.1ms이상 대기, Function Set 명령(0011****)을 보내고, 100us이상 대기, Function Set 명령(0011****)을 보낸다.

4. Function Set 명령 (0011**00)을 보낸다.

5. Display On/Off 명령 (00001***)을 보낸다.

6. Entry mode Set 명령(000001**)을 보낸다.

7. DDRAM의 어드레스를 보낸다.


--> 3번 과정은 LCD에서 사용하는 드라이버의 종류에 따라 다르다. 나는 이전에 3번 과정을 작성하지 않아서 동작하지 않았던 적이 있어서 적어두었다.

--> Function Set 명령이 0011****인데, 이는 8bit모드를 사용할 경우고, 4bit모드를 사용하려면 4번 비트를 0으로 바꿔주면 된다.

--> 7번 과정은 LCD에서 출력할 수 있는 각 공간(?)마다 주소값이 정해져 있는데, DDRAM에 주소를 보내면 출력 위치를 결정하는 "커서"를 이동시킬 수 있다. (명령어의 set DDRAM addr 부분). LCD clear명령을 사용하면, DDRAM의 모든 내용을 지우고 커서를 0x00위치로 이동시키기 때문에 초기화 과정에서 사용한다.


위의 초기화 과정을 코드로 작성하면,


로 작성할 수 있다.

'MCU' 카테고리의 다른 글

9. ADC 및 Cds 사용하기  (1) 2019.01.28
8. CLCD 사용하기(2)  (0) 2019.01.23
6. UART 문자열 송/수신  (0) 2019.01.16
5.UART 문자 송/수신  (0) 2019.01.15
4. UART사용 - 초기화  (0) 2019.01.14