Instituto Polit�cnico Nacional
Instituto Politécnico Nacional
"La Técnica al Servicio de la Patria"
>

Boletín No. 76 
1o. de enero de 2020




MANEJO DE UN LCD CON VHDL PARA VISUALIZAR LOS CARACTERES ASCII

 

Juan Antonio Jaramillo Gómez, Dr.
Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo. .
Mirna Salmerón Guzmán, M. en C.
Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo. .
Brahim El Filali, Dr.
Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo.

UPIITA
Instituo Politécnico Nacional

 

Resumen

Se presenta en este artículo la visualización de los caracteres ASCII de un LCD de 16x2 introducidos a través de los interruptores de la tarjeta Nexys 2. El display utilizado es el PmodCLP, que es un módulo periférico de Digilent, aunque es posible utilizar cualquier otro display respetando los terminales de conexión. Se proporciona también los códigos implementados en una tarjeta de desarrollo con un FPGA utilizando el lenguaje de descripción de hardware VHDL en el programa ISE de Xilinx.

 

Abstract

This article presents the display of the ASCII characters of a 16x2 LCD introduced through the switches of the Nexys 2 board. The display used is the PmodCLP, which is a Digilent´s peripheral module, although it is possible to use any other display respecting the connection terminals. Codes implemented on a development board with an FPGA are also provided using the VHDL hardware description language in the Xilinx ISE program.

 

Introducción

Un LCD (Display de Cristal Líquido “Liquid Crystal Display”) es un dispositivo que permite visualizar información a través de los caracteres ASCII grabados en la memoria del LCD, permitiendo mandar mensajes fijos o móviles (marquesinas) con datos internos o externos de un sensor u otro dispositivo. En este ejemplo se presenta el manejo de un LCD para la visualización de los caracteres ASCII a través de los interruptores [SW7-SW0] de la Nexys 2.

Existen distintos tipos de LCD, clasificados por tamaño (16x1, 16x2, 16x4, 20x2, etc.), por polarización (3V ó 5V), por la forma de comunicación (serie, paralelo), con luz y sin luz de fondo, RGB, etc. Dentro de la comunicación hay dos modos de conectar los LCD, referente a la forma de enviar los datos, uno es en serie y el otro es en paralelo, aquí se utiliza éste último. Por lo que se presenta en la figura 1 la distribución de las terminales de un LCD de 16x2 y como se polariza (5V), en la figura 2 los terminales del módulo periférico de Digilent “PmodCLP”, aunque es posible utilizar cualquier display como el de la figura 3, solo respetando las conexiones.

 

Figura 1. Terminales de un LCD de 16x2 y su conexión de contraste y polarización.

 

 

Figura 2. Distribución de terminales del PmodCLP.

 

 

Figura 3. Ejemplo de un LCD hecho en una tarjeta perforada para la Nexys.

 

Conexiones

Con cualquiera de estos displays se puede colocar en los conectores de expansión (JA, JB, JC o JD) de la Nexys 2 (ver figura 4), teniendo solo en consideración que típicamente en un display discreto hay que alimentarlo a 5V. El PmodCLP funciona tanto con 3.3V como con 5V. La tarjeta Nexys 2 tiene posibilidad de alimentar cargas a 3.3V y 5V, cambiando el Jumper al lado de cada conector de expansión.

 

Figura 4. Terminales del conector de expansión de la nexys 2.

 

La forma en la cual se conecta cualquiera de estos displays se presenta en la figura 5. El bus de datos se conecta al puerto JB y el de control a la parte baja del conector JC (JC4-JC7). La luz de fondo siempre está conectada, aunque con un interruptor o un transistor se puede controlar su encendido.

 

Figura 5. Conexión con los conectores JB (datos) y JC (control) de la Nexys 2.

 

Máquina de estados finitos

En la figura 6 se tiene el diagrama de estados que involucra la inicialización (estados azules), ubicación en un renglón y columna determinado (estados verdes) y la escritura de datos en ASCII (estados rojos), tanto para el texto fijo en los dos renglones, como el texto que cambia por los interruptores (SW7-SW0) que permiten visualizar los símbolos ASCII en el LCD.

 

Figura 6. Diagrama de estados de la FSM para codificación ASCII.

 

Los caracteres ASCII para el llenado de los estados WRITE (Rojos) del diagrama de estados se obtuvieron de la tabla 1, resaltando que dependiendo del país o zona donde se encuentre, los caracteres pueden tener símbolos chinos, rusos, árabes, etc.

 

Tabla 1. Símbolos ASCII.

 

El código ya escrito y sintetizado para controlar el LCD es implementado en la tarjeta de desarrollo Nexys 2. Algunos de los resultados de este diagrama de estados se muestran en las fotos de la figura 7.

 

Figura 7. Fotos de los símbolos ASCII obtenidos por la colocación de los SW.

 

Dentro de las aplicaciones del LCD como visualizador están los mensajes moviles también llamados marquesinas, los mensajes fijos para dar saludos y/o instrucciones y los mensajes con datos cambiantes, como en los medidores (velocidad, temperatura, llenado, etc.).

En la siguiente liga, se accesa el código en VHDL.

 Haga clic para ver el código

 

Conclusiones

Se ha presentado la implementación de un código para la inicialización y control de un display, que por medio de los interruptores de la tarjeta Nexys 2 se despliegan los caracteres ASCII en el LCD. Se entregan los códigos en VHDL y el UCF de la Nexys 2 para que se utilicen, analicen y modifiquen como cada usuario lo requiera. Por último, se les da un panorama de distintos usos del display.

 

Referencias

  1. Digilent (2019) Pmod CLP: Character LCD with Parallel Interface (LIMITED TIME). Nexys 2 Reference Manual

  2. Digilent (2019) Nexys 2 Reference Manual. Recuperado el 1 de diciembre de 2019, de https://reference.digilentinc.com/reference/programmable-logic/nexys-2/reference-manual

  3. Xilinx (2019) . Spartan-3E FPGA Starter Kit Board User Guide.Recuperado el 1 de diciembre de 2019, de https://www.xilinx.com/support/documentation/boards_and_kits/ug230.pdf Chapter 5, pp. 43-54.