Proton Basic ile DS18B20 Geliştirilebilir Bir Derece Programı

Katılım
18 Ocak 2008
Mesajlar
1,067
Puanları
156
Yaş
39
Abilerim ve değerli ustalarım Benim halamın oğlunun kuluçka makinası yapımında kullandığımız bir programdır Derecesi çok güzel çalışmaktadır...

Ayar yapmak isteğine vs konularda daha da geliştirilebilir biz sabit ayarda kullanmıştık o yüzden burada o ayarların olduğu yeri silip programda sadece ayarların yapılabileceği alanı işaretleyeceğim.

Bu program aslında başka bir abimiz tarafından pic basic ile yazılmıştı fakat ben bunu proton basic kodlarına çevirdim ve o şekilde kullandım denenmiş çalışan bir programdır.

Device 16F877A
Config CP_OFF,DEBUG_OFF,WRT_OFF,CPD_OFF,LVP_OFF,BODEN_OFF,PWRTE_OFF,WDT_OFF,HS_OSC
Declare XTAL 20
CCP1_PIN = PORTC.2
Declare LCD_TYPE 0
Declare LCD_DTPIN PORTB.4
Declare LCD_ENPIN PORTB.3
Declare LCD_RSPIN PORTB.2
Declare LCD_INTEnjhRFACE 4
Declare LCD_LINES 4
DelayMS 500
Print $fe,1
Print $FE ,1
Symbol DQ = PORTD.6 'iletisimin yapilacagi port
Dim mesgul As Byte
Dim bilgi As Word
Dim isaret As Byte
Dim onda1 As Word
Dim onda2 As Word
Dim ara As Word
Dim deger As Byte
DelayMS 500
BASLA: 'Dongüye gir.
isaret="+"
OWrite DQ, 1, [$CC, $44] 'sicakligi hesaplamasi icin komut gonderiyor
BEKLE: 'Sensör hazır olana kadar bekle.
ORead DQ, 4, [mesgul] ' islem suresince portb.2=0 oluyor 'OWIN SENSOR,4,[mesgul]
If mesgul=0 Then
GoTo BEKLE
EndIf
DEVAM:
OWrite DQ, 1, [$CC, $BE] 'sicaklik degerini RAM dan okumasi icin komut gönderiyor
ORead DQ, 2,[bilgi.LowByte,bilgi.HighByte] 'sicaklik degeri sensörden okunuyor
If bilgi.13 = 1 Then 'Sıcaklık negatif ise
isaret="-" 'İşaret artık + değil -
bilgi=~bilgi 'Gelen bilgideki bitleri tersle, 1->0, 0->1
bilgi=BILGI+1 'Bilgiyi 1 arttır.
EndIf
ara=BILGI*625 '12 bit hassasiyet kullandığımız için her değer 0.0625 santigrat dereceye denk geliyor.
deger=Div32 10000
ara=BILGI*625
onda1= Div32 1000
ara=BILGI*625
onda2= Div32 100
onda1=ONDA1-(DEGER*10)
onda2=ONDA2-((dEGER*100)+(ONDA1*10))
Print $fe,1'LCD ekranın alt satırını temizle
Print At 1,1,"derece ",isaret,#deger,".",#onda1,#onda2,"C"'
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'BURADA İSTEDİĞİMİZ AYARLARI KOYABİLİRİZ
'ÖRNEĞİN :
'İF DEGER>36 THEN
'LOW PORTD.7
'ELSE
'HIGH PORTD.7
'ENDİF
'YADA BAŞKA DÖNGÜLER YADA DALLANMALAR KONULABİLİR....
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''BURADAN SONRASINI ELLEMİYORUZ

DelayMS 30
GoTo BASLA 'BASLA etiketine dön
End
 
16f877a ya ds18b20 ile dijital termometre yapıcam ama bütün denemelerime rağmen yapamadım
termometre 0-20 arasında sistem normal yazacak ve led yakacak.
20-30 arası dikkat yazıp led yakacak
30-50 arası kritik seviye led
50den snr 20ye düşene kadar motor çalışcak ISIS çizimi ile yazıları lcd(lm016l)'ye yazacak
yardımcı olursan sevinirim
devreyi bord üzerine kurucam
 

Forum istatistikleri

Konular
127,950
Mesajlar
913,854
Kullanıcılar
449,598
Son üye
kadir12366

Yeni konular

Geri
Üst