Top Banner
 ESCUELA SUPERIOR POLITECNICA DE CHIMBORAZO FACULTAD DE INFORMATICA Y ELECTRONICA ESCUELA DE INGENIERIA ELECTRONICA ELECTRONICA APLICADA TONY FLORES  VICTOR MONTES GEOVANNY VALENCIA GLORIA VANEGAS TEMA: PANTALLAS LCD OBJETIVOS  Controlar una pantalla LCD mediante el PIC16F84   Realizar un programa que presente en pantalla los nombres de los integrantes del grupo INTRODUCCION La pantalla de cristal liquido o LCD (Liquid Crystal Display) es un dispositivo microcontrolado de visualización grafica para la presentación de caracteres, símbolos o incluso dibujos (en algunos modelos), es este caso dispone de 2 filas de 16 caracteres cada una y cada carácter dispone de una matriz de 5x7 puntos (pixels), aunque los hay de otro número de filas y caracteres. Este dispositivo esta gobernado internamente por un microcontrolador Hitachi 44780 y regula todos los parámetros de presentación, este modelo es el mas comúnmente usado y esta información se basará en el manejo de este u otro LCD compatible. CARACTERISTICAS PRINCIPALES  Pantalla de caracteres ASCII, además de los caracteres Kanji y Griegos.  Desplazamiento de los caracteres hacia la izquierda o la derecha.  Proporciona la dirección de la posición absoluta o relativa del caracter.  Memoria de 40 caracteres por línea de pantalla.  Movimiento del cursor y cambio de su aspecto.  Permite que el usuario pueda programar 8 caracteres.  Conexión a un procesador usando un interfaz de 4 u 8 bits ESTRUCTURA Se trata de un sistema eléctrico de presentación de datos formado por 2 capas conductoras transparentes y en medio un material especial cristalino (cristal líquido) que tienen la capacidad de orientar la luz a su paso. Cuando la corriente circula entre los electrodos transparentes con la forma a representar (por ejemplo, un segmento de un número) el material cristalino se reorienta alterando su transparencia.
12

Control LCD 16F84

Jul 20, 2015

Download

Documents

Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Control LCD 16F84

5/17/2018 Control LCD 16F84 - slidepdf.com

http://slidepdf.com/reader/full/control-lcd-16f84 1/12

ESCUELA SUPERIOR POLITECNICA DE CHIMBORAZOFACULTAD DE INFORMATICA Y ELECTRONICA

ESCUELA DE INGENIERIA ELECTRONICAELECTRONICA APLICADA

TONY FLORES VICTOR MONTES

GEOVANNY VALENCIAGLORIA VANEGAS

TEMA: PANTALLAS LCD

OBJETIVOS

•  Controlar una pantalla LCD mediante el PIC16F84 •  Realizar un programa que presente en pantalla los nombres de los integrantes

del grupo 

INTRODUCCION

La pantalla de cristal liquido o LCD (Liquid Crystal Display) es un dispositivomicrocontrolado de visualización grafica para la presentación de caracteres, símbolos oincluso dibujos (en algunos modelos), es este caso dispone de 2 filas de 16 caracterescada una y cada carácter dispone de una matriz de 5x7 puntos (pixels), aunque los hayde otro número de filas y caracteres. Este dispositivo esta gobernado internamente por

un microcontrolador Hitachi 44780 y regula todos los parámetros de presentación, estemodelo es el mas comúnmente usado y esta información se basará en el manejo deeste u otro LCD compatible.

CARACTERISTICAS PRINCIPALES

•  Pantalla de caracteres ASCII, además de los caracteres Kanji y Griegos.•  Desplazamiento de los caracteres hacia la izquierda o la derecha.•  Proporciona la dirección de la posición absoluta o relativa del caracter.•  Memoria de 40 caracteres por línea de pantalla.•  Movimiento del cursor y cambio de su aspecto.•  Permite que el usuario pueda programar 8 caracteres.•  Conexión a un procesador usando un interfaz de 4 u 8 bits

ESTRUCTURA

Se trata de un sistema eléctrico de presentación de datos formado por 2 capasconductoras transparentes y en medio un material especial cristalino (cristal líquido)que tienen la capacidad de orientar la luz a su paso.

Cuando la corriente circula entre los electrodos transparentes con la forma arepresentar (por ejemplo, un segmento de un número) el material cristalino sereorienta alterando su transparencia.

Page 2: Control LCD 16F84

5/17/2018 Control LCD 16F84 - slidepdf.com

http://slidepdf.com/reader/full/control-lcd-16f84 2/12

El material base de un LCD lo constituye el cristal líquido, el cual exhibe uncomportamiento similar al de los líquidos y unas propiedades físicas anisotrópicassimilares a las de los sólidos cristalinos. Las moléculas de cristal líquido poseen unaforma alargada y son más o menos paralelas entre sí en la fase cristalina. La mayoríade cristales responden con facilidad a los campos eléctricos, exhibiendo distintas

propiedades ópticas en presencia o ausencia del campo.

El tipo más común de visualizador LCD es, con mucho, el denominado nemático detorsión, término que indica que sus moléculas en su estado desactivado presentan unadisposición en espiral. La polarización o no de la luz que circula por el interior de laestructura, mediante la aplicación o no de un campo eléctrico exterior, permite laactivación de una serie de segmentos transparentes, los cuales rodean al cristallíquido.

TIPOS

Según la disposición molecular y su ordenamiento, se clasifican en tres tipos:

•  Nemáticos•  Esméticos•  Colestéricos

Según sus características ópticas, pueden también clasificarse como:

•  Reflectivos•  Transmisivos•  Transreflectivos 

FUNCIONAMIENTOPara comunicarse con la pantalla LCD podemos hacerlo por medio de sus patitas deentrada de dos maneras posibles, con bus de 4 bits o con bus de 8 bits, este último esel que explicaremos. En la siguiente figura vemos las dos maneras posibles deconexionar el LCD con un PIC 16F84.

Conexionado con un bus de 4 bits

Page 3: Control LCD 16F84

5/17/2018 Control LCD 16F84 - slidepdf.com

http://slidepdf.com/reader/full/control-lcd-16f84 3/12

 

Conexionado con un bus de 8 bits

Como puede apreciarse el control de contraste se realiza al dividir la alimentación de5V con una resistencia variable de 10K.

Las líneas de datos son tri estado, esto indica que cuando el LCD no esta habilitado susentradas y salidas pasan a alta impedancia

DESCRIPCION DE LOS PINES

PIN Nº  SIMBOLO  DESCRIPCION 1 Vss Tierra de alimentación GND2 Vdd Alimentación de +5V CC3 Vo Contraste del cristal liquido. ( 0 a +5V )

4 RSSelección del registro de control/registro de datos:

RS=0 Selección registro de controlRS=1 Selección registro de datos

5 R/WSeñal de lectura/escritura:

R/W=0 Escritura (Write)R/W=1 Lectura (Read)

6 EHabilitación del modulo:

E=0 Módulo desconectado

E=1 Módulo conectado7-14 D0-D7 Bus de datos bidireccional.

JUEGOS DE INSTRUCCIONES

Estas son las instrucciones para el control del modulo LCD Hitachi 44780 o compatible.

CLEAR DISPLAY Borra el módulo LCD y coloca el cursor en la primera posición (dirección 0). Pone el bitI/D a 1 por defecto. 

RS  R/W  DB7  DB6  DB5  DB4  DB3  DB2  DB1  DB0 0  0  0  0  0  0  0  0  0  1 

Page 4: Control LCD 16F84

5/17/2018 Control LCD 16F84 - slidepdf.com

http://slidepdf.com/reader/full/control-lcd-16f84 4/12

Tiempo de ejecución: 1.64ms

HOMEColoca el cursor en la posición de inicio (dirección 0) y hace que el display comience adesplazarse desde la posición original. El contenido de la memoria RAM de datos de

visualización (DD RAM) permanece invariable. La dirección de la memoria RAM dedatos para la visualización (DD RAM) es puesta a 0.

RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB00 0 0 0 0 0 0 0 1 X

Tiempo de ejecución: 1.64ms

ENTRY MODE SETEstablece la dirección de movimiento del cursor y especifica si la visualización se vadesplazando a la siguiente posición de la pantalla o no. Estas operaciones se ejecutandurante la lectura o escritura de la DD RAM o CG RAM. Para visualizar normalmenteponer el bit S=0.

RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB00 0 0 0 0 0 0 1 I/D S

Tiempo de ejecución: 40µs

DISPLAY ON/OFF CONTROL Activa o desactiva poniendo en ON/OFF tanto al display (D) como al cursor (C) y seestablece si este último debe o no parpadear (B).

RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0

0 0 0 0 0 0 1 D C BTiempo de ejecución: 40µs

CURSOR OR DISPLAY SHIFTMueve el cursor y desplaza el display sin cambiar el contenido de la memoria de datosde visualización DD RAM.

RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB00 0 0 0 0 1 S/C R/L X X

Tiempo de ejecución: 40µs FUNCTION SETEstablece el tamaño de interfase con el bus de datos (DL), número de líneas deldisplay (N) y tipo de carácter (F)

RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB00 0 0 0 1 DL N F X X

Tiempo de ejecución: 40µs

SET THE CG RAM ADDRESSEl módulo LCD además de tener definidos todo el conjunto de caracteres ASCII,permite al usuario definir 4 u 8 caracteres gráficos. La composición de estos caracteresse va guardando en una memoria llamada CG RAM con capacidad para 64 bytes. Cadacarácter gráfico definido por el usuario se compone de 16 u 8 bytes que se almacenanen sucesivas posiciones de la CG RAM.

Page 5: Control LCD 16F84

5/17/2018 Control LCD 16F84 - slidepdf.com

http://slidepdf.com/reader/full/control-lcd-16f84 5/12

 Mediante esta instrucción se establece la dirección de memoria CG RAM a partir de lacual se irán almacenando los bytes que definen un carácter gráfico. Ejecutando estecomando todos los datos que se lean o escriban posteriormente, lo hacen desde estamemoria CG RAM.

RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB00 0 0 1 Dirección de la CG RAM

Tiempo de ejecución: 40µs

SET THE DD RAM ADDRESSLos caracteres o datos que se van visualizando, se van almacenando en una memoriallamada DD RAM para de aquí pasar a la pantalla.

Mediante esta instrucción se establece la dirección de la memoria DD RAM a partir dela cual se irán almacenando los datos a visualizar. Ejecutando este comando, todos los

datos que se escriban o lean posteriormente lo harán desde esta memoria DD RAM.Las direcciones de la 80h a la 8Fh corresponden con los 16 caracteres del primerrenglón y de la C0h a la CFh con los 16 caracteres del segundo renglón, para estemodelo de LCD.

RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB00 0 1 Dirección de la DD RAM

Tiempo de ejecución: 40µS

READ BUSY FLAG & ADDRESSCuando el modulo LCD esta ejecutando cualquiera de estas instrucciones, tarda uncierto tiempo de ejecución en el que no se debe mandar ninguna instrucción. Para ellodispone de un flag llamado BUSY (ocupado) que indica que se está ejecutando unainstrucción previa.

Esta instrucción de lectura informa del estado de dicho flag además de proporcionar elvalor del contador de direcciones de la CG RAM o de la DD RAM según la última que sehaya empleado.

RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB00 1 BF Dirección de la CG RAM o DD RAM

Tiempo de ejecución: 40µs

WRITE DATA TO CG OR DD RAMMediante este comando se escribe en la memoria DD RAM los datos que se quierenpresentar en pantalla y que serán los diferentes códigos ASCII de los caracteres avisualizar.

Igualmente se escribe en la memoria CG RAM los diferentes bytes que permitenconfeccionar caracteres gráficos a gusto del usuario.

El escribir en uno u otro tipo de memoria depende de si se ha empleado previamente

la instrucción de direccionamiento DD RAM o la de direccionamiento CG RAM.

Page 6: Control LCD 16F84

5/17/2018 Control LCD 16F84 - slidepdf.com

http://slidepdf.com/reader/full/control-lcd-16f84 6/12

RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB01 0 Código ASCII o byte del carácter gráfico

Tiempo de ejecución: 40µs READ DATA FROM CG OR DD RAM

Mediante este comando se lee de la memoria DD RAM los datos que haya almacenadosy que serán los códigos ASCII de los caracteres almacenados. Igualmente se lee de lamemoria CG RAM los diferentes bytes con los que se ha confeccionado un determinadocarácter gráfico.

El leer de uno u otro tipo de memoria depende de si se ha empleado previamente lainstrucción de direccionamiento de la DD RAM o la de direccionamiento CG RAM.

RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB01 1 Código ASCII o byte del carácter gráfico

Tiempo de ejecución: 40µs

 ABREVIATURAS EMPLEADAS EN LOS CÓDIGOS ANTERIORES

S  1 - Desplaza la visualización cada vez que se escribe un dato 0 - Modo normal 

I/D  1 - Incremento del cursor 0 - Decremento del cursor 

S/C  1 - Desplaza el display 0 - Mueve el cursor 

R/L  1 - Desplazamiento a la derecha 0 - Desplazamiento a la izquierda 

BF 1 - Módulo ocupado 0 - Módulo disponible 

DL  1 - Bus de datos de 8 bits 0 - Bus de datos de 4 bits 

N  1 - LCD de dos líneas 0 - LCD de una línea 

F  1 - Carácter de 5 x 10 puntos 0 - Carácter de 5 x 7 puntos 

B  1 - Parpadeo del cursor ON 0 - Parpadeo del cursor OFF 

C  1 - Cursor ON 0 - Cursor OFF 

D  1 - Display ON 0 - Display OFF  X  Indeterminado 

Page 7: Control LCD 16F84

5/17/2018 Control LCD 16F84 - slidepdf.com

http://slidepdf.com/reader/full/control-lcd-16f84 7/12

 APLICACIÓN PRÁCTICA

Realizar un programa que permita visualizar en una pantalla LCD losnombres de los integrantes de grupo

Rutinas de tratamiento del LCD (LCD_CXX.INC)#define ENABLE bsf PORTA,2 ;activa señal E#define DISABLE bcf PORTA,2 ;desactiva señal E#define LEER bsf PORTA,1 ;pone LCD en modo RD#define ESCRIBIR bcf PORTA,1 ;pone LCD en modo WR #define OFF_COMANDO bCf PORTA,0 ;desactiva modo RS#define ON_COMANDO bsf PORTA,0 ;activa RS modo dato

CBLOCK Lcd_varLcd_Temp_1 ;inicio de las variables seráLcd_Temp_2 ;la primera dirección libre disponible

ENDCUP_LCD

bsf STATUS,RP0 ;banco 1clrf PORTB ;RB<0-7>salidas digitalesclrf PORTA ;puerta A salidasbcf STATUS,RP0 ;banco 0OFF_COMANDO ;RS=0DISABLE ;E=0return

LCD_BUSY LEER ;pone el LCD en modo RDbsf STATUS,RP0movlw h'FF'movwf PORTB ;puerta B como entradabcf STATUS,RP0 ;selecciona el banco 0ENABLE ;activa el LCDnop

LCD_BUSY_1btfsc PORTB,7 ;chequea bit de busygoto LCD_BUSY_1DISABLE ;desactiva el LCDbsf STATUS,RP0clrf PORTB ;puerta B salida

bcf STATUS,RP0ESCRIBIR ;pone LCD en modo WR return

LCD_EENABLE ;activa EnopDISABLE ;desactiva Emovlw .14movwf Lcd_Temp_1

LCD_E_1decfsz Lcd_Temp_1,F ;pierde unos 40 microseg para la constante de

goto LCD_E_1 ;tiempo Tc de los nuevos módulos LCDreturn ;de winteck 

Page 8: Control LCD 16F84

5/17/2018 Control LCD 16F84 - slidepdf.com

http://slidepdf.com/reader/full/control-lcd-16f84 8/12

LCD_DATOOFF_COMANDO ;desactiva RS (modo comando)movwf PORTB ;valor ASCII a sacar por PORTBcall LCD_BUSY ;espera a que se libere el LCDON_COMANDO ;activa RS (modo dato)goto LCD_E ;genera pulso de E

LCD_REGOFF_COMANDO ;desactiva RS (modo comando)movwf PORTB ;código de comandocall LCD_BUSY ;LCD libre?goto LCD_E ;si:genera el pulso de E

LCD_INImovlw b'00111000'call LCD_REG ;codigo de instruccióncall LCD_DELAY ;temporizamovlw b'00111000'

call LCD_REG ;codigo de instruccioncall LCD_DELAY ;temporizamovlw b'00111000'call LCD_REG ;codigo de instruccioncall LCD_DELAY ;temporizamovlw b'00000001' ;borra LCD y HOMEcall LCD_REGreturn

LCD_DELAY clrwdtmovlw .10

movwf Lcd_Temp_1clrf Lcd_Temp_2LCD_DELAY_1

decfsz Lcd_Temp_2,Fgoto LCD_DELAY_1decfsz Lcd_Temp_1,Fgoto LCD_DELAY_1return

Programa completo del enunciado propuesto

LIST P=16F84

#INCLUDE <P16F84.INC>Lcd_var EQU 0X20 ;inicio de variables de las rutinas LCDDelay_var EQU 0x22 ;variable temporal para temporización

ORG 0X00 ;vector de resetgoto Inicio

ORG 0X05 ;salva el vector de interrupción

INCLUDE LCD_CXX.INC ;incluye las rutinas de manejo del LCD

Delaysleep ;temporiza 34.6 mS hasta que rebose el WDTdecfsz Delay_var,F ;se ha repetido el número de veces deseadogoto Delay ;no:esperar otros 18mS

Page 9: Control LCD 16F84

5/17/2018 Control LCD 16F84 - slidepdf.com

http://slidepdf.com/reader/full/control-lcd-16f84 9/12

return

;PROGRAMA PRINCIPAL

Inicioclrf PORTB ;borra los latch de salida

clrf PORTA ;borra los latch de salidabsf STATUS,RP0 ;selecciona el banco 1clrf TRISB ;puerta B se configura como salidaclrf TRISA ;puerta A se configura como salidamovlw b'00001001'movwf OPTION_REG ;preescaler de 2 al WDTbcf STATUS,RP0 ;selcciona el banco 0

call UP_LCD ;configura puerto para LCDcall LCD_INI ;inicia el LCDmovlw b'00001100'call LCD_REG ;LCD On, cursor y blink Off 

Loopclrwdt ;refresca el WDTmovlw 0X80call LCD_REG ;coloca el cursor en la primera posiciónmovlw 'G'call LCD_DATOmovlw 'L'call LCD_DATOmovlw 'O'call LCD_DATOmovlw 'R'

call LCD_DATOmovlw 'I'call LCD_DATOmovlw 'A'call LCD_DATOmovlw ' 'call LCD_DATOmovlw ' 'call LCD_DATOmovlw 'G'call LCD_DATOmovlw 'E'call LCD_DATOmovlw 'O'call LCD_DATOmovlw 'V'call LCD_DATOmovlw 'A'call LCD_DATOmovlw 'N'call LCD_DATOmovlw 'N'call LCD_DATOmovlw 'Y'call LCD_DATO

movlw 0XC0 ;salta a la segunda líneacall LCD_REGmovlw ' '

Page 10: Control LCD 16F84

5/17/2018 Control LCD 16F84 - slidepdf.com

http://slidepdf.com/reader/full/control-lcd-16f84 10/12

call LCD_DATOmovlw 'T'call LCD_DATOmovlw 'O'call LCD_DATOmovlw 'N'

call LCD_DATOmovlw 'Y'call LCD_DATOmovlw ' 'call LCD_DATOmovlw ' 'call LCD_DATOmovlw ' 'call LCD_DATOmovlw ' 'call LCD_DATOmovlw 'V'

call LCD_DATOmovlw 'I'call LCD_DATOmovlw 'C'call LCD_DATOmovlw 'T'call LCD_DATOmovlw 'O'call LCD_DATOmovlw 'R'call LCD_DATO

movlw .28movwf Delay_varcall Delay ;temporiza 1

movlw b'0000001'call LCD_REGmovlw .28movwf Delay_varcall Delaygoto Loop

END

Rutinas de control del LCD

Estas rutinas suelen incluirse como fichero independiente al del programa principal. Enla declaración de etiquetas utilizamos la directiva #define. Cada vez que se utiliza, sehace corresponder a la etiqueta que le sigue el valor que viene a continuación. Así porejemplo cada vez que utilicemos “ENABLE”   es como si se estuviera poniendo “bsf PORTA,2” .

 A continuación explicamos las rutinas más importantes que se utilizan para el manejodel LCD

Page 11: Control LCD 16F84

5/17/2018 Control LCD 16F84 - slidepdf.com

http://slidepdf.com/reader/full/control-lcd-16f84 11/12

UP_LCD Configura las líneas del PIC para el LCDLCD_BUSY Lectura de la bandera busy y la direcciónLCD_E Pulso de enable. En los nuevos LCD esta señal debe estar a “0” unos

40 µs antes de volver a activarse a “1” LCD_DATO Envía el dato presente en W a la memoria DDRAM

LCD_REG Escritura de comandos en el LCD, envía el comando presente en WLCD_INI Inicialización del LCD enviando el comando “Function Set” 3 vecesconsecutivas con un intervalo de 5 ms. El LCD queda borrado y en laprimera posición

LCD_DELAY Rutina de temporización de unos 5 ms. Se emplean las variablesLcd_Temp_1 y Lcd_Temp_2 en lugar de TMR0, permitiendo el uso deeste para otras aplicaciones del usuario

Programa principal

Primero debemos inicializar el LCD, este proceso es necesario solamente cuando se

utiliza por primera vez el LCD en el programa, una vez que se comience a mandarórdenes o datos al LCD es igual. Cuando se trata de una orden se debe introducir elcódigo de control en W y llamar la rutina LCD_REG, y si se trata de un dato seintroduce este en W y se llamará a LCD_DATO.

SIMULACION

Para verificar si los resultados son los adecuados utilizamos el programa PIC Simulator,este programa permite abrir el archivo .HEX y mediante la configuración de laherramienta llamada LCD Module podemos observar que frase tenemos presente en elLCD, así pues pudimos verificar que los resultados son los adecuados.

Page 12: Control LCD 16F84

5/17/2018 Control LCD 16F84 - slidepdf.com

http://slidepdf.com/reader/full/control-lcd-16f84 12/12

 

CONCLUSIONES

Con la implementación de esta práctica hemos llegado a las siguientes conclusiones:

•  Debemos tener muy en cuenta al momento de configurar cada una de lasentradas o salidas del PIC, ya que de esto dependerá el correctofuncionamiento del LCD.

•  Tomar en cuenta el número total de caracteres que deseamos escribir y cual esel valor adecuado para lograr posicionarnos en el primer segmento del LCD, yaque primero debemos posicionarnos, luego escribir, y si ya llegamos a 16caracteres, hacer al salto de línea para poder continuar en la fila inferior.

•  De acuerdo a lo estudiado podemos decir que el PIC va en cierta forma a

controlar a otro PIC ya que recordemos que los LCD están gobernados por unmicrocontrolador interno.

RECOMENDACIONES

•  Utilizar en lo posible un simulador para verificar si el camino que estamossiguiendo es correcto o de lo contrario tomar medidas para obtener losresultados que se nos han pedido 

•   Al momento de implementar el circuito tomar las debidas precauciones y en loposible ayudarse de material complementario, ya que un manejo inadecuado de

los dispositivos puede ocasionar que los mismos sufran daños irreversibles. 

BIBLIOGRAFIA

http://www.x-robotics.com/rutinas.htm#LCDhttp://www.x-robotics.com/downloads/rutinas/lcd.txthttp://www.x-robotics.com/downloads/rutinas/hola.txthttp://es.wikipedia.org/wiki/LCD#LCD_en_la_industria

REVISTA DE PROGRAMACIÓN DE PIC’s