pic16f877a

Katılım
12 Mar 2008
Mesajlar
70
Puanları
1
Yaş
39
ii akşamlar ben 16f877a kullanmaya çalışıorum ama
bi sorunum var bir türlü çıkışları öğrenemedim mesela bir kaç çıkışını dijital bir kaçınıda analog kullanıcam bana bi yardım edermisiniz bu pic hakkında ufak bilgiler verebilirmisiniz mesela bu pic de iki adet VDD iki adet VSS var ben bu 4 ünüdemi kullanıcam yoska sadece 2 tanesinemi + - vercem ayrıca ben clock olarak kristal 4Mhz veriyorum uygunmu??
ayrıca basic dilini kullanıyorum
şimdiden tşkürler
 
S.a ustam evet sizinde söylediğiniz gibi 16F877 de iki tane vdd iki tane de vss pini vardır bu vss pinlerini kendi aralarında birleştir vdd pinlerini de kendi aralarında birleştir o zaman 4 tane yerine iki tane olacaklar en güzel kullanımı bu şekilde elde edebilirsin ben yıllardır bu şekilde bağlıyorum bir sorun olmuyor gayette güzel çalışıyor.

Bunun yanı sıra 16F877 nin içinde analog dijital olarak ayarlanabilen birde porta ve porte diye registeri var bu registerleri ayarlayarak istediğin pinleri dijital istediğin pinleride analog olarak ayarlayabilirsin.

Porta ve porte yi tamamen dijital ayarlamak istiyorsan basic dilinde ADCON1=7 yazman yeterli ama farklı ayarlar yapacaksan mesela portanın bikaçını analog diğerlerini dijital yapacaksan o zaman iş değişir datasheet ini biraz karıştırman lazım Aslında tam ve direk olarak bilgi vermek isterdim ama sende tam olarak hangi pinleri dijital hangileri analog olarak ayarlamak istediğini belirtmemişsin :D

4 Mhz kristal olayına gelince gayet normaldir hiç bir sorun olmadan çalışması lazım.

Eğer gerekirse tekrar yaz örnek birkaç program yollamaya çalışırım. kolay gelsin dileklerimle...
 
abicim çok teşeküürler verdiğin cevaplar için
hocam izin verirsen daha sonrada senin başını ağrıtmak isterim sorularımla çünkü bu işte yeniyim :)
_______________________________________
hocam bide bi ara breadbordda kurduğum devrede pic ler biraz ısındılar daha sonrada bu piclere program atamamaya başladım acaba yanmış olabilirlermi? ve neden yanmış olabilirler?
 
Moderatör tarafında düzenlendi:
Kardeş şöyle bişey var pic entegrelerine enerji verirken tam 5 volt regüleli vermen lazım 7805 regüle entegresi ile regüle ederek ve doğru bir şekilde verdiysen yanmamıştır ama 5,5 volttan fazla kaçırdıysan sizlere ömür diyebiliriz...

Bunun yanında da boardlarda kurulan pic devreleri pek sağlıklı çalışmıyo parazi ve küçük arklar meydana gelip pic e zarar verebildiği gibi kararsız çalışmasına da sebebiyat veriyo.

Başıma ağırtmanız konusuna gelince de Öncelikle belirteyim kos kocaman bir ESTAFURULLAH öyle bişey söz konusu bile değil olamaz da istediğin zaman gerek özel gerekse buradan sorabilirsin kafana takılanları elimizden geldiğince bilgimizce yardımcı olmaya çalışırız...
 
-4Mhz kristal ile 1 komut için geçen süre 1us olur , zaman hesaplamaları daha kolay olur o yüzden sık tercih edilir. 20MHz kristal ile 4 kat hızlı işlem yaparsın konfigürasyon ayarlarından osilatör tipini HS yapman gerekir.
- Analog çıkış yoktur sadece analog giriş vardır
-Beslemeleri de ters verme:) ilk zamanlarında pice enerji verdiğinde ısınıyor mu diye kontrol et elinle.
-İlk çalışma anında çıkışların sapıtmaması için power on timer kullan
-wdt kullanımını öğrenene kadar kapalı tut
 
bişi daha sorcam ben enerjiyi bağladığımda lcd de sadece kareler çıkıo fakat enerjiyi kesdiğim anda programda yazdığım yazı o anda görünüo ve enerji kesildiği için kapanıyo neden olabilir?
 
Kardeş programın ile devre şemanı yollarsan bi incelemeye çalışırız :D ama o sorun birsürü sebepten dolayı meydana gelir hiç kafa karıştırmaya gerek yok kurmuş olduğun devreyi birebir şemaya döküp programınıda yollarsan olaya bi bakarız ne dersin ?
 
program:

@ DEVICE pic16F84A, WDT_OFF
@ DEVICE pic16F84A, PWRT_ON
@ DEVICE pic16F84A, PROTECT_OFF
@ DEVICE pic16F84A, XT_OSC
TRISA=0
TRISB=0
DEFINE LCD_DREG PORTB
DEFINE LCD_DBIT 4
DEFINE LCD_RSREG PORTB
DEFINE LCD_RSBIT 1
DEFINE LCD_RWREG PORTB
DEFINE LCD_RWBIT 2
DEFINE LCD_EREG PORTB
DEFINE LCD_EBIT 3
DEFINE LCD_BITS 4
DEFINE LCD_LINES 2
PAUSE 200
LCDOUT $FE,1
BASLA:
LCDOUT $FE,2,"TONMAİSTERDAL"
GOTO BASLA
END
 

Ekli dosyalar

  • Adsız.jpg
    Adsız.jpg
    76.9 KB · Görüntüleme: 16
@ DEVICE pic16F84A, WDT_OFF
@ DEVICE pic16F84A, PWRT_ON
@ DEVICE pic16F84A, PROTECT_OFF
@ DEVICE pic16F84A, XT_OSC
TRISA=0
TRISB=0
DEFINE LCD_DREG PORTB
DEFINE LCD_DBIT 4
DEFINE LCD_RSREG PORTB
DEFINE LCD_RSBIT 1
DEFINE LCD_RWREG PORTB
DEFINE LCD_RWBIT 2
DEFINE LCD_EREG PORTB
DEFINE LCD_EBIT 3
DEFINE LCD_BITS 4
DEFINE LCD_LINES 2
PAUSE 200
LCDOUT $FE,1
BASLA:
LCDOUT $FE,2,"TONMAİSTERDAL"
GOTO BASLA
END


Şimdi kardeş bu devren şeman doğru ama döngüye biraz yorum yapalım :D
Pic 4 Mhz yani üç aşağı beş yukarı bir komut asm ile bakarsak 1 mikro saniye basicde de olsun olsun 5 mikro saniye yada 15 mikro saniye tam olarak ne kadar süre olduğunu ben bilmiyorum bayağıda tartışıldı bu konu yani basicde komutların süre karşılığı...

döngüyü bu şekilde yapmışsın basla demiş hemen altına yazı yazdırmış hemen altına da goto basla yazmışsın yani pic basla ya geliyo ve basla ile goto basla arasında daimi olarak pic in enerjisini kesene kadar LCDOUT $FE,2,"TONMAİSTERDAL" komutunu işlemeye devam ediyor yani daimi olarak bu yazıyı ekrana yazabilmek için ekranı devamlı olarak taramaya alıyor.

Bu durumda 4 Mhz ile bu komutu basla ile goto basla arasında daimi olarak işlemesi bir nevi ekranda karelerin çıkmasına neden olacaktır. oysa sen bu programı şu şekilde yaparsan sorun çıkmayacaktır.

@ DEVICE pic16F84A, WDT_OFF
@ DEVICE pic16F84A, PWRT_ON
@ DEVICE pic16F84A, PROTECT_OFF
@ DEVICE pic16F84A, XT_OSC
TRISA=0
TRISB=0
DEFINE LCD_DREG PORTB
DEFINE LCD_DBIT 4
DEFINE LCD_RSREG PORTB
DEFINE LCD_RSBIT 1
DEFINE LCD_RWREG PORTB
DEFINE LCD_RWBIT 2
DEFINE LCD_EREG PORTB
DEFINE LCD_EBIT 3
DEFINE LCD_BITS 4
DEFINE LCD_LINES 2
PAUSE 200
LCDOUT $FE,1
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''buraya dikkat lütfen'''''''''''''''''''''''''''''''''''
LCDOUT $FE,2,"TONMAİSTERDAL"' burada $FE,2, değil de LCDOUT $FE,1,"TONMAİSTERDAL" şeklinde yaparsan daha doğru olacaktır.EKRANI SİLİP O YAZIYI YAZDIRACAKSIN VE ALT TARAFINDAKİ KOMUTA GEÇECEKTİR...
BASLA:'''''''''''''''''''''''BURADA DA PİC KENDİ BAŞINA SONSUZ DÖNGÜYE GİRECEK
GOTO BASLA ' DEVAMLI BAŞLAYA GİT...DOLAYISI İLE YAZIYI SADECE 1 KERE YAZACAK VE SONSUZ DÖNGÜYE GİRECEKTİR.birde o 200 milisaniyelik süreyi 500 mili saniye yaparsan daha iyi olur.
END

En doğru olacağı :

@ DEVICE pic16F84A, WDT_OFF
@ DEVICE pic16F84A, PWRT_ON
@ DEVICE pic16F84A, PROTECT_OFF
@ DEVICE pic16F84A, XT_OSC
TRISA=0
TRISB=0
DEFINE LCD_DREG PORTB
DEFINE LCD_DBIT 4
DEFINE LCD_RSREG PORTB
DEFINE LCD_RSBIT 1
DEFINE LCD_RWREG PORTB
DEFINE LCD_RWBIT 2
DEFINE LCD_EREG PORTB
DEFINE LCD_EBIT 3
DEFINE LCD_BITS 4
DEFINE LCD_LINES 2
PAUSE 500
LCDOUT $FE,1
LCDOUT $FE,1,"TONMAİSTERDAL"
BASLA:
GOTO BASLA
END
 
Son düzenleme:

Forum istatistikleri

Konular
128,179
Mesajlar
915,658
Kullanıcılar
449,940
Son üye
yavuzturan

Yeni konular

Çevrimiçi üyeler

Geri
Üst