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İ
(https://i.ibb.co/2Pgs43V/Ekran-Al-nt-s.png) (https://ibb.co/2Pgs43V)
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.
Mezuniyet kokusu alıyorum, şimdiden hayırlı olsun. ;)
Aşağıda 74HC595 ile alakalı örnekler var, incelerseniz kullanımını kolayca kavrayabilirsiniz. Simülasyon dosyaları mevcut.
https://www.elektrocavus.com/14-segment-display-ile-kayan-yazi (https://www.elektrocavus.com/14-segment-display-ile-kayan-yazi)
https://www.elektrocavus.com/8x32-piksel-kayan-yazi-uygulamasi (https://www.elektrocavus.com/8x32-piksel-kayan-yazi-uygulamasi)
https://www.elektrocavus.com/74HC595-ile-port-cogullama (https://www.elektrocavus.com/74HC595-ile-port-cogullama)
https://www.elektrocavus.com/Resim-cizme-uygulamasi (https://www.elektrocavus.com/Resim-cizme-uygulamasi)
https://www.elektrocavus.com/32x32-piksel-yilan-oyunu-yazilimi (https://www.elektrocavus.com/32x32-piksel-yilan-oyunu-yazilimi)
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
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.