Elektroda.pl
Elektroda.pl
X
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

[m8][Bascom] odświeżanie wyświetlanych zmiennych na LCD

Ficu 14 Apr 2010 21:32 1182 1
  • #1
    Ficu
    Level 31  
    Witam,
    mam mały problem: jest sobie program który ma za zadanie wyświetlać 2 zmienne na wyświetlaczu LCD. Pomiar 1 zmiennej trwa 750ms, pomiar 2 zmiennej trwa 100ms. Chcąc wyświetlić obie zmienne używam polecenia Call pomiar1 oraz Call pomiar2. Jeżeli mam tak napisany program to odświeżanie wyświetlanych wyników mam co 850ms. Chciałbym, aby odświeżanie było 100ms (zależy mi głownie na odświeżaniu 2 zmiennej).
    Jak wykonać częstszą aktualizacje danych na LCD?

    Sub Temp_obroty
    Do
       Call Licz_obroty
       Call Odcz_temp
    
       Cls
       Locate 1 , 1
       Lcd "T:" ; Napis ; Chr(1) ; "C"
       If Wynik > 9999 Then
       Locate 2 , 1
       Lcd "Ob:" ; Wynik
       Else
       Locate 2 , 1
       Lcd "Obr:" ; Wynik
       End If
    If S1 = 0 Then
    Gosub Termometr
    End If
    Loop
    End Sub
    
    Sub Licz_obroty
       Timer1 = 0
       Start Timer1
       Waitms 100
       Stop Timer1
       Wynik = Timer1 * 100
    End Sub
    
    Sub Odcz_temp
    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
       T1 = T * 0.0625                                          'wyra? w stopniach Celsjusza, wynik wpisz do zmiennej Single
       Napis = Fusing(t1 , "#.#")
    End Sub
  • Helpful post
    #2
    gothye
    Level 33  
    użyj do obsługi odczytu temperatury z DS timer0 ;) dzieki czemu nie bedziesz musiał zatrzymywać całego programu