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¿?