Hc595 kullanımı hakkında

Başlatan NamTech, 20 Kasım 2017, 20:01:02

NamTech

Merhabalar,

Ben ccsc kullanmaya yeni başladım, bir proje tasarlamaya çalışıyorum. 74595 kütüphanesinde kullanacağım 595 adedini belirtmem gerekiyor imiş,

benim sorum bu kütüphanede kaç taneye kadar 595 kullanabilirim, ben projemde 25 adet 595 kullanmayı düşünüyorum.

Şimdiden teşekkürler.
Kim Ne Derse Desin Alelade Birisi.

gokhangokcen

45 tane kullandım hiç bir problem yaşamadım. Daha fazlada kullanılabilir. Tek dikkat etmen gereken nokta ise Data pini kaskat bağlı olduğu için herhangi bir buffera ihtiyaç duymuyor. Ama clock,latch,enable gibi pinleri bir buffer kullanarak bağla.Takribi çekeceği akımı hesap edip uygun bir entegre ya da devre kullanabilirsin. 74HC245 kullanıyorum genelde.
Birde süreceğin yük nedir? Led gibi ürünler mi yoksa röle gibi ürünler mi? 74HC595 ile led sürdüm genelde. Röle ya da buna benzer ürünler kullanacaksan ben tavsiye etmem zira son uygulamada baya sıkıntı yaşatmıştı bana. Osilaskop olmadığı için inceleyemedim belki besleme sıkıntısı ya da data clock problemi yaşamış olabilirim ama led harici bir uygulamada yüksek adetli 595 kullanmam bu saatten sonra.
Bildiğini paylaşmak, Allah'ın verdiği öğrenme yeteneğinin zekatıdır.

exmachine

Aşağıdaki kod parçasını baz alarak kendi kütüphaneni ya da fonksiyonunu oluşturabilirsin.

//---------------------74HC595 PINLERİ AYARLANIYOR --------------------
#define hcclock pin_c0  
#define hcdata pin_c1
#define hcload pin_c2

#define hc_load  output_high(hcload);output_low(hcload)  // data yükleme makrosu


// ---------------------74HC595 VERİ YOLLAMA FONKSİYONU---------------------------------
void hc595_yolla(unsigned char veri)
{ unsigned  char s;
   for(s=0x80;s>0;s>>=1)

   {
      if(s&veri)output_high(hcdata);

      else  output_low(hcdata);  

      output_high(hcclock);

      output_low(hcclock);

   } 
}

NamTech

İlginiz ve yardımlarınız için teşekkürler

Devre tamamı led sürecek röle ve diğer aksamları uln ile süreceğim

Kim Ne Derse Desin Alelade Birisi.

mehmet

Hem shift register hem de güçlü çıkış siteniyor ise
TPIC6B595 uygun olacaktır.
Olan olmuştur,
olacak olan da olmuştur.
Olacak bir şey yoktur.
---------------------------------------------
http://www.mehmetbilgi.net.tr

NamTech

Arkadaşlar takıldığım bir kaç konu var yardım ederseniz.


#include <deneme.h>

#use rs232(baud=9600, xmit=PIN_A0, rcv=PIN_A1,RESTART_WDT,ERRORS,INVERT)


#IFNDEF EXP_OUT_ENABLE

#define EXP_OUT_ENABLE PIN_B0
#define EXP_OUT_CLOCK PIN_B1
#define EXP_OUT_DO PIN_B2
#define NUMBER_OF_74595 1
#ENDIF

#include <74595.C>

#byte port_b=6
#byte port_c=7


                       void main()
                           {


set_tris_c(0);
set_tris_b(0);
port_b = 0xff;
port_c = 0;
                       while (1) 

{
                 
write_expanded_outputs(0x01);
delay_ms(500);
write_expanded_outputs(0x02);
delay_ms(500);
write_expanded_outputs(0x04);
delay_ms(500);
write_expanded_outputs(0x08);
delay_ms(500);
write_expanded_outputs(0x10);
delay_ms(500);
write_expanded_outputs(0x20);
delay_ms(500);
write_expanded_outputs(0x40);
delay_ms(500);
write_expanded_outputs(0x80);
delay_ms(500);


                 
                              
}

                              }


kodunu deneme amaçlı kullandım fakat.
öncelikle programı sonsuz döngüye sokamadım.
displayde 8 yanıp sonra sönüyor başka bir şey yapmıyor.
işlemci 16F887


yardım ederseniz sevinirim, şimdiden teşekkürler
Kim Ne Derse Desin Alelade Birisi.

Pyrodigy

#6
Ccs nin driver klasörünün içindeki
74595.c isimli dosyayı incelediğimizde
Write_expanded_outs() fonksiyonun tanımlanmasında parametre olarak adres aldığını görüyoruz.
Hal böyle iken bu fonksiyona parametre atarken 595 e yazılması istenen değişken yada dizinin adresini yollamamız gerekli.
Forumda kısa bir araştırma yaparsan tonla örnek var.
Senin örneğinde şöyle yapabilirsin
char Data =0x01;
Write_expanded_outs(&Data);

Sevgiler
Persistance is the name of the game in this business....

RaMu


Ek bilgi olarak:


16F877 kullandığını bildiğin için bir zararı yok ama
mcu değiştirirken kolaylık olması açısından
şöyle kullanırsan daha iyi olur;
#byte port_b=6
#byte port_c=7

yerine
#byte port_b = getenv("SFR:PORTB")
#byte port_c = getenv("SFR:PORTC")

MCU değiştirsende CcsC kendisi PORTB vs.
nerede ise bulup, adresini kendi atar.


veya;
port_b = 0xff;
port_c = 0;

yerine, hiç port_b vs. tanımlamadan
CcsC nin kendi port komutlarını kullanabilirsin
output_b(0xFF);
output_c(0x00);





Ayrıca,
eğer FAST_IO komutunu kullanmadıysan,
set_tris fonksiyonu CcsC nin kendi
"output_b(0xFF);" gibi fonksiyonlarında işe yaramaz,
porta her değer yazılacağı zaman
önce port, CcsC tarafından çıkış yapılır, FAST_IO kullanılmazsa.
Sorularınıza hızlı cevap alın: http://www.picproje.org/index.php/topic,57135.0.html