Problemas con Display LCD en CCS

Tengo dos lcd uno de referencia: YJ-162A (fondo verde) y otro QY1602A (fondo azul). Trabajando con la libreria del ccs c, solo consigo que me funcione con el YJ-162A pero al colocar el otro lcd no sale nada, QY1602A nada. Estoy trabajando a cuatro bits.

Siempre habia usado el YJ-162A sin problemas, pero necesito otros y por ahorrar dinero compre de los de fondeo azul y tengo este problema. ¿Alquien le ha pasado lo mismo?.

Gracias.
 
Última edición:
El color del led del backlight no deberia influir en lo más minimo...fijate que los pines sean los mismos para ambos, quiza te confiaste hay un pin distinto y es ese el que molesta. No tenes a mano los datasheet?
Saludos
 
Nada, el data sheet no lo he encontrado (el del LCD que no me funciona), igual estoy tomando como guia la numeracion de pins que esta en la parte de atras del LCD.

¿Todos los LCDs funcionan igual, indiferente a la referencia, fabricante o compilador?
 
¿Todos los LCDs funcionan igual, indiferente a la referencia, fabricante o compilador?
No todos los LCD tienen el mismo driver hitachi que es el mas común, podría ser que el lcd que tienes contenga otro driver, si fuera ese el caso lo que puede estar sucediendo es que, como mínimo, la inicialización del LCD cambia y otros comandos tambien pueden cambiar.
 
Agregale una demora de 25ms al principio de iniciar el programa (antes de inicializar el lcd)... Algunos tardan ese tiempo en prenderse... Además podrías agrandar el delay entre instrucciones, para descartarlo.

Si tiene las patas estándar y en el órden típico es muy seguro que tenga el controlador HD44780.
 
Hola a todos !

tengo una duda , estoy comenzando a manejar LCD en un pic 18f452 realice el siguiente programa y no me aparece nada en la pantalla


Código:
#include <18f452.h>                 
#fuses XT,NOWDT,NOPROTECT,PUT,NOLVP       
#use delay (clock=4000000)         //Fosc=4Mhz
#define use_portb_lcd TRUE         //definir portb lcd
#include <lcd.c>                  //libreria lcd
      
///PROGRAMA
void main(void)
{
while (TRUE)
{
   lcd_init();         //inicializar lcd
   printf(lcd_putc,"hola mundo ;)\prueba 1");   //muestra por pantalla el mensaje   
}
}

estoy trabajando en CCS , he leido algo sobre poner retardos , pero no sé si esa sea la solucion y si la es , alguien que me pueda explicar porfavor

el LCDC lo conecto al puerto B y uso un cristal de 4MHz
 
Última edición por un moderador:
¿Ya revisaste bien tus conexiones?
Para una simple prueba este código funciona.
Código:
void main(void)
{
lcd_init();
lcd_putc("HOLA MUNDO");
lcd_gotoxy(1,2);
lcd_putc("HELLO WORLD");
}
Con el código que usaste, se vería algo como esto en la primer línea de la pantalla...
hola mundo ; )pru
Y parpadeando rápidamente.
Si no haz modificado la librería LCD.C adjunto un esquema de como debe estar conectado el LCD.

PD. Al usar lcd_init(); ya no necesitas usar retardos antes de escribir.
En esa función se hacen los necesarios para inicializar la pantalla.

Suerte.
 

Adjuntos

  • 18F452_LCD.gif
    18F452_LCD.gif
    44.5 KB · Visitas: 131
el diagrama de pines es el generico , el lcd es el JHD 162A ,estoy usando la configuracion de 4 pines y agregue un retardo pero sigue sin funcionar

Código:
#include <18f452.h>                 
#fuses XT,NOWDT,NOPROTECT,PUT,NOLVP       
#use delay (clock=4000000)         //Fosc=4Mhz
#define use_portb_lcd TRUE         //definir portb lcd
#include <lcd.c>                  //libreria lcd
      
///PROGRAMA
void main(void)
{
while (TRUE)
{
   delay_ms(25);
   lcd_init();         //inicializar lcd
   printf(lcd_putc,"hola mundo ;)\prueba 1");   //muestra por pantalla el mensaje   
}
}

alguna observacion ???
 
Última edición por un moderador:
el diagrama de pines es el generico , el lcd es el JHD 162A ,estoy usando la configuracion de 4 pines y agregue un retardo pero sigue sin funcionar

alguna observacion ???
OK. Ese mismo modelo de LCD tengo yo en azul y verde.
Quita el while(true)
No tiene caso que repitas la escritura.
Si puedes, adjunta un diagrama de tus conexiones.
 
Hola D@rkbyte gracias por la ayuda ,modifque el programa con el codigo que pusiste y sigue sin funcionar

#include <18f452.h>
#fuses XT,NOWDT,NOPROTECT,PUT,NOLVP
#use delay (clock=4000000) //Fosc=4Mhz
#define use_portb_lcd TRUE //definir portb lcd
#include <lcd.c> //libreria lcd

///PROGRAMA
void main(void)
{
lcd_init();
lcd_putc("HOLA MUNDO");
lcd_gotoxy(1,2);
lcd_putc("HELLO WORLD");
}

las conexiones son como las de tu diagrama , agregando el cristal de oscilacion con sus 2 capacitores y no se ve nada ,alguna sugerencia ???
 
las conexiones son como las de tu diagrama , agregando el cristal de oscilación con sus 2 capacitores y no se ve nada ,alguna sugerencia ???
Pues si, ahora que recuerdo, si tengo una sugerencia, ya que tuve ese mismo problema hace tiempo.
Por más que busque por donde podía estar la falla, no encontraba que estaba mal.
Leyendo varios temas por aquí y por allá, vi que alguien actualizo la librería LCD.C
Entonces realice la actualización del programa y si. :) Con eso funciono.

Suerte.
 
tienes esa actualizacion ???

me la puedes pasar ???

sigue sin verse nada ...
La actualización se realiza a través del mismo programa.
Pero necesitas ser usuario registrado.
Cabe resaltar que cuando la librería LCD.C no funciona, tampoco funcionan las simulaciones.
Así que puedes probar la simulación del amigo aparco inga, para que salgas de dudas.

Suerte.
 
hola gracias por los archivos

les comento que no me simula el proteus si cambio al puerto B , este es mi programa:


// Conexiones: B0 -> E
// B1 -> RS
// B2 -> RW
// B4 -> D4
// B5 -> D5
// B6 -> D6
// B7 -> D7
//////////////////////////////////////////////////////////////////////////////////

#include <18f452.h>
#fuses NOWDT,WDT128,HS, NOPROTECT, NOOSCSEN, NOBROWNOUT, BORV42, PUT, STVREN, NODEBUG, NOLVP, NOWRT, NOWRTD, NOWRTB, NOWRTC, NOCPD, NOCPB, NOEBTR, NOEBTRB
#use delay (clock=4000000) //Fosc=4Mhz
#define use_portb_lcd TRUE //definir portb lcd
#include <lcd.c> //libreria lcd

///PROGRAMA
void main(void)
{
lcd_init();
lcd_putc("HOLA MUNDO");
lcd_gotoxy(1,2);
lcd_putc("HELLO WORLD");
} // si funciono OK !!!

simulo el que me mandaste y si funciona , si pongo el mismo programma y agrego al linea para cambiar al puerto B no simula, pero ya en el circuito si se despliega el mensaje en el LCD
 
disculpen me gustaría que me ayuden tengo un problema que me ha tenido dando vueltas la cabeza todo el fin de semana, estoy comenzando a programar CCS y deseaba aprender a iniciar un LCD, encontre algunos codigos en videos de youtube y los copie. Al momento de compilar mi codigo me dice que no hay errores pero cuando lo trato de simular en proteus la LCD se mantiene en blanco y me sale la alerta de attempt to read after writing a single nibble. La verdad no se que hacer estoy desesperado, por ai lei que podria ser una incompatibilidad del proteus con el W7. espero que puedan aclarar mi duda.


PHP:
#INCLUDE <16F877A.h> //incluimos el pic a utilizar
#fuses XT,NOWDT,NOPROTECT,PUT,NOLVP      //ordenes para el programador 
#use delay (clock=4M)  //establecemos la frecuencia
#include <lcd.c>  // abrimos la libreria del lcd

void main() // inciamos el programa
{
while(true){
delay_ms(20);
lcd_init(); //iniciamos la lcd
delay_ms(20);
 printf(lcd_putc,"LCD"); // escribimos texto en la lcd
}
}
 
El programa en CCS no es el problema.
Como nada más vas a escribir una sola vez la palabra LCD, no tiene caso el while(true)
Eso hará que se repita la escritura muchas veces y muy rápido, por lo tanto veras un parpadeo en la pantalla.

El código que adjuntas, no tiene porque provocar errores en proteus, y debe funcionar físicamente.
Así que el problema si puede ser como mencionas, por incompatibilidad con W7.

Para que salgas de dudas, adjunto una simulación con el código que usaste.
La cual a mi no me genera ningún tipo de error sobre proteus 7.8 en XP.

Nota:
Solo omito el bucle para evitar el parpadeo en la pantalla.

Saludos.
 

Adjuntos

  • Proteus 7.8 LCD Test.rar
    16.4 KB · Visitas: 126
Última edición:
hola, disculpa tengo la novedad que el archivo que me pasaste en rar si me funciona, pero lo copio y pego para hacer un nuevo archivo en CCS y cuando ejecuto el .hex que yo creo no me funciona :´(
 
Última edición:
hola, disculpa tengo la novedad que el archivo que me pasaste en rar si me funciona, pero lo copio y pego para hacer un nuevo archivo en CCS y cuando ejecuto el .hex que yo creo no me funciona :´(
OK. Moví aquí tu tema por tratarse del mismo problema, y para tener la información agrupada.
Mira desde el post #10. Posiblemente encuentres la solución a tu problema.
 
Última edición:
Atrás
Arriba