TODOPIC

Microcontroladores PIC => * PROYECTOS * => Mensaje iniciado por: T-RAVE. en 07 de Junio de 2006, 15:51:36

Título: Envio De Datos A LCD (hd44780u)
Publicado por: T-RAVE. en 07 de Junio de 2006, 15:51:36
Saludos, estoy realizando un proyecto donde uso entre otras cosas un RTC (PCF8583) , la cuestion es que no he conseguido visualizar correctamente la hora.  El lcd es un hitachi hd44780u y esta controlado por un PIC16f628 que muestra un mensaje de inicio. Este mismo PIC esta conectado al principal 16f873 el cual es el que le envia el CS,DT y CK.   La comunicacion entre los micros esta hecha incluso tengo un programa que envia una cadena de caracteres al display, pero a la hora de decirle que envie la hora solo veo simbolos raros.

por ejemplo esto es lo que envio mediante la funcion Envia

char mensa1[18]="INTRODUCIR CODIGO";

para visualizarlo hago lo siguente:

Envia(CMD,CLR); //borramos display
   
for(i=0;i<18;i++){
     Envia(1,mensa1); //enviamos mensa1
 ....


lo del reloj he visto en algun sitio que lo envian asi, pero no he podido visualizarlo, ni con libreria lcd2.c de Pedro M. Jimenez  que creo que sirve para ese tipo de lcd's

//parte del codigo para el RTC

 h.horas=23;  h.minutos=59;  h.segundos=00;   //ponemos una hora  H:M:S
   escribir_en_reloj(&h);                       //rutina para escribir en el PCF8583
    while(1)
      {
        lcd_gotoxy(1,1);
        leer_todo_el_reloj(&h);
        printf(lcd_putc,"%i : %i : %i" ,h.horas,h.minutos,h.segundos);
      }
        delay_ms(900);

he probado substituyendo esa funcion (lcd puts)por la mia(Envia) y nada

haber si alguien puede exarme un cable si se necesitan mas datos diganlo saludos y gracias.


Título: Re: Envio De Datos A LCD (hd44780u)
Publicado por: BrunoF en 07 de Junio de 2006, 16:06:30
Hola, te hago 2 preguntas, ya que no utilizo C para programar PICs:
lcd_gotoxy(1,1); Estas seguro que 1,1 son las primeras coordenadas del LCD?
Segundo:

    while(1)
      {
        lcd_gotoxy(1,1);
        leer_todo_el_reloj(&h);
        printf(lcd_putc,"%i : %i : %i" ,h.horas,h.minutos,h.segundos);
      }
        delay_ms(900);

Lo estas matando! pobrecito :mrgreen: No llega a escribir la hora que lo haces volver a escribirla, tal vez x esto no veas correctamente la hora. La linea delay_ms(900) deberia ir dentro del while! es decir, asi:

    while(1)
      {
        lcd_gotoxy(1,1);
        leer_todo_el_reloj(&h);
        printf(lcd_putc,"%i : %i : %i" ,h.horas,h.minutos,h.segundos);
        delay_ms(900);
      }

Exitos!
Título: Re: Envio De Datos A LCD (hd44780u)
Publicado por: T-RAVE. en 07 de Junio de 2006, 16:09:03
gracias, ahora mismo voy a programarlo ya comentare si se soluciona algo

pues no hubo suerte :S
Título: Re: Envio De Datos A LCD (hd44780u)
Publicado por: T-RAVE. en 08 de Junio de 2006, 14:06:19
ya lo he resuelto he cambiado una funcion y ya esta el problema estaba en la funcion lcd_putc he cambiado la ultima funcion por la mia la Envia y ya esta

void lcd_putc( char c) {
   switch (c) {
     case '\f'   : Envia(cmd,clr);
                   delay_ms(20);
                   break;
     case '\n'   : lcd_gotoxy(1,2);               break;
     case '\b'   : Envia(cmd,0x10);  break;
     default     : Envia(1,c);        break;
   }
}