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 Respuesta
Respuesta de jlcava
1
1
jlcava, Más de 10 añosdesarrollando equipos electrónicos con...
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.