microcontroladores 7ma parte

Post on 06-Jun-2015

966 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

TUTORIAL MICROCONTROLADORES!Bueno!, hola a todos...a continuacion un pequeño tutorial que me ha facilitado un profesor de mi universidad...esta pero BUENO. MIRENLO Y ME CUENTANGRACIAS ing. Leonardo mejia y Cesar augusto Peña

TRANSCRIPT

MICROCONTROLADORES

M.Sc. César Augusto Peña C.

Profesor de planta – Ingeniería mecatrónicaUniversidad de Pamplona

PIC 16F877

PIC MEMORYFLASH PROGRAM RAM DATA EEPROM DATA

16F877 8000 X 14 368 X 8 256 X 816F874 4000 X 14 192 X 8 128 X 8

Max. Vel: 20 Mhz clock inputPila de 8 nivelesVoltaje de operación: 2.0V a 5.5VCorriente modo fuente/sumidero: 24mATemporizador/contador: Timer0 (8-bit),Timer1 (16-bit), Timer2: (8-bit)2 Modulo CCP: captura, comparación, PWMComunicación Serial, Paralela, I2CConversión Análoga/Digital

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 controlRS=1 Seleccion registro de datos

5 R/W Señal de lectura/escritura:R/W=0 Escritura (Write)R/W=1 Lentura (Read)

6 E Habilitacion del modulo:E=0 Modulo desconectadoE=1 Modulo conectado

7-14 D<0:7> Bus de datos bidireccional.

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

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

ZONA DE VISUALIZACIÓN ZONA VIRTUAL

INSTRUCCIÓN CLEAR DISPLAYTiempo de ejecución: 1.64mS

0 0 1 0 0 0 0 0 0 0 1

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

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

Tiempo de ejecución: 1.64mS

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

0 0 1 0 0 0 0 1 D C B

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

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 OFF ( D = 0 )DISPLAY ON ( D = 1 )

INSTRUCCIÓN DISPLAY ON/OFF CONTROL

Tiempo de ejecución: 40µS

CURSOR OFF ( C = 0 )

0 0 1 0 0 0 0 1 D=1 C B=0

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

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 ON ( C = 1 )

INSTRUCCIÓN DISPLAY ON/OFF CONTROL

Tiempo de ejecución: 40µS

0 0 1 0 0 0 0 1 D=1 C=1 B

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

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 ON ( B = 1 )PARPADEO OFF ( B = 0 )

INSTRUCCIONES LCDENTRY MODE SET Tiempo de ejecución: 40µS

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

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

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 SETTiempo de ejecución: 40µS

0 0 1 0 0 1 DL N F X X

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

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

Tiempo de ejecución: 40µS

0 0 1 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 = 0Mueve el cursor). Ejemplo de introducción de datos después de configurar S/C = 0.

1 2

43

DESPLAZAR CURSOR O PANTALLARS R/W E DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0

Tiempo de ejecución: 40µS

0 0 1 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 = 0Mueve el cursor). Ejemplo de introducción de datos después de configurar S/C = 1.

1 2

43

DESPLAZAR PANTALLARS R/W E DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0

Tiempo de ejecución: 40µS

0 0 1 0 0 0 1 S/C R/L X X

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

31

42

INSTRUCCIONES LCD

0 0 1 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 primerrenglón y de la C0h a la CFh con los 16 caracteres del segundo renglón, para este modelo de LCD.

RS R/W E DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0SET THE DD RAM ADDRESS Tiempo de ejecución: 40µS

INSTRUCCIONES LCD

0 1 1 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 flagllamado 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 CGRAM o de la DD RAM según la última que se haya empleado.

RS R/W E DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0READ BUSY FLAG & ADDRESS Tiempo de ejecución: 40µS

INSTRUCCIONES LCD

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

RS R/W E DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0SET THE CG RAM ADDRESS Tiempo de ejecución: 40µS

INSTRUCCIONES LCD

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.

RS R/W E DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0WRITE DATA TO CG OR DD RAM Tiempo de ejecución: 40µS

INSTRUCCIONES LCD

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 DDRAM o la de direccionamiento CG RAM.

RS R/W E DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0READ DATA FROM CG RAM OR DD RAM Tiempo de ejecución: 40µS

ABREVIATURAS EMPLEADAS S 1 - Desplaza la visualización cada vez que se escribe un dato

0 - Modo normal

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

S/C 1 - Desplaza el display0 - Mueve el cursor

R/L 1 - Desplazamiento a la derecha0 - Desplazamiento a la izquierda

BF 1 - Módulo ocupado0 - Módulo disponible

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

N 1 - LCD de dos líneas0 - LCD de una línea

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

B 1 - Parpadeo del cursor ON0 - Parpadeo del cursor OFF

C 1 - Cursor ON0 - Cursor OFF

D 1 - Display ON0 - 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 bytepresente 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: DISABLE;FLASH PROGRAM WRITE: WRITE PROTECTION OFF;BACKGROUND DEBUG: DISABLED;DATA EE READ PROTECT: OFF;CODE PROTECT: OFF

list p=16f877a ;Tipo de procesadorINCLUDE "P16F877A.Inc" ;Librerias de registros del PIC

;**************************** DEFINICION DE REGISTROS ***********************************CBLOCK .32

DATO_A, DATO_B ;VARIABLES CONTROL LCDendc

;****************************************************************************************

PROGRAMA LCD

INICIO bcf STATUS,RP1bsf STATUS,RP0bcf 1,7 ;Resistencias pull up ACTIVASbcf TRISE,PSPMODE ;Desactiva puerto paralelo esclavo movlw b'00000010'movwf TRISD ;puerto D como salida y el RD1 para RFmovlw b'00000011' ;Configura puerto C para verificar sensoresmovwf TRISCclrf TRISE ;puerto E como salidabcf STATUS,RP0 ;Banco 0bcf STATUS,RP1

call UP_LCD ;Configura el PIC para usar el LCDcall LCD_INI ;Inicia el LCD

call MENSAJE_CESAR_UNIPAMPLONACICLO nop

goto CICLO

PROGRAMA LCDMENSAJE_CESAR_UNIPAMPLONA

;_____________PRIMERA LINEA DEL DISPLAY____________________movlw 'C' ;1call LCD_DATOS ;Visualiza Valor cargado en Wmovlw 'E' ;2call LCD_DATOS ;Visualiza Valor cargado en Wmovlw 'S' ;3call LCD_DATOS ;Visualiza Valor cargado en Wmovlw 'A' ;4call LCD_DATOS ;Visualiza Valor cargado en Wmovlw 'R' ;5call LCD_DATOS ;Visualiza Valor cargado en Wmovlw ' ' ;6call LCD_DATOS ;Visualiza Valor cargado en Wmovlw 'P' ;7call LCD_DATOS ;Visualiza Valor cargado en Wmovlw '.' ;8call LCD_DATOS ;Visualiza Valor cargado en Wmovlw ' ' ;9call LCD_DATOS ;Visualiza Valor cargado en Wmovlw 'C' ;10call LCD_DATOS ;Visualiza Valor cargado en Wmovlw '.' ;11call LCD_DATOS ;Visualiza Valor cargado en W

PROGRAMA LCDmovlw d'192' ;SEGUNDA LINEA DEL DISPLAY

call LCD_REGmovlw 'U' ;1call LCD_DATOS ;Visualiza Valor cargado en Wmovlw 'N' ;2call LCD_DATOS ;Visualiza Valor cargado en Wmovlw 'I' ;3call LCD_DATOS ;Visualiza Valor cargado en Wmovlw 'P' ;4call LCD_DATOS ;Visualiza Valor cargado en Wmovlw 'A' ;5call LCD_DATOS ;Visualiza Valor cargado en Wmovlw 'M' ;6call LCD_DATOS ;Visualiza Valor cargado en Wmovlw 'P' ;7call LCD_DATOS ;Visualiza Valor cargado en Wmovlw 'L' ;8call LCD_DATOS ;Visualiza Valor cargado en Wmovlw 'O' ;9call LCD_DATOS ;Visualiza Valor cargado en Wmovlw 'N' ;10call LCD_DATOS ;Visualiza Valor cargado en Wmovlw 'A' ;11call LCD_DATOS ;Visualiza Valor cargado en WRETURN

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 STATUS,5 ;BANCO 1bcf TRISE,PSPMODE ;DESACTIVA PUERTO PARALELO ESCLAVO

;AFECTA TAMBIEN EL PUERTO Dbcf PORTD,5 ;RD5 COMO SALIDAbcf PORTD,6 ;RD6 COMO SALIDAbcf PORTD,7 ;RD7 COMO SALIDAclrf TRISB ;PUERTO B COMO SALIDA bcf STATUS,5 ;BANCO 0clrf INTCON ;DESACTIVA INTERRUPCIONESbcf PORTD,5 ;RS = 0 SELECCION DE REGISTRO DE CONTROLbcf PORTD,7 ;E = 0 LCD INABILITADOreturn

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 OFFcall LCD_REG ;ENVIA COMANDOcall DELAY_5MS ;5ms.(Especificación de Fabricante)movlw b'00000001' ;BORRA PANTALLAcall LCD_REG ;ENVIA COMANDOcall 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 CONTROLmovwf PORTB ;VALOR ASCII A SACAR POR RBcall LCD_BUSY ;ESPERA A QUE SE LIBERE EL LCDbsf PORTD,5 ;RS = 1 SELECCION DE REGISTRO DE DATOSgoto 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 INSTRUCCIONcall LCD_BUSY ;ESPERA A QUE SE LIBERE EL LCDgoto 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 uSbcf PORTD,7 ;E = 0 LCD INABILITADOreturn

;------------------------------------------------------------------------;LCD_BUSY: VERIFICACION QUE EL LCD ESTE NO ESTE OCUPADO.;LCD_BUSY bsf PORTD,6 ;R/W = 1 MODO LECTURA

bsf STATUS,5 ;BANCO 1movlw b'11111111' movwf TRISB ;PUERTO B COMO ENTRADAbcf STATUS,5 ;BANCO 0bsf PORTD,7 ;E = 1 LCD HABILITADOnop

L_BUSY btfsc PORTB,7 ;CHEQUEA BIT DE BUSYgoto L_BUSYbcf PORTD,7 ;E = 0 LCD INABILITADObsf STATUS,5 ;BANCO 1clrf TRISB ;PUERTO B COMO SALIDAbcf STATUS,5 ;BANCO 0bcf PORTD,6 ;R/W = 0 MODO ESCRITURAreturn

LIBRERÍA DE LCD;------------------------------------------------------------------------;DELAY_5MS: Genera una temporizaci¢n de 5 mS;DELAY_5MS movlw 0x1a

movwf DATO_B ;Carga la variable DATO_Bclrf DATO_A ;Carga la variable DATO_A

DELAY_1 decfsz DATO_A,1 ;Decrementa la variable DATO_Agoto DELAY_1decfsz DATO_B,1 ;Decrementa la variable DATO_Bgoto DELAY_1return

;------------------------------------------------------------------------

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: DISABLE;FLASH PROGRAM WRITE: WRITE PROTECTION OFF;BACKGROUND DEBUG: DISABLED;DATA EE READ PROTECT: OFF;CODE PROTECT: OFF

list p=16f877a ;Tipo de procesadorINCLUDE "P16F877A.Inc" ;Librerias de registros del PIC

;**************************** DEFINICION DE REGISTROS ***********************************CBLOCK .32

DATO_A, DATO_B ;VARIABLES CONTROL LCDREG11, REG21, REG31RAUX2

endc;****************************************************************************************

PROGRAMA II - LCDINICIO bcf STATUS,RP1

bsf STATUS,RP0movlw b'00000110' ;configura puerto A y E como E/S digitalesmovwf ADCON1 ;MUEVE A ADCON1bcf 1,7 ;Resistencias pull up ACTIVASbcf TRISE,PSPMODE ;Desactiva puerto paralelo esclavo movlw b'00000010'movwf TRISD ;puerto D como salida y el RD1 para RFmovlw b'00000011' ;Configura puerto C para verificar sensoresmovwf TRISCclrf TRISE ;puerto E como salidabcf STATUS,RP0 ;Banco 0bcf STATUS,RP1

call UP_LCD ;Configura el PIC para usar el LCDCICLO call LCD_INI ;Inicia el LCD

call MENSAJE_CESAR_UNIPAMPLONAcall RETRASO

movlw .192 ;posiciona en cursorcall LCD_REG

PROGRAMA II - LCD;DISPLAY OFF

movlw b'00001000' ;Comando Display ON/OFF: OFF, cursor OFF, Parpadeo OFFcall LCD_REGcall RETRASO ;Espera activar pulsardor

;DISPLAY ONmovlw b'00001100' ;Comando Display ON/OFF: ON, cursor OFF, Parpadeo OFFcall LCD_REGcall RETRASO ;Espera activar pulsardor

;CURSOR ONmovlw b'00001110' ;Comando Display ON/OFF: ON, cursor ON, Parpadeo OFFcall LCD_REGcall RETRASO ;Espera activar pulsardor

;CURSOR ON PARPADEO ONmovlw b'00001111' ;Comando Display ON/OFF: ON, cursor ON, Parpadeo ONcall LCD_REGcall RETRASO ;Espera activar pulsardor

;CURSOR EN LA PRIMERA POSICIÓNmovlw b'00000010' ;Comando Homecall LCD_REGcall RETRASO ;Espera activar pulsardor

;CURSOR EN LA ULTIMA POSICIÓN VISIBLEmovlw .207 ; ;se desplaza a la posición respectivacall LCD_REGcall RETRASO ;Espera activar pulsardor

PROGRAMA II - LCD

;REALIZA VARIOS DESPLAZAMIENTOS A LA DERECHAmovlw .45movwf RAUX2

OTRA_AUX2decfsz RAUX2,1goto PRO_AUX2goto SALIR_AUX2

PRO_AUX2 movlw b'00011000' ;desplazamiento: Desplaza pantalla (S=1), R/L=0 (IZQ) ,x ,xcall LCD_REGcall 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 Wmovlw 'P'call LCD_DATOS ;Visualiza Valor cargado en W

PROGRAMA II - LCDmovlw .144 ;se desplaza a la posición respectivacall LCD_REGmovlw 'Z'call LCD_DATOS ;Visualiza Valor cargado en Wmovlw 'O'call LCD_DATOS ;Visualiza Valor cargado en Wmovlw 'N'call LCD_DATOS ;Visualiza Valor cargado en Wmovlw 'A'call LCD_DATOS ;Visualiza Valor cargado en Wmovlw ' 'call LCD_DATOS ;Visualiza Valor cargado en Wmovlw 'V'call LCD_DATOS ;Visualiza Valor cargado en Wmovlw 'I'call LCD_DATOS ;Visualiza Valor cargado en Wmovlw 'R'call LCD_DATOS ;Visualiza Valor cargado en Wmovlw 'T'call LCD_DATOS ;Visualiza Valor cargado en Wmovlw 'U'call LCD_DATOS ;Visualiza Valor cargado en Wmovlw 'A'call LCD_DATOS ;Visualiza Valor cargado en Wmovlw 'L'call LCD_DATOS ;Visualiza Valor cargado en W

RETURN

PROGRAMA II - LCDRETRASO btfss PORTA,2 ;bucle hasta que se active el pulsador

goto RETRASOcall RETARDO1 ;retardo de 20ms (antirebotes)

RETRASO2 btfsc PORTA,2 ;bucle hasta que se active el pulsadorgoto RETRASO2call RETARDO1 ;retardo de 20ms (antirebotes)return

RETARDO1 movlw .1 ;retardo de 20msmovwf REG11

TRES1 movlw .93movwf REG21

DOS1 movlw .70movwf REG31

UNO1 decfsz REG31,1goto UNO1decfsz REG21,1goto DOS1decfsz REG11,1goto TRES1retlw 0

include "LCD_LIB_CAPC_877_F.lib"

END

top related