TODOPIC
Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: Eduardo_0894 en 28 de Septiembre de 2016, 16:15:42
-
He estado intentando hacer la inicialización del lcd en 4 bits para un pic18f4550, pero al momento de simularlo no enciende la pantalla, estoy usando RS, E, R/W y D4 a D7 en el puerto D.
-
En este hilo hay algunos archivos que son la libreria de LCD.
Solo deberias cambiar algunos NOP y/o delays, al usar otra frecuencia. Pero lo demas sigue igual.
Y si no en el datasheet del LCD indica claramente como inicializarlo, con el tiempo necesario de demora indicado.
-
Ya he echo eso, de echo asi escribi mi código
call Retardo_15ms
movlw b'00110000'
call EnviarLCD
movlw b'00110000'
call EnviarLCD
movlw b'00110000'
call EnviarLCD
movlw b'00100000' ;LCD 4 bits
call EnviarLCD
movlw b'00101000' ;N = 0 -> 2 linea, F = 0 -> tamaño
call LCD_Inst
movlw b'00000001' ;Limpiar el display
call LCD_Inst
movlw b'00000110' ;modo entrada (incrementeo sin desplazamiento
call LCD_Inst
movlw b'00001111' ;Encender display, cursor visible e intermitente
call LCD_Inst
movlw b'00000001' ;limpia pantalla y va a home
call LCD_Inst
EnviarLCD
bcf PORTD, 0
bcf PORTD, 1
movwf PORTD
bsf PORTD, 0 ;LCD_E
call Retardo_5ms
bcf PORTD, 0 ;LCD_E
call Retardo_5ms
return
LCD_Inst
bcf PORTD, 1
movwf aux ;Movemos a aux para guardar el dato
andlw b'11110000' ;Se guardan en W los primeros bits que enviaremos al lcd
movwf PORTD
bsf PORTD, 0 ;LCD_E
call Retardo_5ms
bcf PORTD, 0 ;LCD_E
swapf aux, W ;Intercambiamos los bits ej. si tenemos "10101100" lo cambia a "11001010" y guarda en W
andlw b'11110000' ;Se guardan en W los ultimos 4 bits que enviaremos al lcd
bsf PORTD, 0 ;LCD_E
call Retardo_5ms
bcf PORTD, 0 ;LCD_E
return
-
Probaste aumentandole los tiempos? , agregale varias llamadas mas a los delays, ejemplo:
EnviarLCD
bcf PORTD, 0
bcf PORTD, 1
movwf PORTD
call Retardo_5ms
bsf PORTD, 0 ;LCD_E
call Retardo_5ms
call Retardo_5ms
bcf PORTD, 0 ;LCD_E
call Retardo_5ms
call Retardo_5ms
return
Me paso que una ves intentando seguir los tiempo del datasheet no me funcionaba, pero con mas tiempo si. Si es eso luego podes ir probando de disminuir el tiempo poco a poco hasta llegar a lo que tu LCD funcione sin problemas.