birşeyi ögrenerek ilerlemek istediğimden ilk yaptıgım ayarların doğru olup olmadıgını sormak istiyorum şu anda yapmak istediğim devre pic16f628 in adc siyle sıcaklık sensörü bağlayıp ölçülen sıcaklıgı lcd de gösterme tanımlamalarım su sekılde
Device 16F877A
Xtal=20
Declare LCD_DTPin =PORTB.4
Declare LCD_RSPin =PORTB.1
Declare LCD_ENPin =PORTB.3
Declare LCD_Interface = 4
Declare LCD_Lines = 2
Declare LCD_Type = 0
Declare LCD_CommandUs = 2000
Declare LCD_DataUs = 50
Declare Adin_Res = 8
Adin_Tad = frc
Adin_Stime = 50
Dim say As Word
TRISA=%00000001
ADCON1=%10000000
say = ADIn 0
şimdi bunlar doğruysa programıma başlamak istiyorum bilgilerimi protonplus artı basic derleyici ile pic programa kitabım var cihan gercek ve gökhan dincerin derlemiş olduğu kitap. bu ana gelene kadar yawas yawas geldim komutları deneye deneye ıf then else elseıf olsun for next olsun sıra adc ye geldi kitapta her komut tabıkıde kısa kısa anlatılmıs sizden istediğim ya çok örneklerle anlatan birr kitap önermenız yada burdan ben hep yazdığımda rahatsız olmamanız:) (tabıkıde olmassınız ama ne bileyım ben cekınıyorum en azından)
birşeyi ögrenerek ilerlemek istediğimden ilk yaptıgım ayarların doğru olup olmadıgını sormak istiyorum şu anda yapmak istediğim devre pic16f628 in adc siyle sıcaklık sensörü bağlayıp ölçülen sıcaklıgı lcd de gösterme tanımlamalarım su sekılde
Device 16F877A
önce bu iki satırdaki hatanı düzelt. pic16f628 in adc'si yok....
628 YANLIŞ OLDU ÖZÜR DİLERİM 16f876 olacak su anda lcd de sadece say yazıyor
Device 16F876
Xtal=20
Declare LCD_DTPin =PORTC.4
Declare LCD_RSPin =PORTC.1
Declare LCD_ENPin =PORTC.3
Declare LCD_Interface = 4
Declare LCD_Lines = 2
Declare LCD_Type = 0
Declare LCD_CommandUs = 2000
Declare LCD_DataUs = 50
Declare Adin_Res = 8
Declare Adin_Tad = 8_fosc
Declare Adin_Stime = 50
Dim say As Word
TRISA=%00000001
ADCON1=%10000000
say= ADIn 0
basla:
DelayMS 100
Print At 1,1, "say"
DelayMS 10000
Cls
GoTo basla End
siz sadece say yazsın istemişsiniz.
Print At 1,1, "say" ,yerine
Print At 1,1, "say", dec say
deneyin say a değer alıyormu görürsünüz.
EVET SICAKLIĞIMI 0 OLARAK OKUDU FAKAT POTUMDAKİ DEGER ARTTIKCA BURAYA YANSIMASINI İSTİYORUM YANİ SİZ YAZDIRMIŞ GİBİ OLMASIN DİYE ŞU KOMUTU İNCELE DE DİYEBİLİRSİNİZ AMA İLERLİYORUM PARA VERSEM BÖYLE SİTE BULAMAM COK SAGOLUN
potu bağladınızmı? Bağladıysanız nasıl? şema vermezseniz başka cevap yazmam...
(http://s4.postimg.cc/gm5zihkhl/lcd.jpg) (http://postimg.cc/image/gm5zihkhl/)
bu sekilde simülosyon yapıyorum değeri arttırdıkca değişmiyor ekran siz ne derseniz inan yazıyorum sallayıp cıkmıyorum ama insan belli bir yerde tıkanıyor
programını
basla:
DelayMS 100
Adcin 0, say
Print At 1,1, "say=", dec say
DelayMS 10000
Cls
GoTo basla
End
şeklinde değiştir.
SADECE EK OLARAK EŞİTTİR GELDİ SANIRIM BURDAKİ ASIL KOMUT ADCIN 0 , SAY KOMUTU YANİ 0 nolu kanaldan Analog değeri oku ve SAY değişkenine aktar şeklinde. bende öyle okudum ete hocanın verdiği bilgilerde ama burda olmadı. ete hoca ek olarak BAK: IF ADCON0.2=1 THEN BAK seklinde komut eklemis ben onuda ekledim ama olmadı
devreye bağladığın pot dedin şeyin yerine POT-HG bağla öyle dene
bir sürü eksik var
hani sigorta tanımları?
bir de böyle dene,
Device 16F876
Xtal=20
Declare LCD_DTPin =PORTC.4
Declare LCD_RSPin =PORTC.1
Declare LCD_ENPin =PORTC.3
Declare LCD_Interface = 4
Declare LCD_Lines = 2
Declare LCD_Type = 0
Declare LCD_CommandUs = 2000
Declare LCD_DataUs = 50
'Declare Adin_Res = 8
'Declare Adin_Tad = 8_fosc
'Declare Adin_Stime = 50
Dim say As Word
TRISA=%00000001
ADCON0=%11000000
ADCON1=%10000000
basla:
DelayMS 100
Adcin 0, say
Print At 1,1, "say=", Dec say
DelayMS 100
Cls
GoTo basla
End
evet haklısın simülasyon oldugu için yapmadım ama yapmam gerekirdi şimdi prpton için kolay config ayarları bölümünde bir ek program gördüm ama şifre yanlış diye indiremedim ama manuel ben yapacam programın son hali ustamın dediği gibi başka pot koyunca çalıştı
Device 16F876
Xtal=20
Declare LCD_DTPin =PORTC.4
Declare LCD_RSPin =PORTC.1
Declare LCD_ENPin =PORTC.3
Declare LCD_Interface = 4
Declare LCD_Lines = 2
Declare LCD_Type = 0
Declare LCD_CommandUs = 2000
Declare LCD_DataUs = 50
Declare Adin_Res = 8
Declare Adin_Tad = 8_fosc
Declare Adin_Stime = 50
Dim SICAKLIK As Word
TRISA=%11111111
ADCON1 = %10000000
SICAKLIK = ADIn 0
basla:
DelayMS 10
AdcIn 0 , SICAKLIK
Print At 1,1, "SICAKLIK =", 5 , Dec SICAKLIK
DelayMS 100
Cls
GoTo basla
End
ama en düşük değer 0 olurken en yuksek değer 3 oluyor bunun sebebi nedir.
mesaj birleştirme:: 26 Şubat 2015, 10:49:48
(http://s24.postimg.cc/6dxsc4069/LCD1.jpg) (http://postimg.cc/image/6dxsc4069/)
ŞU SEKİLDE MAX 3 MİN 0
işlemci 16F876 mı yoksa 16F876A mı?
birde neden 8 bit adc?
bunları cevaplayın, eksikleri tamamlayalım hemen
ŞU SEKİLDE MAX 3 MİN 0
sorun olan iki satır;
ADCON1 = %10000000
Declare Adin_Res = 8
datasheets incelemeye başla, yukarıda benim verdiğimi dene
İŞLEMCİ 16F876. EVET NEDEN 8 BİT?? DOĞRU! 10 BİT YAPINCA DÜZELDİ . COK SEVİNDİM ÇOK TESEKKÜR EDERİM BURDAKİ KOMUTLARI VE NE İŞE YARADIĞINI HEMEN KARA KAPLI DEFTERİME NOT ALIYORUM .. COK SAĞOLUN BURDAN ÖĞRENDİĞİM DEC KOMUTU BİLE ALTIN DEĞERİNDEDİR