2 tane 74HC595 kullanımı hakkında

Başlatan ofdan, 03 Nisan 2010, 22:51:48

ofdan

Merhaba arkadaşlar,PBP dan CCS e geçiş yaptım.Fakat bazı konularda sıkıntı çekiyordum.Birçoğunu forum sayesinde hallettim :) ama iş 74HC595 ile 2 SSD sürmeye gelince kafam iyice karıştı.Şu an tek 74HC595 ile stabil şekilde ssd ye saydırma işlemi yaptırabiliyorum.Fakat 2. ssd yi bir türlü kullanmadım.Bilen arkadaşlardan bu 2. ssd ye örneğin sadece 9 rakamını göndereceğimi sormak isterim.1. ssd 9 a kadar sayma işlemini yapacak.Şuan tek ssd ile sağlam çalışan programıda mesajıma ekliyorum.Belki benim gibi ccs e geçenler için yardımcı olur.Birde arkadaşlar çizimini yaptığım aşağıdaki devre bulunan entegreler böylemi bağlanacak bu konuda net bir cevap bulamadım.
[IMG]http://i41.tinypic.com/2my3t5i.png[/img]
#include <18F452.h>
#use delay(clock=4000000)
#IFNDEF EXP_OUT_ENABLE
#define EXP_OUT_ENABLE PIN_B0 //74HC595 ÜZERİNDEKİ ST_CP BACAĞINA BAĞLI
#define EXP_OUT_CLOCK PIN_B1 // 74HC595 ÜZERİNDEKİ SH_CP BACAĞINA BAĞLI
#define EXP_OUT_DO PIN_B2    // 74HC595 ÜZERİNDEKİ DS BACAĞINA BAĞLI
#define NUMBER_OF_74595 1
#ENDIF
#include <74595.c>
//////////////////////////////
void main(void)
{
int i,j;
int8 mydata[2];
byte CONST tablo [12]= {
         0x3F,   //   0
         0x06,   //   1
         0x5B,   //   2
         0x4F,   //   3
         0x66,   //   4
         0x6D,   //   5
         0x7D,   //   6
         0x07,   //   7
         0x7F,   //   8
         0x6F,   //   9
         0x63,   //   o derece isareti
         0x39,   //   C isareti
                };

set_tris_b(0b00000000);
i=0;
j=0;
//////////////////////////////
basla:
if (i==12){
i=0;
 }
mydata[j]= tablo[i]; //mydata[j]= tablo[i];
write_expanded_outputs(&mydata[0]);
delay_ms(1000);
i=i+1;
goto basla;
}
///////////////////////////////


Arkadaşlar bu #define NUMBER_OF_74595 2 de yaptım sitede buluna kodlarıda denedim ama bir türlü beceremedim.Cevaplarınız için şimdiden teşekkür ederim

bahri

Bu bağlantı şeklinde ilk 1 byte'lık datayı yollayınca birinci ssd de gösterir.ikinci 1 bytlık veriyi gönderince ilk veriyi q7' çıkışından sonraki entegrenin seri data girişine kayar ve ikinci ssd de gösterir.Yani ilk önce 5 yolladın birinci ssd de gösterdi sonra 4 yolladın birinci ssd 4 olur ikinci ssd 4.

ofdan

#2
Hocam ilgin için teşekkür ederim.Şöyle sorayım örneğin sürekli olarak 1. ssd de 1 rakamını 2.ssd de 4 rakamını göstermem için ne gibi değişiklikler yapmam gerek. Programda ilk veriyi yoladıktan hemen sonra aynı şekilde ikinciyi de mi yolamam gerek ?  :o

bahri

süreli olarak derken tam anlamadım ama sürekli demek mi istedin? 1. datayı yollarsın örneğin 50 mikrosaniye sonra ikinci datayı yollarsın.595 1 byte ı hafızasında tuttuğu için devamlı bu sayıları göstermeye devam edecektir taki bir daha data gelene dek.

ofdan

evt haklısınız hocam gece gece sizede zahmet verdik ama kusura bakmayın.Ben tam olarak sorunumu ifade edemedim,  ben bu iki ssd yi birbirinden bağımsız olarak sürmek istiyorum.Diyelimki ilk ssd 9 a kadar sayma yaparken 2. ssd de sadece 5 sayısı yazacak vs. Bu programsal vede donanımsal olarak nasıl yapabilirm diye sormak istemiştim.

bahri

ST_CP uçlarını picte iki ayrı pine girebilirsin.Yani birinci 595 in ST_CP sini PORTB.0 a ikinci 595 inkinide PORTB.1 e girdin diyelim bi datayı yollarsın hangisine yollayacaksan onun ST_CP ucunu lojik1 seviyesine çekersin 2 mikrosaniye bekledikten sonra geri lojik 0 a çekersin data o 595 e gider.Aklına takılan bişey varsa elimden geldiğince anlatmaya çalışayım.

ofdan

hmm tamam hocam sayende aklıma birkaç şey geldi.Onları bir uygulayım bakayım :D:D tekrar teşekkürler iyi akşamlar

aliveli

#7
iki byte görmek istiyorsan iki byte veri göndermelisin