Control Del Lcd Con Microcontrolador Atmega8

CONTROL DEL LCD CON MICROCONTROLADOR ATMEGA8 1. Introducción En este laboratorio se abarcara el tema de los LCDs alfanum

Views 115 Downloads 3 File size 847KB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

CONTROL DEL LCD CON MICROCONTROLADOR ATMEGA8 1. Introducción En este laboratorio se abarcara el tema de los LCDs alfanuméricos con controlador Hitachi HD44780 o compatible, es decir, la mayoría. Hay diversas firmas, como Optrex, Sharp, Crystalfontz America, Tianma, etc., que producen muchísimos LCDs de este tipo. Los hay desde 1 a 4 líneas, desde 8 a 40 letras por línea, algunos con iluminación de fondo, con diferente tecnología de fabricación, etc. Dada la compatibilidad en el control de todos ellos, la elección de un modelo en particular queda a tu cargo. El LCD utilizado en este curso es de 2 líneas, de 16 letras cada una.

PINES DEL LCD

SET DE INSTRUCCIONES DEL LCD Es el controlador interno HD44780 (u otro) del LCD quien ejecuta las operaciones de mostrar las letras en la pantalla, mover el cursor, desplazar el contenido de la pantalla, etc. Lo que nos toca a nosotros es enviarle los códigos de esas operaciones. A continuación un pequeño cuadro:

INTERFACE ENTRE UN MICROCONTROLADOR Y UN DISPLAY LCD Esta presentación es poco usual. Los libros o los manuales de los compiladores suelen resaltar solo la interface de la librería que proveen. Esta exposición va pensando en los noveles usuarios del Arduino, que encuentran algo confusa la inicialización de su librería de LCD por contemplar todos los modos de operación viables. Aunque los LCDs parezcan simples de usar, para bien o para mal sus características abren puertas a diversos modos de interface. Considerando que el bus de datos puede ser de 8 o 4 bits y que se puede usar o prescindir de la línea de control RW, podemos obtener los siguientes 4 tipos de conexión.

INTERFACE DE 11 LINEAS: La interface de 11 líneas se trabaja con los 8 bits del bus de datos y las 3 líneas de Control. El uso del pin RW controla las operaciones de escritura (RW = 0) y lectura (RW= 1) del LCD. Las lecturas nos permiten por un lado conocer si el LCD está ocupado o no para saber si podemos enviar la siguiente instrucción de escritura, así como leer la posición actual del cursor.

INTERFACE DE 10 LINEAS: En la interface de 10 líneas el pin RW del LCD va siempre plantado a GND (RW = 0). Ello significa que el LCD solo aceptará operaciones de escritura del microcontrolador. Renunciar a la lectura de las memorias RAM es un hecho que pasa casi desapercibido. El punto clave de no controlar el pin RW es no enviar al LCD una nueva instrucción sin que haya terminado de procesar la anterior. Ya que no podemos leer del LCD para saber su estado, debemos calcular su disponibilidad a partir de los tiempos que demoran en ejecutarse las instrucciones. Por ejemplo, una vez enviada la instrucción Clear Display debemos esperar al menos 1.6 ms (que es su tiempo de ejecución) antes de enviar la siguiente instrucción.

INTERFACE DE 7 LINEAS: En la interface de 7 líneas el bus de datos del LCD se conecta con el microcontrolador por sus 4 pines más altos: D4, D5, D6 y D7. Como todas las instrucciones (de datos y de comando) son de un byte, los bytes deben ser transferidos en dos mitades. Primero se envía o recibe el nibble alto y luego el nibble bajo, siendo cada nibble validado por un pulso del pin Enable. Esas rutinas extras harán crecer un poco el firmware (programa del microcontrolador). En la contraparte, con el microcontrolador aún disponiendo de las tres líneas de control, podemos realizar cualquier operación de lectura y escritura, lo mismo que en la interface completa de 11 líneas pero ahorrándonos 4 pines. Este beneficio suele prevalecer sobre el handicap derivado del firmware. Los LCDs están fabricados con tecnología CMOS, por lo que algunos modelos sugieren conectar los pines de entrada no usados a alguna señal estable para evitar que por ellos se filtre algún ruido que pueda perturbar la operación del LCD.

2. Objetivos    

Aprender a utilizar el lenguaje C para la programación del display LCD. Conocer las conexiones necesarias para llevar a cabo el funcionamiento del display LCD. Programar voltímetro de 0 a 5 V. Programar sistema de medición de temperatura.

3. Materiales     

Programa Atmel Studio versión 6. Protoboard. Microcontrolador Atmega8 Resistencias. Pulsador.

4. Procedimiento PROGRAMACION DE UN LCD PARA MOSTRAR MENSAJE En este laboratorio lo que tenemos que realizar es que el siguiente mensaje aparezca en el display LCD:

Según la configuración por defecto de la librería para el LCD, debemos usar la conexión mostrada en el esquema de abajo. La configuración de puertos y de pines a usar se puede cambiar en archivo lcd.h. El pin VEE (o Vo) del LCD establece el contraste de la pantalla. Muchas veces se prefiere quitar el potenciómetro y conectar VEE a tierra para fijar el máximo contraste. En los siguientes circuitos haremos algo parecido. Primero procederemos a realizar el programa en el Atmel Studio 6:

Al simular en Proteus, el display LCD nos arrojara el mensaje requerido en esta ocasión:

PROGRAMACION DE UN VOLTIMETRO En esta parte del laboratorio programaremos un voltímetro digital, en el cual el mensaje en la pantalla LCD debe de ser el siguiente:  

1 FILA: VOLTAJE DIGITAL: ADC=… 2 FILA: VOLTAJE EN DECIMAL: VOLTAJE=…

Tal como se muestra en la figura:

Elaboración del código en C con el programa Atmel Studio 6:

La simulación en Proteus se verá así:

PROGRAMACION DE UN SISTEMA DE MEDICION DE TEMPERATURA Se utiliza un NTC con un β=4050 con resistencia a 25ªC de 20Kohm Nota: La NTC se linealiza mediante una resistencia R1 de 10Kohm. El valor de la tensión de la NTC (Vt) se obtiene según las ecuaciones que se muestra (temperatura en grados Kelvin):

(

)

CIRCUITO A SIMULAR:

Realizar el programa para mostrar el LCD:  1 FILA: MENSAJE: TEMPERATURA  2 FILA: TEMPERATURA: T=….ªC.

(

)

ELABORACION DEL CODIGO DEL PROGRAMA:

La simulación en Proteus se verá así: