microcontroladores 7ma parte

40
MICROCONTROLADORES M.Sc. César Augusto Peña C. Profesor de planta – Ingeniería mecatrónica Universidad de Pamplona

Upload: jair-eviel-barrios-deluquez

Post on 06-Jun-2015

964 views

Category:

Documents


0 download

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

Page 1: Microcontroladores  7ma Parte

MICROCONTROLADORES

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

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

Page 2: Microcontroladores  7ma Parte

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

Page 3: Microcontroladores  7ma Parte

MEMORIA RAM

Page 4: Microcontroladores  7ma Parte

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.

Page 5: Microcontroladores  7ma Parte

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

Page 6: Microcontroladores  7ma Parte

CARACTERES LCD

Page 7: Microcontroladores  7ma Parte

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>

Page 8: Microcontroladores  7ma Parte

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.

Page 9: Microcontroladores  7ma Parte

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

Page 10: Microcontroladores  7ma Parte

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)

Page 11: Microcontroladores  7ma Parte

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)

Page 12: Microcontroladores  7ma Parte

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 )

Page 13: Microcontroladores  7ma Parte

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 )

Page 14: Microcontroladores  7ma Parte

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 )

Page 15: Microcontroladores  7ma Parte

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)

Page 16: Microcontroladores  7ma Parte

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

Page 17: Microcontroladores  7ma Parte

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

Page 18: Microcontroladores  7ma Parte

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

Page 19: Microcontroladores  7ma Parte

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

Page 20: Microcontroladores  7ma Parte

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

Page 21: Microcontroladores  7ma Parte

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

Page 22: Microcontroladores  7ma Parte

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

Page 23: Microcontroladores  7ma Parte

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

Page 24: Microcontroladores  7ma Parte

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

Page 25: Microcontroladores  7ma Parte

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.

Page 26: Microcontroladores  7ma Parte

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.

Page 27: Microcontroladores  7ma Parte

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

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

Page 28: Microcontroladores  7ma Parte

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

Page 29: Microcontroladores  7ma Parte

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

Page 30: Microcontroladores  7ma Parte

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

Page 31: Microcontroladores  7ma Parte

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

Page 32: Microcontroladores  7ma Parte

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)

Page 33: Microcontroladores  7ma Parte

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

Page 34: Microcontroladores  7ma Parte

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

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

Page 35: Microcontroladores  7ma Parte

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;****************************************************************************************

Page 36: Microcontroladores  7ma Parte

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

Page 37: Microcontroladores  7ma Parte

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

Page 38: Microcontroladores  7ma Parte

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

Page 39: Microcontroladores  7ma Parte

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

Page 40: Microcontroladores  7ma Parte

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