Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
7
8
9
10
11
12
13
14
2.6.1. Instrucciones
La siguiente tabla est extrada de la hoja de catlogo del dispositivo LM016L y
resume las instrucciones que admite este dispositivo. Algunas de ellas no se detallarn ya que
no se usarn:
Serie 74HCxx
2
Instruccin
Borrar LCD
Cursor al inicio
Modo de entrada
Control display
Desplazamiento
Funcin
Direcc. CGRAM
Direcc. DDRAM
Leer bandera BF
Escribir
Leer
RS R/W D7 D6 D5 D4 D3 D2 D1 D0
0
0
0
0
0
0
0
0
0
1
1
0
0
0
0
0
0
0
0
1
0
1
0
0
0
0
0
0
0
1
BF
0
0
0
0
0
0
1
0
0
0
0
0
1
0
0
0
0
1
0
0
0
1 I/D S
0
0
1
D
C
B
0
1 S/C R/L 1
DL N
F
--------- No se usar -----Direccin DDRAM
-------------- No se usar -----Dato a escribir
------------------- No se usar ------
T. mx.
1.64ms
1.64ms
40s
40s
40s
40s
40s
40s
0s
40s
40s
Problema 16
Control display (00001 D C B): El objetivo de estos 3 bits son los siguientes:
o D=0. Apaga el display.
o D=1. Enciende el display.
o C=0. Cursor no visible.
o C=1. Cursor visible.
o B=0. Cursor no parpadea (si ste es visible)
o B=0. Cursor parpadea (si ste es visible)
Desplazamiento (0001 S/C R/L - -): Mueve el cursor o desplaza la ventana visible una
posicin a la izquierda o derecha sin cambiar el contenido de la DDRAM.
o S/C=0. Desplaza el cursor en la direccin dada por el bit R/L.
o S/C =1. Desplaza la ventana visible en la direccin dada por el bit R/L.
o R/L=0. Izquierda.
o R/L =1. Derecha.
Funcin (001 DL N F - -): Mueve el cursor o desplaza la ventana visible una posicin
a la izquierda o derecha sin cambiar el contenido de la DDRAM.
o DL=0. Bus de datos de 4 bits (los 4 bits ms significativos del LM016L).
o DL =1. Bus de datos de 8 bits.
o N=0. Una sola lnea visible.
o N =1. Dos lneas visibles.
o F=0. Carcter de 5x7 puntos.
o F =1. Carcter de 5x10 puntos.
Direcc. DDRAM (1 Direccin DDRAM): Actualiza el puntero interno de la DDRAM
al valor dado por Direccin DDRAM. Por ejemplo, si la direccin que se escribe es la
41h implica que la prxima lectura o escritura que se realice ser al segundo carcter
de la fila inferior.
Leer bandera BF (BF ------------): La lectura de la bandera BF permite saber si el
mdulo LM016L contina aun ocupado con la operacin ltima realizada de
lectura/escritura bien de un carcter bien de un comando. No se usar ya que la
seal R / W se conectar a 0 lgico para ahorrar un pin del microcontrolador.
Esto implica que solo se pueden realizar operaciones de escritura. Se tendr
mucho cuidado al usar los retardos adecuados para contemplar los tiempos que
requiere este dispositivo en cada una de las operaciones que puede realizar.
2.6.2. Librera en esamblador LCD.INC
Listado de rutinas:
;
;
;
;
;
;
;
;
;
;
;
;
;
LCD_ini
LCD_enciende
LCD_apaga
LCD_enviaComando
LCD_enviaCaracter
LCD_irFilCol
LCD_irLineaInf
LCD_irLineaSup
LCD_lineaEnBlanco
LCD_1_blanco
LCD_2_blancos
LCD_3_blancos
LCD_4_blancos
Serie 74HCxx
La librera est preparada para que los 4 pines de datos (salidas para el PIC) puedan
ser compartidos por otro perifrico pero como entradas (ej.: filas de un teclado).
Librera de rutinas para la gestin de un LCD de 2 lneas x 16 caracteres gestionado
con un bus de datos 4 lneas para optimizar el nmero de pines empleados.
El bus de datos del LCD (configurado para 4 bits) se conectar bien a las 4 lneas
inferiores de un puerto del PIC (en este caso la constante LCD_BUS_PINES=b'00001111')
o bien a los 4 bits superiores del puerto (en este caso la constante
LCD_BUS_PINES=b'11110000'). Estos pines se ponen en alta impedancia cuando el pin E del
LCD se pone a '0'. Por tanto, pueden conectarse a otros dispositivos y tener ms
de una funcin ya que el pin E solo se pone a '1' cuando el pic se dirige al LCD.
Los pines E y RS pueden asignarse a cualquier otro pin libre
del mismo puerto o de cualquier otro puerto del PIC. Las posibilidades de conexin del
16F84 son mltiples. En el caso de un pic con ms de 2 puertos aumentan aun ms.
En esta librera se pueden elegir entre 5 opciones cambiando el valor de la constante
LCD_OPCION para un pic de dos puertos (PORTA y PORTB).
LCD_OPCION=1. Bus de datos conectado al nibble bajo del puerto A. RS y E conectados
al puerto B. Se deja libre RB0 para posible interrupcin externa.
Pin LCD
-------[DB7:DB4]
RS
E
RW
Pin PIC
--------[RA3:RA0]
RB1
RB2
GND
Pin PIC
--------[RB3:RB0]
RB4
RB5
GND
Pin PIC
--------[RB3:RB0]
RA0
RA1
GND
Pin PIC
--------[RB7:RB4]
RB2
RB3
GND
Pin PIC
--------[RB7:RB4]
RA0
RA1
GND
Problema 16
;=============================================================================================
; LCD_enviaCaracter
; - Entrada: W. Contiene los 8 bits del carcter a enviar al LCD
; - Enva primero el nibble alto del carcter y despus el bajo
;=============================================================================================
;=============================================================================================
; Rutinas
; - LCD_lineaEnBlanco: Enva 16 espacios blancos para dejar en blanco la lnea
; - LCD_1_blanco: Enva 1 espacio en blanco.
; - LCD_2_blancos: Enva 2 espacios en blanco.
; - LCD_3_blancos: Enva 3 espacios en blanco.
; - LCD_4_blancos: Enva 4 espacios en blanco.
;=============================================================================================
;=============================================================================================
; LCD_enciende
;
* LCD de 2 lneas, bus de 4 lneas y caracteres de 5x7 puntos.
;
* Borra el contenido y sita el cursor al principio.
;
* Enciende la pantalla y cursor no visible.
;
* Cursor configurado en modo incremental y sin desplazamiento.
;=============================================================================================
;=============================================================================================
; LCD_apaga
; Apaga temporalmente el display (no har falta iniciarlo con posterioridad, solo encenderlo).
;=============================================================================================
;=============================================================================================
; Rutinas:
; - LCD_irLineaSup: Sita el cursor al comienzo de la lnea 1
; - LCD_irLineaInf: Sita el cursor al comienzo de la lnea 2
; - LCD_irFilCol: Sita el cursor en la lnea dada por Y y la posicin dada por X
;
- Entrada (W): b'y000xxxx'. X= nibble inferior de (W), Y=nibble superior de (W)
;
- Ejemplo 1 w=b'10001111'. X=1111 (posicin 15), Y=1 (lnea 2, inferior)
;
- Ejemplo 2 w=b'10000111'. X=0111 (posicin 7),
Y=0 (lnea 1, superior)
;
- Ejemplo 3 w=b'10000000'. X=0000 (posicin 0),
Y=0 (lnea 1, superior)
;=============================================================================================
Serie 74HCxx
Problema 16
;-----------------------movlw cadena1
call LCD_enviaCadena
;------------------------
7
; Carga en W la direccin de memoria del primer carcter
; Enva caracteres de la cadena hasta encontrar el 0.
; * *************************************** *
; * Mdulo Principal. Bucle infinito
*
; * *************************************** *
inf
nop
goto
inf
; * *************************************** *
; * Libreras
*
; * *************************************** *
INCLUDE <LCD.INC>
; Subrutinas de control del mdulo LCD.
END