Książka to "Programowanie Mikrokontrolerów AVR w jez. BASCOM"
Program termometra. Przykład z książki.
'Program obsługi jednego układu DS1820 dołączonego
'do magistrali 1-Wire
$regfile = "m8def.dat" 'informuje kompilator o pliku
'dyrektyw mikrokontrolera
$crystal = 8000000 'informuje kompilator
'o częstotliwości oscylatora
'taktującego mikrokontroler
Config Lcd = 16 * 2 'konfiguracja typu wyświetlacza
'LCD
Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portc.1 , Db7 = Portc.0 , E = Portc.4 , Rs = Portc.5 'konfiguracja linii
'mikrokontrolera‚ do których
'dołączono wyświetlacz
'LCD
Config 1wire = Portb.0 'konfiguracja linii magistrali
'1-Wire
Declare Sub Odcz_temp 'procedura odczytu temperatury
'z układu DS1820
Dim Temperatura(2) As Byte 'tablica dwóch zmiennych typu
'Byte do pamiętania wartości
'temperatury
'definicja znaku stopnia
Deflcdchar 0 , 7 , 5 , 7 , 32 , 32 , 32 , 32 , 32
Do 'początek pętli programu
Call Odcz_temp 'wywołanie procedury pomiaru
'temperatury
Cls 'czyszczenie ekranu LCD
If Temperatura(2) = 0 Then 'jeśli wartość Temperatura(2)=
'=0, to temperatura dodatnia
'wyświetla temperatury dodatnie
Lcd "Temp: " ; Temperatura(1) ; Chr(0) ; "C"
Else 'w przeciwnym razie
'wyświetla temperatury ujemne
Lcd "Temp: -" ; Temperatura(1) ; Chr(0) ; "C"
End If
Loop 'koniec pętli Do...Loop
End 'koniec programu
Sub Odcz_temp 'definicja procedury pomiaru
'temperatury
1wreset 'reset magistrali 1-Wire
1wwrite &HCC 'opuszczenie zapisu numeru ID
1wwrite &H44 'start pomiaru temperatury
Waitms 750 'opóźnienie na czas pomiaru
1wreset 'reset magistrali 1-Wire
1wwrite &HCC 'opuszczenie zapisu numeru ID
1wwrite &HBE 'komenda odczytu zmierzonej
'temperatury
Temperatura(1) = 1wread(2) 'odczyt zmierzonej temperatury
'do tablicy Temperatura
1wreset 'reset magistrali 1-Wire
If Err = 1 Then 'jeśli układ dołączony do
'magistrali nie odpowiada, to
Cls 'czyszczenie LCD
Lcd "Brak ukladu" 'wyświetlenie komunikatu o braku
'dołączonego układu
Do 'nieskończona pętla w celu
'wstrzymania działania programu
Loop
End If
If Temperatura(2) > 0 Then 'jeśli zmienna Temperatura(2)
'> 0, to temperatura ujemna
'przeliczenie temperatury
'ujemnej
Temperatura(1) = 256 - Temperatura(1)
End If 'koniec warunku
Temperatura(1) = Temperatura(1) / 2
'dalsze przeliczenie odczytanej
'temperatury dodatniej jak
'i ujemnej
End Sub 'koniec procedury pomiaru
PS: Przepraszam z początkowy brak informacji ale nie miałem dużo czasu. SORRY.
Dodano po 29 [minuty]: Wyczytałem na forum, że DS18B20 różni się od DS1820 ?
Piszą, że z tego DS18B20 mogą występować problemy odczytu.
Ten program jest przystosowany na DS1820. Myślałem, że to nie ma różnicy.
Może mi ktoś dać program w BASCOMie do odsługi tego DS18B20. (Najlepiej aby działał)