practica2 huber

10
Huber Girón Nieto Practica 2 “LCD” Arquitectura avanzada de sistemas de cómputo Ing. Electrónica y de Comunicaciones Profesor: Nicolás Quiroz Hernández Universidad Iberoamericana Puebla 29 de Marzo de 2012

Upload: huber-giron

Post on 04-Aug-2015

134 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Practica2 Huber

Huber Girón Nieto

Practica 2

“LCD”

Arquitectura avanzada de sistemas de cómputo

Ing. Electrónica y de Comunicaciones

Profesor: Nicolás Quiroz Hernández

Universidad Iberoamericana Puebla

29 de Marzo de 2012

Page 2: Practica2 Huber

PRÁCTICA 2 “LCD”

1. INTRODUCCIÓN

En la actualidad la mayoría de dispositivos utilizan microcontroladores, ya que este tipo de dispositivos

permite obtener un manejo de recursos y control en cualquier dispositivo electrónico. Los microcontroladores

permiten ahorrar varias etapas de hardware por software, de los cuales este último solo es programación y

por lo tanto permite disminuir costos al realizar un proyecto.

2. OBJETIVOS

I. General

Realizar un programa en ensamblador para el PIC18F4550 que permita mostrar un valor en el LCD.

II. Específicos

-Entender el funcionamiento de un LCD.

-Realizar un programa en ensamblador para manda datos a un LCD con 4 bits.

-Probar el código anterior en la tarjeta de desarrollo.

-Realizar una simulación Proteus del código.

3. MARCO TEÓRICO

I. LCD (Marcelo, 2008)

Un display alfanumérico de matriz de puntos (dot-matrix) es un dispositivo de interfaz humana formada por

una pantalla de cristal líquido o LCD sobre la que se pueden mostrar mensajes formados por distintos

caracteres: letras, números. Símbolos, etc. Se encentran en distintos formatos, por ejemplo: 2x8, 2x16, 4x20,

etc. El primer digito indica el número de filas en el display y el segundo el número de columnas.

Page 3: Practica2 Huber

Estos dispositivos vienen gobernados por un microcontrolador, que normalmente va incorporado sobre la

misma placa de circuito impreso que soporta el LCD. En el mercado es muy habitual encontrarse con el

controlador HD44780 de Hitachi. El controlador se encarga de gestionar el display líquido: polarizar los puntos

de la pantalla, generar los caracteres, desplazar la pantalla, mostrar el cursor, etc. El usuario se despreocupa

de todos estos problemas y simplemente necesita conocer una serie de comandos o instrucciones de alto nivel

que le permitan mostrar mensajes sobre la pantalla de manera sencilla. Para comunicarse con el controlador

del display se dispone de una interfaz paralela al exterior, de fácil conexión a otros microcontroladores o

microprocesadores.

Los caracteres que se pueden representar están formados por una matriz de puntos que vienen almacenados

en memoria ROM dentro del propio controlador. El fabricante reserva una pequeña zona de memoria RAM

donde se pueden definir algunos caracteres especiales o pequeños gráficos.

El número de pines de un display alfanumérico es normalmente de 14(o d 16 si el LCD es retro iluminado) y

son compatibles TTL. En la Tabla 1 se muestra el significado de las señales de cada pin. Hay tres tipos de

señales en el LCD: de alimentación, de control y de datos.

Page 4: Practica2 Huber

4. DESARROLLO

I. Metodología

1) Entender el funcionamiento de un LCD.

En la primer parte de la práctica se utilizara un simulador de LCD (Foto1) para entender como es el

funcionamiento de un Display LCD, entendiendo los pasos para configurar al LCD en un modo de 4 bits además

de entender los pasos necesarios para mandar un dato o comando a la pantalla del LCD.

Foto1. Simulador Java LCD

2) Realizar un programa en ensamblador para manda datos a un LCD con 4 bits.

La segunda parte de la práctica consiste en realizar un programa en ensamblador que nos permita mostrar un

mensaje en el LCD utilizando una configuración de 4 bits.

3) Realizar una simulación Proteus del código.

Posteriormente se realizara una simulación en Proteus utilizando el código anterior.

4) Probar el código anterior en la tarjeta de desarrollo.

Posteriormente se realizara la prueba del código en la tarjeta de desarrollo para PIC18F4550 para observar

que el programa funciona correctamente físicamente.

Page 5: Practica2 Huber

II. Gráficas, Dibujos y Tablas

1) Entender el funcionamiento de un LCD.

En la primer parte de la práctica se utilizó el simulador Java LCD para entender los pasos de configuración y

mandar datos al LCD en configuración de 4 bits. Para mandar a mostrar un dato en el LCD es muy simple tal y

como lo explica la siguiente tabla (Tabla2):

1. Configura el LCD en modalidad de 4 bits

Para configurar el LCD en 4bits solo es necesario mandar al puerto de datos el código 0x20 con RS=0, RW=0. Todo esto seguido de un pulso de habilitación el cual se consigue cambiando el valor de E=0 a E=1 y posteriormente regresarlo a E=0.

2. Configurar el cursor de la pantalla

Para configurar el cursor de la pantalla es necesario mandarle un simple comando al LCD, sin embargo ahora que está configurado en un modo de 4 bits, debemos mandar el código de una instrucción primero la parte más significativa seguida de un pulso de habilitación y posteriormente la parte menos significativa seguido de otro pulso de habilitación. Por ejemplo para configurar el cursor visible se envía el código 0XFF con RS=0 y RW=0

3. Enviar un dato a la pantalla del LCD

Po ultimo para enviar un dato a la pantalla del LCD se debe de seguir lo mismos pasos que el anterior al mandar un código en LCD en configuración de 4 bits. Aunque el pin de RS=1 Por ejemplo para mandar la letra A se envía el código 0x41 con RS=1 y RW=0

Tabla2. Configuración del LCD Simulador

Page 6: Practica2 Huber

2) Realizar un programa en ensamblador para manda datos a un LCD con 4 bits.

La segunda parte de la práctica consistió en realizar un programa que mande a mostrar datos al LCD en 4 bits,

para esto se creó una serie de subrutinas que se mandan a llamar para configurar y mandar datos al LCD, de

tal manera que inicializar y mandar un dato al LCD se realiza con el siguiente código:

call Inicio_LCD call LCD_Limpiapantalla call LCD_linea1 movlw 'A' movwf LCD call LCD_dato

Por lo tanto las diferentes subrutinas creadas para controlar el LCD en 4 bits pueden observarse en la siguiente

tabla (Tabla3):

Inicio_LCD Inicio_LCD: movlw 0x20 ;INICIO LCD 4 BITS movwf PORTD,0 bcf _EN,0 bcf _RS,0 bcf _RW,0 call Pulso_E call retardito movlw b'00001100' ;bit0- 1 cursor parpadea movwf LCD,0 ;bit1- 1 cursor mostrado call LCD_comando ;bit2- 0 desplegador encendido return

Esta rutina realiza la configuración inicial el LCD para que entre en modo de 4 Bits y posteriormente manda un comando al LCD donde le dice como configurar al cursor utilizando los bits menos significativos del código que se envía como comando.

Pulso_E

;PULSO ENABLE PARA MANDAR DATOS AL LCD Pulso_E: bsf _EN,0 call retardito bcf _EN,0 return

Esta rutina se encarga de generar un pulso del pin Enable del LCD al cambiarlo de un estado bajo a no alto y posteriormente a otro estado bajo.

LCD_comando

;COMANDO AL LCD LCD_comando: andlw 0xF0 movwf PORTD,0 bcf _EN,0 bcf _RS,0 bcf _RW,0 call Pulso_E

Esta rutina se encarga de mandar un comando al LCD ya que mantienen al pin RS en bajo. El principio de esta rutina se encuentra en mandar la pate más significativa y posteriormente la menos significativa de un código de 8 bit para el LCD todo esto debido a que es un rutina para un LCD en modo de 4 bit. El código que envía al LCD es el contenido del registro LCD.

Page 7: Practica2 Huber

call retardin movff LCD, LCD_low rlncf LCD_low,1,0 rlncf LCD_low,1,0 rlncf LCD_low,1,0 rlncf LCD_low,1,0 movff LCD_low,PORTD bcf _RS,0 bcf _RW,0 call Pulso_E call retardin return

LCD_dato

;DATO O CARACTER AL LCD LCD_dato: andlw 0xF0 movwf PORTD,0 bcf _EN,0 bsf _RS,0 bcf _RW,0 call Pulso_E call retardin movff LCD, LCD_low rlncf LCD_low,1,0 rlncf LCD_low,1,0 rlncf LCD_low,1,0 rlncf LCD_low,1,0 movff LCD_low,PORTD bsf _RS,0 bcf _RW,0 call Pulso_E call retardin return

Esta rutina es muy parecida a la rutina de LCD_comando cuya única diferencia es el valor del pin RS en alto ya que cualquier código que se envié al LCD ira directamente a mostrarse en la pantalla del LCD.

LCD_Limpiapantalla

LCD_Limpiapantalla: movlw 0x01 movwf LCD call LCD_comando

Esta subrutina se encarga de enviar un comando específico al LCD para limpiar la pantalla completa.

LCD_linea1

;LCD LINEA 1 LCD_linea1: movlw 0x80 movwf LCD

Mueve el cursor de la pantalla LCD a la posición de la primera línea y primera columna.

Page 8: Practica2 Huber

call LCD_comando return LCD_linea2

;LCD LINEA 2 LCD_linea2: movlw 0xC0 movwf LCD call LCD_comando return

Mueve el cursor de la pantalla LCD a la posición de la segunda línea y primera columna.

Tabla3. Subrutinas para configurar y controlar el LCD en 4 bits

3) Realizar una simulación Proteus del código.

Para comprobar el correcto funcionamiento del LCD se simulo en Proteus la conexión de un LCD en

configuración de 4 bits con un microcontrolador PIC18F4550 para observar si los daos que se enviaban era

correctos (Foto2).

Foto2. Simulación Proteus de LCD 4 bits

III. Mediciones y resultados

1) Realizar un programa en ensamblador para manda datos a un LCD con 4 bits.

Se realizó un programa en ensamblador que envía datos y comandos al LCD para configurarlo o mostrar datos

en su pantalla, el listado de instrucciones y uso se puede ver en la siguiente tabla (Tabla4):

Page 9: Practica2 Huber

INSTRUCCIONES DESCRIPCION

Inicio_LCD Configura el LCD en 4 bits y configura el estado del cursor

LCD_comando Manda el contenido del registro LCD como un comando

LCD_dato Manda el contenido del registro LCD a mostrar en la pantalla LCD_Limpiapantalla Limpia la pantalla y regresa el cursor a la posición inicial

LCD_linea1 Mueve el cursor a la fila uno columna uno

LCD_linea2 Mueve el cursor a la fila dos columna uno

Tabla4. Instrucciones para controlar el LCD

2) Probar el código anterior en la tarjeta de desarrollo.

Por último se realizó una prueba en la tarjeta de desarrollo de la práctica anterior y se observó un correcto

funcionamiento al desplegar la frase -“Practica LCD” Huber Girón – (Foto3).

Foto3. Prueba física LCD 4 bits

Page 10: Practica2 Huber

5. CONCLUSIONES

En conclusión se puede decir que aprender a manejar un LCD desde el nivel básico de ensamblador nos

permite comprender como funciona la interacción de un microcontrolador y otros dispositivos ya que

generalmente al utilizar una pantalla LCD, TFT, algún sensor como ultrasónicos, pirolicos, de humedad,

módulos bluetooth o de radiofrecuencia la mayoría de estos si son digitales, poseen un microcontrolador y por

lo tanto la comunicación de un microcontrolador a otro se vuele muy importante.

Por otra parte es muy importante conocer todos los recursos que se poseen al realizar un proyecto como en el

caso de los simuladores quienes nos pueden mostrar un acercamiento a la realidad cuando queremos simular

un prototipo.

6. REFERENCIAS

DINCERAYDIN. 2003. LCD Simulator. [En línea] 2003. [Citado el: 24 de Marzo de 2012.]

http://www.dinceraydin.com/djlcdsim/djlcdsim.html.

Marcelo, Jose Ignacio Suarez. 2008. Cómo gobernar un display LCD alfanumérico . [En línea] 2008. [Citado el: 24 de

Febrero de 2012.] http://eii.unex.es/profesores/jisuarez/descargas/ip/lcd_alfa.pdf.