디스플레이 장치는 임베디드 프로젝트 및 전자 제품에서 가장 중요한 출력 장치입니다. 16x2 LCD는 가장 많이 사용되는 디스플레이 장치 중 하나입니다. 16x2 LCD는 한 줄에 16 개의 문자를 표시 할 수있는 2 개의 행이 있으며 각 문자는 LCD에서 5X7 매트릭스 공간을 차지함을 의미합니다. 이 튜토리얼에서는 16X2 LCD 모듈을 8051 마이크로 컨트롤러 (AT89S52)에 연결합니다. LCD와 8051 마이크로 컨트롤러를 연결하는 것은 초보자에게는 상당히 복잡해 보일 수 있지만 개념을 이해하면 매우 간단하고 쉬워 보일 것입니다. LCD의 16 핀을 이해하고 마이크로 컨트롤러에 연결해야하므로 시간이 걸릴 수 있습니다. 그럼 먼저 LCD 모듈의 16 핀에 대해 알아 보겠습니다.
전원 핀, 대비 핀, 제어 핀, 데이터 핀 및 백라이트 핀의 다섯 가지 범주로 나눌 수 있습니다.
범주 |
핀 번호. |
핀 이름 |
함수 |
전원 핀 |
1 |
VSS |
접지 핀, 접지에 연결 |
2 |
VDD 또는 Vcc |
전압 핀 + 5V |
|
대비 핀 |
삼 |
V0 또는 VEE |
대비 설정, 가변 저항을 통해 Vcc에 연결됩니다. |
제어 핀 |
4 |
RS |
레지스터 선택 핀, RS = 0 명령 모드, RS = 1 데이터 모드 |
5 |
RW |
읽기 / 쓰기 핀, RW = 0 쓰기 모드, RW = 1 읽기 모드 |
|
6 |
이자형 |
활성화, LCD를 활성화하려면 하이에서 로우 펄스가 필요합니다. |
|
데이터 핀 |
7-14 |
D0-D7 |
데이터 핀, LCD 또는 명령 지침에 표시 할 데이터를 저장합니다. |
백라이트 핀 |
15 |
LED + 또는 A |
백라이트 + 5V에 전원을 공급하려면 |
16 |
LED- 또는 K |
백라이트 접지 |
제어 핀을 제외한 모든 핀은 이름과 기능으로 명확하게 이해할 수 있으므로 아래에 설명되어 있습니다.
RS: RS는 레지스터 선택 핀입니다. LCD에 표시 할 데이터를 보내려면 1로 설정해야합니다. 그리고 화면 지우기 (16 진수 코드 01)와 같은 명령 명령을 보내면 0으로 설정합니다.
RW: 이것은 읽기 / 쓰기 핀입니다. LCD에 데이터를 쓰려면 0으로 설정합니다. LCD 모듈에서 읽는 경우에는 1로 설정합니다. 일반적으로 LCD에서 데이터를 읽을 필요가 없기 때문에 0으로 설정됩니다. "Get LCD status"명령 하나만 몇 번 읽어야합니다.
E: 이 핀은 하이에서 로우 펄스가 제공 될 때 모듈을 활성화하는 데 사용됩니다. 450ns의 펄스가 주어져야합니다. HIGH에서 LOW로 전환하면 모듈이 활성화됩니다.
LCD에는 몇 가지 사전 설정된 명령 명령이 있으며, 아래 프로그램에서 LCD를 준비하기 위해 사용했습니다 (lcd_init () 함수에서). 몇 가지 중요한 명령 지침은 다음과 같습니다.
16 진수 코드 |
LCD 명령 레지스터에 대한 명령 |
0F |
LCD ON, 커서 ON |
01 |
명확한 디스플레이 화면 |
02 |
집으로 돌아오다 |
04 |
커서 감소 (커서를 왼쪽으로 이동) |
06 |
커서 증가 (커서를 오른쪽으로 이동) |
05 |
디스플레이를 오른쪽으로 이동 |
07 |
디스플레이를 왼쪽으로 이동 |
0E |
디스플레이 ON, 커서 깜박임 |
80 |
커서를 첫 번째 줄의 처음으로 강제 |
C0 |
커서를 두 번째 줄의 시작 부분으로 강제 |
38 |
2 줄 및 5 × 7 매트릭스 |
83 |
커서 라인 1 위치 3 |
3C |
두 번째 줄 활성화 |
08 |
디스플레이 OFF, 커서 OFF |
C1 |
두 번째 줄, 위치 1로 이동 |
OC |
디스플레이 ON, 커서 OFF |
C1 |
두 번째 줄, 위치 1로 이동 |
C2 |
두 번째 줄, 위치 2로 이동 |
회로도 및 설명
8051 마이크로 컨트롤러와 LCD 인터페이스를 위한 회로도 는 위 그림에 나와 있습니다. 8051에 대한 기본적인 이해가 있다면 8051 마이크로 컨트롤러의 EA (PIN 31), XTAL1 & XTAL2, RST 핀 (PIN 9), Vcc 및 Ground Pin에 대해 알아야합니다. 위의 회로에서이 핀을 사용했습니다. 그것에 대해 전혀 모르는 경우 LCD 인터페이스를 진행하기 전에 8051 마이크로 컨트롤러와의 LED 인터페이스 기사를 읽어 보는 것이 좋습니다.
따라서 위의 핀 외에도 LCD의 데이터 핀 (D0-D7)을 포트 2 (P2_0 – P2_7) 마이크로 컨트롤러에 연결했습니다. 그리고 제어 핀 RS, RW 및 E는 각각 마이크로 컨트롤러의 핀 12,13,14 (포트 3의 핀 2,3,4)에 연결됩니다.
LCD의 PIN 2 (VDD)와 PIN 15 (Backlight supply)는 전압 (5v)에 연결되고 PIN 1 (VSS)과 PIN 16 (Backlight ground)은 접지에 연결됩니다.
핀 3 (V0)은 LCD의 콘트라스트를 조정하기 위해 10k의 가변 저항을 통해 전압 (Vcc)에 연결됩니다. 가변 저항기의 중간 다리는 PIN 3에 연결되고 다른 두 다리는 전압 공급 및 접지에 연결됩니다.
코드 설명
주석 (코드 자체)을 통해 코드를 설명하려고했습니다.
앞서 명령 모드와 데이터 모드에 대해 설명했듯이 명령 (기능 lcd_cmd)을 보내는 동안 RS = 0, RW = 0을 설정하고 HIGH에서 LOW로 펄스를 E에 1로 만든 다음 0으로 설정했음을 알 수 있습니다.. 또한 데이터 (기능 lcd_data)를 LCD에 보낼 때 RS = 1, RW = 0을 설정하고 HIGH에서 LOW 펄스를 E에 1에서 0으로 설정하여 제공합니다. msdelay () 함수는 밀리 초 단위로 지연을 생성하도록 생성되었습니다. 프로그램에서 자주 호출되며 LCD 모듈이 내부 동작 및 명령을 수행하기에 충분한 시간을 가질 수 있도록 호출됩니다.
문자열을 인쇄하기 위해 while 루프가 생성되어 마지막 문자까지 문자를 인쇄 할 때마다 lcd_data 함수를 호출합니다 (널 종결 자- '\ 0').
lcd_init () 함수를 사용하여 미리 설정된 명령 명령 (위에서 설명)을 사용하여 LCD를 준비했습니다.