Boletín No. 80
1o. de septiembre de 2020
EJEMPLO USO DE UN LCD PARA MOSTRAR CARACTERES ASCII CON VHDL Y LA NEXYS 2
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.
.
Isis Chetzyl Ballardo Rodriguez, Dra.
Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo.
IPN- UPIITA
Resumen
Se presenta en este artículo un ejemplo de uso de un LCD de 16x2 para poner un mensaje fijo y datos de los caracteres ASCII que cambian con los interruptores. El LCD 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, conectado a la tarjeta de desarrollo Nexys 2 y programada con el lenguaje de descripción de hardware VHDL en el programa ISE de Xilinx. Se proporcionan los códigos VHDL y el archivo de restricciones de usuario para la tarjeta mencionada.
Abstract
This article presents a 16x2 LCD example to put a fixed message and ASCII data changing with switches. The display used is the PmodCLP, which is a peripheral module of Digilent, although it is possible to use any other display respecting the connection terminals, connected to the Nexys 2 development board and programmed with the VHDL hardware description language in the ISE program from Xilinx. VHDL codes and User Constrain File for the mentioned board are provided.
Introducción
El Display de Cristal Líquido o LCD por sus siglas en inglés (“Liquid Crystal Display”) es un componente que permite visualizar información a través de los caracteres ASCII grabados en su memoria, aunque también permite crear nuevos caracteres o símbolos a través de ciertas instrucciones. Con estos componentes se puede mandar mensajes o avisos fijos o en movimiento, conocidos como marquesinas, ya sea de datos internos de una memoria o programa y de datos externos como posición de interruptores, encoders, sensores (temperatura, velocidad, posición, etc.) o receptores (RF, BT, NFC, etc.). En este ejemplo se presenta como se maneja una marquesina y se indica como se puede modificar su velocidad o dejar fijo el mensaje o como controlarlo.
Como antecedentes, hay que saber que 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. El LCD a utilizar en este ejemplo es un LCD paralelo con bus de datos D7-D0 y sus terminales de control, alimentado a 5V, como los mostrados 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 JA o JB y el de control a la parte baja del conector JB (JB4-JB7) o 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 externos JA o JB (datos) y JB o 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. |
En la siguiente liga, se accesa el código en VHDL.
Dentro de las aplicaciones del LCD como visualizador están los mensajes móviles 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.).
V. 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
- Digilent (2020). Pmod CLP: Character LCD with Parallel Interface (LIMITED TIME). Recuperado el 30 de julio de 2020, de
https://reference.digilentinc.com/reference/pmod/pmodclp/start?_ga=2.147725943.1110548213.1595456878-834976756.1505838925 - Digilent (2020). Nexys 2 Reference Manual. Recuperado el 30 de julio de 2020, de
https://reference.digilentinc.com/reference/programmable-logic/nexys-2/reference-manual - Xilinx (2020). Spartan-3E FPGA Starter Kit Board User Guide, Chapter 5, pp. 43-54. Recuperado el 30 de julio de 2020, de
https://www.xilinx.com/support/documentation/boards_and_kits/ug230.pdf