74hc164 kullanımı

Başlatan infomaster, 17 Mart 2005, 21:50:17

infomaster

Merhaba,

74HC164 kullanımını picbasic ile kısaca anlatabilecek bir arkadaş arıyorum.

Teşekkürler...
PAYLAŞILMAYAN BİLGİNİN DEĞERİ YOKTUR.

picman

74hc164 kullanımından kastın entegrenin çalışmasını mı soruyorsun bu entegre seri giriş paralel çıkışlı bir shift register (kaymalı kaydedici) entegresidir iki adet seri giriş ucu vardır   A ve B olarak adlandırılırlar bu girişler entegrenin içinde bir ve (and ) kapısı ile birbirine bağlıdır bu yüzden bu girişler genelde birbirine birleştirilerek kullanılır entegrenin birde clk (clock veya pals) olarak adlandırılan bir ayağıda vardır bu uc ise pozitif kenar tetiklemelidir (yani palsin 0 dan 1 e yükselen kenarında tetiklenir ) bu uca pals gönderildiğinde seri girişteki bilgi (0 veya 1)entegre içine alınır diğer bitler de kaydırılır tekrar bu uca pals gönderilirse
seri girişteki bilgi entegre içine alınır ve diğer bitler kaydırılır bu arada bilgiler 8 bitlik paralel çıkışlardan alına bilir antegrenin birde reset ucu mevcut normal durumda bu uc + uca bağlanır entegre resetlenmek istenirse şaselenir

     pic basic te bu entegre için kulanabileceğin bir komut mevcut
shiftout ve shiftin komutları bu komutlat-r yardımıyla 74hc164 e veri gönderebilir veya alabilirsin komutun yazım formatı aşağıda

shiftout datapini , clock pini , kontrol ,[değişken / bitsayısı]
shiftin   datapini , clock pini , kontrol , [değişken / bit sayısı]

yanlız dostum bu komutların tam olarak işleyişini şu anda hatırlayamadığım için (ben de pic basic proyu yeni öğrenmeye başladım)
sana başka bir yöntemle anlatayım istersen ,

diyelimki pic 16f84 ile 10010101 verisini portb nin 0. bitinden seri olarak 74164 entegresine göndermek istiyorsun. clock ucuda portb nin 1. biti olsun programı şöyle yazabilirsin

'program

DATA VER BYTE                  'data diye bir değişken olsun

SYMBOL OUT=PORTB.0       'data çıkışı portb nin 0. pini
SYMBOL CLK=PORBT.1        'clock çıkışı portb nin 1. biti olsun
OUT=0                                'out pini 0
I VAR BYTE                         'sayac değişkeni  

BASLA:
    I=8                                     ' sayac değişkenine 8 değerini atyalım
     DATA=%10010101              'değişkene değer atayalım
DEVAM:
    I=I-1                              'sayac değişkeni bir azaltılır
   IF (DATA.7=1) THEN       'data değişkeninin 7. biti 1 se
        OUT=1                      'çıkış pini 1 olur
 ELSE                                'değilse
        OUT=0                      'çıkış pini 0 olur
 ENDIF
PULSOUT CLK,100               'clock pininden pals gönderilir
 PAUSE 500                        '500ms zaman gecikmesi
DATA=DATA << 1                'data değişkeni bir sola kaydırılır
PAUSE 500                            'tekrar 500ms lik zaman gecikmesi
  IF (I=0) THEN BASLA           'I 0 sa basla etiketine git          
   GOTO DEVAM                     ' değilse  main etiketine geri dön
END                                   'program sonu

 işte böyle tabiki sen daha ilginç bir yöntem de kullanabilirsin bu senin hayal gücüne kalmış dostum

                                 umarım yardımcı olabilmişimdir
    saygılarımla..................

çalışmalarında başarılar dilerim
Bilgi paylaştıkça artar..

infomaster

Merhaba,

Teşekkür ederim. Bunu bir süre önce çözmüştüm.

İlgine tekrar teşekkürler.
PAYLAŞILMAYAN BİLGİNİN DEĞERİ YOKTUR.

sezgin05

Arkadaşlar kodu hiç değiştirmeden 74164 yerine 74595 kullanabilirmiyim?
Özellikle 74595'in bacak bağlantısı sıralı olduğu için tercih ediyorum.Yani çıkışına ULN serisi bir entegre bağlamak çok daha basit oluyor.Denemelerimde nedense 164 ün yerinde 595 çalışmadı.Yardımlarınız için şimdiden teşekkürler.

sertac2003

Alıntı yapılan: "sezgin05"Arkadaşlar kodu hiç değiştirmeden 74164 yerine 74595 kullanabilirmiyim?
Denemelerimde nedense 164 ün yerinde 595 çalışmadı.Yardımlarınız için şimdiden teşekkürler.

kullanilamamasi normal. çünkü latch özelligi var. aslinda bu ucu  kullanarak 74164 gibi kullanilabilir. ama mcu dan bir uç daha feda etmen gerek. latch ucu HC595 12 nolu uç.
{
11 --> CLK
14 --> DATA
12 --> LATCH
13 --> Output Enable
10 -->master Reset
}

74164 ten farki; biliyorsun 74164 e seri bilgi gönderirken her bit göndermede 164 çikislari bir bit kayar ve biz bunu aninda çikista görürüz.
ama 595 te öyle değil. 8 bitin tamamini göndeririz sonra latch (595, 12 no)
ucuna önce HIGH sonra low göndeririz ve iste simdi çikis bilgisi karsimizda yani latch ucunu aktif  ( high --> low seklinde pals) edene kadar bir önce gönderilen bayt çikista hep sabit kalir. aslinda gerektiginde çok güzel bir özellik bu.

       movlw   .8
        movwf   Var1	
Loop	
        rlf	Var,f
        btfss	STATUS,C 
        bcf	Data	 
        btfsc	STATUS,C 
        bsf	Data	 
        bsf     Clock	
        nop
        bcf     Clock
        decfsz  Var1,f	
        goto    Loop
        ;------------- buraya kadar olan 164 için...	
        bsf     Latch ; 595 12 noyu HIGH.. ve çikis bilgisi karsimizda.	
        nop		
        bcf     Latch; 595 12 noyu LOW yapalimki sonraki gönderilen baytlari görelim. 
        ;------------ üsteki üç baytida kullaninca 595 için.


görüldügü gibi 3 bayt eklemek yeterli.. 164 e göre bir uç gidecek tabii..
sonucu yazarsan...
Şirketteki herkes en üst yöneticinin müşterisidir.

temha

arkadaşlar bu entegreleri birbirine ekleyerek kullanılanbir devre şeması bilen varmı. teşekkürler yada birbirine bağlayarak picden gelen seri giriş kabloları ile çok sayıda çıkışı nasıl kontrol edebiliriz.

dombilik

74hc164 (4 adet) bağlanmış bir uygulama var fakat program daha tamamlanmadı.Ama (call serigonder) rutinini takip ederseniz o bölüm
isisde çalışıyor..sanırım bir fikir verecektir

http://f2.pg.briefcase.yahoo.com/bc/dombilik2004/vwp2?.tok=bcAYgYVBe0IfdgVc&.dir=/My+Documents&.dnm=serial.rar&.src=bc
Bildiklerini kime miras bıraktın?kimseyemi? O zaman bildiklerinin ne önemi kalır. ******** /////////// ******** PROTON-ASM PROTEUS 7.4 SP3 EAGLE 5.40