원문 : SparkFun

1. Nokia 5110 – 84×48 LCD Display

휴대폰이 문자와 통화만으로도 첨단기기 소리를 듣던 시절 휴대폰 액정으로 사용되었던다고 전해지는 84×48 픽셀 Nokia 디스플레이입니다. 좀 구식으로 보일지 몰라도 저전력으로 동작하고 저가로 구입할 수 있는 괜찮은 녀석입니다. 이미지/그래픽 작업이 가능하다는 점에서 일반적으로 많이 사용되는 16×1, 16×2, 16×4 디스플레이보다 더 유용하다고 생각되네요. 다만 5v 동작전압을 가진 아두이노 보드에서는 배선이 좀 까다로운 관계로 3.3v 동작 전압을 가진 아두이노 pro 시리즈와 잘 어울립니다.

45m x 45m PCB 크기에 PCD8544 CMOS LCD 콘트롤러가 내장되어 있으며 Serial bus를 사용해서 마이크로 콘트롤러와 통신합니다.

2. 연결 방법

제품에 따라 PCB의 핀 배열이 틀린 경우가 있습니다. 반드시 핀 배열을 확인하고 연결해야 합니다.

Pin 1 (VCC) +3.3V  (2.7~3,3V) 3.3V
Pin 2 (GND) Ground GND
Pin 3 (SCE) Active low D7 (변경가능)
Pin 4 (RST) Active high D6 (변경가능)
Pin 5 (D/C) Command mode (low) and data mode (high) D5 (변경가능)
Pin 6 (SDIN/MOSI) D11 (변경불가)
Pin 7 (SCLK) D13 (변경불가)
Pin 8 (LED) Max 3.3V (330Ω) D9 (PWM, 변경가능)

2개의 전원이 연결되는데 하나는 회로용, 하나는 백라이트로 사용되는 LED용 입니다. PCB를 뜯어보면 4개의 LED가 모서리에 배치되어 있는걸 볼 수 있는데 각각의 LED에 전류를 제한하는 저항이 달려있지 않기 때문에 그대로 3.3V를 연결하면 100mA를 잡아먹게 됩니다. 1번 Pin 으로 연결되는 로직에서 6~7mA 를 소비하는 것과 비교해보세요. 따라서 8번 핀에는 적절한 저항을 달아서 연결해줘야 합니다.

PCD8544 컨트롤러는 SPI 인터페이스와 유사한 Synchronous Serial 인터페이스를 이용해서 통신하기 때문에 clock (SCLK), data (DN) input, active-low chip select (SCE) input 처럼 SPI 에서 보던 핀들이 있습니다.

아두이노 와의 연결은 위 표를 참조하세요. 주의할 점은 5V 동작전압을 사용하는 아두이노 보드에서는 저항을 사용해 줘야한다는 겁니다. SCLK, DN, D/C, RST 핀에 연결되는 라인에는 10kΩ 저항을 연결하고 SCE 로 연결되는 라인에는 1kΩ 저항을 연결해줍니다. 330Ω 저항은 LED 핀에 연결해줍니다. 연결이 된 모습은 아래와 같습니다.

아두이노 Pro 3.3v 시리즈 또는 3.3v 동작전압을 가진 호환보드의 경우는 저항없이 연결이 가능해서 편리합니다. 아래는 Pro 3.3v 를 사용해서 연결한 예제입니다. Pro를 제외한 5V 아두이노 보드를 아래처럼 연결해도 동작은 한다고 하는데 각 핀에 3.6v 제한을 무시하고 연결하기 때문에 LCD 수명이 단축될 수 있습니다.

3. 소스 코드 (스케치)

LCD를 사용하는 몇 가지 방법이 있습니다. 아래 소스들 중 선택해서 사용하세요. 3번의 경우는 다양한 기능을 가진 그래픽 라이브러리를 제공하지만 RAM을 많이 잡아먹기 때문에 램을 많이 사용하는 프로젝트의 경우 가용램이 부족할 수 있습니다.

1. 문자, 직선 그리는 기능을 제공하는 간단한 방법: 아두이노 공식 페이지

2. 문자, 이미지 출력을 위한 헤더를 이용한 방법. SparkFun 사이트 혹은 아래에서 다운로드 받아서 사용하세요.

[wpdm_file id=25]

3. Adafruit 그래픽 라이브러리 : GitHub 페이지 (드라이버와 그래픽 라이브러리 2개를 받아서 사용해야 함)

LCD에 이미지를 출력하기 위해서는 일반 bitmap 이미지를 1bit bitmap 이미지로 변환해야 합니다. 변환 방법과 소스에서의 사용방법은 OLED Display – Section 3.3 을 참고하세요.

참고 :

SparkFun Tutorial, Ziruz, Arduino official page (include examples),