일상 생활에서 우리는 텍스트, 이미지 및 그래픽을 표시하는 여러 유형의 장치를 봅니다. LCD는 전자 제품에서 가장 널리 사용되는 디스플레이 장치 중 하나이며 대부분의 정보를 표시하는 모든 프로젝트에 사용됩니다. 전자 프로젝트에 사용되는 LCD에는 여러 유형이 있습니다. 우리는 이미 많은 프로젝트에서 16X2 LCD를 사용했으며 Arduino와 함께 TFT LCD도 사용했습니다. 8051, AVR, Arduino 등과의 인터페이스를 포함하여이 링크를 따라 가면 모든 16X2 LCD 관련 프로젝트를 찾을 수 있습니다.
이 튜토리얼에서는 8051 마이크로 컨트롤러와 그래픽 LCD 인터페이스 를 할 것 입니다. 이 프로젝트에서는 그래픽 LCD (GLCD) 에 이미지 를 표시하는 방법을 보여줍니다.
필요한 구성 요소:
- 그래픽 LCD
- AT89c52 8051 마이크로 컨트롤러
- 7805 전압 조정기
- 1000uf 커패시터
- 10uF 커패시터
- 10K 저항
- 10K POT
- 수정 발진기 12 MH
- 와이어 연결
- 브레드 보드
- Burg 스트립 남성
- 전원 공급
- LED
- 220 Ohm 저항
- 1K 저항
그래픽 LCD:
단순한 16x2 LCD에는 16 핀이 있지만 그래픽 LCD 에는 20 핀이 있습니다. 핀 설명 은 데이터 시트에 따라 다음과 같습니다.
핀 번호 | 핀 이름 | 기술 | 함수 |
1 | VSS | 바닥 | 0 볼트 |
2 | VDD | 전원 공급 | 5 볼트 |
삼 | V0 | LCD 대비 조정 | |
4 | RS | 명령 / 데이터 레지스터 선택 | RS = 0: 명령 선택 및 RS = 1: 데이터 선택 |
5 | R / W | 읽기 / 쓰기 레지스터 | R / W = 0: 쓰기 선택 및 R / W = 1: 읽기 선택 |
6 | 이자형 | 신호 활성화 | |
7 | DB0 | 데이터 입 / 출력 핀 (DB0-DB7) | 8 비트 (DB0-DB7) |
8 | DB1 | ||
9 | DB2 | ||
10 | DB3 | ||
11 | DB4 | ||
12 | DB5 | ||
13 | DB6 | ||
14 | DB7 | ||
15 | CS1 | 칩 선택 | CS1 = 1, IC1에 대한 칩 선택 신호 |
16 | CS2 | 칩 선택 | CS2 = 1, IC2 용 칩 선택 신호 |
17 | RST | 초기화 | GLCD 재설정 |
18 | VEE | LCD 드라이버를위한 네거티브 전압 | |
19 | ㅏ | 백라이트 LED | 5 볼트 |
20 | 케이 | 백라이트 LED | 바닥 |
8051을 사용하여 그래픽 LCD에 이미지 표시:
그래픽 LCD에 이미지를 표시하려면 먼저 해당 이미지를 어셈블리 코드로 변환하여 8051 마이크로 컨트롤러가이를 이해하고 읽을 수 있도록해야합니다. 따라서 이미지를 HEX 코드로 변환 하려면 아래 단계 를 따라야합니다 .
1 단계: 먼저 이미지 (BMP 형식)를 어셈블리 코드로 변환하는 애플리케이션을 다운로드해야합니다. 따라서이 링크에서 BMP2ASM 이미지 변환 응용 프로그램 을 다운로드하고 링크를 마우스 오른쪽 단추로 클릭 한 다음 다른 이름으로 링크 저장을 클릭하십시오.
2 단계: 그런 다음에 표시 할 이미지를 선택 그래픽 LCD 및 BMP로 변환 (이미 BMP 형식이 아닌 경우) MS 그림판, 포토샵 등과 같은 응용 프로그램을 사용하여, 또는 당신은 많은 온라인 웹 사이트를 찾을 수 있습니다 이미지 형식 변환을 위해. 128x64 크기의 BMP 이미지 아래에 있습니다.
3 단계: 이제 1 단계에서 다운로드 한 BMP2ASM.zip 파일을 추출하고 그 안에있는 Bmp2asm.exe를 열고 BMP 이미지를 선택합니다.
4 단계: 이제 BMP2ASM 응용 프로그램 창에서 "변환"을 누릅니다.
5 단계: 생성 된 코드를 복사하여 Keil uVision의 8051 프로그램에 붙여 넣습니다. 일부 변경을 수행하고 코드를 컴파일하십시오.
이제 코드를 8051 마이크로 컨트롤러에 업로드 할 준비가되었습니다.
회로 설명:
그래픽 LCD를 8051 마이크로 컨트롤러에 연결하기위한 회로 연결 은 16x2 LCD를 8051에 연결하는 것과 거의 동일합니다. 그러나 16x2 LCD에는 16 핀이 있고 GLCD에는 20 핀이 있습니다.
10K 포트는 GLCD의 대비 설정에 사용됩니다. GLCD RS, R / W 및 E의 제어 핀은 89C52 핀 번호 P1.0, P1.1 및 P1.2에 직접 연결됩니다. LCD의 칩 선택 핀 CS1과 CS2는 각각 핀 P1.3과 P1.4에 연결됩니다. 데이터 핀 DB0-DB7은 PORT P2에 직접 연결됩니다. 7805 전압 조정기는 일반 5V 공급에 사용됩니다. 데모 비디오에서는 Arduino 전원 공급 장치를 사용했습니다.
프로그래밍 설명:
우선 프로그램에 필요한 헤더 파일을 포함하고 GLCD의 제어 및 데이터 핀에 대한 비트를 정의합니다.
#포함
그 후 지연 기능을 만들었습니다.
void delay (int itime) {int i, j; for (i = 0; i
기능 void lcd_disp_on () 은 디스플레이를 켜기 위해 사용됩니다.
함수 void setCursorY (int y) 는 GLCD에서 열을 설정하기 위해 생성되고 Function void setCursorX (int x) 는 GLCD에서 페이지를 설정하기 위해 생성됩니다. 전체 코드 파일은 아래 코드 섹션에 나와 있습니다.
Column과 Page를 설정 한 후 GLCD에 명령어와 데이터를 보내는 기능을 작성했습니다.
void lcdprint (char dat, int size) {unsigned int i; for (i = 0; i
에서 무효 메인 () 함수를, 우리는 GLCD를 삭제 한 다음 열 및 페이지를 설정했습니다. 그 후 void lcdprint (char dat, int size) 함수 를 사용하여 데이터를 LCD로 전송 합니다.
void main () {int x, y; P3 = 0xff; while (1) {lcdclear (); for (y = 0; y <8; y ++) {for (x = 0; x <128; x ++) {lcd_disp_on (); setCursorX (y); setCursorY (x); lcdprint (이미지, x); }}…………………..
코드 흐름:
- 먼저 시스템 전원을 켜면 프로그램이 GLCD를 지우고 디스플레이를 켭니다.
- 그런 다음 커서를 데이터를 쓰고 자하는 열로 설정합니다.
- 그런 다음 커서를 데이터를 쓰고 자하는 페이지로 설정합니다.
- 이제 프로그램은 128X8 시간까지 데이터를 선택한 위치로 하나씩 보냅니다. GLCD에는 8 페이지와 128 열이 있기 때문입니다.