TODOPIC

Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: migsantiago en 29 de Enero de 2007, 16:25:33

Título: Printf para flotante con ceros
Publicado por: migsantiago en 29 de Enero de 2007, 16:25:33
Hola

Necesito imprimir un flotante en CCS que tiene el valor 9.8 por ejemplo. En la pantalla LCD quiero que lo muestre como 09.8, y pongo el código...

printf(lcd_putc,"%02.1f",flotante);

pero de todas formas sigue imprimiendo 9.8 en vez de 09.8. Ya probé con %2.1f pero hace lo mismo.

¿Qué me recomiendan?

Gracias
Título: Re: Printf para flotante con ceros
Publicado por: MGLSOFT en 29 de Enero de 2007, 16:47:25
Que version de CCS usas ??
En algunas la conversion numerica no andaba del todo bien.... :-) :-) :-)
Título: Re: Printf para flotante con ceros
Publicado por: migsantiago en 29 de Enero de 2007, 16:59:47
Hola

Uso la 3.190.
Título: Re: Printf para flotante con ceros
Publicado por: MGLSOFT en 29 de Enero de 2007, 17:09:35
Lamentablemente los de CCS sacaron el listado de versiones de su pagina, pero te aconsejo buscar una version como la 3.249 que es la ultima que anda muy bien y corrije todos estos errores de formato... :mrgreen: :mrgreen: :mrgreen:
Título: Re: Printf para flotante con ceros
Publicado por: migsantiago en 29 de Enero de 2007, 18:29:59
OK Gracias MGL  :mrgreen:
Título: Re: Printf para flotante con ceros
Publicado por: c4_esp_VR en 29 de Enero de 2007, 18:46:20
Hola:

Aprovechando el hilo me gustaría preguntaros que tipo de conversiones hay para poner en el LCD y como se realizar, si podeis poner ejemplos con difetentes tipos de datos como string, int, float, word, byte, etc...os lo agradecería pues estoy un poco confundido con ese tema  :-) :-) :-) :-) :-) :-) :-) :-) :-) :-)

Un saludete.
Título: Re: Printf para flotante con ceros
Publicado por: migsantiago en 29 de Enero de 2007, 18:53:05
Lo que puedes hacer es lo siguiente...

(http://img413.imageshack.us/img413/4769/dibujogz6.jpg)

Por cierto MGL, tienes razón sobre la versión, hice un viaje en el tiempo gracias a webarchive.org y busqué la misma página pero cuando se leyó en 2006...

http://web.archive.org/web/20060426073030/http://www.ccsinfo.com/devices.php?page=versioninfo

En la versión posterior mejoraron el printf y %f...

 3.210  A bug in the printf %f is fixed
Título: Re: Printf para flotante con ceros
Publicado por: migsantiago en 29 de Enero de 2007, 19:16:59
Ya compilando con la versión 3.245 todavía no corrige el problemita, tendré que truquear unos comandos  :(
Título: Re: Printf para flotante con ceros
Publicado por: LABmouse en 29 de Enero de 2007, 19:24:11
migsantiago, cual es el numero maximo que tendras en la parte entera??

para asi pasarte el coddigò
Título: Re: Printf para flotante con ceros
Publicado por: LABmouse en 29 de Enero de 2007, 19:29:34
Bueno migsantiago, como sabemos los ceros a la izquierda no tienen valor, es por ello que el compilador no los imprime. Cuando se necesitan debe hacerse por software.

Aca esta:

if (flotante>99)printf(lcd_putc,"0");
if (flotante>9)printf(lcd_putc,"0");
printf (lcd_putc,"%2.1f",flotante);
Título: Re: Printf para flotante con ceros
Publicado por: migsantiago en 29 de Enero de 2007, 19:31:22
jejeje eso es lo que estaba pensando programarle

         if(ftemp<10.0)
            {
            lcd_gotoxy(10,2);
            lcd_putc("0");
            }
         else
            lcd_gotoxy(10,2);
         printf(lcd_putc,"%2.1f",ftemp); //muestra el voltaje a modificar


El problema está en que si se pone %02u, la pantalla sí llega a mostrar 03 por ejemplo. Con flotante simplemente no aplica.

Gracias Mouse
Título: Re: Printf para flotante con ceros
Publicado por: c4_esp_VR en 30 de Enero de 2007, 12:19:20
Gracias migsantiago:

Lo preguntaba pues tengo problemas al poner una cadena de carácteres que proviene del rs232 del pc en el LCD, a ver  si cuando acabe los examenes retomo el trabajo y pongo en práctica los nuevos conocimientos adquiridos  :D :D :D :D :D :D