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);
}
}
}
//==============================================================================