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

Termometr na atmega8 - problem

krynioza 13 Sty 2010 18:33 1773 2
REKLAMA
  • #1 7530349
    krynioza
    Poziom 10  
    Witam. Ostatnio zrobiłem termometr na atmega8, jako czujnik temperatury użyłem LM35, wszystko wyświetla się na dwóch wyświetlaczach siedmiosegmętowych. Chciałem zrobić żeby termometr mierzył do 99°C, ale najwiekszą wartość jaką wyświetla to 62°C. Proszę o sprawdzenie kodu:

    $regfile = "m8def.dat"
    
    Config Portb = Output
    Config Portd = Output
    Dim X As Single , Y As Single
    Dim A As Byte , B As Byte
    Dim C As Byte , I As Byte
    Dim Q As Byte
    
    
    Config Adc = Single , Prescaler = Auto , Reference = Internal
    Start Adc
    Dim W As Byte
    
    Declare Sub Proc
    
    Do
    For Q = 1 To 40
    X = C
    If X >= 10 Then
    X = X / 10
    A = X
    Portd = Lookup(a , Wys2)
    Waitms 1
    X = X - A
    X = X * 10
    B = X
    Portb = Lookup(b , Wys1)
    Waitms 1
    End If
    
    If C =< 9 Then
    B = C
    Portb = Lookup(b , Wys1)
    Waitms 1
    A = 0
    Portd = Lookup(a , Wys2)
    Waitms 1
    End If
    Next Q
    
    Gosub Proc
    
    Loop
    
    Sub Proc:
    W = Getadc(5)
    Y = W * 0.25
    C = Y
    
    End Sub
    
    
    
    Wys1:
    Data 63 , 6 , 91 , 79 , 102 , 109 , 125 , 7 , 127 , 111
    
    Wys2:
    Data 63 , 6 , 91 , 79 , 102 , 109 , 125 , 7 , 127 , 111


    Dodano po 49 [minuty]:

    Już znalazłem odpowiedz. Nie dałem zewnętrznego oscylatora bo nie miałem ale on jest niestety niezbędny do tego układu. Jutro jak kupie to zobaczę czy pomoże.
    Dzięki za wyczerpujące odpowiedzi.
    Pozdrawiam.
  • REKLAMA
  • #3 7532970
    ewsd75
    Poziom 13  
    Witam, stosuje LM35 od wielu lat.
    Do odczytu temperatury jw Bascom stosuje następujący kod

    Zmienne zadeklarowane są następująco:

    Dim Volt As Word
    Dim Tp As Single
    Dim Tm As String * 4
    .........
    Volt = Getadc(0)
    Tp = Volt * 5
    Tp = Tp / 10
    Tm = Fusing(tp , "#.&")
    .........
    Lcd Tm;" ";"C"
REKLAMA