[아두이노] 아두이노로 LCD 사용하기#2



안녕하세요 대짜이찐입니다.

이전에 아두이노로 LCD 사용하기라는 포스팅을 한적이 있습니다.

이전 포스팅에서는 I2C 통신이 되는 1602 캐릭터 LCD만 다뤘었는데요.

이번 시간에는 I2C통신으로 제어하는 LCD가 아닌 
일반 1602, 2004 캐릭터 LCD와
 128x64 그래픽 LCD에 대해 다뤄보겠습니다.

우선 일반 1602, 2004 캐릭터 LCD의 핀맵입니다.
16개의 핀으로 이루어져 있습니다.



아두이노와의 연결은 아래 표와 회로도를 참고해주세요.

NO.아두이노일반 LCD비고
1GNDVSSGround
25VVDDVcc
3


-

VO

Contrast Adjustment
4D12RSResistor Select
5GNDR/WRead/Write
6D11EEnable
7-D0Data Bus 0
8-D1Data Bus 1
9-D2Data Bus 2
10-D3Data Bus 3
11D5D4Data Bus 4
12D4D5Data Bus 5
13D3D6Data Bus 6
14D2D7Data Bus 7
155VABack Light Anode

16

GND

K

Back Light Cathode



VO은 10kΩ 가변저항에 연결하여 사용 LCD의 밝기 조절을 해줍니다.

아래 예제는 "hello, World"를 출력해보는 예제입니다.

/*
LiquidCrystal test

 The circuit:
* LCD RS pin to digital pin 12
* LCD Enable pin to digital pin 11
* LCD D4 pin to digital pin 5
* LCD D5 pin to digital pin 4
* LCD D6 pin to digital pin 3
* LCD D7 pin to digital pin 2
* LCD R/W pin to ground
* LCD VSS pin to ground
* LCD VCC pin to 5V
* 10K resistor:
* ends to +5V and ground
* wiper to LCD VO pin (pin 3)
*/

// LiquidCrystal 라이브러리 포함
#include <LiquidCrystal.h>
// 아두이노에 연결된 lcd핀 라이브러리 초기화
const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
void setup()
{
 // lcd의 행렬 수 설정(열,행)
 lcd.begin(16, 2);
}
void loop()
{
 // 커서 설정(열,행) 0부터 시작
 lcd.setCursor(0, 0);
 lcd.print("hello,");
  lcd.setCursor(0, 1);
 lcd.print("world!");
}

만약 2004 캐릭터 LCD를 사용하신다면 lcd.begin(16, 2); 부분을
lcd.begin(20, 4);로 바꿔주시면 됩니다.



128x64 그래픽 LCD 핀맵입니다.

20가지의 핀으로 연결되어 있으며,
아두이노와의 연결은 아래표와 회로도를 보시면 됩니다.

NO.아두이노그래픽 lcd비고
1GNDGNDGround
2+5VVCCVcc

3


-

VO

Contrast Adjustment
4D10RS(D/I)Resistor Select
5D11R/WRead/Write
6D12EEnable
7D2DB0Data Bus 0
8D3DB1Data Bus 1
9D4DB2Data Bus 2
10D5DB3Data Bus 3
11D6DB4Data Bus 4
12D7DB5Data Bus 5
13D8DB6Data Bus 6
14D9DB7Data Bus 7
15+5VPSBInterface Selection
16-NCNot Connect
17-RSTReset

18


-

VOUT

Output LCD Voltage
19+3.3VBLABack Light Anode

20

GND

BLK

Back Light Cathode

VO은 10kΩ 가변저항에 연결하여 사용 LCD의 밝기 조절을 해줍니다.



128x64 그래픽 LCD의 경우 라이브러리를 다운받아줘야 합니다.
아래링크에서 U8gib 라이브러리를 다운로드해주세요.
https://code.google.com/archive/p/u8glib/



U8Glib for Arduino에 있는 다운로드 버튼을 클릭해줍니다.



해당 .zip파일을 다운로드받아서 아두이노 라이브러리에 추가시켜줍니다.

아래 예제는 "Hello, Device Mart!"를 출력해보는 예제입니다.


/*
u9glib.h 라이브러리를 사용해 그래픽 lcd 테스트
아래링크에서 u8glib 라이브러리 다운로드

www.devicemart.co.kr
*/

#include "U8glib.h"

// 8Bit Com: D0~D7= 2,3,4,5,6,7,8,9 EN=12, D/I(RS)=10, RW=11
U8GLIB_ST7920_128X64_1X u8g(2, 3, 4, 5, 6, 7, 8, 9, 12, 10, 11); 

void setup()
{

}

void draw(void)
{
      u8g.setFont(u8g_font_unifont); // 폰트설정
      u8g.setPrintPos(0,10); // 출력위치설정
      u8g.print("Hello,"); // 출력
      u8g.drawStr(10,30, "Device Mart!"); // 좌표 (10,30)에서  출력
}

void loop()
{
//첫번째 페이지부터 마지막 페이지까지 draw 함수 호출
  u8g.firstPage();
  do
  {
       draw();
  }
   while(u8g.nextPage());
}

본포스팅에 사용된 모든 부품은 디바이스마트에서 구매하실 수 있습니다.
http://www.devicemart.co.kr/main/index

감사합니다.



댓글 쓰기

0 댓글