Strona korzysta z plików cookie w celu realizacji usług zgodnie z Politykš prywatnoœci.

Możesz okreœlić warunki przechowywania lub dostępu do cookie w Twojej przeglšdarce lub konfiguracji usługi.

And-Tech Strona Główna And-Tech
Forum firmy And-Tech

FAQFAQ  SzukajSzukaj  UżytkownicyUżytkownicy  GrupyGrupy
RejestracjaRejestracja  ZalogujZaloguj  AlbumAlbum  DownloadDownload

Poprzedni temat «» Następny temat
Proszę o kod źrodłowy w C pliku 18B20-LCD.hex
Autor Wiadomość
Pawel_Stasiu

Dołączył: 16 Paź 2008
Posty: 5
Wysłany: Czw Paź 16, 2008 4:01 pm   Proszę o kod źrodłowy w C pliku 18B20-LCD.hex

Witam. Nie potrafię obsłużyć jednocześnie dwóch czujników temperatury, które znajdują się na mojej płytce. Znam się na programowaniu, ale jeszcze nie do końca na elektronice, dlatego proszę o kod źródłowy.
 
     
And-Tech
Site Admin

Dołączył: 22 Lut 2007
Posty: 285
Wysłany: Sob Paź 18, 2008 7:59 am   

Przykłady są pod tym adresem
http://www.and-tech.pl/EvB4.1/programy.zip
 
     
morock 

Wiek: 32
Dołączył: 19 Sie 2009
Posty: 71
Skąd: Działdowo
Wysłany: Sob Sie 29, 2009 6:07 pm   

W c niestety także miałem z tym problem, mam program obsługujący 1 czujnik, jednak taki który obsługiwałby 2 nie znalazłem :/ dlatego przesiałem się na bascom.

Listing w c z obsługą jednego czujnika znajdziesz w linku wyżej , program allegro.c
w katalogu programy\C\przyklad\Test calej plytki

przykładowy program napisany w bascomie:

Kod:

' Zegar, termometr 2 x 18B20
$regfile = "m16def.dat"
$crystal = 16000000

Config Lcdpin = Pin , Rs = Portc.2 , E = Portc.3 , Db4 = Portc.4 , Db5 = Portc.5 , Db6 = Portc.6 , Db7 = Portc.7       'standard
Config Lcd = 16 * 2

Config 1wire = Portd.4

Dim Dsid1(8) As Byte
Dim Dsid2(8) As Byte
Dim T1 As Integer , Ss As String * 6
Dim T2 As Integer
Dim Mark As Integer

Deflcdchar 0 , 6 , 9 , 9 , 6 , 32 , 32 , 32 , 32            ' st
Deflcdchar 3 , 4 , 10 , 17 , 27 , 10 , 10 , 14 , 32         ' arrow up
Deflcdchar 4 , 14 , 10 , 10 , 27 , 17 , 10 , 4 , 32         ' arrow down

Dsid1(1) = 1wsearchfirst()
Dsid2(1) = 1wsearchnext()

Display On
Cursor Off
Cls

Do
   Gosub Temp
Loop
End

Temp:
   1wreset
   1wwrite &H55
   1wverify Dsid1(1)
   1wwrite &HBE
   T1 = 1wread(2)
   1wreset
   1wwrite &H55
   1wverify Dsid2(1)
   1wwrite &HBE
   T2 = 1wread(2)
   1wreset
   1wwrite &HCC
   1wwrite &H44
   Waitms 300
   T1 = T1 * 10
   T1 = T1 / 16
   Ss = Str(t1)
   Ss = Format(ss , "0.0")
   Locate 1 , 1
   Lcd Chr(3)
   If T1 < 100 Then Lcd " "
   Lcd Ss ; Chr(0) ; "C"
   T2 = T2 * 10
   T2 = T2 / 16
   Ss = Str(t2)
   Ss = Format(ss , "0.0")
   Locate 2 , 1
   Lcd Chr(4)
   If T2 < 100 Then Lcd " "
   Lcd "+" ; Ss ; Chr(0) ; "C"

Return



Kod sprawdzony, na pewno działa, niestety nie odczytuje jeszcze temperatur ujemnych, ale będę go dopracowywał. Obydwa czujniki są podłączone do Portu D 4, poprzez magistrale 1wire.

Jeśli czegoś jeszcze potrzebujesz to służę pomocą :)
_________________
Pozdrawiam :)
 
 
     
Wyświetl posty z ostatnich:   
Odpowiedz do tematu
Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Nie możesz załączać plików na tym forum
Możesz ściągać załączniki na tym forum
Dodaj temat do Ulubionych
Wersja do druku

Skocz do:  

Powered by phpBB modified by Przemo © 2003 phpBB Group