domingo, 25 de noviembre de 2012

LCD Gráfico

En la siguiente entrada vamos a realizar la programación de un Pic y mostrar datos a través de un LCD gráfico. El Pic que vamos a emplear en esta práctica es el 18F4550 y el LCD gráfico será el modelo HDM64GS12, el cual cuenta con una resolución de 128 x 64 líneas.
Para realizar la programación hemos utilizado en este caso MPlab.

Antes de comenzar vamos a analizar lo que queremos hacer:
Realizaremos la programación del Pic  y mostraremos en el LCD gráfico una serie de datos tipo Char, un valor float, y un pequeño programa animado.

A la hora de ir a realizar la programación, se han analizado las librerías que debemos emplear en nuestro código en función del objetivo del ejercicio.
La primera librería que voy a explicar es la librería HDM64GS12.c, la cual corresponde al LCD gráfico empleado. Esta librería cuenta con una serie de funciones que van desde activar el Lcd hasta mostrar los pixels en pantalla.
Dentro de esta librería es muy importante definir los pines de control del Lcd, y los de datos si fuera necesario(por defecto corresponden al puerto D del Pic). 

La segunda librería que voy a explicar es la librería GRAPHICS.C, esta es un archivo que contiene funciones para dibujar líneas, rectángulos, círculos y texto en el display. Nos será de gran utilidad para poder dibujar en el display. En este caso no es necesario, realizar ningún tipo de modificación de la misma.

Por último la tercera librería empleada es MATH.h, la cual contiene funciones para realizar operaciones matemáticas, nosotros la vamos a emplear para utilizar la función sprintf, que es una función que nos permite convertir variables a una cadena de caracteres. Como el display no muestra variables tipo float, convertiremos una variable tipo float a cadena tipo char para poder ver el dato.

Analizadas las librerías, nos ponemos manos a la obra y en primer lugar crearemos el archivo Isis para probar el programa en el entorno de Proteus. Este es el resultado:



A la hora de ponerme con el código, las funciones principales que he utilizado son.

De la librería HDM64GS12.c:
glcd_init(mode): Esta función es necesaria para activar o desactivar el Lcd.  
glcd_pixel(x,y,color): dibuja un pixel en la coordenada "x,y" indicada.

En la libreria GRAPHICS.C:
glcd_line(x1, y1, x2, y2, color): dibuja una línea en las cordenadas x1,x2,y1,y2   
glcd_rect(x1, y1, x2, y2, fill, color): dibuja un rectángulo
glcd_text57(x, y, textptr, size, color): muestra un texto o variable Char en las coordenadas x,y.

Y por último en MATH.h:
sprintf(valor2,"%1.5f",valor): la hemos empleado para convertir una variable tipo float(valor) a una cadena de caracteres tipo char(valor2).

Después de realizar la programación aquí podemos ver el resultado final:
Esta es una captura de la simulación en Isis.



Una vez comprobada la simulación en Proteus y que funciona correctamente, procedemos a realizar la descarga del programa mediante el software MPLAB.
El debugger que hemos utilizado es el ICD 3, y lo hemos cargado en una Picdem con el Pic 18F4550.







1 comentario:

  1. Buenas tarde... intento de programar la lcd ... pero hay porblemas no me inicia ... sera que otro modelo de grafica afecta para usar esta programacion?---- pregunta hay que definir los pines obligatoriamente ?

    ResponderEliminar