Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Wyświetlanie liczby zmiennoprzecinkowej na LCD

slaweek_22 23 Sie 2009 12:20 2000 2
  • #1 23 Sie 2009 12:20
    slaweek_22
    Poziom 16  

    Witam,
    Mam problem z wyświetleniem float'a na wyświetlaczu LCD na stwrowniku HD44780. Piszę w C18 na pic 18 przejrzałem notę http://ww1.microchip.com/downloads/en/devicedoc/C18_Lib_51297d.pdf ale jest tam tylko odwrotne przekształcenie string na float.

    Code:


                    x=(256*ADRESH+ADRESL)/1024;
                    u=x*5;
                    LcdSetLine2();
                    printf("U = %f", u);

    0 2
  • Pomocny post
    #2 24 Sie 2009 15:22
    flapo213
    Poziom 21  

    Witaj podpowiem Ci tylko jak obejść floata dwoma np. intami. W prockach powołanie floata dużo flasha kosztuje i może czasem warto go zastąpić. Niestety są niektóre obliczenia że musisz skorzystać z floata czy double ale to inna bajka.

    Robisz tak w przypadku 12,36 który był wynikiem działania jakiegoś dzielenia dajmy na to powołujesz 2 zmienne uint calkowite i uint ulamki

    calkowite = 1236/100,

    ulamki = 1236%100

    no i jak masz takie cos to juz z hexa na deca i po sprawie.

    Co do sprintfa to wpisz w googlach na bank Ci wyskoczy co i jak tam działa.

    0
  • Pomocny post
    #3 26 Sie 2009 18:47
    CDMaster
    Poziom 14  

    Nie szukałem jeszcze jak się konwertuje float do string'a, ale jak nic nie znajdziesz możesz skorzystać z pomysłu flapo213... Z tym, że w programie możesz sobie w każdej chwili rzutować dane na int. Jest to jednak bardzo obliczeniożerne, dlatego pewnie pracownicy microchipa nie poszerzyli printf o float'y. Więc możesz zrobić tak:

    Code:
    float liczba=12.4;
    
    int temp1=liczba;
    int temp2=(liczba-(float)temp1)*1000;   //w zależności od potrzebnego przybliżenia

    0