otros conceptos de programación:...

32
1 Tema 10 Otros conceptos de programación: LCD

Upload: others

Post on 13-Mar-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Otros conceptos de programación: LCDcoolab.umh.es/sea/microcontroladores_old_0809/tema10_LCD.pdf · 2019-02-04 · 4 Tema 10. Otros conceptos de programación: LCD Las pantallas

1

Tema 10

Otros conceptos de programación: LCD

Page 2: Otros conceptos de programación: LCDcoolab.umh.es/sea/microcontroladores_old_0809/tema10_LCD.pdf · 2019-02-04 · 4 Tema 10. Otros conceptos de programación: LCD Las pantallas

2

Tema 10. Otros conceptos de programación: LCD

Programación de un LCD CAP. 13

Page 3: Otros conceptos de programación: LCDcoolab.umh.es/sea/microcontroladores_old_0809/tema10_LCD.pdf · 2019-02-04 · 4 Tema 10. Otros conceptos de programación: LCD Las pantallas

3

Tema 10. Otros conceptos de programación: LCD

En muchos proyectos es necesario visualizar información a través de una pantalla de bajo coste. La forma más utilizada es mediante

un display LCD tal como se explica en este tema.

Page 4: Otros conceptos de programación: LCDcoolab.umh.es/sea/microcontroladores_old_0809/tema10_LCD.pdf · 2019-02-04 · 4 Tema 10. Otros conceptos de programación: LCD Las pantallas

4

Tema 10. Otros conceptos de programación: LCD

Las pantallas de cristal líquido LCD o display LCD para mensajes (Liquid Cristal Display) tienen la capacidad de mostrar cualquier carácter alfanumérico, permitiendo representar la información que genera cualquier equipo electrónico de una forma fácil y económica.

La pantalla consta de una matriz de caracteres (normalmente de 5x7 o 5x8 puntos) distribuidos en una, dos, tres o cuatrolíneas de 16 hasta 40 caracteres cada línea.

El proceso de visualización es gobernado por un microcontrolador incorporado a la pantalla, siendo el Hitachi 44780 el modelo de controlador más utilizado.

Page 5: Otros conceptos de programación: LCDcoolab.umh.es/sea/microcontroladores_old_0809/tema10_LCD.pdf · 2019-02-04 · 4 Tema 10. Otros conceptos de programación: LCD Las pantallas

5

Tema 10. Otros conceptos de programación: LCD

LCD 2x16: está compuesto por 2 líneas de 16 caracteres

Page 6: Otros conceptos de programación: LCDcoolab.umh.es/sea/microcontroladores_old_0809/tema10_LCD.pdf · 2019-02-04 · 4 Tema 10. Otros conceptos de programación: LCD Las pantallas

6

Tema 10. Otros conceptos de programación: LCD

LCD 4x40: está compuesto por 4 líneas de 40 caracteres

Page 7: Otros conceptos de programación: LCDcoolab.umh.es/sea/microcontroladores_old_0809/tema10_LCD.pdf · 2019-02-04 · 4 Tema 10. Otros conceptos de programación: LCD Las pantallas

7

Tema 10. Otros conceptos de programación: LCD

La tarjeta EasyPIC dispone de un módulo LCD tipo 16x2.Las características generales de un módulo LCD 16x2 son las siguientes:

•Consumo muy reducido, del orden de 7.5mW•Pantalla de caracteres ASCII, además de los caracteres japoneses Kanji, caracteres griegos y símbolos matemáticos.•Desplazamiento de los caracteres hacia la izquierda o a la derecha•Memoria de 40 caracteres por línea de pantalla, visualizándose 16 caracteres por línea•Movimiento del cursor y cambio de su aspecto•Permite que el usuario pueda programar 8 caracteres nuevos

CARACTERÍSTICAS

Page 8: Otros conceptos de programación: LCDcoolab.umh.es/sea/microcontroladores_old_0809/tema10_LCD.pdf · 2019-02-04 · 4 Tema 10. Otros conceptos de programación: LCD Las pantallas

8

Tema 10. Otros conceptos de programación: LCD

El módulo LCD tipo 16x2 puede ser gobernados de 2 formas principales:

•Conexión con bus de 4 bits•Conexión con bus de 8 bits

CARACTERÍSTICAS

Page 9: Otros conceptos de programación: LCDcoolab.umh.es/sea/microcontroladores_old_0809/tema10_LCD.pdf · 2019-02-04 · 4 Tema 10. Otros conceptos de programación: LCD Las pantallas

9

Tema 10. Otros conceptos de programación: LCD

PATILLAJE

Page 10: Otros conceptos de programación: LCDcoolab.umh.es/sea/microcontroladores_old_0809/tema10_LCD.pdf · 2019-02-04 · 4 Tema 10. Otros conceptos de programación: LCD Las pantallas

10

Tema 10. Otros conceptos de programación: LCD

El módulo LCD posee una zona de memoria RAM llamada DDRAM (Data Display RAM) donde se almacenan los caracteres que se van a mostrar en la pantalla.

Tiene una capacidad de 80 bytes, 40 por cada línea, de los cuales sólo 32 se pueden visualizar a la vez (16 bytes por línea).

De las 80 posibles, las dos direcciones más importantes de la DDRAM son:

•Dirección 00h, que es el comienzo de la primera línea•Dirección 40h, que el comienzo de la segunda línea

DDRAM

Page 11: Otros conceptos de programación: LCDcoolab.umh.es/sea/microcontroladores_old_0809/tema10_LCD.pdf · 2019-02-04 · 4 Tema 10. Otros conceptos de programación: LCD Las pantallas

11

Tema 10. Otros conceptos de programación: LCD

El LCD dispone de una zona de memoria interna no volátil llamada CGROM donde se almacena una tabla con los 192 caracteres que pueden ser visualizados.

Cada uno de los caracteres tiene su representación binaria de 8 bits. Para visualizar un carácter debe recibir por el bus de datos el código correspondiente.

Por ejemplo:“A” à b’01000001’

CARACTERES DEFINIDOS EN LA CGROM

Page 12: Otros conceptos de programación: LCDcoolab.umh.es/sea/microcontroladores_old_0809/tema10_LCD.pdf · 2019-02-04 · 4 Tema 10. Otros conceptos de programación: LCD Las pantallas

12

CARACTERES

DEFINIDOS

EN LA

CGROM

Page 13: Otros conceptos de programación: LCDcoolab.umh.es/sea/microcontroladores_old_0809/tema10_LCD.pdf · 2019-02-04 · 4 Tema 10. Otros conceptos de programación: LCD Las pantallas

13

Tema 10. Otros conceptos de programación: LCD

También permite definir 8 nuevos caracteres de usuario que se guardan en una zona de RAM denominada CGRAM (Character Generator RAM)

CARACTERES DEFINIDOS EN LA CGRAM

Page 14: Otros conceptos de programación: LCDcoolab.umh.es/sea/microcontroladores_old_0809/tema10_LCD.pdf · 2019-02-04 · 4 Tema 10. Otros conceptos de programación: LCD Las pantallas

14

Tema 10. Otros conceptos de programación: LCD

El LCD tiene 3 modos de funcionamiento principales:

•Modo Comando

•Modo Carácter o Dato

•Modo de lectura del Busy Flag o LCD Ocupada

MODOS DE FUNCIONAMIENTO

Page 15: Otros conceptos de programación: LCDcoolab.umh.es/sea/microcontroladores_old_0809/tema10_LCD.pdf · 2019-02-04 · 4 Tema 10. Otros conceptos de programación: LCD Las pantallas

15

Tema 10. Otros conceptos de programación: LCD

Consisten en diferentes códigos que se introducen a través del bus de datos del módulo LCD:

•Clear display•Home•Entry mode set•Display on/off control•Cursor or display shift•Function set•Set the cg ram address •Set the dd address•Read busy flag et address•Write data to cg or dd ram•Read data from cg or dd ram

COMANDOS DE CONTROL

Page 16: Otros conceptos de programación: LCDcoolab.umh.es/sea/microcontroladores_old_0809/tema10_LCD.pdf · 2019-02-04 · 4 Tema 10. Otros conceptos de programación: LCD Las pantallas

16

Tema 10. Otros conceptos de programación: LCD

COMANDOS DE CONTROL

Clear displayBorra el módulo LCD y coloca el cursor en la primera posición (dirección 0). Pone el bit I/D a " 1 " por defecto.

Código:

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

0 0 0 0 0 0 0 0 0 1

Tiempo de ejecución: 1.64 µs

Page 17: Otros conceptos de programación: LCDcoolab.umh.es/sea/microcontroladores_old_0809/tema10_LCD.pdf · 2019-02-04 · 4 Tema 10. Otros conceptos de programación: LCD Las pantallas

17

Tema 10. Otros conceptos de programación: LCD

COMANDOS DE CONTROL

HomeColoca el cursor en la posición de inicio (dirección 0) y hace que el display comience a desplazarse desde la posición original. El contenido de la memoria RAM de datos de visualización (DD RAM) permanecen invariables. La dirección de la memoria RAM de datos para la visualización (DD RAM) es puesta a 0.

Código:

RS

R/W

DB7

DB6

DB5

DB4

DB3

DB2

DB1

DB0

0 0 0 0 0 0 0 0 1 X

Tiempo de ejecución: 1.64 µs

Page 18: Otros conceptos de programación: LCDcoolab.umh.es/sea/microcontroladores_old_0809/tema10_LCD.pdf · 2019-02-04 · 4 Tema 10. Otros conceptos de programación: LCD Las pantallas

18

Tema 10. Otros conceptos de programación: LCD

COMANDOS DE CONTROL

Entry mode set

Establece la dirección de movimiento del cursor y especifica si la visualización se va desplazando a la siguiente posición de la pantalla o no. Estas operaciones se ejecutan durante la lectura o escritura de la DD RAM o CG RAM. Para visualizar normalmente poner el bit S a '0".

Código:

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

0 0 0 0 0 0 0 1 1/D S

Tiempo de ejecución: 40 µs

Page 19: Otros conceptos de programación: LCDcoolab.umh.es/sea/microcontroladores_old_0809/tema10_LCD.pdf · 2019-02-04 · 4 Tema 10. Otros conceptos de programación: LCD Las pantallas

19

Tema 10. Otros conceptos de programación: LCD

COMANDOS DE CONTROL

.................etc, etc.

Todos los comandos de control están detallados en la práctica 7

Page 20: Otros conceptos de programación: LCDcoolab.umh.es/sea/microcontroladores_old_0809/tema10_LCD.pdf · 2019-02-04 · 4 Tema 10. Otros conceptos de programación: LCD Las pantallas

20

Tema 10. Otros conceptos de programación: LCD

Conexión de LCD mediante 4 bits

En la tarjeta EasyPIC, el visualizador LCD está conectado al Puerto D del PIC 16F877A mediante un bus de 4 bits.

Las conexiones son:

•Las 4 líneas superiores del módulo LCD, pines <DB7:DB4> se conectan a las 4 líneas superiores del Puerto D del PIC, pines <RD7:RD4>.•Pin RS del LCD a la línea RD2 del PIC.•Pin R/W del LCD a la línea RD1 del PIC.•Pin Enable del LCD a la línea RD3 del PIC.

Page 21: Otros conceptos de programación: LCDcoolab.umh.es/sea/microcontroladores_old_0809/tema10_LCD.pdf · 2019-02-04 · 4 Tema 10. Otros conceptos de programación: LCD Las pantallas

21

Tema 10. Otros conceptos de programación: LCD

Conexión de LCD mediante 4 bits

Page 22: Otros conceptos de programación: LCDcoolab.umh.es/sea/microcontroladores_old_0809/tema10_LCD.pdf · 2019-02-04 · 4 Tema 10. Otros conceptos de programación: LCD Las pantallas

22

Tema 10. Otros conceptos de programación: LCD

Librería de SUBRUTINAS para el manejo del LCD

La librería LCD_EASY.INC contiene las subrutinas de control que permiten realizar las tareas básicas de control de un módulo LCD conectado según el circuito de la figura anterior.

La librería LCD_EASY.INC es una versión de la librería LCD_4BIT.INC (descrita en el libro) modificada según laconexión del módulo LCD con el microcontrolador PIC16F877A en la EasyPIC.

ATENCIÓN: La librería LCD_4BIT.INC está diseñada para funcionar con un PIC16F84A y la LCD_EASY.INC para el PIC16F877A

Page 23: Otros conceptos de programación: LCDcoolab.umh.es/sea/microcontroladores_old_0809/tema10_LCD.pdf · 2019-02-04 · 4 Tema 10. Otros conceptos de programación: LCD Las pantallas

23

Tema 10. Otros conceptos de programación: LCD

Librería de SUBRUTINAS para el manejo del LCD

La librería LCD_EASY.INC hace uso de las subrutinas de retardo incluidas en la librería RETARDOS.INC.

Recordad que las subrutinas de retardo de la librería RETARDOS.INC están diseñadas suponiendo que la frecuencia del oscilador es de 4 MHz. Como en la tarjeta EasyPIC, el reloj es de 8 MHz, habrá que duplicar las llamadas a las subrutinas de temporización para lograr los tiempos deseados. Así, por ejemplo, si se desea una espera de 500ms, el código a utilizar será:

call Retardo_500mscall Retardo_500ms

Page 24: Otros conceptos de programación: LCDcoolab.umh.es/sea/microcontroladores_old_0809/tema10_LCD.pdf · 2019-02-04 · 4 Tema 10. Otros conceptos de programación: LCD Las pantallas

24

Tema 10. Otros conceptos de programación: LCD

SUBRUTINAS en la librería LCD_EASY.INC

LCD_Inicializa Inicialización del módulo LCD: Configura funciones del LCD, produce reset por software, borra memoria y enciende pantalla. Es necesario ejecutar esta subrutina siempre al principio de losprogramas que vayan a utilizar la visualización mediante LCD.

LCD_EnviaComando. Escribe un comando en el registro del módulo LCD. La palabra de comando ha sido entregada a través del registro W. Trabaja en Modo Comando.

LCD_Caracter.Escribe en la memoria DDRAM del LCD el carácter ASCII introducido a a través del registro W. Trabaja en Modo Dato.

LCD_BorraBorra toda la pantalla

Page 25: Otros conceptos de programación: LCDcoolab.umh.es/sea/microcontroladores_old_0809/tema10_LCD.pdf · 2019-02-04 · 4 Tema 10. Otros conceptos de programación: LCD Las pantallas

25

Tema 10. Otros conceptos de programación: LCDSUBRUTINAS en la librería LCD_EASY.INC

LCD_Linea1Cursor al principio de la Línea 1.

LCD_Linea2Cursor al principio de la Línea 2.

LCD_PosicionLinea1Cursor a posición de la Línea 1

LCD_PosicionLinea2Cursor a posición de la Línea 2

LCD_OFFPantalla apagada.

LCD_CursorONPantalla encendida y cursor

LCD_CursorOFFPantalla encendida y cursor apagado

Page 26: Otros conceptos de programación: LCDcoolab.umh.es/sea/microcontroladores_old_0809/tema10_LCD.pdf · 2019-02-04 · 4 Tema 10. Otros conceptos de programación: LCD Las pantallas

26

EJEMPLO: LCD_01.asm à se visualiza el mensaje “Hola”.

;************************************** LCD_01.asm *********************************; PARA LA EASYPIC; El módulo LCD visualiza el mensaje "Hola".;; ZONA DE DATOS ******************************************************************

__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _HS_OSCLIST P=16F877AINCLUDE <P16F877A.INC>

CBLOCK 0x20ENDC

; ZONA DE CÓDIGOS *****************************************************************ORG 0

Iniciocall LCD_Inicializamovlw 'H'call LCD_Caractermovlw 'o'call LCD_Caractermovlw 'l'call LCD_Caractermovlw 'a'call LCD_Caractersleep ; Entra en modo de bajo consumo.

INCLUDE <LCD_EASY.INC> ; Subrutinas de control del módulo LCD.INCLUDE <RETARDOS.INC> ; Subrutinas de retardo.END ; Fin del programa.

Page 27: Otros conceptos de programación: LCDcoolab.umh.es/sea/microcontroladores_old_0809/tema10_LCD.pdf · 2019-02-04 · 4 Tema 10. Otros conceptos de programación: LCD Las pantallas

27

ZONA DE DATOS **********************************************************************

__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _HS_OSCLIST P=16F877AINCLUDE <P16F877A.INC>

CBLOCK 0x20Contador ; El contador a visualizar.ENDC

#DEFINE Pulsador PORTA,4 ; Línea donde se conecta el pulsador.

; ZONA DE CÓDIGOS ********************************************************************

ORG 0Inicio

call LCD_Inicializabsf STATUS,RP0bsf Pulsador ;Línea del pulsador se configura como entrada. bcf STATUS,RP0clrf Contador ; Inicializa contador y los visualiza por 1ª vez,call Visualiza

Principalbtfsc Pulsador ; Lee el pulsador.call IncrementaVisualiza ; Si pulsa salta a incrementar y visualizar elgoto Principal ; contador

Page 28: Otros conceptos de programación: LCDcoolab.umh.es/sea/microcontroladores_old_0809/tema10_LCD.pdf · 2019-02-04 · 4 Tema 10. Otros conceptos de programación: LCD Las pantallas

28

EJEMPLO: LCD_05.asm à Cada vez que se presiona el pulsador conectado al pin RA4 se incrementa un contador y es visualizado en el centro de la primera línea de la pantalla LCD.

; Subrutina "IncrementaVisualiza" ----------------------------------;IncrementaVisualiza

call Retardo_20ms ; Espera a que se estabilicen los niveles de tensión.call Retardo_20ms ; Espera a que se estabilicen los niveles de tensión.btfss Pulsador ; Vuelve a leer el pulsador.goto Fin_Incrementaincf Contador,F ; Incrementa el contador y después lo visualiza.

Visualizamovlw .7 ; Se sitúa en el centro de la línea 1.call LCD_PosicionLinea1movf Contador,Wcall BIN_a_BCD ; Se debe visualizar en decimal.call LCD_Byte

EsperaDejePulsarbtfsc Pulsadorgoto EsperaDejePulsar

Fin_Incrementareturn

INCLUDE <RETARDOS.INC>INCLUDE <BIN_BCD.INC>INCLUDE <LCD_EASY.INC>END

Page 29: Otros conceptos de programación: LCDcoolab.umh.es/sea/microcontroladores_old_0809/tema10_LCD.pdf · 2019-02-04 · 4 Tema 10. Otros conceptos de programación: LCD Las pantallas

29

Tema 10. Otros conceptos de programación: LCD

VISUALIZACIÓN DE MENSAJES FIJOS Y EN MOVIMIENTO

Muchos proyectos requieren visualizar mensajes más o menos largos en la pantalla de un LCD.

La librería LCD_MENS.INC describe dos subrutinas para realizar esta tarea de forma muy sencilla:

•Subrutina “LCD Mensaje” que visualiza mensajes fijos•Subrutina “LCD_Movimiento” que visualiza mensajes en movimiento.

Page 30: Otros conceptos de programación: LCDcoolab.umh.es/sea/microcontroladores_old_0809/tema10_LCD.pdf · 2019-02-04 · 4 Tema 10. Otros conceptos de programación: LCD Las pantallas

30

EJEMPLO: Mensaje_02.asm à En la pantalla del módulo LCD se visualiza un mensaje de menos de 16 caracteres grabado en la memoria ROM mediante la directiva DT. Utiliza la subrutina LCD_Mensaje de la librería LCD_MENS.INC.

ZONA DE DATOS **********************************************************************

__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _HS_OSCLIST P=16F877AINCLUDE <P16F877A.INC>

CBLOCK 0x20ENDC

; ZONA DE CÓDIGOS ********************************************************************

ORG 0Inicio

call LCD_Inicializamovlw Mensaje0 ; Apunta dónde se encuentra el mensaje.call LCD_Mensaje ; Visualiza el mensaje.sleep ; Pasa a modo bajo consumo.

; Mensajes ---------------------------------------------------------------------------;Mensajes

addwf PCL,FMensaje0

DT "Hola!!, que tal? ", 0x00

INCLUDE <LCD_EASY.INC>INCLUDE <LCD_MENS.INC>INCLUDE <RETARDOS.INC>END

Page 31: Otros conceptos de programación: LCDcoolab.umh.es/sea/microcontroladores_old_0809/tema10_LCD.pdf · 2019-02-04 · 4 Tema 10. Otros conceptos de programación: LCD Las pantallas

31

EJEMPLO: Mensaje_07.asm à El módulo LCD visualiza un mensaje largo (más de 16 caracteres) que se desplaza a lo largo de la pantalla. Se utiliza la subrutina LCD_MensajeMovimiento de la librería LCD_MENS.INC.

; ZONA DE DATOS ******************************************************************__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _HS_OSCLIST P=16F877AINCLUDE <P16F877A.INC>

CBLOCK 0x20ENDC

; ZONA DE CÓDIGOS *****************************************************************

ORG 0Inicio

call LCD_Inicializa ; Prepara la pantalla.Principal

movlw Mensaje0 ; Apunta al mensaje.call LCD_MensajeMovimientogoto Principal ; Repite la visualización.

; "Mensajes" -------------------------------------------------------------------------;Mensajes

addwf PCL,FMensaje0 ; Posición inicial del mensaje.

DT " " ; Espacios en blanco al principio para mejorDT "Estudia Ingeniería Industrial en la UMH!! " ; visualización.DT " ", 0x0 ; Espacios en blanco al final.

;INCLUDE <LCD_MENS.INC> ; Subrutina LCD_MensajeMovimiento.INCLUDE <LCD_EASY.INC> ; Subrutinas de control del LCD.INCLUDE <RETARDOS.INC> ; Subrutinas de retardos.END ; Fin del programa.

Page 32: Otros conceptos de programación: LCDcoolab.umh.es/sea/microcontroladores_old_0809/tema10_LCD.pdf · 2019-02-04 · 4 Tema 10. Otros conceptos de programación: LCD Las pantallas

32

BIBLIOGRAFÍA

"Microcontrolador PIC16F84, Desarrollo de proyectos" E. Palacios, F. Remiro, L.J. López. Ra-Ma, 2004

Podéis encontrar más información sobre el módulo LCD en el

CAPÍTULO 13

y en las

PRÁCTICAS 7 y 8