74hc595 + tpic595 Sorunu

Başlatan protech06, 29 Ağustos 2007, 20:15:10

protech06

Slm Arkadaşlar daha önce 24 ledli bir yürüyen ısık animasyon devresi yapmıstım.Devrede led sayısı cok olunca  74hc595 kullandım aşagıdaki şemadaki gibi yapmıstım. Bu devrede ledrin yerine 12volt lamba kullanıcam ve tpic595 kullanmaya karar verdim yalnız daha once hiç kullanmadım datasheetine baktım ama çözemedim 74hc595 le baglantı olarak farkı varmı_?Burdaki gibi bagladıgım zaman  595 teki uclar tpic595 teki hangi uclara eşit_?



Devrenin calışma sekli asagıdaki gibi en sondan başlıyor veher saniyede bir kayarak en sona geliyor bunu devamlı tekrarlıyor tpic kullanarak bu semaya gore bunu nasıl yapabılırım_? 595 le kod olarakta bir kullanım farklılıgı varmı_?

000000000000000000000001
000000000000000000000010
000000000000000000000100
000000000000000000001000
000000000000000000010000
000000000000000000100000
000000000000000001000000
000000000000000010000000
000000000000000100000000
000000000000001000000000
000000000000010000000000
000000000000100000000000
000000000001000000000000
000000000010000000000000
000000000100000000000000
000000001000000000000000
000000010000000000000000
000000100000000000000000
000001000000000000000000
000010000000000000000000
000100000000000000000000
001000000000000000000000
010000000000000000000000
100000000000000000000000

XX_CİHAN_XX

Forumda önce arama yapmalısınız.Kayan yazı mantığıda , kaydırma mantığıda, tpic-595 arasındaki farklar ve bağlantı şekilleride birçok kez konuşuldu.
Aralarında kod farklılığı yoktur.
Yirmi yaşındaki bir insan, dünyayı değiştirmek ister . Yetmiş yaşına gelince , yine dünyayı değiştirmek ister, ama yapamayacağını bilir.

protech06

Hocam yazmadan once forumda arama yaptım fakat herhangi bir baglantı sekli yada örnek kod bulamadım genelde aradaki farklar ve kullanım nedenleri yazıyor tpic= uln2003+595 seklinde .
Ben örnek bir uygulama yada sema bulamadım.

bigbey

Evet çıkışlarında farklılık vardır. 74hc595 logıc 1 ve 0 çıkışı verebilir.
sink/source çıkışı verebilir.
TPIC595 ise open drain mosfetlerden oluştuğu için sadece sink current (logic 0) çıkışı verebilir.
TA6R

protech06

Anladım hocam o zaman ledlerin anotlarını ortak yaparsam sorun kalmıyor.Kod olarakta 74hc595 ve tpic595 arasında hiçbir kullanım farkı yoksa geriye tek sorunum bacak bağlantıları kalıyor hocam
 Aşağıdaki şemalara göre bacak baglantıları karsılıkları dogrumudur ?

G=OE
RCK=ST_CP
SRCLR=MR
SRCK=SH_CP
SERI_IN=DS




bigbey

Alıntı yapılan: "protech06"
G=OE
RCK=ST_CP
SRCLR=MR
SRCK=SH_CP
SERI_IN=DS
Evet karşılık aynen doğru. Ayak bağlantılarına dikkat ederek kullanabilirsin kolay gelsin. Tabi burada dikkat edilecek husus, yanlışlığa mahal vermesin diye bir hatırlatma yapıyorum G ve SRCLR üstü çizgili (logic 0'da aktif)
TA6R

XX_CİHAN_XX

;*******************************************************
SEND_TPIC
		MOVWF		VERI
		BCF		OE		;OUTPUT ENABLE ON
		BSF		MR		;RESET OFF
		BSF		STATUS,C
;*******************************************************		
GONDER		
		RLF		VERI,F
		MOVF		VERI,W
		BTFSC		STATUS,Z
		GOTO		FINISH
		BCF		DQ
		BTFSC		STATUS,C
		BSF		DQ
		BSF		SH_CP
		BCF		SH_CP
		BCF		STATUS,C		
		GOTO		GONDER
FINISH
		BSF		ST_CP
		BCF		ST_CP
		RETURN		
;*******************************************************

Bu kodları tpic e yada 74595 e veri göndermek için kullanabilirsin.örneğin 0xCC verisini göndereceğin zaman yazman gereken kod şı şekilde olmalı.
MOVLW		0xCC
		CALL		SEND_TPIC

Kolay gelsin...
Yirmi yaşındaki bir insan, dünyayı değiştirmek ister . Yetmiş yaşına gelince , yine dünyayı değiştirmek ister, ama yapamayacağını bilir.

XX_CİHAN_XX


Verdiğin şemaya göre istediğin sadece
Alıntı Yap
000000000000000000000001
000000000000000000000010
000000000000000000000100
000000000000000000001000
000000000000000000010000
000000000000000000100000
000000000000000001000000
000000000000000010000000
000000000000000100000000
000000000000001000000000
000000000000010000000000
000000000000100000000000
000000000001000000000000
000000000010000000000000
000000000100000000000000
000000001000000000000000
000000010000000000000000
000000100000000000000000
000001000000000000000000
000010000000000000000000
000100000000000000000000
001000000000000000000000
010000000000000000000000
100000000000000000000000
bu işlem ise aşağıda yazdığım kodlar işini görür.Sistem 20mhz ye göre ayarlandı delay gecikmesini ilk yüklenen .10 sayısı ile oynayarak değiştirebilirsin.Bu arada amacın sadece bu şekilde kaydırma yapmak ise sh_cp ile st_cp uçlarını birleştirebilirsin hem 1 pin tasarrufu olur hemde programdan 2 satırlık kod eksilir ;)
;---------------------------------------		
		LIST		P=16F628A
		INCLUDE		"P16F628A.INC"
		__CONFIG	_HS_OSC & _WDT_OFF & _MCLRE_OFF & _BODEN_OFF & _CP_OFF
;---------------------------------------
		CBLOCK		0x20
SAYAC
REG1
REG2
REG3
		ENDC
;---------------------------------------
#DEFINE	SH_CP		PORTA,0
#DEFINE	DQ			PORTA,1
#DEFINE	ST_CP		PORTA,2	
		ORG			0x00
		GOTO		START
;---------------------------------------
START
		MOVLW		0x07
		MOVWF		CMCON
		CLRF		PORTA
		BSF			STATUS,5
		MOVLW		0xF0
		MOVWF		TRISA
		BCF			STATUS,5
		CALL		DELAY
;---------------------------------------
REFRESH
		MOVLW		.24
		MOVWF		SAYAC
MAIN
		BSF			DQ
		BSF			SH_CP
		BSF			ST_CP
		BCF			SH_CP
		BCF			ST_CP
		BCF			DQ
		CALL		DELAY
		DECFSZ		SAYAC,F
		GOTO		MAIN
		GOTO		REFRESH
;---------------------------------------
DELAY
		MOVLW		.10
		MOVWF		REG1
LOOP1
		MOVLW		.255
		MOVWF		REG2
LOOP2
		MOVLW		.255
		MOVWF		REG3
LOOP3
		DECFSZ		REG3,F
		GOTO		LOOP3
		DECFSZ		REG2,F
		GOTO		LOOP2
		DECFSZ		REG1,F
		GOTO		LOOP1
		RETURN
;---------------------------------------
		END
Yirmi yaşındaki bir insan, dünyayı değiştirmek ister . Yetmiş yaşına gelince , yine dünyayı değiştirmek ister, ama yapamayacağını bilir.