Skip to content

i2c lcd (PCF8574 chip)

i2c 통신으로 간편하게 lcd display를 제어할 수 있다. 다양한 제조사에서 만드는 비슷한 제품들이 많은데, 사용법은 다 대동소이하다.

하드웨어 연결

arduino uno, nano, promini 모두 A4, A5가 i2c 통신을 위해 할당되어있다.

i2c address

하나의 mcu(아두이노)에 i2c 디바이스를 여러개 연결할 수 있는데, 이 때 각 디바이스를 구분하기 위해 고유한 i2c address를 갖도록 한다. i2c lcd는 출하시 기본 0x27을 주소로 갖고있고, pcb위의 A0, A1, A2 패드를 연결하느냐에 따라 0x20~0x27로 설정할 수 있다.

(1= 연결안됨. 0 = 연결됨)

i2c lcd library

라이브러리 설치

아두이노 ide에서 메뉴 > 스케치 > 라이브러리 포함하기> 라이브러리 관리 > LiquidCristal I2C 검색 & 설치 https://github.com/marcoschwartz/LiquidCrystal_I2C

note: 한글출력 가능한 버전도 있다. https://github.com/junwha0511/LiquidCrystal_I2C_Hangul

기본 사용법

기본 제공되는 hello world 예제를 보면 사용법이 간단하다. (2행16열 버전으로 바꾸었다.)

// LiquidCristal I2C/ HelloWorld.ino

#include <Wire.h>
#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x27,16,2);  // set the LCD address to 0x27 for a 16 chars and 2 line display

void setup()
{
  lcd.init();                      // initialize the lcd
  lcd.init();
  // Print a message to the LCD.
  lcd.backlight();
  lcd.setCursor(3,0);
  lcd.print("Hello, world!");
  lcd.setCursor(2,1);
  lcd.print("I love Arduino!");

}


void loop()
{
}

kokoafab에 함수가 잘 정리되어있어 가져왔다.: https://kocoafab.cc/tutorial/view/689

함수 하는 일
lcd.begin() LCD를 사용을 시작
lcd.display() LCD에 내용을 표시
lcd.noDisplay() LCD에 내용을 숨김
lcd.setCursor(col,row) row, col의 좌표로 커서를 위치
lcd.cursor() LCD에 커서를 표시
lcd.noCursor() LCD에 커서를 숨김
lcd.home() 커서의 위치를 0,0으로 이동
lcd.blink() 커서를 깜빡임
lcd.noBlink() 커서를 깜빡이지 않음
lcd.backlight() LCD backlight을 킴
lcd.noBacklight() LCD backlight를 끔
lcd.write(val) LCD 화면에 val 출력(아스키 코드 입력 시에는 아스키 코드에 해당하는 문자 출력)
lcd.print(val) LCD 화면에 val 출력
lcd.clear() LCD 화면의 모든 내용 지움
lcd.scrollDisplayRight() 내용을 우측으로 1칸 이동
lcd.scrollDisplayLeft() 내용을 좌측으로 1칸 이동
lcd.autoscroll() 내용을 자동으로 우에서 좌로 스크롤