lunes, 10 de agosto de 2009

Manejar pantalla lcd 16x2 con pic 16d877

;pongo ahora el codigo que muestra un par de mensajes en los renglones de la pantalla

#INCLUDE ;DECLARO LA LIBRERIA


;declaraciones necesarias para las subrutinas de manejo de la LCD
#DEFINE EN PORTA,0 ;defino al pin EN en el PORTA,0
#DEFINE RS PORTA,1 ;defino al pin RS en el PORTA,1

PORTLCD EQU PORTB ;si, si se puede declarar asi un registro
; en casi de que quieras poner otro puerto simplemente ponlo en
;lugar de PORTB

;declaro un par de comandos que ocupare despues
RENGLON1 EQU B'10000000' ;este comando posiciona el cursor en el renglon1
RENGLON2 EQU B'11000000' ;este comando posiciona el cursor en el renglon2


CBLOCK 0X20 ;DECLARO LOS REGISTROS A OCUPAR
NUM1,NUM2,NUM3; REGISTROS PARA EL RETARDO

ENDC

ORG 0X00 ;DECLARO EL ORIGEN DEL PROGRAMA

;CONFIGURO LOS PUERTOS

BSF STATUS,RP0 ;CAMBIO A BANCO1

CLRF PORTB DECLARO PORTB COMO SALIDA

;COMO EN ESTE CASO EL PORTA TIENE EL CAD,
; LO DESABILITO CON LAS INSTRUCCIONES

MOVLW 0X07
MOVWF ADCON1

CLRF PORTA DECLARO PORTA COMO SALIDA

BCF STATUS,RP0 ;CAMBIO A BANCO 0

CALL INIT_LCD ;INICIALIZO LA PANTALLA LCD

MOVLW "M" ;COLOCO EL DATO QUE QUIERO ESCRIBIR EN LA LCD EN W
CALL DATO ;Y LLAMO ALA SUBRUTINA QUE LO VA A DESPLEGAR EN LA PANTALLA

MOVLW "E" ;COLOCO EL DATO QUE QUIERO ESCRIBIR EN LA LCD EN W
CALL DATO ;Y LLAMO ALA SUBRUTINA QUE LO VA A DESPLEGAR EN LA PANTALLA

MOVLW "X" ;COLOCO EL DATO QUE QUIERO ESCRIBIR EN LA LCD EN W
CALL DATO ;Y LLAMO ALA SUBRUTINA QUE LO VA A DESPLEGAR EN LA PANTALLA

MOVLW "A" ;COLOCO EL DATO QUE QUIERO ESCRIBIR EN LA LCD EN W
CALL DATO ;Y LLAMO ALA SUBRUTINA QUE LO VA A DESPLEGAR EN LA PANTALLA

MOVLW "T" ;COLOCO EL DATO QUE QUIERO ESCRIBIR EN LA LCD EN W
CALL DATO ;Y LLAMO ALA SUBRUTINA QUE LO VA A DESPLEGAR EN LA PANTALLA

MOVLW "R" ;COLOCO EL DATO QUE QUIERO ESCRIBIR EN LA LCD EN W
CALL DATO ;Y LLAMO ALA SUBRUTINA QUE LO VA A DESPLEGAR EN LA PANTALLA

MOVLW "O" ;COLOCO EL DATO QUE QUIERO ESCRIBIR EN LA LCD EN W
CALL DATO ;Y LLAMO ALA SUBRUTINA QUE LO VA A DESPLEGAR EN LA PANTALLA

MOVLW "N" ;COLOCO EL DATO QUE QUIERO ESCRIBIR EN LA LCD EN W
CALL DATO ;Y LLAMO ALA SUBRUTINA QUE LO VA A DESPLEGAR EN LA PANTALLA

MOVLW "I" ;COLOCO EL DATO QUE QUIERO ESCRIBIR EN LA LCD EN W
CALL DATO ;Y LLAMO ALA SUBRUTINA QUE LO VA A DESPLEGAR EN LA PANTALLA

MOVLW "C" ;COLOCO EL DATO QUE QUIERO ESCRIBIR EN LA LCD EN W
CALL DATO ;Y LLAMO ALA SUBRUTINA QUE LO VA A DESPLEGAR EN LA PANTALLA

MOVLW "A" ;COLOCO EL DATO QUE QUIERO ESCRIBIR EN LA LCD EN W
CALL DATO ;Y LLAMO ALA SUBRUTINA QUE LO VA A DESPLEGAR EN LA PANTALLA

MOVLW RENGLON1 LLAMO A LA SUBRUTINA QUE EJECUTA COMANDOS
CALL COMANDO ; PARA CAMBIAR DE RENGLON

MOVLW "H" ;COLOCO EL DATO QUE QUIERO ESCRIBIR EN LA LCD EN W
CALL DATO ;Y LLAMO ALA SUBRUTINA QUE LO VA A DESPLEGAR EN LA PANTALLA

MOVLW "O" ;COLOCO EL DATO QUE QUIERO ESCRIBIR EN LA LCD EN W
CALL DATO ;Y LLAMO ALA SUBRUTINA QUE LO VA A DESPLEGAR EN LA PANTALLA

MOVLW "L" ;COLOCO EL DATO QUE QUIERO ESCRIBIR EN LA LCD EN W
CALL DATO ;Y LLAMO ALA SUBRUTINA QUE LO VA A DESPLEGAR EN LA PANTALLA

MOVLW "A" ;COLOCO EL DATO QUE QUIERO ESCRIBIR EN LA LCD EN W
CALL DATO ;Y LLAMO ALA SUBRUTINA QUE LO VA A DESPLEGAR EN LA PANTALLA

MOVLW " " ;COLOCO EL DATO QUE QUIERO ESCRIBIR EN LA LCD EN W
CALL DATO ;Y LLAMO ALA SUBRUTINA QUE LO VA A DESPLEGAR EN LA PANTALLA

MOVLW "M" ;COLOCO EL DATO QUE QUIERO ESCRIBIR EN LA LCD EN W
CALL DATO ;Y LLAMO ALA SUBRUTINA QUE LO VA A DESPLEGAR EN LA PANTALLA

MOVLW "U" ;COLOCO EL DATO QUE QUIERO ESCRIBIR EN LA LCD EN W
CALL DATO ;Y LLAMO ALA SUBRUTINA QUE LO VA A DESPLEGAR EN LA PANTALLA

MOVLW "N" ;COLOCO EL DATO QUE QUIERO ESCRIBIR EN LA LCD EN W
CALL DATO ;Y LLAMO ALA SUBRUTINA QUE LO VA A DESPLEGAR EN LA PANTALLA

MOVLW "D" ;COLOCO EL DATO QUE QUIERO ESCRIBIR EN LA LCD EN W
CALL DATO ;Y LLAMO ALA SUBRUTINA QUE LO VA A DESPLEGAR EN LA PANTALLA

MOVLW "O" ;COLOCO EL DATO QUE QUIERO ESCRIBIR EN LA LCD EN W
CALL DATO ;Y LLAMO ALA SUBRUTINA QUE LO VA A DESPLEGAR EN LA PANTALLA

STOP GOTO STOP ;DETENGO EL PROGRAMA PARA NO ESCRIBIR MAS


;SUBRUTINAS


INIT_LCD:

MOVLW B'00110000'
CALL COMANDO

MOVLW B'00110000'
CALL COMANDO

MOVLW B'00110000'
CALL COMANDO


MOVLW B'00111100'
CALL COMANDO


MOVLW B'00001000'
CALL COMANDO

MOVLW B'00000001'
CALL COMANDO

MOVLW B'00000110'
CALL COMANDO

MOVLW B'00001111';
CALL COMANDO ;
RETURN


COMANDO MOVWF PORTLCD
BCF RS
BSF EN
CALL RETARDO5
BCF EN
RETURN

DATO MOVWF PORTLCD
BSF RS
BSF EN
CALL RETARDO5mS
BCF EN
RETURN

RETARDO5mS: movlw d'1' ; d significa que es decimal. Mueve l a w, l = 10
movwf num3 ;mueve w = 10 al registro num3
otra2 movlw d'8' ; mueve l = 203 a w
movwf num2 ; mueve w = 203 al registro num2
otra1 movlw d'207'
movwf num1

otra decfsz num1,1 ; decrementa num1 de 1 en 1 hasta llegar a cero.
goto otra ;El # 1 del destino es para que relice la instruccion
decfsz num2,1 ;dentro del registro f
goto otra1
decfsz num3,1
goto otra2
Return

;Listo!
; a escribir mensajitos en la LCD
;saludos!!

No hay comentarios:

Publicar un comentario