Anda di halaman 1dari 6

Nama : Amanda Febilala

Nim : 2055201038

Matkul : Microcontroller

1. Bentuk dr shift register 74hc596

Cara kerja sebagai berikut :

 Pada awalnya, shift register 74HC595 dalam kondisi kosong, artinya tidak ada
data yang tersimpan di dalamnya.
 Data dimasukkan ke dalam shift register melalui input serial (sering disebut
juga sebagai input data). Data dimasukkan secara serial bit demi bit, dimulai
dari bit paling signifikan (MSB) ke bit paling tidak signifikan (LSB).
 Setiap kali sinyal clock serial (SRCLK) berubah dari rendah ke tinggi, data di
dalam shift register akan digeser satu bit ke kanan, dan bit terakhir (LSB) akan
diisi dengan bit baru yang masuk melalui input serial.
 Setelah data selesai dimasukkan ke dalam shift register, untuk memindahkan
data dari register shift ke register output paralel, sinyal clock register (RCLK)
harus diberikan. Ketika sinyal RCLK berubah dari rendah ke tinggi, data yang
ada di dalam register shift akan dipindahkan ke register output paralel.
 Data yang ada di register output paralel dapat diambil secara paralel dari
output Q0-Q7.
 Jika perlu menghapus semua data yang ada di dalam shift register, input clear
(SRCLR) dapat diberikan dengan sinyal rendah.

2. Penjelasan gambarnya / jelaskan pin dan setiap fungsinya.


Penjelasan pin IC 74HC595:
 VCC : Suplai tegangan + dengan tegangan 5V/3.3V.
 GND : Suplai tegangan GND.
 Q0-Q7 : Pin output dari IC 74HC595, berjumlah 8 dan dimulai dari Q0.
 SRCLR/MR : untuk mengosongkan deretan output menjadi 0 (bersifat Active Low
sehingga deretan output menjadi 0 jika diberikan tegangan GND/0.
 OE : (Output Enable) berfungsi untuk mematikan menghidupkan / mengaktifkan pin
output (bersifat Active Low maka jika diberikan tegangan GND pin output tetap
hidup).
 DATA/DS/SER : adalah pin data masukan untuk menentukan bit pin output.
 SRCLK/SHCP : berfungsi untuk memasukkan bit berdasarkan bit pin data.
 RCLK/STCP : berfungsi untuk mengeluarkan deretan kondisi tersebut pada pin
output.

3. Contoh rangkaian dalam penerangan shift register. Berserta contoh coding program nya.
Rancangan :
Kode Program :
/*-----------------------------------------------
IoT Smart Device Development Board
by Dodit Suprianto | DSP-TECH

Projek: Pergerakkan LED

Library:
https://github.com/Simsso/ShiftRegister74HC595
-----------------------------------------------*/

/*-------------------------------------
Menambahkan library yang diperlukan
-------------------------------------*/
#include <ShiftRegister74HC595.h> // library shift register 74HC595

/*-------------------------------
Alamat Kanal Shift Register:
-------------------------------
Kanal 0 = LED 1
Kanal 1 = LED 2
Kanal 2 = LED 3
Kanal 3 = LED 4
Kanal 4 = LED 5
Kanal 5 = LED 6
Kanal 6 = LED 7
Kanal 7 = LED 8
Kanal 8 = LED 9
Kanal 9 = Buzz Piezo Speaker
Kanal 10 = Relay
Kanal 11 - 15 = Kanal expansi
-------------------------------*/
/*------------------------------
Pin Microcontroller NodeMCU
------------------------------*/
#define pinData 16 // pin D0
#define pinClock 2 // pin D4
#define pinLatch 0 // pin D3

/*------------------------------
Inisialisasi instance/object &
Deklarasi varibale global
-------------------------------*/
// Konstruktor instance Shift register
ShiftRegister74HC595<2> srChannel(pinData, pinClock, pinLatch);

/*-----------------------------------
Mode Running LED dengan type enum
-----------------------------------*/
typedef enum {
AnimKiriKanan,
AnimKiriKananSendirian,
AnimTengahSamping,
AnimSampingTengah
} animLED;

void setup() {
/*----------------------------------------------------
Mengatur baudrate serial MCU.
Baurate disesuaikan dengan baudrate serial monitor)
----------------------------------------------------*/
Serial.begin(115200);

/*---------------------------------------------
Set seluruh kanal shift register menjadi OFF
---------------------------------------------*/
srChannel.setAllLow();
}

void loop() {
Serial.println("Animasi LED dari kiri ke kanan");
runningLED(AnimKiriKanan, 100);
delay(1000);

Serial.println("Animasi LED dari kiri ke kanan satu per satu");


runningLED(AnimKiriKananSendirian, 100);
delay(1000);
Serial.println("Animasi LED dari tengah ke samping");
runningLED(AnimTengahSamping, 100);
delay(1000);

Serial.println("Animasi LED dari samping ke tengah");


runningLED(AnimSampingTengah, 100);
delay(1000);
}

/*----------------------
Function Running LED
-----------------------*/
void runningLED(animLED al, int tunda) {
MematikanSemuaLED();
switch (al) {
//LED hidup dari kiri ke kanan
case AnimKiriKanan:
for (uint8_t i = 0; i <= 8; i++) {
srChannel.set(i, HIGH); // LED ke-i hidup
delay(tunda); // tuda 100 ms
}
break;

//LED hidup dari kanan ke kiri


case AnimKiriKananSendirian:
for (uint8_t i = 0; i <= 8; i++) {
if (i > 0) srChannel.set(i - 1, LOW);
srChannel.set(i, HIGH);
delay(tunda);
}
break;

case AnimTengahSamping:
srChannel.set(4, HIGH);
delay(tunda);

srChannel.set(3, HIGH);
srChannel.set(5, HIGH);
delay(tunda);

srChannel.set(2, HIGH);
srChannel.set(6, HIGH);
delay(tunda);
srChannel.set(1, HIGH);
srChannel.set(7, HIGH);
delay(tunda);

srChannel.set(0, HIGH);
srChannel.set(8, HIGH);
delay(tunda);
break;

//LED hidup dari samping ke tengah


case AnimSampingTengah:
srChannel.set(0, HIGH);
srChannel.set(8, HIGH);
delay(tunda);

srChannel.set(1, HIGH);
srChannel.set(7, HIGH);
delay(tunda);

srChannel.set(2, HIGH);
srChannel.set(6, HIGH);
delay(tunda);

srChannel.set(3, HIGH);
srChannel.set(5, HIGH);
delay(tunda);

srChannel.set(4, HIGH);
delay(tunda);
break;
}

MematikanSemuaLED();
}

/*--------------------
Mematikan semua LED
---------------------*/
void MematikanSemuaLED() {
//Set seluruh kanal LED 0 - LED 8 menjadi OFF
for (uint8_t i = 0; i <= 8; i++) {
srChannel.set(i, LOW);
}
}

Anda mungkin juga menyukai