Muchas veces en algunos de nuestros proyectos necesitamos visualizar algún tipo de variable o mensaje, puede ser una variable que leemos de un sensor, el estado de un pin digital, un mensaje que nos llega por comunicación serial, o simplemente el resultado de una operación, Para esto será de gran utilidad una LCD de caracteres 16x2.
LCD de estas hay de varios tamaños y se conoce que el método descrito aquí funciona bien para LCD de hasta 20 columnas por 4 filas.
En este articulo se describe como utilizar una LCD con PSoC5LP mediante una librería creada por la comunidad de cypress que permite usar cualquier pin para los 6 pines que usa la LCD.
Diagrama esquemáticoEsta imagen describe todas las conexiones que se deben hacer previamente en protoboard para que la LCD funcione bien con PSoC. El potenciómetro que tiene es simplemente para controlar el contraste que tiene la LCD, si no les funciona la primera vez tienen que girar el potenciómetro hasta que observen el mensaje.
¿Como funciona?Primero que todo hay que agregar la librería LCDCharmp mediante las dependencias y luego incluir el bloque LCD_char_1 a el diagrama esquemático de PSoC creator, una vez ahí se deben agregar pines digitales de salida a todas sus salidas.
Como observamos esta librería nos deja ubicar todos los pines de salida a nuestro gusto, esto es de gran ayuda cuando se tienen tarjetas que no tienen muchos pines seguidos o simplemente por "personalización".
Funcionamiento BásicoEsta librería es una modificación de la librería original de PSoC creator, por lo tanto esta usa las mismas API que la librería original y describiremos su uso básico.
Las siguientes instrucciones van en el archivo main.c del proyecto de PSoC Creator.
LCD_Start();
Esta instrucción es simplemente para inicializar el componente, esto se debe hacer siempre con todos los componentes presentes en el diagrama esquemático de PSoC Creator.
LCD_Position(0,0);
Esta instrucción es la que nos permite ubicarnos en cualquier coordenada de la LCD, recibe como parámetros la posición de fila y la posición de columna, recuerden que tenemos de 0 a 15 columnas y de 0 a 1 filas.
LCD_PutChar('a');
Esta instrucción permite imprimir una sola letra o numero de tipo caracter, para usarla dentro de la misma instrucción la letra va dentro de comillas simples, o también recibe directamente una variable tipo char.
LCD_PrintString("PSoC5LP");
Esta instrucción es la que permite imprimir mensajes y palabras completas. Para imprimir un mensaje directamente con la instrucción, la palabra va entre comillas dobles, pero esta instrucción también recibe cadenas de caracteres definidos como variables en el código.
LCD_PrintNumber();
Esta instrucción nos ayuda bastante ya que podemos directamente imprimir un entero en nuestra LCD, internamente hace la conversión de entero a caracter y lo imprime. Recibe como argumento una variable de tipo uint16.
Con estas instrucciones tenemos el uso básico de nuestra LCD y podemos imprimir todo lo que queramos!.
Si necesitan imprimir otro tipo de variables como los float, deben hacer algo adicional y es usar la función sprintf para convertir de float a caracter.
Lo único que falta es en archivo de asignación de pines indicar los pines que vamos a usar tal cual lo indica el diagrama esquemático de más arriba.
¡Gracias!
Comments