Autor Tema: problema con lcd al visualizar 0.5%  (Leído 2358 veces)

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

Desconectado xixonplus

  • PIC10
  • *
  • Mensajes: 8
problema con lcd al visualizar 0.5%
« en: 23 de Septiembre de 2003, 09:38:00 »
quiero visualizar un tanto % en la lcd y la variable la tengo definida como float, el problema surje cuando el % es menor que cero entonces solo visualiza: ejem: .5%
yo quiero visualizar 0.5%.

en mi programa lo tengo definido asi
printf(LCD_PUTC, "DE METANO %2.2f%%",conce);

gracias

Desconectado pocher

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 2569
RE: problema con lcd al visualizar 0.5%
« Respuesta #1 en: 24 de Septiembre de 2003, 23:51:00 »
Jolin el dichoso cerito, me está llevando de cabeza. Ya he escrito el código, esta tarde lo simulo y te doy la solución si funciona.

Un saludo

Desconectado pocher

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 2569
RE: problema con lcd al visualizar 0.5%
« Respuesta #2 en: 25 de Septiembre de 2003, 09:57:00 »
Bueno después de jugar al juego de las patas al tajo.

El cero de los cojines me ha mareado lo suyo. Pero bueno al final salió.

Aquí te mando la solución con un ejemplo (los comentarios seguramente saldran por libre):

// LCDfloa2.c: Envio de variables decimales a la LCD y si son <1 que aparezca el 0.

#include <16f876.h>       //Este programa si se hace para el 16F84 no cabe.
                          //El compilador saca el error: fuera de ROM,
                          //segmento de programa demasiado largo

#use delay(clock=4000000)

#include <lcd2.c>

main()
{
 
    float x,n=1467;
   
    int16 Z;
   
    int y;
   
    char cadena[20];    
   
    x=n/1000;
   
    y=(int)x;        
   
    Z=(int16)(x*1000);        //3 decimales, resultado:1.467

      lcd_init();    // Comandos de inicialización del LCD.

      lcd_enviar(LCD_COMANDO,LCD_CURSOR_BLINK); // Envía comando al LCD
     
    while(1)
    {
     if (y>=1)
     
          printf(LCD_PUTC,"x=%.3f",x);
                                                                       
     else
     {
     
        sprintf(cadena,"0.%lu",Z);      //Esto es para sacar el 0.
        printf(LCD_PUTC,"%s",cadena);
     }

    sleep();
   
    }
}


Si hay algo que no entiendas preguntamelo.

Un saludo

Desconectado pocher

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 2569
RE: problema con lcd al visualizar 0.5%
« Respuesta #3 en: 26 de Septiembre de 2003, 09:17:00 »
El programa anterior te saca 0.1467 con el cero incluido, pero si tuviese que sacar 0.01467 o 0.001467 lo hace mal (los ceros que van detrás del punto no los saca)

Este programa que te pongo sí que contempla esas posibilidades:

// LCDfloat: Envio de variables decimales a la LCD con representación del 0.

#include <16f876.h>

#use delay(clock=4000000)

#include <lcd2.c>

main()
{
 
    float n=1467;
   
    float x;
   
    int16 y;
   
    char cadena[20];
   
    x=n/1000000;              
   
    lcd_init();                       // Comandos de inicialización del LCD.

    lcd_enviar(LCD_COMANDO,LCD_CURSOR_BLINK); // Envía comando al LCD
       
    while(1)
    {

      if(x>=1)
   
        printf(LCD_PUTC,"x=%4.5f",x);       //5 decimales

      else

      {
       
        sprintf(cadena,"%4.5f",x);
       
        printf(LCD_PUTC,"x=0%s",&cadena[1]);    //El resultado final en la LCD
                                                //es 0.00146
       
      }  
 
      sleep();
   
    }
}

Un saludo