74HC597 VE 74HC595 İLE DİSPLAY KONTROLÜ

Başlatan ankaralı06, 07 Ağustos 2019, 09:30:45

ankaralı06

Arkadaşlar öncelikle pic programlamada ve forumda çok çok yeniyim.Yardım etmeniz benim için hayati önem taşıyor.Yapmam gereken 597ye bağlı 8 adet switch ile girdiğim binary(00001100 mesela) verinin 2 adet 595e bağlı displaylerde "1" ve "2" şeklinde gözükmesi.Kod kısmında yapamadığım nokta 1)597den veri okuma 2) Alınan verinin 595e verilip çıkışa gönderilmesi.
::::::::::::::::::::::::::::::::::::::::::::::::::::::::
KOD KISMI VE PROTEUS ÇİZİMİ BU ŞEKİLDE(ŞİMDİDEN ÇOK ÇOK TEŞEKKÜR EDERİM. BENİM İÇİN AŞIRI ÖNEMLİ)
#include <deneme1.h>
#fuses XT,NOWDT,NOPROTECT,NOBROWNOUT,NOLVP,NOPUT,NOWRT,NODEBUG,NOCPD
#use delay(clock=4M)

#define seriout   pin_d0
#define clk597    pin_d1
#define latch     pin_d2
#define SH_CP     pin_b0      
#define DATA      pin_b1
#define ST_CP     pin_b2     
#define SH_CPb    pin_c3
#define DATAb     pin_c4
#define ST_CPb    pin_c5

int digit[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};
int dizi[]={0x3F,0x06,0x5B,0x4f,0x66,0x6D,0x7D,0x07};

void read()
{
 unsigned char g=0;       //
 output_low(latch);       //
 output_high(latch);      //
 for(g=0;g<8;g++)         //
 {                        //
  if(seriout==1)          //YARDIM İSTEDİĞİM 1. KISIM
  dizi[g]=1;              //597DEN VERİ OKUMA KISMI(TAM DOĞRU OLDUĞUNA EMİN DEĞİLİM)
  else                    //HATAMI BULUP SÖYLERSENİZ ÇOK MUTLU OLURUM.
  dizi[g]=0;              //
                          //
  output_high(clk597);    //
  output_low(clk597);     //
 }
}
void onlar(unsigned char veri)
{
char i;                        //
output_low(ST_CP);             //
for(i=0;i<8;i++)               //
       {                       //
         output_low(SH_CP);    //
         if((veri<<i)&0x80)    //
         output_high(DATA);    //595 İLE DİSPLAYE ÇIKIŞ VERME (BU KISIMDAN EMİNİM ÇALIŞIYOR.)
         else                  //
         output_low(DATA);     //
         output_high(SH_CP);   //
       }                       //
         output_high(ST_CP);   //
                               //
}                              //     

void birler(unsigned char info)
{                              // 
char r;                        //
output_low(ST_CPb);            //  
for(r=0;r<8;r++)               //
       {                       // 
         output_low(SH_CPb);   //
         if((info<<r)&0x80)    //
         output_high(DATAb);   //DİĞER 595(BİRLER BASAMAĞI OLAN DİSPLAYİ KONTROL EDİYOR)
         else                  //
         output_low(DATAb);    //
         output_high(SH_CPb);  //
       }                       //
         output_high(ST_CPb);  //
                               //
}                              //




void main()
{

set_tris_b(0x00);    //
output_b(0x00);      //YARDIM İSTEDİĞİM 2. KISIM 597DEN GELEN VERİYİ(ATIYORUM DECİMAL 16) 
set_tris_c(0x00);    //DİSPLAYLERDE "1" VE "6" ŞEKLİNDE YAZDIRMAK.  
output_c(0x00);      //BURASI TIKANDI KALDI.

}
PROTEUS ÇİZİMİ


mehmet

Foruma hoşgeldiniz.

Çok acil konulara, çok acil mesajlar
yazılamayabilir. Ehli-keyif bir forum
burası.
Acil ve önemli ise profesyonel destek
almanızı öneriyorum.

Kod eklemek için "Kod" butonunu kullanınız.
Forum Kurallarını yeniden okuyunuz.
Olan olmuştur,
olacak olan da olmuştur.
Olacak bir şey yoktur.
---------------------------------------------
http://www.mehmetbilgi.net.tr
https://creativecommons.org/licenses/by/4.0/deed.tr "CC BY"

ziyaretci


forsa1975

#3
Neden 2.  595 için tekrar data clock pini kullandın ?

kod içinde 2. 595 için pin tanımı yapılmamış.

O yüzden 1. 595 in 9.pini    2.595 in data dirişine gir . clk ve  latch paralel kullan.

programın main kısmında döngü yok. fonksiyonlar çağrılmamış.

Serdar Çiçek' in CCS C kitabını al adım adım git derim.

Aşağıdaki adreste örnek kodlar ve simülasyon dosyaları var.

https://www.altaskitap.com/CCS-C-Ile-PIC-Programlama,PR-37.html



RaMu

CcsC bilgisayarında yüklü ise,
C:\Program Files\PICC\Drivers
klasöründe 74595.c kütüphane dosyası mevcut,
örnek olarak kullanabilirsin.
Önce 595 ile çıkışta istediğin sayıları görme kısmını çözmelisin.
Sorularınıza hızlı cevap alın: http://www.picproje.org/index.php/topic,57135.0.html