-16f877a- yazılımda sorun var mı?

Başlatan boyut, 22 Ocak 2010, 15:30:27

boyut

Arkadaşlar ben 72 adet ledi istediğim zaman aralıklarında yakıp söndürmeye çalışıyorum veya hepsini aynı anda örneğin 10sn. açıp kapatmak istiyorum veya 1.ledi 5.ledi 40. ledi yani kafama göre 10sn.süre ile aktif hale getirmek istiyorum.
kendi sınırlı bilgimle (picprojeden öğrendiğim bilgilerle ve tabiki ETE hocayıda unutmamak gerekir) bir program yazdım ve isiste simüle ettim.

aşağıya programı yazmadan önce şu bilgiyide vereyim: 1 adet 16f877a ve 9 adet 74hc595 ve tabiki 72 adet led ile simüle ettim.
A portunun 3-4-5. pinlerinden aldığım çıkış hiç çalışmadı
birde E portunu kullandım oda ilk seferde çalışmıyor, diğreleri 1 kez yanıp söndükten sonra E portuda dahil olup ona bağlantılı ledler yanıyor ve normal şekilde diğerleri ile birlikte(Porta.3-4-5 ten aldığım çıkış hariç) yanıp sönmeye devam ediyorlar.

programa bir göz atarsanız sevinirim
saygılar sevgiler
----------------------------------------------------------------
TRISA=0
TRISB=0
TRISC=0
TRISD=0

@ DEVICE pic16F877a
@ DEVICE pic16F877a, WDT_on
@ DEVICE pic16F877a, PWRT_ON
@ DEVICE pic16F877a, PROTECT_OFF
@ DEVICE pic16F877a, XT_OSC


CMCON=7
ADCON1=7

SYMBOL CLK=PORTA.0
SYMBOL DTA=PORTA.1
SYMBOL AKTAR=PORTA.2

SYMBOL CLK1=PORTA.3
SYMBOL DTA1=PORTA.4
SYMBOL AKTAR1=PORTA.5

SYMBOL CLK2=PORTB.0
SYMBOL DTA2=PORTB.1
SYMBOL AKTAR2=PORTB.2

SYMBOL CLK3=PORTB.3
SYMBOL DTA3=PORTB.4
SYMBOL AKTAR3=PORTB.5

SYMBOL CLK4=PORTE.0
SYMBOL DTA4=PORTE.1
SYMBOL AKTAR4=PORTE.2

SYMBOL CLK5=PORTC.0
SYMBOL DTA5=PORTC.1
SYMBOL AKTAR5=PORTC.2

SYMBOL CLK6=PORTC.3
SYMBOL DTA6=PORTC.4
SYMBOL AKTAR6=PORTC.5

SYMBOL CLK7=PORTD.0
SYMBOL DTA7=PORTD.1
SYMBOL AKTAR7=PORTD.2

SYMBOL CLK8=PORTD.3
SYMBOL DTA8=PORTD.4
SYMBOL AKTAR8=PORTD.5


VALF VAR word
VALF1 VAR word
VALF2 VAR word
VALF3 VAR word
VALF4 VAR word
VALF5 VAR word
VALF6 VAR word
VALF7 VAR word
VALF8 VAR word

PORTA=0
PORTB=0
PORTC=0
PORTD=0

VALF=0
VALF1=0
VALF2=0
VALF3=0
VALF4=0
VALF5=0
VALF6=0
VALF7=0
VALF8=0


BASLA:

VALF=255
SHIFTOUT DTA,CLK,1,[VALF]
HIGH AKTAR
PAUSEUS 5
LOW AKTAR

VALF1=255
SHIFTOUT DTA1,CLK1,1,[VALF1]
HIGH AKTAR1
PAUSEUS 5
LOW AKTAR1

VALF2=255
SHIFTOUT DTA2,CLK2,1,[VALF2]
HIGH AKTAR2
PAUSEUS 5
LOW AKTAR2

VALF3=255
SHIFTOUT DTA3,CLK3,1,[VALF3]
HIGH AKTAR3
PAUSEUS 5
LOW AKTAR3

VALF4=255
SHIFTOUT DTA4,CLK4,1,[VALF4]
HIGH AKTAR4
PAUSEUS 5
LOW AKTAR4

VALF5=255
SHIFTOUT DTA5,CLK5,1,[VALF5]
HIGH AKTAR5
PAUSEUS 5
LOW AKTAR5
             
VALF6=255
SHIFTOUT DTA6,CLK6,1,[VALF6]
HIGH AKTAR6
PAUSEUS 5
LOW AKTAR6

VALF7=255
SHIFTOUT DTA7,CLK7,1,[VALF7]
HIGH AKTAR7
PAUSEUS 5
LOW AKTAR7

VALF8=255
SHIFTOUT DTA8,CLK8,1,[VALF8]
HIGH AKTAR8
PAUSEUS 5
LOW AKTAR8

PAUSE 500          

PORTA=0
PORTB=0
PORTC=0
PORTD=0

VALF=0
VALF1=0
VALF2=0
VALF3=0
VALF4=0
VALF5=0
VALF6=0
VALF7=0
VALF8=0

SHIFTOUT DTA,CLK,1,[VALF]
SHIFTOUT DTA1,CLK1,1,[VALF1]
SHIFTOUT DTA2,CLK2,1,[VALF2]
SHIFTOUT DTA3,CLK3,1,[VALF3]
SHIFTOUT DTA4,CLK4,1,[VALF4]
SHIFTOUT DTA5,CLK5,1,[VALF5]
SHIFTOUT DTA6,CLK6,1,[VALF6]
SHIFTOUT DTA7,CLK7,1,[VALF7]
SHIFTOUT DTA8,CLK8,1,[VALF8]

HIGH AKTAR
HIGH AKTAR1
HIGH AKTAR2
HIGH AKTAR3
HIGH AKTAR4
HIGH AKTAR5
HIGH AKTAR6
HIGH AKTAR7
HIGH AKTAR8


LOW AKTAR
LOW AKTAR1
LOW AKTAR2
LOW AKTAR3
LOW AKTAR4
LOW AKTAR5
LOW AKTAR6
LOW AKTAR7
LOW AKTAR8

PAUSE 100

GOTO BASLA
END
Ne Mutlu TÜRKÜM diyene

Logan

Programını incelemedim fakat şunu söylemek istiyorum. Gördüğüm kadarıyla her 74595 için ayrı data ve clock ucu kullanmışsın. Halbuki 3 adet uç ile birbirine Dataout-Datain bağlayarak çok rahat bir şekilde sürebilirdin. Öncelikle sistemini bu yönde değiştirmeni tavsiye ediyorum.
İmza.

boyut

Alıntı yapılan: "Logan"Programını incelemedim fakat şunu söylemek istiyorum. Gördüğüm kadarıyla her 74595 için ayrı data ve clock ucu kullanmışsın. Halbuki 3 adet uç ile birbirine Dataout-Datain bağlayarak çok rahat bir şekilde sürebilirdin. Öncelikle sistemini bu yönde değiştirmeni tavsiye ediyorum.

teşekkür ederim arkadaşım.anladığım kadarıyla 74hc595 leri birbirine bağlamamı söylüyorsun. nasıl bağlayacağımı öğrenip o şekilde düzelteyim o zaman çok teşekkürler.
Ne Mutlu TÜRKÜM diyene

boyut

Alıntı yapılan: "Logan"Programını incelemedim fakat şunu söylemek istiyorum. Gördüğüm kadarıyla her 74595 için ayrı data ve clock ucu kullanmışsın. Halbuki 3 adet uç ile birbirine Dataout-Datain bağlayarak çok rahat bir şekilde sürebilirdin. Öncelikle sistemini bu yönde değiştirmeni tavsiye ediyorum.

dediğin gibi bağladım arkadaşım ama bu seferde sırayla çalışıyorlar yani önce ilk sıradi sonra diğeri. örnek program aşağıda
kullandığım bağlantı şeklide bu linkte bigbey arkadaşın paylaştığı
https://www.picproje.org/index.php/topic,25213&highlight=74hc595

TRISB=0


@ DEVICE pic16F877a
@ DEVICE pic16F877a, WDT_on
@ DEVICE pic16F877a, PWRT_ON
@ DEVICE pic16F877a, PROTECT_OFF
@ DEVICE pic16F877a, XT_OSC


CMCON=7
ADCON1=7

SYMBOL CLK=PORTB.0
SYMBOL DTA=PORTB.1
SYMBOL AKTAR=PORTB.2

VALF VAR word


VALF=0
BASLA:

VALF=255
SHIFTOUT DTA,CLK,1,[VALF]
HIGH AKTAR
PAUSEUS 5
LOW AKTAR

PAUSE 100

VALF=0
SHIFTOUT DTA,CLK,1,[VALF]
HIGH AKTAR
PAUSEUS 5
LOW AKTAR

PAUSE 100

GOTO BASLA
END
Ne Mutlu TÜRKÜM diyene

ete

Programda bir hata göremedim. Bağlantılarda yani devrende bir hata olması kuvvetle ihtimal. Zira bu  program normalde çalışması gerekir.
Tabiiki her bir 595'i ayrı kontrol etmekle zahmetli bir yol seçmişsin.
595 ler bir birlerine seri bağlanabiliyorlar. Bağlanma şeklide şöyledir.
Hepsinin CLK ve Kilit uçlarını ortak bağlayacaksın.
Bu durumda tek bir CLK, tek bir Kilit ve tek bir Data ucun olacak. Diğerlerini iptal edersin.
Birinci  595'e Pic den bir Data gireceksin. Birincinin Q'7 çıkışını ikincinin data girişine bağlayacaksın. İkincinin Q'7 çıkışını üçüncünün data girişine olmak üzere hepsini bu şekilde seri bağlayacaksın.

Şimdi Elinde Valf0-valf1-valf2-valf3...valf8 şeklinde değişkenlerin var.

Tek bir shiftout komutu bütün 595 lere kendi bilgilerini aktarabilirsin.
SHIFTOUT DTA,CLK,1,[Valf0,valf1,val2,valf3,valf4,valf5,valf6,valf7,valf8]
pulsout aktar,10

şeklindeki komut dizisi bütün 595 lere bilgileri sıra ile yerleştirir.
Sıralaman ters olursa valf dizisini shiftout komutunda sende ters çevirirsin.

Kolay Gelsin
Ete
Bilgi hazinedir paylaştıkça büyür.            http://etepic.com

boyut

ETE hocam sizin anlattığınız gibi değiştirdim programı, gayet güzel bir şekilde çalıştı. Çok teşekkür ederim. Allah razı olsun sizden ve ilgilenen diğer arkadaşlardan..

saygılar..
Ne Mutlu TÜRKÜM diyene

ipek

sevgili boyut bizde okadar led'e hazrol yaptırtmak istiyoruz yayınlar isen seviniriz.

muhittin_kaplan

çıkışları günçlendirdiğinizi düşünüyorum

boyut

Alıntı yapılan: "ipek"sevgili boyut bizde okadar led'e hazrol yaptırtmak istiyoruz yayınlar isen seviniriz.

bitirince yayınlarım arkadaşım.
biraz yavaş gidiyorum.k.bakmayın malum aynı zamanda memurum gün içerisinde bakamıyorum.
Ne Mutlu TÜRKÜM diyene

boyut

Alıntı yapılan: "muhittin_kaplan"çıkışları günçlendirdiğinizi düşünüyorum

aslında güçlendirmek icap ediyor muhakkak fakat ben henüz plaket üzerine dökmedim.
birde bunda şöyle birşey yapmayı düşünüyorum.şimdi burdaki ledleri şerit led gibi düşünün, istediğiniz şekilde bükebileceğiniz bir durumda ve istediğiniz ledin yanmasını sağlayabileceksiniz gerisi sizin hayal gücünüze kalmış yani değişik animasyonlar yapılabilir...

saygılar kolay gelsin
Ne Mutlu TÜRKÜM diyene