63. Shift Register IC 74HC595
63. Shift Register IC 74HC595
.

Shift Register / Register geser memungkinkan untuk menambah jumlah pin I/O yang digunakan pada Mikrokontroler. Salah satu Shift Register yang paling terkenal adalah 74HC595 (atau '595') . 595 mengontrol delapan pin output dengan hanya menggunakan tiga pin input. Jika Anda membutuhkan lebih dari 8 jalur I/O maka anda dapat menghubungkan IC Shift Register lain secara seri (daisy chain). 

Shift Register sering digunakan untuk tujuan menghemat penggunaan pin pada Mikrokontroler, karena setiap Mikrokontroler memiliki jumlah pin I/O (GPIO) yang terbatas. Dengan dua shift register yang dihubungkan secara seri, kita dapat mengendalikan 16 LED hanya dengan menggunakan 3 pin I/O. Anda dapat menghemat lebih banyak pin dengan semakin banyaknya IC shift register yang Anda gunakan. Contoh aplikasi yang menggunakan IC shift register adalah Running Text yang dapat anda temui di kantor, jalan, tempat ibadah, dll.

Bagaimana cara kerja Shift Register 74HC595 ?

“595” memiliki dua register (sebagai “tempat memori“ masing-masing 8 bit data) yaitu Shift Register dan Storage Register. Setiap kali diberikan pulsa clock ke IC 595, maka dua hal akan terjadi:

  1. Bit-bit dalam Shift Register bergerak satu langkah ke kanan. Misalnya Bit 7 menerima nilai yang sebelumnya di bit 6, bit 6 mendapat nilai bit 5 dan seterusnya.
  2. Bit 0 di Shift Register menerima nilai saat ini dari pin DATA. Saat clock pada tepi naik pulsa (rising edge) dan jika pin data “high”, maka logika ‘1’ akan masuk ke Shift Register. Jika tidak, maka nilainya ‘0’.

Saat mengaktifkan pin Latch, maka isi Shift Register disalin ke register kedua yang disebut Storage/Latch Register. Setiap bit pada Storage Register terhubung ke salah satu pin output Q A – Q H IC 595, jadi secara umum, ketika nilai dalam Storage Register berubah, maka outputnya berubah.

Pinout Shift Register 74HC595

Sebagai tambahan, dengan pengaturan yang sama tetapi dengan sedikit perbedaan, anda dapat memanipulasi pin kontrol lain yaitu OE (kita dapat mengontrol kecerahan LED). Telah diketahui bahwa pin OE (Output Enable) bertindak sebagai saklar. Ketika pin ini “HIGH”, pin output dinonaktifkan dan ketika “LOW”, pin output bekerja dengan normal.

Tapi, alih-alih melakukan itu, anda bisa menggunakan pin ini bersama dengan fungsi PWM atau analogWrite() --> pada arduino  untuk mengontrol kecerahan LED. 

Percobaan 78: Akses 74HC595 SIPO

.
  1. Hubungkan SER dengan pin D4 ATMEGA 2560
  2. Hubungkan RCLK dengan pin D5 ATMEGA 2560
  3. Hubungkan SRCLK dengan pin D6 ATMEGA 2560
  4. Hubungkan Q0-Q7 dengan pin L0-L7 pada LED Active High
  5. Hubungkan board ATMEGA 2560 dengan Komputer menggunakan kabel USB.
  6. Bukalah IDE Arduino, kemudian ketikkan kode program/sketch atau buka file SIPO_1
  7. Compile menggunakan verify button (tanda ceklist pada IDE arduino) untuk mengecek ada atau tidaknya error/kesalahan dalam pengetikan.
  8. Upload program ke arduino dengan cara, pilih File > Upload to I/O board, atau tekan tombol tanda panah pada jendela IDE arduino.

Code:

int latchPin = 5;  // Latch pin of 74HC595 is connected to Digital pin 5
int clockPin = 6; // Clock pin of 74HC595 is connected to Digital pin 6
int dataPin = 4;  // Data pin of 74HC595 is connected to Digital pin 4

byte leds = 0;    // Variable to hold the pattern of which LEDs are currently turned on or off

/*
 * setup() - this function runs once when you turn your Arduino on
 * We initialize the serial connection with the computer
 */
void setup() 
{
  // Set all the pins of 74HC595 as OUTPUT
  pinMode(latchPin, OUTPUT);
  pinMode(dataPin, OUTPUT);  
  pinMode(clockPin, OUTPUT);
}

/*
 * loop() - this function runs over and over again
 */
void loop() 
{
  leds = 0; // Initially turns all the LEDs off, by giving the variable 'leds' the value 0
  updateShiftRegister();
  delay(500);
  for (int i = 0; i < 8; i++) // Turn all the LEDs ON one by one.
  {
    bitSet(leds, i);    // Set the bit that controls that LED in the variable 'leds'
    updateShiftRegister();
    delay(500);
  }
}

/*
 * updateShiftRegister() - This function sets the latchPin to low, then calls the Arduino function 'shiftOut' to shift out contents of variable 'leds' in the shift register before putting the 'latchPin' high again.
 */
void updateShiftRegister()
{
   digitalWrite(latchPin, LOW);
   shiftOut(dataPin, clockPin, LSBFIRST, leds);
   digitalWrite(latchPin, HIGH);
}

Video Demo:

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *