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, // 00xF9, // 10xA4, // 20xB0, // 30x99, // 40x92, // 50x82, // 60xF8, // 70x80, // 80x90}; // 9int 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