Las unidades de visualización son los dispositivos de salida más importantes en proyectos integrados y productos electrónicos. La pantalla LCD de 16x2 es una de las unidades de visualización más utilizadas. LCD de 16x2 significa que hay dos filas en las que se pueden mostrar 16 caracteres por línea, y cada carácter ocupa un espacio de matriz de 5X7 en la pantalla LCD. En este tutorial vamos a conectar el módulo LCD 16X2 al microcontrolador 8051 (AT89S52). La interfaz de la pantalla LCD con el microcontrolador 8051 puede parecer bastante compleja para los principiantes, pero después de comprender el concepto, parecería muy simple y fácil. Aunque puede llevar tiempo porque necesita comprender y conectar 16 pines de LCD al microcontrolador. Primero, entendamos los 16 pines del módulo LCD.
Podemos dividirlo en cinco categorías, pines de alimentación, pines de contraste, pines de control, pines de datos y pines de retroiluminación.
Categoría |
PIN NO. |
Nombre de PIN |
Función |
Pines de potencia |
1 |
VSS |
Pin de tierra, conectado a tierra |
2 |
VDD o Vcc |
Pin de voltaje + 5V |
|
Pin de contraste |
3 |
V0 o VEE |
Ajuste de contraste, conectado a Vcc a través de una resistencia variable. |
Pines de control |
4 |
RS |
Registro Seleccionar Pin, RS = 0 Modo de comando, RS = 1 modo de datos |
5 |
RW |
Pin de lectura / escritura, RW = 0 Modo de escritura, RW = 1 Modo de lectura |
|
6 |
mi |
Habilitar, un pulso alto a bajo necesita habilitar la pantalla LCD |
|
Pines de datos |
7-14 |
D0-D7 |
Pines de datos, almacena los datos que se mostrarán en la pantalla LCD o las instrucciones de comando |
Pines de luz de fondo |
15 |
LED + o A |
Para alimentar la luz de fondo + 5V |
dieciséis |
LED- o K |
Tierra de luz de fondo |
Todos los pines son claramente comprensibles por su nombre y funciones, excepto los pines de control, por lo que se explican a continuación:
RS: RS es el pin de selección de registro. Necesitamos configurarlo en 1, si estamos enviando algunos datos para que se muestren en la pantalla LCD. Y lo configuraremos en 0 si estamos enviando alguna instrucción de comando como limpiar la pantalla (código hexadecimal 01).
RW: Este es el pin de lectura / escritura, lo configuraremos en 0, si vamos a escribir algunos datos en la pantalla LCD. Y configúrelo en 1, si estamos leyendo desde el módulo LCD. Generalmente, se establece en 0, porque no necesitamos leer datos de la pantalla LCD. Algunas veces solo es necesario leer una instrucción "Obtener el estado de la pantalla LCD".
E: Este pin se usa para habilitar el módulo cuando se le da un pulso de alto a bajo. Debe administrarse un pulso de 450 ns. Esa transición de HIGH a LOW hace que el módulo ENABLE.
Hay algunas instrucciones de comando preestablecidas en LCD, las hemos usado en nuestro programa a continuación para preparar el LCD (en la función lcd_init ()). Algunas instrucciones de comando importantes se dan a continuación:
Código hexadecimal |
Comando al registro de instrucciones LCD |
0F |
LCD encendido, cursor encendido |
01 |
Pantalla de visualización clara |
02 |
Volver a casa |
04 |
Disminuir el cursor (mover el cursor a la izquierda) |
06 |
Incrementar el cursor (mover el cursor a la derecha) |
05 |
Desplazar pantalla a la derecha |
07 |
Desplazar pantalla a la izquierda |
0E |
Pantalla encendida, cursor parpadeando |
80 |
Forzar el cursor al comienzo de la primera línea |
C0 |
Forzar el cursor al comienzo de la segunda línea |
38 |
2 líneas y matriz de 5 × 7 |
83 |
Cursor línea 1 posición 3 |
3C |
Activar segunda línea |
08 |
Pantalla apagada, cursor apagado |
C1 |
Saltar a la segunda línea, posición 1 |
jefe |
Pantalla encendida, cursor apagado |
C1 |
Saltar a la segunda línea, posición 1 |
C2 |
Saltar a la segunda línea, posición 2 |
Diagrama de circuito y explicación
El diagrama de circuito para la interfaz LCD con el microcontrolador 8051 se muestra en la figura anterior. Si tiene conocimientos básicos de 8051, debe conocer EA (PIN 31), XTAL1 y XTAL2, pin RST (PIN 9), Vcc y pin de tierra del microcontrolador 8051. He usado estos pines en el circuito anterior. Si no tiene ninguna idea al respecto, le recomiendo que lea este artículo Interfaz LED con el microcontrolador 8051 antes de pasar por la interfaz LCD.
Entonces, además de estos pines anteriores, hemos conectado los pines de datos (D0-D7) de la pantalla LCD al microcontrolador del Puerto 2 (P2_0 - P2_7). Y controle los pines RS, RW y E al pin 12,13,14 (pin 2,3,4 del puerto 3) del microcontrolador respectivamente.
El PIN 2 (VDD) y el PIN 15 (suministro de luz de fondo) de la pantalla LCD están conectados al voltaje (5v), y el PIN 1 (VSS) y el PIN 16 (tierra de la luz de fondo) están conectados a tierra.
El pin 3 (V0) está conectado a voltaje (Vcc) a través de una resistencia variable de 10k para ajustar el contraste de la pantalla LCD. La pata central de la resistencia variable está conectada al PIN 3 y las otras dos patas están conectadas al suministro de voltaje y a tierra.
Explicación del código
He intentado explicar el código a través de comentarios (en el código mismo).
Como expliqué anteriormente sobre el modo de comando y el modo de datos, puede ver que mientras enviamos el comando (función lcd_cmd) hemos establecido RS = 0, RW = 0 y se le da un pulso de ALTO a BAJO a E al convertirlo en 1, luego 0.Además, al enviar datos (función lcd_data) a LCD, hemos configurado RS = 1, RW = 0 y se le da un pulso de ALTO a BAJO a E al convertirlo de 1 a 0. La función msdelay () se ha creado para crear un retraso en milisegundos. y se llama con frecuencia en el programa, se llama para que el módulo LCD pueda tener tiempo suficiente para ejecutar la operación y los comandos internos.
Se ha creado un ciclo while para imprimir la cadena, que llama a la función lcd_data cada vez para imprimir un carácter hasta el último carácter (terminador nulo- '\ 0').
Hemos usado la función lcd_init () para preparar la pantalla LCD usando las instrucciones de comando preestablecidas (explicadas arriba).