전자 프로젝트에 사용되는 LCD에는 여러 유형이 있습니다. 우리는 이미 많은 프로젝트에서 16X2 LCD를 사용했으며 Arduino와 함께 TFT LCD도 사용했습니다. 8051, AVR, Arduino 등과의 인터페이스를 포함하여이 링크를 따라 가면 전체 16X2 LCD 관련 프로젝트를 찾을 수 있습니다.
ST9720 그래픽 LCD는 정기 LCD는 완전히 다르다. 일반 LCD는 고정 된 크기의 간단한 텍스트 또는 숫자 만 인쇄 할 수 있습니다. 그러나 그래픽 LCD에는 8192 도트 또는 8192/8 = 1024 픽셀에 해당하는 128 * 64가 있으므로 문자와 별도로이 GLCD에 모든 그래픽 이미지를 표시 할 수 있습니다.
우리는 이미 GLCD를 8051과 인터페이스했으며, 오늘은 그래픽 LCD와 Arduino를 인터페이스하여 텍스트와 이미지를 표시 할 것 입니다.
필요한 재료
- Arduino UNO
- 128 * 64 그래픽 LCD ST9720
- 전위차계 -10k
- 전선 연결
- 브레드 보드
회로도
128 * 64 그래픽 LCD
이 그래픽 LCD는 전력 소비가 적고 배터리 전원 휴대용 장치에도 적합합니다. 2.2v ~ 5.5v의 넓은 작동 전압 범위를 가지며 직렬 및 8/4 비트 병렬 통신을 모두 지원하며 ST7290 LCD 컨트롤러 / 드라이버 IC 와 함께 제공됩니다. 인터페이스 통신 모드는 PSB PIN 15를 사용하여 병렬 및 직렬간에 전환 할 수 있습니다.이 그래픽 LCD는 자동 전원 켜기 재설정 기능이 있으며 8051, AVR, ARM, Arduino 및 Raspberry Pi와 같은 MCU로 쉽게 제어 할 수 있습니다.
ST7290 128 * 64 그래픽 LCD에 대한 자세한 정보는 데이터 시트를 참조하십시오.
핀 구성
핀 번호 |
핀 이름 |
기술 |
1 |
Gnd |
접지 터미널 |
2 |
Vcc |
입력 공급 전압 (2.7v ~ 5.5v) |
삼 |
Vo |
LCD 대비 |
4 |
RS |
등록 선택 RS = 0: 명령 레지스터 RS = 1: 데이터 레지스터 |
5 |
R / W |
읽기 / 쓰기 제어 |
6 |
이자형 |
활성화 |
7,8,9,10,11,12,13,14 |
DB0, DB1, DB2, DB3, DB4, DB5, DB6, DB7 |
데이터 핀 (병렬 8/4 비트 통신 모드에서 사용) |
15 |
PSB |
인터페이스 선택: 직렬 통신 모드의 경우 낮음 (0) 8/4 비트 병렬 버스 모드의 경우 높음 (1). |
16 |
체크 안함 |
연결되지 않은 |
17 |
RST |
핀 재설정 |
18 |
Vout |
LCD 전압 배가 출력. VOUT ≤ 7V. |
19 |
BLA |
백라이트 포지티브 공급 |
20 |
BLK |
백라이트 네거티브 공급 |
응용
- 산업용 장치
- 임베디드 시스템
- 보안
- 의료
- 휴대용 장비
이미지를 16 진수 코드로 변환:
그래픽 LCD에 이미지를 표시하려면 해당 이미지의 HEX 코드가 필요하므로 이미지를 HEX 코드로 변환하는 몇 가지 단계가 있습니다. 그 전에 이미지의 크기가 128 * 64를 초과하지 않아야합니다.
1 단계: 일반 이미지의 크기를 128 * 64 이하로 줄입니다. MS paint와 같은 이미지 편집 소프트웨어를 사용하여 수행 할 수 있습니다.
위 그림과 같이 이미지의 너비와 높이를 128 * 64로 설정했습니다.
2 단계: 그런 다음 이미지를 "image_name .bmp "형식 으로 저장해야 합니다.
위 이미지에 표시된 형식을 선택하고 추가 프로세스를 위해 파일을 저장하십시오.
3 단계: ".bmp"형식으로 저장 한 후 인쇄를 위해 이미지를 16 진수 코드로 변환 해야합니다. 이를 위해 Bmp 파일을 16 진수 코드로 변환하는 GIMP 2라는 소프트웨어를 사용하고 있습니다.
위 이미지와 같이 김프 2 소프트웨어에서“.bmp”형식 파일을 열었습니다.
스텝 4: 소프트웨어를 다운로드 한 후 인쇄하고 싶은 BMP 형식의 이미지 파일을 열고 다른 이름으로 저장 에서 " 라면.xbm " (X 비트 맵) 형식. 저장 한 후 메모장을 사용하여 해당 파일을 열면 이미지의 16 진수 코드가 표시됩니다.
아래 그림과 같이 내보내기 옵션을 선택하여 파일을 xbm 형식으로 저장 합니다.
아래 그림에 표시된 형식을 선택하고 이미지 파일을 내 보냅니다.
파일을 내 보낸 후 ".xbm"형식으로 파일을 가져옵니다. 메모장을 사용하여 xbm 파일을 열면 아래 그림과 같이 HEX 코드가 나타납니다.
Arduino 코드 및 작동 설명
그래픽 LCD를 Arduino와 인터페이스하려면 먼저 그래픽 LCD에 사용되는 라이브러리를 정의해야합니다. Arduino에는이 라이브러리가 없으므로이 링크에서이 라이브러리를 다운로드하여 설치해야합니다. 그런 다음 아래와 같은 라이브러리를 포함 할 수 있습니다.
#include "U8glib.h"
여기서 ' u8g (10) '는 그래픽 LCD의 RS (Register Select) 핀과 Arduino UNO의 10 번째 핀의 연결을 정의합니다. RS 핀은 각각 직렬 및 병렬 모드에서 사용할 때 '칩 선택'및 '등록 선택'으로 사용됩니다. 따라서 직렬 모드와 RS 핀을 칩 활성화에 대해 High (1)로 설정하고 칩 비활성화에 대해 Low (0)로 설정합니다.
U8GLIB_ST7920_128X64_4X u8g (10);
이제 이미지를 인쇄하기 위해 아래 코드에 이미지의 Hex 코드를 배치해야합니다. 다른 이미지를 인쇄 할 수 있습니다. 이미지의 16 진수 코드를 붙여 넣기 만하면됩니다.
const uint8_t rook_bitmap U8G_PROGMEM = { 여기에 이미지의 16 진수 코드 붙여 넣기 };
이 기사 끝에서 전체 Arduino 코드 를 확인하십시오.
아래 함수는 이미지 인쇄에 사용되며 인쇄에 사용되는 명령은 “u8g.drawXBMP (x, y, 이미지 너비, 이미지 높이)” 입니다. 여기서 X와 Y는 LCD에서 이미지의 시작 위치이며 128 * 64를 초과하지 않아야하는 이미지의 크기도 작성해야하며 마지막 인수에서 이미지의 HEX 코드를 배치하는 함수를 호출했습니다.
void picture (void) {u8g.drawXBMP (0, 0, 128, 64, rook_bitmap); }
“draw” 와 “next” 라는 두 가지 함수를 만들었습니다. 여기서 내용을 인쇄하기위한 코드는 “u8g.drawStr (x, y,”abcd”)” 명령을 사용하여 작성되었습니다 . 여기서 x와 y는 내용이 인쇄되는 LCD의 위치이고 ' abcd '는 인쇄 할 내용입니다.
void draw (void) {u8g.setFont (u8g_font_unifont); u8g.drawStr (07, 35, "회로 DIGEST"); } void next (void) {u8g.setFont (u8g_font_unifont); u8g.drawStr (0, 15, "인터페이싱"); u8g.drawStr (0, 35, "그래픽 LCD"); u8g.drawStr (0, 55, "Arduino 포함"); }
clearLCD () 함수는 함수에 null 값을 제공 하여 LCD 를 지우도록 만들어졌습니다.
void clearLCD () {u8g.firstPage (); do {} while (u8g.nextPage ()); }
아래 코드를 사용하여 픽셀, 색상 및 강도 설정
void setup (void) {if (u8g.getMode () == U8G_MODE_R3G3B2) {u8g.setColorIndex (255); // 흰색} else if (u8g.getMode () == U8G_MODE_GRAY2BIT) {u8g.setColorIndex (3); // 최대 강도} else if (u8g.getMode () == U8G_MODE_BW) {u8g.setColorIndex (1); // 픽셀 켜기} else if (u8g.getMode () == U8G_MODE_HICOLOR) {u8g.setHiColorByRGB (255,255,255); }}
공극 루프는 계속 텍스트와 이미지를 인쇄 할 지정된 지연 후한다. 먼저 그리기 기능을 사용하여 2 초 후에 “Circuit Digest” 를 인쇄했습니다. 지연 시간에 우리는 clearLCD 기능을 사용하여 화면을 지우고 다음 기능을 사용 하여 “ Interfacing Graphical LCD using Arduino ” 을 인쇄 합니다. 그런 다음 화면에 3 초 동안 머무를 picture () 함수를 사용하여 이미지를 인쇄했습니다. 이것은 전원 공급 장치가 켜질 때까지 계속됩니다.
무효 루프 (무효) {u8g.firstPage (); do {draw (); } while (u8g.nextPage ()); 지연 (2000); clearLCD (); u8g.firstPage (); do {next (); } while (u8g.nextPage ()); 지연 (2000); clearLCD (); u8g.firstPage (); do {picture (); } while (u8g.nextPage ()); 지연 (3000); clearLCD (); 지연 (50); }
주어진 코드를 사용하여 Arduino를 프로그래밍 한 후 회로도에 따라 Graphical LCD를 Arduino에 연결하고 Adapter 또는 USB를 사용하여 Arduino를 공급합니다. 아래 비디오 와 같이 그래픽 LCD에 내용과 이미지가 인쇄 됩니다.
또한 Nokia 5110 Graphical LCD와 Arduino의 인터페이스를 확인하십시오.