LCD-BootstrapAT91G2

 CONTROLADOR PARA UN DISPLAY 16x2 BASADO EN LA PLATAFORMA CONDORBOARD  

= Integrantes = by by

= Descripción =

El objetivo de la práctica fue la implementación del driver para un display de 16x2 caracteres con controlador KS0066U, para mostrar el valor de voltaje medido con el ADC del microcontrolador. El proyecto se desarrolla bajo la plataforma CondorBoard de Uniandes, utilizando el bootstrap para el microcontrolador contenido AT91SAM9XE128.

Vídeos y fotos de demostración
Video/Foto 1

Diagrama de caja negra



 * Señales de entrada del sistema (INPUT)
 * Vin: Señal de voltaje análoga en el rango de 0 a 3.3v.


 * Señales de Salida (OUTPUT)
 * Data: Vector de 4 bits de entrada del controlador del display.
 * RS: Register Select. Señal de control que indica al display si se va a enviar una instrucción o una cadena de caracteres.
 * E: Enable. Habilitación para el envío de información al display.

Diagrama de Bloques
La plataforma utilizada consta de varios componentes que incluyen el microcontrolador ARM, una FPGA para desarrollo hardware, diferentes interfaces para periféricos USART/UART, ethernet, entre muchos otros. En nuestro caso, básicamente utilizamos dos periféricos del microcontrolador: El ADC y la PIO. El diagrama de bloques ilustra las conexiones del sistema:



En este ha de tenerse en cuenta que aunque el display tiene 8 pines para el data, el control se está haciendo con solo 4 bits, por lo que los demás quedan sin conectar. Además de esto, en el control del display no se contempla la lectura del display en ningún momento, en lugar de esto se tienen en cuenta los retardos adecuados para su correcto funcionamiento, razón por la cual el pin R/W se conecta a tierra para asegurar siempre la escritura en el display.

Periférico ADC
El ADC es utilizado para adquirir la información del voltaje análogo en la entrada, convertido en un número de 10 bits según la configuración establecida. Para este caso se utilizó el canal ad0. La configuración del periférico se maneja a partir de los registros ADC_CHER (habilitación del canal 0) y ADC_MR (configuración de 10 bits). Como parte de la configuración debe modificarse el registro del PMC(Power management control) PMC_PCER para habilitar el pin de entrada 0 del puerto C.

Periférico PIO
Para esta práctica, se habilitaron como salidas los pines 0, 2, 8 Y 16 del puerto B para el vector DATA, y lo pines 18 y 19 del mismo puerto para E y RS respectivamente. De igual forma, se configuró como entrada el pin del ADC que es el 0 del puerto C.

= Algoritmo de Solución =

El proceso a seguir es el que se ilustra en el diagrama de flujo:



En la inicialización, los pasos del bootstrap están debidamente explicados en el manual del Bootstrap del microcontrolador, al cual puede remitirse en la bibliografía. La inicialización de la pantalla consiste en configurar el modo de 4 bits, habilitar la escritura de las dos líneas del display y configurar el cursor para que no se vea. Dicha inicialización se encuentra implementada y documentada en la librería hecha para el display "lcd1602A.h", disponible en los archivos fuente del proyecto, de igual forma puede remitirse a la bibliografía para conocer en más detalle el diagrama de flujo de la inicialización del display en el datasheet del controlador KS0066U. La presentación preliminar es una característica adicional del proyecto a los requerimientos estrictos. En esta presentación se usa la función del controlador del display para "correr la pantalla" (shift display), con el objetivo de observar pasando el texto: "Práctica 1. ADC!". Esta presentación está descrita en el siguiente diagrama de flujo:



En este diagrama, la primera parte hasta antes de encender la pantalla corresponde a cargar la cadena en el display y ubicarla fuera del display, las iteraciones realizadas corresponden a la longitud de la pantalla. La segunda parte corresponde a mostrar progresivamente dicha cadena de caracteres pasando de izquierda a derecha hasta que sale nuevamente del display. Ahora, volviendo al primer diagrama de flujo principal, al final del diagrama se ejecuta infinitamente la actualización de la información, que corresponde al siguiente diagrama de flujo.



En este diagrama, el paso de formar la cadena de la barra se refiere a tomar el valor del ADC, escalarlo de 1024 (máx. del ADC) a 16 (número de espacios del display), y formar una cadena que pinte una barra de longitud acorde al valor del ADC. Por último, EscribirNum es una función que toma el valor del ADC y lo convierte en una cadena de caracteres ASCII para que se impriman en la pantalla. Dicha función está representada por:



Finalmente, la funciónde escribir una cadena de caracteres en el display está claramente descrito en el datasheet del controlador KS0066U disponible en la bibliografía, y la implementación está en la librería lcd1602.h debidamente comentado.

= Materiales =

Dispositivos Hardware

 * Tarjeta de desarrollo uniandes CondorBoard
 * Hoja de datos del AT91SAM9XE128 Descargar...
 * Manual del bootstrap Descargar...
 * Display 1602 con controlador KS0066U
 * Información técnica del display Descargar...
 * Hoja de datos del controlador Descargar...

Herramientas Software

 * Compilador GCC: Compilador de código fuente para C
 * Sam-ba: Herramienta para programar el microcontrolador

= Código fuente =

Descripción de archivos
En la carpeta principal se encuentra el archivo main.c que es el primero que ejecuta la compilación con el makefile. En la carpeta board/condorboard se encuentra el archivo fuente principal condorboard.c, cuya función hw_init es llamada desde el main, y es donde se encuentra la programación correspondiente a este proyecto. En la carpeta contenida dataflash se encuentra el makefile del proyecto. En la carpeta driver se encuentran las llibrerías utilizadas en el proyecto, incluyendo el driver para el display en el archivo lcd1602A.c. En la carpeta include se encuentran los archivos .h correspondientes a estas librerías.


 * Archivo de Programación ([[Media:proyecto1_condorboard.bin|Descargar]])
 * Archivos Fuente - Proyecto completo ([[Media:Proyecto1_Bootstrap.zip|Descargar]])

= Resultados =

Se logró completar a cabalidad los objetivos propuestos en la práctica, mostrando de forma amigable el valor medido en el ADC a través de la pantalla LCD. Para esto, se muestra tanto el número en base 10 del valor del ADC, como una barra cuya longitud depende del valor del ADC. Adicionalmente, como una funcionalidad más, se hace una presentación corta de la práctica con el display utilizando funciones del display como lo es el corrimiento de la pantalla para una presentación dinámica. Previamente a la validación del sistema total, se realizaron pruebas de funcionamiento del ADC, de la configuración de la PIO y el uso de los leds de los que dispone la tarjeta CondorBoard, y del manejo básico del controlador del display.

Análisis de resultados
Gracias al trabajo realizado con el tiempo suficiente fue posible corregir errores presentados en el proceso para completar el proyecto satisfactoriamente.

= Bibliografía =