74hc595 ve 74hc165 son konum olayı?

Başlatan dyonizos, 26 Haziran 2012, 15:32:11

dyonizos

selam arkadaşlar
74hc165 ve 595 kullanarak 165 girişine baglı butonlara basıldıkca ledlerı yapabılıyorum ancak 165 de herhangibir butona basılmadığı zaman son konumu ledlerın son konumlarını korumlarını nasıl saglarım?

ankyra

ledler neden son konumlarini korumuyorlar ki?
devre semani verirsen yorum yapilabilir...

dyonizos

devrenin isis dosyası
http://81.22.101.61/hc595-test.rar
butona bastığımız zamanki ledlerın konumunu nasıl korururuz acaba? basmadıgımızda 00000000 bilgisi gittiği için ledler sönüyor butonu bıraktığımızda.
ben 00000000 bilgisinide ayrıca bir buton gibi göndereceğim için portlardan birisinin 1 olması durumunuda kontrol edemiyorum. HC595 in bu şekilde bir özelliği varmıdır son konumu saklamak gibi?

Device 16F628A
'Declare WATCHDOG OFF
Declare XTAL 4
Declare LCD_DTPIN PORTB.4
Declare LCD_RSPIN PORTB.2
Declare LCD_ENPIN PORTB.3
Declare LCD_INTERFACE 4
Declare LCD_LINES 2 

ALL_DIGITAL = True

TRISA=%00000000
TRISB=%00000000
PORTA=0
PORTB=0
TMR0=0 
CMCON=$07 

Dim buton_data As Byte
Dim led_data As Byte

Symbol clock_pin PORTA.0
Symbol data_pin PORTA.1
Symbol strobe_pin PORTA.2
Symbol output_en PORTA.3

Cls
DelayMS 500
Print At 1,1,"TESSSTT"
DelayMS 1000
Cls


'led_data=16
basla:
High strobe_pin
SHIn data_pin,clock_pin,0,[led_data]
SHOut data_pin,clock_pin,1,[led_data] 
'High strobe_pin
DelayMS 1
Low strobe_pin
Print At 1,1,DEC3 led_data
'DelayMS 500

GoTo basla

ankyra

hmmm...
buton yerine anahtar koy desem heralde sen dusunmussundur...

bu haliyle ledlerin konumunu korumasi icin clock palsini durdurman gerekiyor. "hem clock calissin hem paralel giristeki bilgiler seri cikistan cikmasin" demek entegrenin islevi ile celisir. clock shiftout komutunu kullanmayip clock palsini istedigin gibi verebilirsin ama zor olur biraz...

sonra (yada)... 74 595 in (sanirim st-cp) bir ucunun gorevi su; sen veriyi 595 e seri girersin, ancak bir pininden puls yollamadigin surece bu verileri cikisa aktarmaz. yani 595 in 12 nolu Ayagina puls yollamaz isen ledler degismez. ledlerin ne zaman degismesini istiyor isen o zaman puls yolla... programda high strobe_pin demissin. bu komutu ledlerin degismesini istedigin zaman devreye sokmalisin...

umarim yardimci olur...


CLR

#4
Alıntı yapılan: dyonizos - 26 Haziran 2012, 15:32:11
selam arkadaşlar
74hc165 ve 595 kullanarak 165 girişine baglı butonlara basıldıkca ledlerı yapabılıyorum ancak 165 de herhangibir butona basılmadığı zaman son konumu ledlerın son konumlarını korumlarını nasıl saglarım?

proteus dosyanı incelemedim ama çok basit

mesela 165'i okudun okuduğun registere Hc165Read adını verdin ve  okudun diyelim burada Hc165Read 0'dan büyük mü diye bir mantık kuracaksın büyükse 595'e gönder değilse gönderme bu kadar. Her tuşa bastığında hangi tuşa bastıysan ilgili led yanar diğerleri söner. Önceki bastıklarımıda göreyim dersen bir register daha gerekir, o registere 165'den okuduğun veriyi OR işlemi ile diğerine yazarsın 595'e bu registeri gönderirsin ama 8' tuşa bastığında hepsi dolacaktır.Sonra birdaha basamazsın. Eğer yok devam edeyim dersen, aynı tuşa iki defa basılırsa hepsini silebilirsin mesela, 165'den okuduğun ile 595'e gönderdiğin eşitse 595'e 0 gönder olsun bitsin   :)


Knowledge and Experience are Power

ete

Her iki entegrenin kilit uçlarını ortak kullandığın için bir önceki değerin çıkışlarda tutulması zorlaşıyor.
Çare bir değişken daha kullanmakta. Eski_Led isimli bir değişken tanımlarsan ve bu değişkenide aşağıdaki şekilde kullanırsan istediğin olur.

Dim buton_data As Byte
Dim led_data As Byte
Dim Eski_Led As Byte

Symbol clock_pin PORTA.0
Symbol data_pin PORTA.1
Symbol strobe_pin PORTA.2
Symbol output_en PORTA.3

Cls
DelayMS 500
Print At 1,1,"TESSSTT"
DelayMS 1000
Cls
basla:
High strobe_pin
SHIn data_pin,clock_pin,0,[led_data]
IF LED_Data=0 then LED_DATA=ESKI_LED  'tuşa basılmamış ise bir önceki basıln tus değerini Led_Data ya yükle.
SHOut data_pin,clock_pin,1,[led_data]       '595 'e  led konumlarını yeniden yükle
ESKI_LED=LED_DATA                                  'program bu satıra geldiğine göre Tusa basılmış demektir o halde basılan tus değerini sakla
'High strobe_pin
DelayMS 1
Low strobe_pin
Print At 1,1,DEC3 led_data
GoTo basla


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