aid with I cosay of microchip for LCD Cfag240128d-IMF-t

pabloillanes

New member
my problem is that I have I cosay but single profit to activate the LCD I have not managed to remove letter in nongrafico way. Aca goes I cosay that I have writing

Code:

;DEFINICIONES DE REGISTROS PARA MODULO LCD

#DEFINE LCD_REG_CONTROL BCF PORTA,0
#DEFINE LCD_REG_DATOS BSF PORTA,0
#DEFINE LCD_ESCRITURA BCF PORTA,1
#DEFINE LCD_LECTURA BSF PORTA,1
#DEFINE LCD_DESACTIVADO BCF PORTA,2
#DEFINE LCD_ACTIVADO BSF PORTA,2
#DEFINE IN_BANK BSF STATUS,RP0
#DEFINE OUT_BANK BCF STATUS,RP0

PROCESSOR 16F84

LIST P=16F84 ; SE INDICA EL MODO DE PROCESADOR

INCLUDE <P16F84.INC> ; SE INCLUYE LA DEFINICION DE LOS
; REGISTROS INTERNOS'

;RPG

DATO_A EQU H'0C'
DATO_B EQU H'0D'

;*************************************************************************
;EL CONJUNTO DE RUTINAS QUE SE PRESENTAN A CONTINUACION PERMITEN REALIZAR
;LAS TAREAS BASICAS DE CONTROL DEL MODULO DE LCD
;*************************************************************************

ORG 0 ;VECTOR DE RESET

GOTO CONFIG_LCD

ORG 5 ;VECTOR DE INTERRUPCION

;*************************************************************************
;LCD_BUSY: LECTURA DEL FLAG BUSY & DIRECCION.
;CHEQUEA SI EL LCD ESTA OCUPADO (BUSY) Y RETORNA DE LA RUTINA
;CUANDO DESOCUPADO.
;*************************************************************************

LCD_BUSY:

LCD_LECTURA ;PONE EL LCD EN MODO LECTURA

IN_BANK ;SELECCIONA EL BANCO 1
MOVLW B'11111111'
MOVWF TRISB ;PUERTA B COMO ENTRADA
OUT_BANK ;SELECCIONA EL BANCO 0

LCD_ACTIVADO ;ACTIVA EL LCD
NOP ;ESPERA 1 uS

L_BUSY:

BTFSC PORTB,7 ;CHEQUEA BIT DE BUSY
GOTO L_BUSY

LCD_DESACTIVADO ;DESACTIVA LCD

IN_BANK ;SELECCIONA BANCO 1
CLRF TRISB ;PUERTA B SALIDA
OUT_BANK ;SELECCIONA EL BANCO 0

LCD_ESCRITURA ;PONE LCD EN MODO WR

RETURN

;*************************************************************************
;LCD_E: PULSO DE ENABLE.
; GENERA UN PULSO DE 1µS POR RA2 (ENABLE) DEL LCD.
; SI SE USA UNA VELOCIDAD DE MICRO DIFERENTE DE 4MHZ HABRÁ QUE
; AJUSTAR ESTE TIEMPO.
;*************************************************************************

LCD_E:

LCD_ACTIVADO ;ACTIVA SEÑAL E
NOP ;ESPERA 1 uS
LCD_DESACTIVADO ;DESACTIVA SEÑAL E

RETURN

;*************************************************************************
;LCD_DATO: ESCRITURA DE DATOS EN DDRAM O CGRAM
; PONE EL LCD EN MODO DATOS Y MANDA EL BYTE PRESENTE EN W QUE
; SERÁ MOSTRADO EN PANTALLA.
;*************************************************************************

LCD_DATOS:

LCD_REG_CONTROL ;DESACTIVA RS (MODO COMANDO)
MOVWF PORTB ;VALOR ASCII A SACAR POR RB
CALL LCD_BUSY ;ESPERA A QUE SE LIBERE EL LCD
LCD_REG_DATOS ;ACTIVA RS (MODO DATO).
GOTO LCD_E ;GENERA PULSO EN LA SEÑAL E

;*************************************************************************
;LCD_REG: ESCRITURA DE COMANDOS EN EL LCD.
; PONE EL LCD EN MODO DE RECIBIR COMANDOS, ESPERA A QUE NO ESTE
; OCUPADO Y VA A LCD_E.
;*************************************************************************

LCD_REG:

LCD_REG_CONTROL ;DESACTIVA RS (MODO COMANDO)
MOVWF PORTB ;SACA EL CODIGO DE LA INSTRUCCION
CALL LCD_BUSY ;ESPERA SE LIBERE EL LCD
GOTO LCD_E ;GENERA PULSO EN LA SEÑAL E

;*************************************************************************
;LCD_INI: INICIALIZACION DEL LCD.
; INICIALIZACIÓN DEL MODULO LCD SEGÚN LOS TIEMPO MARCADOS
; POR EL FABRICANTE. BUS DE 8 BITS, CON X LÍNEAS DE VISUALIZACIÓN
; Y CARACTERES DE 5 X 7 PUNTOS.
;*************************************************************************

LCD_INI:

MOVLW B'00110000'
CALL LCD_REG ;LCD ON Y CURSOR OFF

;MOVLW B'00100111' ;FUNCTION SET
;CALL LCD_REG ;CODIGO DE INSTRUCCION
nop
;MOVLW B'10010111' ;FUNCTION SET
;CALL LCD_REG ;CODIGO DE INSTRUCCION

;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) (5X7) PIXELES
nop
;CALL DELAY_5MS ;TEMPORIZACION 5mS

;(ESPECIFICACION DE FABRICANTE)

;MOVLW B'00100111' ;FUNCTION SET

;CALL LCD_REG
nop
; CALL DELAY_5MS

;MOVLW B'10010111'
;CALL LCD_REG
;CALL DELAY_5MS

RETURN



;*************************************************************************
;DELAY_5MS: GENERA UNA TEMPORIZACION DE 5 mS
;*************************************************************************

DELAY_5MS:

MOVLW D'7' ;7 * 765 uS = 5,35 mS
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

;*************************************************************************
;RUTINA PRINCIPAL
;CONFIGURACION PIC PARA EL LCD.
;*************************************************************************

CONFIG_LCD

IN_BANK
CLRF TRISB
CLRF TRISA
OUT_BANK

CLRF INTCON
LCD_REG_CONTROL
LCD_DESACTIVADO
CALL LCD_INI

;MOVLW B'00110000'
;CALL LCD_REG ;LCD ON Y CURSOR OFF

MOVLW 'P'
CALL LCD_DATOS ;VISUALIZA LETRA P
MOVLW 'P'
CALL LCD_DATOS ;VISUALIZA LETRA P

MOVLW 'R'
CALL LCD_DATOS ;VISUALIZA LETRA R

MOVLW 'O'
CALL LCD_DATOS ;VISUALIZA LETRA O

MOVLW 'Y'
CALL LCD_DATOS ;VISUALIZA LETRA Y
BUCLE
GOTO BUCLE
END
Looking for additional LCD resources? Check out our LCD blog for the latest developments in LCD technology.
 
Top