"Karmaşıklığı kontrol etmek Programlamanın en asıl işidir."

27 Ağustos 2014 Çarşamba

CCS C 74HC595 Basitçe Kullanımı



CCS C 74HC595 Basitçe Kullanımı ve Örnek




15,1..7 nolu bacaklar = Paralel Veri Çıkışları

8 nolu bacak = GND (-)

9 nolu bacak = Seri Veri Çıkışı (seri başka bir 74hc595 bağlamak için)

10 nolu bacak Master Reset Ucu = Burası LOW(-)'da tutulmalıdır yoksa 74hc595 kendisini sürekli resetlicektir 

11 nolu bacak shift register clock girişi = clock palse verilir, 14 nolu bacaktan veri kaydırılarak içeri alınır (clock palse vermek için bu bacağa önce 1 sonra 0 verilir)

12 nolu bacak storage register clock girişi = 11 ve 14 nolu bacaklar sayesinde içeri uygulanan clock palse sayesinde paralel veri çıkışlarına verilir

13 nolu bacak output enable ucu = aktif edilmek için LOWda tutulmalıdır

14 nolu bacak = seri veri girişi

16 nolu bacak = VCC(+)

yani kısaca 11 nolu bacağa vurulan clock palse ile 14 nolu bacaktan veri içeri alınır 12 nolu bacak sayesinde çıkışa verilir.

Basit Bir Örnek ; 74hc595 kullanarak 0-99 sayıcı





//==============================================================================
#include <16F876.h>
#FUSES NOWDT                    //No Watch Dog Timer
#FUSES HS                       //High speed Osc (> 4mhz for PCM/PCH) (>10mhz for PCD)
#FUSES NOPUT                    //No Power Up Timer
#FUSES NOPROTECT                //Code not protected from reading
#FUSES NODEBUG                  //No Debug mode for ICD
#FUSES NOBROWNOUT               //No brownout reset
#FUSES NOLVP                    //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#FUSES NOCPD                    //No EE protection
#FUSES NOWRT                    //Program memory not write protected,
#use delay (clock=20000000) 
//==============================================================================
#define hcdata pin_b0
#define hcclock pin_b1
#define hcload pin_b2
//==============================================================================
const int digit[10]={0xC0,  // 0
                     0xF9,  // 1
                     0xA4,  // 2
                     0xB0,  // 3
                     0x99,  // 4
                     0x92,  // 5
                     0x82,  // 6
                     0xF8,  // 7
                     0x80,  // 8
                     0x90}; // 9
int say=0;
int saybirler=0;
int sayonlar=0;
//==============================================================================
void hc595_yolla(unsigned char veri)
{
   unsigned  char i;
   for(i=0x80;i>0;i>>=1)
   {
      if(i&veri)output_high(hcdata);
      else  output_low(hcdata);  
      output_high(hcclock);
      output_low(hcclock);
   } 
}
//==============================================================================
void main () {
while (1){
say=0;
for (say=0;say<99;say++){
sayonlar=say/10;
saybirler=say%10;
hc595_yolla(digit[saybirler]); 
hc595_yolla(digit[sayonlar]);
output_high(hcload);
output_low(hcload);
delay_ms(1000);
}
}
}
//==============================================================================

0 yorum:

Yorum Gönder

İletişim Formu

Ad

E-posta *

Mesaj *