Autor Tema: LCD como mostrar un dato double  (Leído 3552 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado aldonoeramirezmoran

  • PIC10
  • *
  • Mensajes: 8
LCD como mostrar un dato double
« en: 25 de Febrero de 2015, 09:07:17 »
Hola amigos soy nuevo en el mundo de programacion, necesito mostrar una variable double en mi LCD.
No se cual es el codigo para mostrarla. las variables de tipo entero se muestran sin problema con el codigo:
      lcd_gotoxy(0,0);
      lcd_putint(variable);
Al momento de colocar la variable float en la pntalla con el codigo anterior me borra los decimales solo muestra los numeros enteros.
que puede hacer?

agradesco su ayuda

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re: LCD como mostrar un dato double
« Respuesta #1 en: 25 de Febrero de 2015, 14:37:16 »
Veo que has repetido varias veces la pregunta por varios lados.. con un solo lugar bastaba.

Tu pregunta original es con una variable float y no double ( que es un entero)
Código: [Seleccionar]
#include <stdio.h>

float variable;
unsigned char buff[30];

variable = 5 / 2;

sprintf(buff,"%4.2f",variable);
lcd_puts(buff);

tal ves algo asi te sirva

sprintf transforma el numero a un string y por eso "buff" esta definido como string. finalmente lo pones en el LCD
« Última modificación: 26 de Febrero de 2015, 04:43:32 por KILLERJC »

Desconectado aldonoeramirezmoran

  • PIC10
  • *
  • Mensajes: 8
Re: LCD como mostrar un dato double
« Respuesta #2 en: 26 de Febrero de 2015, 01:22:21 »
Te lo agradesco es lo que estaba buscando. :o :o :o :o

Desconectado aldonoeramirezmoran

  • PIC10
  • *
  • Mensajes: 8
Re: LCD como mostrar un dato double
« Respuesta #3 en: 26 de Febrero de 2015, 23:52:58 »
Estoy usando este metodo y al mandarlo llamar me coloca a la perfeccion el dato entero.

unsigned char buff [33];     
   
void lcd_putint(unsigned int dat) {
 sprintf(buf,"%d ",dat);
 lcd_puts(buf);
 }
temp=read_adc(5)*0.41;
lcd_putint(temp);

al momento de colocar tu codigo sprintf(buff,"%4.2f",variable); 
solo visualizo en mi lcd  2f

debo tambien crear otro metodo para la variable float?





Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re: LCD como mostrar un dato double
« Respuesta #4 en: 27 de Febrero de 2015, 04:36:34 »
por lo que leo algunos compiladores tiran error y no muestran el valor debido tal ves por que sus librerias no soportan floats en el printf o sprintf.. asi que lo que hacen es pasarlo a entero el float y luego mostrarlo

Buscando por la web ofrecieron esta solucion:

Código: C
  1. char str[100];
  2. float adc_read = 678.01234567;    //Lectura del ADC ( como float )
  3.  
  4. int d1 = adc_read;            // Get the integer part (678).
  5. float f2 = adc_read - d1;     // Get fractional part (0.01234567).
  6. int d2 = trunc(f2 * 10000);   // Turn into integer (123).   , Este caso es para 4 decimales si quisieras solo 2 multiplicarias por 100 y no por 10000 y pararias aca
  7. float f3 = f2 * 10000 - d2;   // Get next fractional part (0.4567).
  8. int d3 = trunc(f3 * 10000);   // Turn into integer (4567).
  9.  
  10. sprintf (str, "adc_read = %d.%04d%04d\n", d1, d2, d3); //igual aca serian %02d el de d2

para tu caso:

Código: C
  1. char str[10];
  2. float adc_read = 678.1234567;    //Lectura del ADC ( como float )
  3.  
  4. int d1 = adc_read;            // Get the integer part (678).
  5. float f2 = adc_read - d1;     // Get fractional part (0.1234567).
  6. int d2 = trunc(f2 * 100);   // Turn into integer (12).
  7.  
  8. sprintf (str, "%d.%02d", d1, d2); // str: "678.12"
« Última modificación: 27 de Febrero de 2015, 04:40:27 por KILLERJC »


 

anything