Witam.
We wstępie chciałem zaznaczyć, że szukałem podobnych problemów, lecz bezskutecznie.
Mój problem polega na tym, że po wgraniu poniższego kogu do mikrokontrolera atmega8, na wyświetlaczu LCD wyświetla się napis "*temperatura* wynik: -0,1 stopnia C", brak reakcji na zmiany temperatyry czujnika cały czas -0,1stopnia.
Z góry dziękuję za pomoc i pozdrawiam
We wstępie chciałem zaznaczyć, że szukałem podobnych problemów, lecz bezskutecznie.
Mój problem polega na tym, że po wgraniu poniższego kogu do mikrokontrolera atmega8, na wyświetlaczu LCD wyświetla się napis "*temperatura* wynik: -0,1 stopnia C", brak reakcji na zmiany temperatyry czujnika cały czas -0,1stopnia.
[syntax=basic4gl]
$regfile = "m8def.dat"
$crystal = 1000000
Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portc.1 , Db7 = Portc.0 , E = Portc.4 , Rs = Portc.5
Deflcdchar 1 , 14 , 17 , 17 , 14 , 32 , 32 , 32 , 32 ' definicja znaki stopnia
Config 1wire = Portb.0 ' konfiguracja portu PD.5 jako wej?cia magistrali 1-wire
Dim Odczyt(2) As Byte , A As Byte , Licznik As Byte , T As Integer , T1 As Single , Napis As String * 5
'Deklaracja wszystkich zmiennych potrzebnych do pracy programu
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
T1 = T * 0.0625 'wyra? w stopniach Celsjusza, wynik wpisz do zmiennej Single
Napis = Fusing(t1 , "#.#")
Cls : Cursor Off : Lcd "* Temperatura *"
Lowerline
Lcd "Wynik: " ; Napis ; " " ; Chr(1) ; "C" 'wy?wietl wynik ze zmiennej Single
Loop : End
[/syntax]
Z góry dziękuję za pomoc i pozdrawiam