Haberler:

Forum kuralları güncellendi LÜTFEN  okuyunuz:  https://bit.ly/2IjR3ME

Ana Menü

analog digital..

Başlatan a4tech33, 26 Şubat 2015, 08:46:51

a4tech33

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)

ferit06

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....

a4tech33

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

ferit06

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.

a4tech33

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

ferit06

potu bağladınızmı? Bağladıysanız nasıl? şema vermezseniz başka cevap yazmam...

a4tech33

#6




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

ferit06

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.

a4tech33

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ı

ferit06

devreye bağladığın pot dedin şeyin yerine POT-HG bağla öyle dene

Maxim

bir sürü eksik var
hani sigorta tanımları?

ferit06

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

a4tech33

#12
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





ŞU SEKİLDE MAX 3 MİN 0

Maxim

işlemci 16F876 mı yoksa 16F876A mı?
birde neden 8 bit adc?

bunları cevaplayın, eksikleri tamamlayalım hemen

ferit06

#14


Ş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