CLCD 3/3 – CLCD with 74HC595
By suapapa
아두이노는 대략 16개의 포트가 있습니다. 충분한가요? 하지만,
CLCD를 연결 하려니 11개의 포트가 필요하네요?
- D0~D7(data 8bit)
- RS(cmd or char)
- RW(read or write)
- E(for timing)
거기다, 백라이트를 위해 1개를 더 쓰면 포트가 네개 남습니다.
이제 슬슬 똥줄이 탑니다.
전자시계 (+3) 라도 만들라 치면 거의 모든 포트를 다 사용하네요. GG :$
이 정도의 전자시계를 대륙에서는 -물 건너 오는 비용과 예쁜 케이스까지 포함하고-
몇 천원 정도에 만들고 있습니다!
똑같은 -그지같은- 상황에 직면 하셨던 선지자 님들 덕에 CLCD에는 4bit모드라는게 있습니다.
한 바이트를 두번에 나눠 전달하여 출력핀을 절약하는 방법이죠.
- D4~D7(data 4bit)
- RS(cmd or char)
- E(for timing)
이제 6선 만으로 CLCD에 문자를 뿌릴 수 있습니다. 충분한가요?
나는 아직도 목 마르다. - 히딩크
이 포스트에서는 **3선만으로 CLCD를 제어**하는 방법을 소개합니다.
아두이노 사이트에서 74HC595칩을 사용한
ShiftOut 예제에 힌트를 얻어,
이 칩을 사용해 CLCD를 제어해 보았습니다.
네. 돈 발랐습니다. -히딩크 감독님을 모실 만큼 처 바른건 아니고…-
74HC595 칩은 사실 몇 백원 정도에 살 수 있는 대중적인 칩 입니다.
왼쪽의 Data, Clk, Latch 세 선만으로 CLCD제어에 필요한
오른쪽 6개의 신호를 시리얼로 받아 표시 해 줍니다.
저항 하나 필요 없는 그야말로 간단한 구성!!
타이밍 문제와 제가 산 CLCD의 데이타 시트에 4bit 초기화 과정에 없어서 삽질을 좀 했지만…
다 해결하고 라이브러리로 정리했습니다.
다은은 연결 예제:
아두이노 예제:
#include <CLCD595.h>
//create a CLC595 object to control an lcd
CLCD595 lcd = CLCD595(12, 11, 10); //data, clk, latch
char string1[] = “CLCD with\nonly 3 wires!”;
void setup(void)
{
lcd.init(); //initialize the LCD
digitalWrite(13, HIGH); //turn on an LED for debugging
}
void loop(void)
{
lcd.clear(); //clear the display
delay(1000); //delay 1000 ms to view change
lcd.putStr(string1); //send the string to the LCD
delay(1000); //delay 1000 ms to view change
} //repeat forever
같은 일을 하는 I2C 칩을 사용하면 두 선 만으로 제어할 수도 있겠습니다.
단, 칩 가격인 5배 정도 이고(흠.), smd(으악!) 를 땜 할 자신이 있다면…