MICROCONTROLADORES M.Sc. César Augusto Peña C. Profesor de planta – Ingeniería mecatrónica Universidad de Pamplona
PIC 16F877 Max. Vel: 20 Mhz clock input Pila de 8 niveles
Voltaje de operación: 2.0V a 5.5V Corriente modo fuente/sumidero: 24mA
Temporizador/contador: Timer0 (8-bit), Timer1 (16-bit), Timer2: (8-bit) 2 Modulo CCP: captura, comparación, PWM
Comunicación Serial, Paralela, I2C Conversión Análoga/Digital
PIC 16F877 16F874
MEMORY FLASH PROGRAM RAM DATA 8000 X 14 368 X 8 4000 X 14 192 X 8
EEPROM DATA 256 X 8 128 X 8
MEMORIA RAM
LCD
La pantalla de cristal liquido o LCD (Liquid Crystal Display) es un dispositivo µControlado de visualización gráfico para la presentación de caracteres, símbolos o incluso dibujos (en algunos modelos). 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 comúnmente el más usado y esta información se basará en el manejo de este u otro LCD compatible.
CARACTERISTICAS PRINCIPALES: LCD • 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
CARACTERES LCD
MONTAJE LCD PIN LCD
SÍMBOLO
PIN PIC
1
VSS
---
2
Vdd
---
3
VO
---
4
RS
RD5
5
R/W
RD6
6
E
RD7
7-14
D<0:7>
RB <0:7>
DESCRIPCIÓN DE PINES PIN LCD
SÍMBOLO
DESCRIPCIÓN
1
VSS
Tierra de alimentación GND
2
Vdd
Alimentacion de +5V CC
3
VO
Contraste del cristal liquido. ( 0 a +5V )
4
RS
Selección del registro de control/registro de datos: RS=0 Seleccion registro de control RS=1 Seleccion registro de datos
5
R/W
6
E
7-14
D<0:7>
Señal de lectura/escritura: R/W=0 Escritura (Write) R/W=1 Lentura (Read) Habilitacion del modulo: E=0 Modulo desconectado E=1 Modulo conectado Bus de datos bidireccional.
POSICIÓN DE LOS CARACTERES EN LA DIRECCIÓN DDRAM
ZONA DE VISUALIZACIÓN
ZONA VIRTUAL
1
2
3
4
5
6
7
5
9
10
11
12
13
14
15
16
17
18
19
40
80
81
82
83
84
85
86
87
88
89
8A
8B
8C
8D
8E
8F
90
91
92
A7
C0
C1
C2
C3
C4
C5
C6
C7
C8
C9
CA
CB
CC
CD
CE
CF
D0
D1
D2
E7
INSTRUCCIÓN CLEAR DISPLAY Tiempo de ejecución: 1.64mS
RS
R/W
E
0
0
1
DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 0
0
0
0
0
0
0
1
Borra el módulo LCD y coloca el cursor en la primera posición (dirección 80h). Pone el bit I/D a 1 por defecto (autoincremento de la posición del cursor).
Posición Cursor (en este caso invisible)
INSTRUCCION HOME Tiempo de ejecución: 1.64mS
RS
R/W
E
0
0
1
DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 0
0
0
0
0
0
1
X
Coloca el cursor en la posición de inicio (dirección 80h) 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) permanece invariable. La dirección de la memoria RAM de datos para la visualización (DD RAM) es puesta a 80h
Posición Cursor (en este caso invisible)
INSTRUCCIÓN DISPLAY ON/OFF CONTROL Tiempo de ejecución: 40µS
RS
R/W
E
0
0
1
DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 0
0
0
0
1
D
C
B
Activa o desactiva poniendo en ON/OFF tanto al display (D) como al cursor (C) y se establece si este último debe o no parpadear (B).
DISPLAY ON ( D = 1 )
DISPLAY OFF ( D = 0 )
INSTRUCCIÓN DISPLAY ON/OFF CONTROL Tiempo de ejecución: 40µS
RS
R/W
E
0
0
1
DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 0
0
0
0
1
D=1
C
B=0
Activa o desactiva poniendo en ON/OFF tanto al display (D) como al cursor (C) y se establece si este último debe o no parpadear (B).
CURSOR OFF ( C = 0 )
CURSOR ON ( C = 1 )
INSTRUCCIÓN DISPLAY ON/OFF CONTROL Tiempo de ejecución: 40µS
RS
R/W
E
0
0
1
DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 0
0
0
0
1
D=1 C=1
B
Activa o desactiva poniendo en ON/OFF tanto al display (D) como al cursor (C) y se establece si este último debe o no parpadear (B).
PARPADEO OFF ( B = 0 )
PARPADEO ON ( B = 1 )
INSTRUCCIONES LCD ENTRY MODE SET RS
R/W
E
0
0
1
Tiempo de ejecución: 40µS
DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 0
0
0
0
0
1
I/D
S
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=0
FUNCTION SET RS
R/W
E
0
0
1
Tiempo de ejecución: 40µS
DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 0
0
1
DL
N
F
X
X
Establece el tamaño de interfase con el bus de datos (DL), número de líneas del display (N) y tipo de carácter (F)
DESPLAZAR CURSOR O PANTALLA Tiempo de ejecución: 40µS
RS
R/W
E
0
0
1
DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 0
0
0
1
S/C
R/L
X
X
Mueve el cursor y desplaza el display sin cambiar el contenido de la memoria de datos de visualización DD RAM (S/C = 1 Desplaza el display y S/C = 0 Mueve el cursor). Ejemplo de introducción de datos después de configurar S/C = 0. 1
2
3
4
DESPLAZAR CURSOR O PANTALLA Tiempo de ejecución: 40µS
RS
R/W
E
0
0
1
DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 0
0
0
1
S/C
R/L
X
X
Mueve el cursor y desplaza el display sin cambiar el contenido de la memoria de datos de visualización DD RAM (S/C = 1 Desplaza el display y S/C = 0 Mueve el cursor). Ejemplo de introducción de datos después de configurar S/C = 1. 1
2
3
4
DESPLAZAR PANTALLA Tiempo de ejecución: 40µS
RS
R/W
E
0
0
1
DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 0
0
0
1
S/C
R/L
X
Ejemplo: Mover la pantalla 2 veces y colocar el carácter “!” (S/C = 1)
1
3
2
4
X
INSTRUCCIONES LCD SET THE DD RAM ADDRESS RS
R/W
E
0
0
1
Tiempo de ejecución: 40µS
DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 1
Dirección de la DD RAM
Los caracteres o datos que se van visualizando, se van almacenando en una memoria llamada DDRAM para de aquí pasar a la pantalla. Mediante esta instrucción se establece la dirección de la memoria DDRAM a partir de la 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 primer renglón y de la C0h a la CFh con los 16 caracteres del segundo renglón, para este modelo de LCD.
INSTRUCCIONES LCD READ BUSY FLAG & ADDRESS RS
R/W
E
0
1
1
Tiempo de ejecución: 40µS
DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 BF
Dirección de la CG RAM o DD RAM
Cuando el modulo LCD esta ejecutando cualquiera de estas instrucciones, tarda un cierto tiempo de ejecución en el que no se debe mandar ninguna instrucción. Para ello dispone de un flag llamado BUSY (ocupado) que indica que se está ejecutando una instrucción previa. Esta instrucción de lectura informa del estado de dicho flag, además proporciona el valor del contador de direcciones de la CG RAM o de la DD RAM según la última que se haya empleado.
INSTRUCCIONES LCD SET THE CG RAM ADDRESS RS
R/W
E
0
0
1
Tiempo de ejecución: 40µS
DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 0
1
Dirección de la CG RAM
El 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 caracteres se va guardando en una memoria llamada CG RAM con capacidad para 64 bytes. Cada carácter gráfico definido por el usuario se compone de 16 u 8 bytes que se almacenan en sucesivas posiciones de la CG RAM. Mediante esta instrucción se establece la dirección de memoria CG RAM a partir de la cual se irán almacenando los bytes que definen un carácter gráfico. Ejecutando este comando todos los datos que se lean o escriban posteriormente, lo hacen desde esta memoria CG RAM
INSTRUCCIONES LCD WRITE DATA TO CG OR DD RAM
Tiempo de ejecución: 40µS
RS
R/W
E
DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0
1
0
1
Código ASCII o byte del carácter gráfico
Mediante este comando se escribe en la memoria DD RAM los datos que se quieren presentar en pantalla y que serán los diferentes códigos ASCII de los caracteres a visualizar. Igualmente se escribe en la memoria CG RAM los diferentes bytes que permiten confeccionar 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.
INSTRUCCIONES LCD READ DATA FROM CG RAM OR DD RAM
Tiempo de ejecución: 40µS
RS
R/W
E
DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0
1
1
1
Código ASCII o byte del carácter gráfico
Mediante este comando se lee de la memoria DD RAM los datos que haya almacenados y que serán los códigos ASCII de los caracteres almacenados. Igualmente se lee de la memoria CG RAM los diferentes bytes con los que se ha confeccionado un determinado carácter gráfico. El leer de uno u otro tipo de memoria depende de si se ha empleado previamente la instrucción de direccionamiento de la DD RAM o la de direccionamiento CG RAM.
ABREVIATURAS EMPLEADAS 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
SUBRUTINAS LCD SUBRUTINA
FUNCIÓN
LCD_E
Genera un pulso de 1µS por PORTD,7 patita 6 del LCD (Enable) . Si se usa una frecuencia diferente de 4MHz habrá que ajustar este tiempo
LCD_BUSY
Chequea si el LCD esta ocupado (BUSY) y retorna de la rutina cuando ya no lo este.
LCD_REG
Pone al LCD en modo de recibir comandos, espera a que no este ocupado y va a LCD_E.
SUBRUTINAS LCD SUBRUTINA
FUNCIÓN
LCD_DATOS
Pone el LCD en modo datos y manda el byte presente en W que será mostrado en pantalla (carácter ASCII).
LCD_INI
Inicialización del modulo LCD según los tiempo marcados por el fabricante. Bus de 8 bits, 2 líneas de visualización y caracteres de 5 x 7 puntos.
UP_LCD
Configura los puertos del PIC para ser usados con el LCD.
PROGRAMA LCD ;AUTOR: CÉSAR AUGUSTO PEÑA C ;PIC: 16F877A ;FUNCION: Visualiza un mesaje por un LCD conectado a RB<0:7> (datos) y RBD<5:7> ; donde RS, R/W y #E (LCD) se conectan respectivamente a RD5, RD6 y RD7 ;CARACTERISTICAS: ;OSCILLATOR: XT ;WATCHDOG TIMER: OFF ;POWER UP TIMER: ON ;BROWN OUT DETECT: OFF ;LOW VOLTAGE PROGRAM: ;FLASH PROGRAM WRITE: ;BACKGROUND DEBUG: DISABLED ;DATA EE READ PROTECT: ;CODE PROTECT: OFF
DISABLE WRITE PROTECTION OFF OFF
list p=16f877a ;Tipo de procesador INCLUDE "P16F877A.Inc" ;Librerias de registros del PIC ;**************************** DEFINICION DE REGISTROS *********************************** CBLOCK .32 DATO_A, DATO_B ;VARIABLES CONTROL LCD endc ;****************************************************************************************
PROGRAMA LCD INICIO
CICLO
bcf bsf bcf bcf movlw movwf movlw movwf clrf bcf bcf
STATUS,RP1 STATUS,RP0 1,7 TRISE,PSPMODE b'00000010' TRISD b'00000011' TRISC TRISE STATUS,RP0 STATUS,RP1
call call
UP_LCD LCD_INI
call nop goto
MENSAJE_CESAR_UNIPAMPLONA CICLO
;Resistencias pull up ACTIVAS ;Desactiva puerto paralelo esclavo ;puerto D como salida y el RD1 para RF ;Configura puerto C para verificar sensores ;puerto E como salida ;Banco 0
;Configura el PIC para usar el LCD ;Inicia el LCD
PROGRAMA LCD MENSAJE_CESAR_UNIPAMPLONA ;_____________PRIMERA LINEA DEL DISPLAY____________________ movlw 'C' ;1 call LCD_DATOS ;Visualiza Valor cargado en W movlw 'E' ;2 call LCD_DATOS ;Visualiza Valor cargado en W movlw 'S' ;3 call LCD_DATOS ;Visualiza Valor cargado en W movlw 'A' ;4 call LCD_DATOS ;Visualiza Valor cargado en W movlw 'R' ;5 call LCD_DATOS ;Visualiza Valor cargado en W movlw '' ;6 call LCD_DATOS ;Visualiza Valor cargado en W movlw 'P' ;7 call LCD_DATOS ;Visualiza Valor cargado en W movlw '.' ;8 call LCD_DATOS ;Visualiza Valor cargado en W movlw '' ;9 call LCD_DATOS ;Visualiza Valor cargado en W movlw 'C' ;10 call LCD_DATOS ;Visualiza Valor cargado en W movlw '.' ;11 call LCD_DATOS ;Visualiza Valor cargado en W
PROGRAMA LCD call
movlw LCD_REG movlw call movlw call movlw call movlw call movlw call movlw call movlw call movlw call movlw call movlw call movlw call RETURN
d'192'
;SEGUNDA LINEA DEL DISPLAY
'U' LCD_DATOS 'N' LCD_DATOS 'I' LCD_DATOS 'P' LCD_DATOS 'A' LCD_DATOS 'M' LCD_DATOS 'P' LCD_DATOS 'L' LCD_DATOS 'O' LCD_DATOS 'N' LCD_DATOS 'A' LCD_DATOS
;1 ;Visualiza Valor cargado en W ;2 ;Visualiza Valor cargado en W ;3 ;Visualiza Valor cargado en W ;4 ;Visualiza Valor cargado en W ;5 ;Visualiza Valor cargado en W ;6 ;Visualiza Valor cargado en W ;7 ;Visualiza Valor cargado en W ;8 ;Visualiza Valor cargado en W ;9 ;Visualiza Valor cargado en W ;10 ;Visualiza Valor cargado en W ;11 ;Visualiza Valor cargado en W
include "LCD_LIB_CAPC_877_F.lib" END
LIBRERÍA DE LCD ;-----------------------------------------------------------------------;LIBRERIAS DE RUTINAS CREADAS O MODIFICADAS POR CÉSAR PEÑA ;TEMA: CONTROL LCD ;FUNCION: Controlar LCD conectado a RB<0:7> (datos) y RBD<5:7> ; donde RS, R/W y #E (LCD) se conectan respectivamente a RD5, RD6 y RD7 ;------------------------------------------------------------------------
;-----------------------------------------------------------------------;UP_LCD: CONFIGURACION PIC PARA EL LCD. UP_LCD
bsf bcf
STATUS,5 TRISE,PSPMODE
bcf bcf bcf clrf bcf clrf bcf bcf return
PORTD,5 PORTD,6 PORTD,7 TRISB STATUS,5 INTCON PORTD,5 PORTD,7
;BANCO 1 ;DESACTIVA PUERTO PARALELO ESCLAVO ;AFECTA TAMBIEN EL PUERTO D ;RD5 COMO SALIDA ;RD6 COMO SALIDA ;RD7 COMO SALIDA ;PUERTO B COMO SALIDA ;BANCO 0 ;DESACTIVA INTERRUPCIONES ;RS = 0 SELECCION DE REGISTRO DE CONTROL ;E = 0 LCD INABILITADO
LIBRERÍA DE LCD ;LCD_INI: INICIALIZACION LCD. ; LCD_INI movlw b'00111000' ;ENVIA COMANDO FUNCTION SET call LCD_REG ;(BUS DE 8 BITS, 2 LINEAL, CARACTER 5X7) call DELAY_5MS ;5mS.(ESPECIFICACIÓN DE FABRICANTE) movlw b'00001100' ;LCD ON, CURSOR OFF, PARPADEO CURSOR OFF call LCD_REG ;ENVIA COMANDO call DELAY_5MS ;5ms.(Especificación de Fabricante) movlw b'00000001' ;BORRA PANTALLA call LCD_REG ;ENVIA COMANDO call DELAY_5MS ;5ms.(Especificación de Fabricante) return ;------------------------------------------------------------------------;LCD_DATO: ESCRITURA DE DATOS EN DDRAM o CGRAM LCD_DATOS bcf PORTD,5 ;RS = 0 SELECCION DE REGISTRO DE CONTROL movwf PORTB ;VALOR ASCII A SACAR POR RB call LCD_BUSY ;ESPERA A QUE SE LIBERE EL LCD bsf PORTD,5 ;RS = 1 SELECCION DE REGISTRO DE DATOS goto LCD_E ;GENERA PULSO EN LA SEÑAL E (HABLILITACIÓN LCD) ;-----------------------------------------------------------------------;LCD_REG: ESCRITURA DE COMANDOS LCD. ; LCD_REG bcf PORTD,5 ;RS = 0 SELECCION DE REGISTRO DE CONTROL movwf PORTB ;SACA EL CODIGO DE LA INSTRUCCION call LCD_BUSY ;ESPERA A QUE SE LIBERE EL LCD goto LCD_E ;GENERA PULSO EN LA SEÑAL E (HABLILITACIÓN LCD)
LIBRERÍA DE LCD ;------------------------------------------------------------------------;LCD_E: PULSO DE HABILITACION ; LCD_E bsf PORTD,7 ;E = 1 LCD HABILITADO nop ;ESPERA 1 uS bcf PORTD,7 ;E = 0 LCD INABILITADO return ;-----------------------------------------------------------------------;LCD_BUSY: VERIFICACION QUE EL LCD ESTE NO ESTE OCUPADO. ; LCD_BUSY bsf PORTD,6 ;R/W = 1 MODO LECTURA bsf STATUS,5 ;BANCO 1 movlw b'11111111' movwf TRISB ;PUERTO B COMO ENTRADA bcf STATUS,5 ;BANCO 0 bsf PORTD,7 ;E = 1 LCD HABILITADO nop L_BUSY btfsc PORTB,7 ;CHEQUEA BIT DE BUSY goto L_BUSY bcf PORTD,7 ;E = 0 LCD INABILITADO bsf STATUS,5 ;BANCO 1 clrf TRISB ;PUERTO B COMO SALIDA bcf STATUS,5 ;BANCO 0 bcf PORTD,6 ;R/W = 0 MODO ESCRITURA return
LIBRERÍA DE LCD ;-----------------------------------------------------------------------;DELAY_5MS: Genera una temporizaci¢n de 5 mS ; DELAY_5MS movlw 0x1a movwf DATO_B ;Carga la variable DATO_B clrf DATO_A ;Carga la variable DATO_A DELAY_1 decfsz DATO_A,1 ;Decrementa la variable DATO_A goto DELAY_1 decfsz DATO_B,1 ;Decrementa la variable DATO_B goto DELAY_1 return ;------------------------------------------------------------------------
PROGRAMA II - LCD ;AUTOR: CÉSAR AUGUSTO PEÑA C ;PIC: 16F877A ;FUNCION: Visualiza un mesaje por un LCD conectado a RB<0:7> (datos) y RBD<5:7> ; donde RS, R/W y #E (LCD) se conectan respectivamente a RD5, RD6 y RD7 ; despues de visualizar el mensaje realiza varios comandos de configuración del LCD ; consecutivamente a los pulsos recibidos RA2 (Pulsador)
;CARACTERISTICAS: ;OSCILLATOR: XT ;WATCHDOG TIMER: OFF ;POWER UP TIMER: ON ;BROWN OUT DETECT: OFF ;LOW VOLTAGE PROGRAM: ;FLASH PROGRAM WRITE: ;BACKGROUND DEBUG: DISABLED ;DATA EE READ PROTECT: ;CODE PROTECT: OFF
DISABLE WRITE PROTECTION OFF OFF
list p=16f877a ;Tipo de procesador INCLUDE "P16F877A.Inc" ;Librerias de registros del PIC ;**************************** DEFINICION DE REGISTROS *********************************** CBLOCK .32 DATO_A, DATO_B ;VARIABLES CONTROL LCD REG11, REG21, REG31 RAUX2 endc ;****************************************************************************************
PROGRAMA II - LCD INICIO
CICLO
bcf bsf movlw movwf bcf bcf movlw movwf movlw movwf clrf bcf bcf
STATUS,RP1 STATUS,RP0 b'00000110' ADCON1 1,7 TRISE,PSPMODE b'00000010' TRISD b'00000011' TRISC TRISE STATUS,RP0 STATUS,RP1
call call
UP_LCD LCD_INI
call call
MENSAJE_CESAR_UNIPAMPLONA RETRASO
movlw call
.192 LCD_REG
;configura puerto A y E como E/S digitales ;MUEVE A ADCON1 ;Resistencias pull up ACTIVAS ;Desactiva puerto paralelo esclavo ;puerto D como salida y el RD1 para RF ;Configura puerto C para verificar sensores ;puerto E como salida ;Banco 0
;Configura el PIC para usar el LCD ;Inicia el LCD
;posiciona en cursor
;DISPLAY OFF movlw call call
PROGRAMA II - LCD b'00001000' LCD_REG RETRASO
;DISPLAY ON movlw call call
b'00001100' LCD_REG RETRASO
;CURSOR ON movlw call call
b'00001110' LCD_REG RETRASO
;CURSOR ON PARPADEO ON movlw b'00001111' call LCD_REG call RETRASO ;CURSOR EN LA PRIMERA POSICIÓN movlw b'00000010' call LCD_REG call RETRASO ;CURSOR EN LA ULTIMA POSICIÓN VISIBLE movlw .207 ; call LCD_REG call RETRASO
;Comando Display ON/OFF: OFF, cursor OFF, Parpadeo OFF ;Espera activar pulsardor
;Comando Display ON/OFF: ON, cursor OFF, Parpadeo OFF ;Espera activar pulsardor
;Comando Display ON/OFF: ON, cursor ON, Parpadeo OFF ;Espera activar pulsardor
;Comando Display ON/OFF: ON, cursor ON, Parpadeo ON ;Espera activar pulsardor
;Comando Home ;Espera activar pulsardor
;se desplaza a la posición respectiva ;Espera activar pulsardor
PROGRAMA II - LCD ;REALIZA VARIOS DESPLAZAMIENTOS A LA DERECHA movlw .45 movwf RAUX2 OTRA_AUX2decfsz RAUX2,1 goto PRO_AUX2 goto SALIR_AUX2 PRO_AUX2 movlw b'00011000' ;desplazamiento: Desplaza pantalla (S=1), R/L=0 (IZQ) ,x ,x call LCD_REG call RETARDO1 goto OTRA_AUX2 SALIR_AUX2 nop goto
CICLO
MENSAJE_CESAR_UNIPAMPLONA ;_____________PRIMERA LINEA DEL DISPLAY____________________ ; movlw .134 ; ;se desplaza a la posición respectiva ; call LCD_REG movlw 'U' call LCD_DATOS ;Visualiza Valor cargado en W movlw 'P' call LCD_DATOS ;Visualiza Valor cargado en W
PROGRAMA II - LCD movlw call movlw call movlw call movlw call movlw call movlw call movlw call movlw call movlw call movlw call movlw call movlw call movlw call RETURN
.144 LCD_REG 'Z' LCD_DATOS 'O' LCD_DATOS 'N' LCD_DATOS 'A' LCD_DATOS '' LCD_DATOS 'V' LCD_DATOS 'I' LCD_DATOS 'R' LCD_DATOS 'T' LCD_DATOS 'U' LCD_DATOS 'A' LCD_DATOS 'L' LCD_DATOS
;se desplaza a la posición respectiva
;Visualiza Valor cargado en W ;Visualiza Valor cargado en W ;Visualiza Valor cargado en W ;Visualiza Valor cargado en W ;Visualiza Valor cargado en W ;Visualiza Valor cargado en W ;Visualiza Valor cargado en W ;Visualiza Valor cargado en W ;Visualiza Valor cargado en W ;Visualiza Valor cargado en W ;Visualiza Valor cargado en W ;Visualiza Valor cargado en W
PROGRAMA II - LCD RETRASO
btfss goto call RETRASO2 btfsc goto call return
PORTA,2 RETRASO RETARDO1 PORTA,2 RETRASO2 RETARDO1
;bucle hasta que se active el pulsador
RETARDO1 movlw movwf TRES1 movlw movwf DOS1 movlw movwf UNO1 decfsz goto decfsz goto decfsz goto retlw
.1 REG11 .93 REG21 .70 REG31 REG31,1 UNO1 REG21,1 DOS1 REG11,1 TRES1 0
;retardo de 20ms
include "LCD_LIB_CAPC_877_F.lib" END
;retardo de 20ms (antirebotes) ;bucle hasta que se active el pulsador ;retardo de 20ms (antirebotes)