Buen dia amigo, siguiendo con el tema de la pantalla lcd, ahora quiero rediseñar la libreria LCD_4BIT a una LCD_8BIT. En el libro me hablan de que es mas rapido, lo malo es que creo que voy a tener que escribirme una desde 0 xq no encuentro como modificar la que me proveen ellos, y de paso no me explican bien el control de la pantalla. Te voy a mostrar un diagrama de flujo que si lo lograra entender podria por lo menos escribir la rutina de inicializar el lcd.
Lo que quiero saber es, que es lo que debo enviar a la pantalla para poderla inicializar. Porque no se si lo primero que debo hacer es borrar o limpiar la pantalla y luego poner RS O RW a 0, y como ya no voy a tener que enviar primero un nibble y despues otro saber como le hago para enviar todo los bits de una sola vez...
O me podrias explicar que es lo primero que se debe mandar a la pantalla cuando se conecta la energia.
Buen dia amigo, siguiendo con el tema de la pantalla lcd, ahora quiero rediseñar la libreria LCD_4BIT a una LCD_8BIT. En el libro me hablan de que es mas rapido, lo malo es que creo que voy a tener que escribirme una desde 0 xq no encuentro como modificar la que me proveen ellos, y de paso no me explican bien el control de la pantalla. Te voy a mostrar un diagrama de flujo que si lo lograra entender podria por lo menos escribir la rutina de inicializar el lcd.
Lo que quiero saber es, que es lo que debo enviar a la pantalla para poderla inicializar. Porque no se si lo primero que debo hacer es borrar o limpiar la pantalla y luego poner RS O RW a 0, y como ya no voy a tener que enviar primero un nibble y despues otro saber como le hago para enviar todo los bits de una sola vez...
O me podrias explicar que es lo primero que se debe mandar a la pantalla cuando se conecta la energia.
Buen dia amigo, siguiendo con el tema de la pantalla lcd, ahora quiero rediseñar la libreria LCD_4BIT a una LCD_8BIT. En el libro me hablan de que es mas rapido, lo malo es que creo que voy a tener que escribirme una desde 0 xq no encuentro como modificar la que me proveen ellos, y de paso no me explican bien el control de la pantalla. Te voy a mostrar un diagrama de flujo que si lo lograra entender podria por lo menos escribir la rutina de inicializar el lcd.
Lo que quiero saber es, que es lo que debo enviar a la pantalla para poderla inicializar. Porque no se si lo primero que debo hacer es borrar o limpiar la pantalla y luego poner RS O RW a 0, y como ya no voy a tener que enviar primero un nibble y despues otro saber como le hago para enviar todo los bits de una sola vez...
O me podrias explicar que es lo primero que se debe mandar a la pantalla cuando se conecta la energia.
Aqui esta el codigo del inicializa pantalla pero en comunicación 4bit
Código:
LCD_Inicializa
bsf STATUS,RP0 ; Configura las líneas conectadas al pines RS,
bcf LCD_PinRS ; R/W y E.
bcf LCD_PinEnable
bcf LCD_PinRW
bcf STATUS,RP0
bcf LCD_PinRW ; En caso de que esté conectado le indica
; que se va a escribir en el LCD.
bcf LCD_PinEnable ; Impide funcionamiento del LCD poniendo E=0.
bcf LCD_PinRS ; Activa el Modo Comando poniendo RS=0.
call Retardo_20ms
movlw b'00110000'
call LCD_EscribeLCD ; Escribe el dato en el LCD.
call Retardo_200micros
movlw b'00110000'
call LCD_EscribeLCD
call Retardo_20micros ; Retardo necesario para simular en PROTEUS.
movlw b'00110000'
call LCD_EscribeLCD
call Retardo_20micros ; Retardo necesario para simular en PROTEUS.
movlw b'00100000' ; Interface de 4 bits.
call LCD_EscribeLCD
call Retardo_20micros ; Retardo necesario para simular en PROTEUS.
; Ahora configura el resto de los parámetros:
call LCD_2Lineas4Bits5x7 ; LCD de 2 líneas y caracteres de 5x7 puntos.
call LCD_Borra ; Pantalla encendida y limpia. Cursor al principio
call LCD_CursorOFF ; de la línea 1. Cursor apagado.
call LCD_CursorIncr ; Cursor en modo incrementar.
return
; Subrutina "LCD_EscribeLCD" -----------------------------------------------------------
;
; Envía el dato del registro de trabajo W al bus de dato y produce un pequeño pulso en el pin
; Enable del LCD. Para no alterar el contenido de las líneas de la parte baja del Puerto B que
; no son utilizadas para el LCD (pines RB3:RB0), primero se lee estas líneas y después se
; vuelve a enviar este dato sin cambiarlo.
LCD_EscribeLCD
; andlw b'11110000' ; Se queda con el nibble alto del dato que es el
movwf LCD_Dato ; que hay que enviar y lo guarda.
movf LCD_BusDatos,W ; Lee la información actual de la parte baja
andlw b'00001111' ; del Puerto B, que no se debe alterar.
iorwf LCD_Dato,F ; Enviará la parte alta del dato de entrada
; y en la parte baja lo que había antes.
bsf STATUS,RP0 ; Acceso al Banco 1.
movf TRISB,W ; Guarda la configuración que tenía antes TRISB.
movwf LCD_GuardaTRISB
movlw b'00001111' ; Las 4 líneas inferiores del Puerto B se dejan
andwf PORTB,F ; como estaban y las 4 superiores como salida.
bcf STATUS,RP0 ; Acceso al Banco 0.
;
movf LCD_Dato,W ; Recupera el dato a enviar.
movwf LCD_BusDatos ; Envía el dato al módulo LCD.
bsf LCD_PinEnable ; Permite funcionamiento del LCD mediante un pequeño
bcf LCD_PinEnable ; pulso y termina impidiendo el funcionamiento del LCD.
bsf STATUS,RP0 ; Acceso al Banco 1. Restaura el antiguo valor en
movf LCD_GuardaTRISB,W ; la configuración del Puerto B.
movwf PORTB ; Realmente es TRISB.
bcf STATUS,RP0 ; Acceso al Banco 0.
return
Sera posible rescatar algo de aqui, o es mejor reescribirla¿?