TODOPIC
Microcontroladores PIC => * PROYECTOS * => Mensaje iniciado 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.
-
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!
-
gracias, ahora mismo voy a programarlo ya comentare si se soluciona algo
pues no hubo suerte :S
-
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;
}
}