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 1 2 3 4 5 6 7-14 SÍMBOLO VSS Vdd VO RS R/W E D<0:7> PIN PIC ------RD5 RD6 RD7 RB <0:7>

DESCRIPCIÓN DE PINES
PIN LCD 1 2 3 4 SÍMBOLO VSS Vdd VO RS DESCRIPCIÓN Tierra de alimentación GND Alimentacion de +5V CC Contraste del cristal liquido. ( 0 a +5V ) Selección del registro de control/registro de datos: RS=0 Seleccion registro de control RS=1 Seleccion registro de datos 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.

5

R/W

6

E

7-14

D<0:7>

POSICIÓN DE LOS CARACTERES EN LA DIRECCIÓN DDRAM

ZONA DE VISUALIZACIÓN
1 80 C0 2 81 C1 3 82 C2 4 83 C3 5 84 C4 6 85 C5 7 86 C6 5 87 C7 9 88 C8 10 89 C9 11 8A CA 12 8B CB 13 8C CC 14 8D CD 15 8E CE 16 8F CF

ZONA VIRTUAL
17 90 D0 18 91 D1 19 92 D2 40 A7 E7

INSTRUCCIÓN CLEAR DISPLAY
Tiempo de ejecución: 1.64mS

RS 0

R/W 0

E 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 0

R/W 0

E 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 0

R/W 0

E 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 0

R/W 0

E 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 0

R/W 0

E 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 0 R/W 0 E 1 0 0 0 0 0
Tiempo de ejecución: 40µS

DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 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 0 R/W 0 E 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 0

R/W 0

E 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 0

R/W 0

E 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 0

R/W 0

E 1

DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 0 0 0 1 S/C R/L X X

Ejemplo: Mover la pantalla 2 veces y colocar el carácter “!” (S/C = 1)

1

3

2

4

INSTRUCCIONES LCD
SET THE DD RAM ADDRESS RS 0 R/W 0 E 1 1
Tiempo de ejecución: 40µS

DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 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 0 R/W 1 E 1 BF
Tiempo de ejecución: 40µS

DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 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 0 R/W 0 E 1 0 1
Tiempo de ejecución: 40µS

DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 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 RS 1 R/W 0 E 1
Tiempo de ejecución: 40µS

DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 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 RS 1 R/W 1 E 1
Tiempo de ejecución: 40µS

DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 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 I/D S/C R/L BF DL N F B C D X 1 - Desplaza la visualización cada vez que se escribe un dato 0 - Modo normal 1 - Incremento del cursor 0 - Decremento del cursor 1 - Desplaza el display 0 - Mueve el cursor 1 - Desplazamiento a la derecha 0 - Desplazamiento a la izquierda 1 - Módulo ocupado 0 - Módulo disponible 1 - Bus de datos de 8 bits 0 - Bus de datos de 4 bits 1 - LCD de dos líneas 0 - LCD de una línea 1 - Carácter de 5 x 10 puntos 0 - Carácter de 5 x 7 puntos 1 - Parpadeo del cursor ON 0 - Parpadeo del cursor OFF 1 - Cursor ON 0 - Cursor OFF 1 - Display ON 0 - Display OFF Indeterminado

SUBRUTINAS LCD
SUBRUTINA LCD_E FUNCIÓN 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 Chequea si el LCD esta ocupado (BUSY) y retorna de la rutina cuando ya no lo este. Pone al LCD en modo de recibir comandos, espera a que no este ocupado y va a LCD_E.

LCD_BUSY LCD_REG

SUBRUTINAS LCD
SUBRUTINA LCD_DATOS FUNCIÓN Pone el LCD en modo datos y manda el byte presente en W que será mostrado en pantalla (carácter ASCII). 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. Configura los puertos del PIC para ser usados con el LCD.

LCD_INI

UP_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 bcf bsf bcf bcf movlw movwf movlw movwf clrf bcf bcf call call call nop goto STATUS,RP1 STATUS,RP0 1,7 TRISE,PSPMODE b'00000010' TRISD b'00000011' TRISC TRISE STATUS,RP0 STATUS,RP1 UP_LCD LCD_INI

;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

MENSAJE_CESAR_UNIPAMPLONA CICLO

CICLO

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' '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 ;SEGUNDA LINEA DEL DISPLAY ;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 bcf bcf bcf clrf bcf clrf bcf bcf return STATUS,5 TRISE,PSPMODE 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 bcf bsf movlw movwf bcf bcf movlw movwf movlw movwf clrf bcf bcf call call call call movlw call STATUS,RP1 STATUS,RP0 b'00000110' ADCON1 1,7 TRISE,PSPMODE b'00000010' TRISD b'00000011' TRISC TRISE STATUS,RP0 STATUS,RP1 UP_LCD LCD_INI ;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

CICLO

;Configura el PIC para usar el LCD ;Inicia el LCD

MENSAJE_CESAR_UNIPAMPLONA RETRASO .192 LCD_REG ;posiciona en cursor

;DISPLAY OFF movlw call call ;DISPLAY ON movlw call call ;CURSOR ON movlw call call

PROGRAMA II - LCD
b'00001000' LCD_REG RETRASO ;Comando Display ON/OFF: OFF, cursor OFF, Parpadeo OFF ;Espera activar pulsardor b'00001100' LCD_REG RETRASO ;Comando Display ON/OFF: ON, cursor OFF, Parpadeo OFF ;Espera activar pulsardor

b'00001110' LCD_REG RETRASO

;Comando Display ON/OFF: ON, cursor ON, Parpadeo OFF ;Espera activar pulsardor

;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: 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 RETARDO1 movlw movwf TRES1 movlw movwf DOS1 movlw movwf UNO1 decfsz goto decfsz goto decfsz goto retlw PORTA,2 RETRASO RETARDO1 PORTA,2 RETRASO2 RETARDO1 ;bucle hasta que se active el pulsador ;retardo de 20ms (antirebotes) ;bucle hasta que se active el pulsador ;retardo de 20ms (antirebotes)

.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