LCD con PIC

Hola, tengo problema para manejar un display inteligente de 16x2 con el PIC 18F452. Programo en C con el PCW de CCS y uso el driver para LCD que trae el programa. Pero no funciona.
Espero tu respuesta
Saludos
Pablo
1

1 respuesta

Respuesta
1
Yo no programo el PIC en C.
Si usas un driver ya hecho debes asegurarte que es el correcto para ese display.
En líneas generales para usar un display inteligente se lo debe inicializar.
;LOS PASOS PARA INICIALIZAR LCD
STEPS CALL DISCLR
CALL DISHOME
CALL ENTMOD
CALL DIS_ON
CALL FUNC
BCF PORTC, RS
OTRA MOVLW B'10000000' ; PONGO 'D en primer posicion
MOVWF POSIC
CALL SETDD
BSF PORTC, RS
GOTO comienzo de prog.
Hay que hacer estos pasos para que el display arranque. Ojo, se debe esperar 40 mS luego de la alimentación para poder enviarle datos.
Las rutinas anteriormente citadas son estas:
;*******************************************************************
;'DISPLAY CLEAR' FUNCION
;LIMPIAR EL DISPLAY
DISCLR CLRF PORTC ; LIMPIAR RS, RS=0 PARA LOS COMANDOS
MOVLW B'00000001'
MOVWF PORTB
CALL PULSOE ; LEVANTAR E, Y BAJARLO
CALL DELAY
CALL DELAY
RETLW .0
;*************************
;'DISPLAY HOME' FUNCION
;VUELVE AL HOME
DISHOME MOVLW B'00000010'
MOVWF PORTB
CALL DELAY
CALL DELAY
CALL DELAY
call DELAY
RETLW .0
;**************************
;'ENTRY MODE SET' FUNCION
;DIRECCION DEL CURSO INCREASE, SHIFT DISPLAY
ENTMOD MOVLW B'00000110'
MOVWF PORTB
CALL PULSOE
CALL DELAY
RETLW .0
;**************************
;'DISPLAY ON/OFF' FUNCION
;DISPLAY ON, si CURSOR Y si BLINKING
DIS_ON MOVLW B'00001100'
MOVWF PORTB
CALL PULSOE
CALL DELAY
RETLW .0
;**************************
;'FUNTION SET' FUNCION
;8 BIT INTERFACE, 2 LINEA , 5 X 7 DOTS
FUNC MOVLW B'00111100'
MOVWF PORTB
CALL PULSOE
CALL DELAY
RETLW .0
;**************************
;'SET DDRAM ADDRESS' FUNCION
;ELEGIR LA DIRECCION DE DDRAM MEDIANTE W
SETDD CLRF PORTC ; 16 X 2
MOVF POSIC,W ; 80H,81H,....................8FH
MOVWF PORTB ; C0H,C1H,....................CFH
CALL PULSOE ;
CALL DELAY ;
RETLW .0 ;
;**************************
;'STROBE PULSE ROUTINE'
;GENERAR EL PULSO VALIDO E PARA EL DISPLAY
PULSOE BSF PORTC,E
nop
nop
BCF PORTC,E
RETLW .0
;****************************
SHIFT CLRF PORTC
MOVLW B'00011100'
MOVWF PORTB
CALL PULSOE
CALL DELAY
RETLW 0
;**************************************************************************
MUESTRA MOVWF PORTB
CALL PULSOE
CALL DELAY
RETLW 0
;****************************
ACERO BCF PORTC,RS
; CALL DISCLR
CALL DISHOME
MOVLW 0X00
MOVWF POSIC
CALL SETDD ;
BSF PORTC, RS
RETLW 0
;**************************************************************************
Estas rutinas funcionan perfectamente y las uso hace muchos años. Tal vez te orienten para saber que sucede con tu programa.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas