jueves, 12 de diciembre de 2019

Laboratorio N° 11

PROGRAMACIÓN DE MICRO-CONTROLADORES PIC

PROGRAMACIÓN DE UNA PANTALLA LCD

1. Objetivos:

  • Conocer el Display LCD y su funcionamiento
  • Programar eficientemente el LCD 
  • Programar HMI para proyecto actual.

2. Materiales:
MATERIALES Y EQUIPO

  • CCS Compiler instalado.
  • Entrenador de PICS
  • Pantalla LCD
  • PIC16F877A
  • Guía de Laboratorio. El trabajo se desarrolla de manera GRUPAL.
  • PC con Software de simulación



3. Marco teórico:

3.1 PANTALLA LCD (Liquid Crystal Display)

Una pantalla de cristal líquido o LCD (sigla del inglés Liquid Crystal Display) es una pantalla delgada y plana formada por un número de píxeles en color o monocromos colocados delante de una fuente de luz o reflectora. A menudo se utiliza en dispositivos electrónicos de pilas, ya que utiliza cantidades muy pequeñas de energía eléctrica.

Cada píxel de un LCD típicamente consiste de una capa de moléculas alineadas entre dos electrodos transparentes, y dos filtros de polarización, los ejes de transmisión de cada uno que están (en la mayoría de los casos) perpendiculares entre sí. Sin cristal líquido entre el filtro polarizante, la luz que pasa por el primer filtro sería bloqueada por el segundo (cruzando) polarizador.


La superficie de los electrodos que están en contacto con los materiales de cristal líquido es tratada a fin de ajustar las moléculas de cristal líquido en una dirección en particular. Este tratamiento suele ser normalmente aplicable consiste en una fina capa de polímero que es unidireccionalmente frotada utilizando, por ejemplo, un paño. La dirección de la alineación de cristal líquido se define por la dirección de frotación.


Antes de la aplicación de un campo eléctrico, la orientación de las moléculas de cristal líquido está determinada por la adaptación a las superficies. En un dispositivo twisted nematic, TN (uno de los dispositivos más comunes entre los de cristal líquido), las direcciones de alineación de la superficie de los dos electrodos son perpendiculares entre sí, y así se organizan las moléculas en una estructura helicoidal, o retorcida. Debido a que el material es de cristal líquido birefringent, la luz que pasa a través de un filtro polarizante se gira por la hélice de cristal líquido que pasa a través de la capa de cristal líquido, lo que le permite pasar por el segundo filtro polarizado. La mitad de la luz incidente es absorbida por el primer filtro polarizante, pero por lo demás todo el montaje es transparente.



Cuando un dispositivo requiere un gran número de píxeles, no es viable conducir cada dispositivo directamente, así cada píxel requiere un número de electrodos independiente. En cambio, la pantalla es multiplexada. En una pantalla multiplexada, los electrodos de la parte lateral de la pantalla se agrupan junto con los cables (normalmente en columnas), y cada grupo tiene su propia fuente de voltaje. Por otro lado, los electrodos también se agrupan (normalmente en filas), en donde cada grupo obtiene una tensión de sumidero. Los grupos se han diseñado de manera que cada píxel tiene una combinación única y dedicada de fuentes y sumideros. Los circuitos electrónicos o el software que los controla, activa los sumideros en secuencia y controla las fuentes de los píxeles de cada sumidero.


3.2 Manejo del LCD usando PICC compiler

Para el manejo del lcd con un microcontrolador PIC y el software de programación PICC compiler, lo primero que se debe realizar es el direccionamiento de los pines del microcontrolador a los pines del LCD, para ello se emplea la siguiente estructura en el software.
Se puede ver también como es que se declara la librería después de la declaración de los pines.
Al iniciar el programa es necesario darle una configuración de arranque al LCD, para ello se emplea la función "lcd_init();" la configuración por defecto es: Comunicación por 4 bits, activación de las 2 filas, desplazamiento derecha y cursor normalmente "escondido".

4. VÍDEO EVIDENCIA:
  • Explicación del programa: 


  • Implementación en el entrenador: 



5. OBSERVACIONES:
  • Una de las formas de habilitar los números negativos en la programación fue realizando la declaración "%4ld" que habilita 4 espacios para los datos y ld para leer datos negativos.
  • Fue necesario agregar un "delay" dentro de las estructuras "while" de los pulsadores para crear funciones antirrebote y evitar pulsos en falso.
  • Se deben utilizar dos variables distintas para los bucles "for" debido a que se necesita una para la función BIP del parlante y para que este suene tres veces al llegar al valor máximo se debe emplear una distinta. Si se emplea la misma variable para dos o más bucles "for" se presentaran problemas ya que la variable funcionará como si estuviera en el primer bucle del programa
6. CONCLUSIONES:
  • Se utilizaron tres pulsadores para variar los valores mostrados en el LCD y uno de ellos para habilitar y des-habilitar los otros dos botones,  siendo "D0" el incremento en 50, "D1" la disminución en 15 y el "E0" el habilitador/des-habilitador de los dos primeros pulsadores.
  • Se concluye que el LCD 16 x 2 es el display adecuado para esta aplicación debido a que solo son necesarias dos filas para mostrar la información del programa, la primera para el texto de "CONTADOR", "FULL", "VALOR MÍNIMO" y "DESHABILITADO", y la segunda para mostrar los valores. Su consumo de corriente es muy bajo comparado con otros displays.
  • Se concluye que para que el parlante solo suene tres veces al llegar al valor máximo es necesario utilizar una estructura "for" donde la variable debe ser menor a 3 o repetir el bloque 3 veces.
  • Se concluye que al habilitar y des-habilitar los pulsadores de incremente y disminución con un mismo pulsador "E0" se debe asignar a la variable "hab" esta misma pero negada, es decir, "hab=!hab" para que se realice un toggle cada vez que se presiona este pulsador.
  • Se logró identificar la codificación de una variable dentro de la cadena de caracteres generada por la instrucción "printf".
  • Se logró identificar la declaración de variables necesarias para el correcto funcionamiento en nuestro programa, por ejemplo: emplear signed int16 en lugar de solo int16 para la habitación con números negativos.








No hay comentarios:

Publicar un comentario