Aktyw Forum

Zarejestruj się na forum.ep.com.pl i zgłoś swój akces do Aktywu Forum. Jeśli jesteś już zarejestrowany wystarczy, że się zalogujesz.

Sprawdź punkty Zarejestruj się

Termometr - tablice

xamrex
-
-
Posty:10
Rejestracja:9 paź 2010, o 15:44
Lokalizacja:kosmosu
Termometr - tablice

Postautor: xamrex » 28 lis 2010, o 18:19

Witam,
Mam podłączony czujnik DS18B20 (1wire)
i taki kodzik:

Kod: Zaznacz cały

'Jednopunktowy termometr z czujnikiem DS18B20 'www.portalnaukowy.edu.pl 'Program na podstawie kursu z ksiażki "Mikrokontrolery dla Poczatkujacych" Pana Piotra Góreckiego $crystal = 4000000 'deklaracja częstotliwosci pracy kwarcu $regfile "attiny2313.dat" 'model procesora dla którego jest ten program Deflcdchar 1 , 14 , 17 , 17 , 14 , 32 , 32 , 32 , 32 ' definicja znaki stopnia Config 1wire = Portd.5 ' konfiguracja portu PD.5 jako wescia 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 'wyraz w stopniach Celsjusza, wynik wpisz do zmiennej Single Napis = Fusing(t1 , "#.#") Cls : Cursor Off : Lcd "* Temperatura *" Lowerline Lcd "Wynik: " ; Napis ; " " ; Chr(1) ; "C" 'wyswietl wynik ze zmiennej Single Loop : End 'Powodzenia
Tutaj jest fragment datasheet tego czujnika:
Obrazek


No i moje pytanie jest w jaki sposób to działa.
Dokładnie interesuje mnie tutaj zastosowanie tablic.

Odczyt(1) = 1wread(2) 'Tutaj się domyślam, że w zmiennej Odczyt(1) jest kod odczytany z czujnika (np. 0000 0101 0101 0000)

ale
T = Odczyt(2) to dla mnie już czarna magia..
Jakie informacje są w Zmiennej Odczyt(2)?

Czajnik
-
-
Posty:264
Rejestracja:17 cze 2004, o 15:40
Lokalizacja:Kraków
Kontaktowanie:

Postautor: Czajnik » 28 lis 2010, o 19:56

Zwróć uwagę że dane odbierane z czujnika mają 16 bitów a Twoja zmienna Odczyt jest typu Byte (8 bitów). Tak więc musisz odebrać 2 bajty. Potem we fragmencie kodu shift i + te dwa bajty są łączone i przerabiane na zjadliwą postać.

Pojęcie tablic jest tutaj trochę jakby naciągnięte bo kod

Odczyt(2) as byte

można smiało zapisać jako

Odczyt_1 as byte
Odczyt_2 as byte

To bardziej ułatwienie bascoma gdy chcesz mieć kilka zmiennych do jednego/bardzo podobnego celu.

Pozdrawiam
Czajnik

Wróć do „Projektowanie PCB, programy EDA, CAD, narzędziowe”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 19 gości