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. |
|
morock
Wiek: 33 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 |
|