Haz una pregunta
  Foros de Electrónica » Diseño digital » Interfaces y Programación
Foros Registrarse ¿Olvidaste tu contraseña?

Temas similares

01/12/2013 #1


Problema con LCD en 20 Mhz con 16F877A
Hola ¿Cómo les va?
He estado buscando por todos lados y no pude encontrar la solución, tengo hecho un programa en PBP 2.6 que anda bien en 4 MhZ pero al cambiar a 20 MhZ el LCD de 16x2 muestra los píxeles en negro en lugar de las letras como corresponde.
En el programa puse:

DEFINE OSC 20
DEFINE LCD_BITS 8 'LCD bus 8
Define LCD_DREG PORTC ;bit de datos del LCD empezando en c
Define LCD_DBIT 0 ;por c.0 ,c.1, c.2 y c.3
Define LCD_RSREG PORTA ;bit de registro del LCD en puerto a
Define LCD_RSBIT 4 ;en el puerto a.5
Define LCD_EREG PORTA ;bit de Enable conectar en el
Define LCD_EBIT 5 'puerto a.5
DEFINE LCD_COMMANDUS 4000
DEFINE LCD_DATAUS 250

También en el grabador pongo High speed pero no lo logro hacer andar. Debe ser algo que esté enviando los comandos a mayor velocidad al LCD y por éso no funciona ¿Se les ocurre algo? También he probado en desactivar el Watch dog timmer
Muchas gracias.
01/12/2013 #2


si trabajo bien en 4 Mhz debe funcionar con 20Mhz lo único que tienes que hacer es bajarle velocidad de transferencia para darle tiempo al lcd para que reaccione o utiliza el bit de lectura/escritura para saber cuando le puedes enviar información al LCD. no conozco esa programación solo un poco en ASM
01/12/2013 #3


Si fen2006, yo creo que la cosa anda por ahí. Sino me equivoco he leído que en la versión 3 de PBP este problema no existe. El bit de lectura escritura visto desde el LCD está puesto en 0 o a tierra ya que no utilizo la función de lectura.

Aclaro que quiero usar 20MhZ en lugar de 4 porque tengo que mandar una serie de pulsos y pausas de 16 uS y para 4 MhZ no me da el tiempo mínimo. He leído que se puede hacer con assembler pero no quiero probar esa opción.
02/12/2013 #4
Moderador

Avatar de D@rkbytes

nicolasantoci dijo: Ver Mensaje
Sino me equivoco he leído que en la versión 3 de PBP este problema no existe. El bit de lectura escritura visto desde el LCD está puesto en 0 o a tierra ya que no utilizo la función de lectura.
Ese problema también existe en la versión 3 de PBP al usar el bus de 8 bits para la pantalla.

nicolasantoci dijo: Ver Mensaje
Aclaro que quiero usar 20MhZ en lugar de 4 porque tengo que mandar una serie de pulsos y pausas de 16 uS y para 4 MhZ no me da el tiempo mínimo.
Utiliza el bus de 4 bits para los datos de la pantalla de esta forma:
Código:
Define LCD_DREG PORTC        ; Puerto de datos.
Define LCD_DBIT     4        ; Bits de inicio de datos.
Define LCD_RSREG PORTA        ; Puerto de RS (Register Select)
Define LCD_RSBIT    4        ; Pin para RS
Define LCD_EREG PORTA        ; Puerto de E (Enable)
Define LCD_EBIT     5        ; Pin para E
Con el bus a 4 bits no existe problema para trabajar a 20MHz.

Date cuenta que en la configuración que posteaste anteriormente estás usando el pin RA4 para el pin RS de la pantalla y el pin RA4 es Open Drain (Drenador Abierto)
Si piensas usar ese pin debes colocar una resistencia Pull-Up para obtener los dos estados lógicos.

Suerte.
02/12/2013 #5


Lcd
Muchas gracias por la información, te cuento que tengo una resistencia de 10kohm en forma de pull-up. Ni me imaginé que era así el pin, busqué en la hoja de datos del 16f877a TQFP y decía que era de ese tipo, siempre se aprende algo nuevo.
Con respecto al modo de 4-bits y que iba a ser una solución tampoco me imaginé pero es lógico. Lo que voy a hacer es cortar las pistas en las plaquetas de D4 a D7 y probar como me dijiste.

Resultados:
Lo probé cortando las pistas, me avivé que había metido la pata, entonces las arreglé, corté los bits bajos como correspondía y los puse a tierra, aparecen los puntitos negros al principio pero... ¡¡¡Anda!!! La verdad que buenísimo, te lo agradezco mucho como también a fenn2006 por su ayuda. Ahora voy a poder seguir con el proyecto.

Les dejo el circuito para que lo miren si quieren. Lo uso para macrofotografía.
Imágenes Adjuntas
Tipo de Archivo: jpg circuito.jpg (40,6 KB (Kilobytes), 8 visitas)
02/12/2013 #6
Moderador

Avatar de D@rkbytes

nicolasantoci dijo: Ver Mensaje
aparecen los puntitos negros al principio pero... ¡¡¡Anda!!!
Los cuadros negros al principio se deben a una inicialización tardía de la pantalla.
Prueba inicializando la pantalla escribiendo algo antes de ejecutar el programa principal.

Por ejemplo:
LCDOut $FE,1,"INICIANDO LCD"

O tan solo LCDOut $FE,1

Y no coloques retardos antes de escribir en la pantalla.

Saludos.
Respuesta
¿Tienes una mejor respuesta a este tema? ¿Quieres hacerle una pregunta a nuestra comunidad y sus expertos? Registrate

Buscar más temas sobre:
Lupa Interfaces y Programación

Lenguajes de programación, gestión y manejo de puertos

Cerrar
Foros de Electrónica » Diseño digital » Interfaces y Programación

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO ©2011, Crawlability, Inc.