Arkadaşlar devreme 3 adet DS18B20 sensör ekliyorum fakat bir türlü sensör ölçümü yapamadım.
şema ve kodu gönderiyorum sorunu anlayan olur ve yardımcı olursa sevirim..Saygılar
Device 16F877A
XTAL 4 'the internal oscilator is 8mhz
ADIN_RES = 10'10 bit resolution
Declare ADIN_TAD FRC'RC OSC chosen
Declare ADIN_STIME 50'allow 50us time
Declare LCD_INTERFACE 4
Declare LCD_DTPIN PORTB.4
Declare LCD_ENPIN PORTB.3
'DECLARE LCD_RWPIN PORTB.2
Declare LCD_RSPIN PORTB.2
Declare LCD_LINES 4
TRISA=255
PORTA=0
TRISC=255
PORTC=0
TRISD=0
PORTD=255
TRISE=255
PORTE=0
'***********Özel Karakter Tanımlamaları
Print $FE,$40, 6, 9, 9, 6, 0, 0, 0, 0 'Derece İşareti
Print $FE,1
'***********Sensör Tanımlamaları***********
Symbol DQ = PORTE.0
Dim Temp As Word
Dim CA As Byte
Dim CPerD As Byte
Dim ISARET As Byte
Dim OKU As Byte
Symbol AR = "+"
Symbol EK = "-"
Symbol SIF = " "
Dim sicaklik As Word
Dim Comm_Pin As PORTE.0 ' One-wire Data-Pin "DQ" on PortC.0
Dim Busy As Bit ' Busy Status-Bit
Dim R_Temp As Word ' RAW Temperature readings
Dim TempC As Word ' Temp in deg C
Dim Cold_Bit As R_Temp.11' Sign-Bit for +/- Temp. 1 = Below 0 deg C
Dim Real_Cold As 1 ' Define Real_Cold = 1
Dim Deg As 223 ' Data to display Deg ° symbol
Dim Sign As Byte ' +/- sign for temp display
Dim Dummy As Byte
basla:
OWrite Comm_Pin, 1, [$CC, $44]' Skip ROM search & do temp conversion
Bekle:
ORead Comm_Pin, 4, [Busy] ' Read busy-bit
If Busy = 0 Then
DelayMS 10
GoTo Bekle
EndIf
OWrite Comm_Pin, 1, [$CC, $BE]' Rom Okuma aşamasını pas geç
ORead Comm_Pin, 2, [R_Temp.LowByte, R_Temp.HighByte]
GoSub Convert_Temp
Print At 1,1,#sicaklik," ",Deg,"C"
DelayMS 50
GoTo basla
Convert_Temp: ' +32.0 to +257 F
If Cold_Bit = Real_Cold Then negatif ' If Cold_Bit = 1, it's below "0" deg C
Sign = "+"
Dummy = 625 * R_Temp ' Multiply to load internal registers with 32-bit value
TempC = Div32 10 ' Use Div32 value to calculate precise deg C
Dummy = 1125 * R_Temp
TempC = (R_Temp & $0FF0) >> 4 ' Mask middle 8-bits, shift into lower byte
sicaklik = TempC
Return
negatif: ' Display full range -C to -F conversion
Sign = "-" ' Display - symbol for negative temp
Dummy = 640 * ~R_Temp+1' Multiply to load internal registers with 32-bit value
TempC = Div32 10000
sicaklik = 256-TempC
Return
[IMG]http://img4.imageshack.us/img4/2760/balksz3ax.jpg[/img] (http://img4.imageshack.us/i/balksz3ax.jpg/)
ds18b20'nin dq pinini kendi vcc si ile dirençle birleştir. 18b20'yi yapan böyle yapmış. aksi halde çalışmıyor. direkt kendi +5v ile dirençle birleştir çalışması gerekir. tabi yazdığın kodlarda hata yoksa.
ben de senin gibi ayrı yaptım. baglantıyı başka yerden aldım çalışmadı. ama kendisinden aldığın zaman çalışıyor.