logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

BASCOM. Wartość temperatury 6 miejsc po przecinku.

karolczyzycki 31 Sty 2009 18:22 2564 4
REKLAMA
  • #1 6082532
    karolczyzycki
    Poziom 20  
    Witam.
    Po wgraniu kodu do obsługi czujnika DS18S20 (Bascom), temperatura wyświetla się kilka jako jedności i kilka miejsc po przecinku (dziele przez 16).
    Jak zmniejszyć wyświetlaną temp do 1 miejsca po przecinku?
  • REKLAMA
  • #2 6082553
    MarasK
    Poziom 18  
    stosując odpowiednią funkcję

    a na serio - nawet nie napisałeś w jakim języku programujesz.
  • REKLAMA
  • #3 6082594
    karolczyzycki
    Poziom 20  
    Racja, mój bład. Mam taki kod.
                                                  $regfile = "m16def.dat"
    $crystal = 16000000
    
    Config Lcdpin = Pin , Rs = Portc.2 , E = Portc.3 , Db4 = Portc.4 , Db5 = Portc.5 , Db6 = Portc.6 , Db7 = Portc.7
    Config Lcd = 16 * 2
    Config Portc = Output
    Set Portc.1
    Cursor Off
    
    Config 1wire = Portd.5 ' + jumper J2 B-C
    Dim Odczyt(2) As Byte , A As Byte , Licznik As Byte , T As Integer , T1 As Single
    Do
    1wreset                                                     'reset
    1wwrite &HCC                 'jedna kostka, więc wykorzystujemy rozkaz SKIP ROM
    1wwrite &H44                  'dokonaj konwersji
    Waitms 750                     'przeczekaj czas konwersji
    1wreset 'reset
    1wwrite &HCC                 'rozkaz adresowy SKIP ROM
    1wwrite &HBE                  'rozkaz funkcyjny - polecenie odczytu DS18x20
    Odczyt(1) = 1wread(2)     'odczytaj dwa pierwsze bajty
    T = Odczyt(2)                  'przepisz starszy bajt do zmiennej typu Integer
    Shift T , Left , 8                'przesuń ten bajt w lewo na wyższe pozycje
    T = T + Odczyt(1)            'przepisz - dodaj młodszy bajt
                                           'teraz w zmiennej T typu Integer jest dziwna "ułamkowa" wartość temperatury
    T1 = T * 0.0625                'wyraź w stopniach Celsjusza, wynik wpisz do zmiennej Single
    Cls : Lcd "Temp=" ; T1 ; " oC"      'wyświetl wynik ze zmiennej Single
    Loop : End


    Po w komendzie: T1 = T * 0.0625 pojawia się długi wynik.
  • REKLAMA
  • #5 6082969
    wader_669
    Poziom 28  
    no bez przesady!!!!!!!!!!!! Nastepny temat ktory powinen wyladowac w koszu. Jest dosyc tematow na temat tego termometra.

    Nie umiesz uzyc szukaj??????????!!!!!!!

    juz ci pomoge prosze:
    Napis = Fusing(t1 , "#.#")

    a jak nie wiesz co to jest to nie pytaj tutaj na forum tylko uzyj helpa!!!!!!

    Dodano po 1 [minuty]:

    jeszcze ci dodam ze zmienna napis musi byc jako string
REKLAMA