Picproje Elektronik Sitesi

MİKRODENETLEYİCİLER => Microchip PIC => Konuyu başlatan: ankaralı06 - 07 Ağustos 2019, 09:30:45

Başlık: 74HC597 VE 74HC595 İLE DİSPLAY KONTROLÜ
Gönderen: ankaralı06 - 07 Ağustos 2019, 09:30:45
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)
Başlık: Ynt: 74HC597 VE 74HC595 İLE DİSPLAY KONTROLÜ
Gönderen: mehmet - 07 Ağustos 2019, 11:04:39
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.
Başlık: Ynt: 74HC597 VE 74HC595 İLE DİSPLAY KONTROLÜ
Gönderen: ziyaretci - 07 Ağustos 2019, 23:54:41
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)

Başlık: Ynt: 74HC597 VE 74HC595 İLE DİSPLAY KONTROLÜ
Gönderen: forsa1975 - 07 Ağustos 2019, 23:58:00
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


Başlık: Ynt: 74HC597 VE 74HC595 İLE DİSPLAY KONTROLÜ
Gönderen: RaMu - 08 Ağustos 2019, 00:13:13
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.