# Problemas con la visualización  del lcd en Proteus



## josue_electronico (Ago 22, 2011)

De ante mano mis cordiales saludos bueno mi problema es al usar el LCD 16x2 en el programa programa PROTEUS v7.7... el problema radica que al simular mi diseño en el proteus no se visualiza nada en el LCD (mi código asm esta correcto me funciona a la perfección lo probé físicamente montando mi circuito en un proto y funciona bien) bueno estuve investigado y para poder hacer que el LCD visualice se le tienen que agregar unos retardos de 20ms al código fuente que seria el archivo ASM el cual genera el archivo HEX que va en el pic mi pregunta es donde poner esos retardos en el código asm  para poder hacer que el LCD funcione correctamente.... seguramente a mas de uno le a pasado!!
[/COLOR] 
 gracias de ante mano! saludos


----------



## Gudino Roberto duberlin (Ago 22, 2011)

josue_electronico dijo:


> De ante mano mis cordiales saludos bueno mi problema es al usar el LCD 16x2 en el programa programa PROTEUS v7.7... el problema radica que al simular mi diseño en el proteus no se visualiza nada en el LCD (mi código asm esta correcto me funciona a la perfección lo probé físicamente montando mi circuito en un proto y funciona bien) bueno estuve investigado y para poder hacer que el LCD visualice se le tienen que agregar unos retardos de 20ms al código fuente que seria el archivo ASM el cual genera el archivo HEX que va en el pic mi pregunta es donde poner esos retardos en el código asm  para poder hacer que el LCD funcione correctamente.... seguramente a mas de uno le a pasado!!
> [/COLOR]
> gracias de ante mano! saludos



Hola Amigo, por lo gral. el simulador no es tan minucioso en tan pequeños detalles pues tampoco habria de funcionar en circuito real, quizas en el simulador obviaste conectar algun pin del LCD.-


----------



## Daniel Meza (Ago 22, 2011)

Puede ser que suceda lo que te menciona el amigo Roberto, si sigues sospechando de las rutinas de retardo, estas se colocan entre cada comando del LCD Algo así:

-Poner En a 0
-Colocar RS a 1/0 dependiendo del tipo de dato a enviar
-Escribir dato en el LCD colocando En a 1
-Aquí va el retardo, pueden ser 50uS hasta 2ms para los comandos mas lentos del LCD
-... mas instrucciones


----------



## josue_electronico (Ago 22, 2011)

Gracias por sus respuestas!!! pero reitero mi duda... e verificado cada conexión y me sigue saliendo así bueno tengo este link que me da referencia a mis dudas pero no las aclara definitivamente!! les seguire agradeciendo por su apoyo!!  lean el linck

http://www.pic16f84a.org/index.php?...el-lcd-en-proteus&catid=38:pic16f84&Itemid=60


----------



## antiworldx (Ago 23, 2011)

Es fácil, el proteuss falla mucho. La verdad si el dispositivo te funciona físicamente, no te rompas la cabeza con el proteuss. Es bien sabido que no es un programa fino precisamente. Solo sirve para enseñar a los que inician.

No pierdas el tiempo con el y mejor trabaja las pruebas directamente sobre el diseño físico. O si por motivos académicos quieres mostrar a los alumnos como trabajan las instrucciones paso a paso, consigue una tarjeta de desarrollo con opcion de depuración y sera incluso mucho más profesional tu explicación.


----------



## aw301 (Ago 25, 2011)

olle yo tengo un problema no se si me puedas ayudar 

por que no sale el icono de guardar en isis y por que no puedo ver en 3D


----------



## elaveriguador (Oct 19, 2019)

Ola a todos quiciera aportar algo a los que de alguna manera vendran buscando respuestas.
Uno de los problemas con las "LCD", en proteus son los venditos retardos, y la configuracion, el otro proble es que casi nadie de los que nos iniciamos en estos menesteres, no  nos acordamos de poner la referencia a tierra a la "lcd" sin esta referencia no va a funcionar la pantalla
solo basta con poner masa al pin 1 de la lcd y listo, cuando se programa en lencuaje de alto nivel el compilador hace todo el trabajo. Ya que traduce el lenguaje de alto nivel a ensamblador lo convirte en "asm", de hay el consumo de memoria tan grande, en asm cuando se trata
de un programa sencillo, es mejor conectar el pin RW a tierra directo y nos ebitamos leer Busy el pin 7 de la "lcd"por lo generar yo en mi caso casi nunca utilizo el pin RW para la lectura de ocupado de la lcd, Si el programa es un tanto complicado se utiliza ya que una demora de 2ms
es largo como lo usamos algunos, los retardos en asembler o asm son muy sencillos una rutina con demoras anidadas y listo para
Configurar la lcd "LCM16A2" al inicio por ejemplo  50 Micro segundos y para borrar la lcd 2 mili segundos son suficientes

movlw    'A'
call         LCD_escribe ; por ejemplo

movwf    PORTB
bsf          RS               ;por   Ejemp
bsf          E
call         Retardo_50microsegundos               ; en el caso de los datos para visualizar
bcf         E                          ;La  activacion del pin E o Avilitar en castellano solo necesita un pulso y listo muchos solo anteponen nop y ya

en el modo dato o sea cuando mostramos en la lcd los caracteres, el pin RS puede permaneces en alto sin ningun problema si no se usa el "Busy" vandera de ocupado, ya que este debe de ponerce a uno o en alto para leer la vandera, y se configura en algunos casos el puerto donde se instala la lcd en triestado o sea no se cargan los registros "TRISA ni el TRISB" repito si nuestro programa es sencillo los podemos configurar el puerto B por ejemp como salida y el puerto A como entrada esto cuando no se lee el Busy esto si no tienen esperiencia, yo los configuro si leeo o no el busy voy dando saltos jajajaj pero me lo sueno saludos
les dejo un ejeplo un poco machucado, "No le des el pescado al hombre enseñale a pescar"


----------



## LiderCh (Oct 26, 2020)

josue_electronico dijo:


> Gracias por sus respuestas!!! pero reitero mi duda... e verificado cada conexión y me sigue saliendo así bueno tengo este link que me da referencia a mis dudas pero no las aclara definitivamente!! les seguire agradeciendo por su apoyo!!  lean el linck
> 
> http://www.pic16f84a.org/index.php?...el-lcd-en-proteus&catid=38:pic16f84&Itemid=60


Hola Josue, llegaste a solucionar este problema ? Yo tambien tengo el mismo problema


----------



## DJ T3 (Oct 26, 2020)

LiderCh dijo:


> Hola Josue, llegaste a solucionar este problema ? Yo tambien tengo el mismo problema


Publica los archivos que tienes, incluyendo los hex/cof para realizar la correcta simulacion, aparte de decirnos qué version estas usando.
https://www.forosdeelectronica.com/threads/tuto-¿cómo-subir-archivos-xenforo.157730/


----------



## LiderCh (Oct 27, 2020)

DJ T3 dijo:


> Publica los archivos que tienes, incluyendo los hex/cof para realizar la correcta simulacion, aparte de decirnos qué version estas usando.
> https://www.forosdeelectronica.com/threads/tuto-¿cómo-subir-archivos-xenforo.157730/


Bueno acabo de solucionar el problema, me sucedía lo mismo que Josué, me funcionaba en mi circuito físico, pero en la simulación no.  El problema que encontré fue al momento de configurar el LCD a modo de 4 bits según el datasheet. Había enviado por separado 3h y 2h con retardo de 100us, solo por esa parte en especifico no se visualizaba en proteus. slds.

comandos_lcd(0x30); // Manda 3h
    __delay_ms(5);
    comandos_lcd(0x30);  // Manda 3h
    __delay_us(100);
*comandos_lcd(0x32);  // MANDA 3h seguido de 2h sin tiempo de retardo, para que funcione en proteus*
    __delay_us(100);
    comandos_lcd(0x28);  // lineas y caracteres
    __delay_us(53); 
    comandos_lcd(0x08); // pantalla apagada, cursor apagado y parapadeo apagado
    __delay_us(53);
    comandos_lcd(0x01); // limpia el display
    __delay_ms(3);
    comandos_lcd(0x06); // modo de entrada: pantalla no se mueve, cursor si
    __delay_us(53);
    comandos_lcd(0x0C); // enciende pantalla
    __delay_us(53);


----------

