https://wokwi.com/projects/400666074265217025
Untuk menggunakan dua 7-segment display dengan dua IC shift register 74HC595, kita akan menghubungkan data dari kedua shift register ke segmen-segmen 7-segment display sesuai dengan urutan. Satu shift register akan mengendalikan satu 7-segment display.
Skema Koneksi
Koneksi Arduino ke 74HC595:
DS
(Data) dari satu 74HC595 → Pin 11 ArduinoST_CP
(Latch) dari kedua 74HC595 → Pin 12 ArduinoSH_CP
(Clock) dari kedua 74HC595 → Pin 13 ArduinoOE
(Output Enable) dari kedua 74HC595 → GNDMR
(Master Reset) dari kedua 74HC595 → VCC
Koneksi antar 74HC595:
Q7'
dari 74HC595 pertama (pin 9) keDS
(Data) dari 74HC595 kedua
Koneksi 74HC595 ke 7-Segment Display:
74HC595 pertama (untuk digit puluhan):
- QA → Segment A dari 7-segment display pertama
- QB → Segment B dari 7-segment display pertama
- QC → Segment C dari 7-segment display pertama
- QD → Segment D dari 7-segment display pertama
- QE → Segment E dari 7-segment display pertama
- QF → Segment F dari 7-segment display pertama
- QG → Segment G dari 7-segment display pertama
74HC595 kedua (untuk digit satuan):
- QA → Segment A dari 7-segment display kedua
- QB → Segment B dari 7-segment display kedua
- QC → Segment C dari 7-segment display kedua
- QD → Segment D dari 7-segment display kedua
- QE → Segment E dari 7-segment display kedua
- QF → Segment F dari 7-segment display kedua
- QG → Segment G dari 7-segment display kedua
Kode Program
Berikut adalah program lengkap yang disempurnakan untuk mengendalikan dua 7-segment display menggunakan dua 74HC595:
#include <EEPROM.h>
// Pin untuk mengendalikan 74HC595
const int dataPin = 11; // DS
const int latchPin = 12; // ST_CP
const int clockPin = 13; // SH_CP
// Pola bit untuk angka 0-9 untuk common anoda
const byte digitPatterns[10] = {
0b11000000, // 0
0b11111001, // 1
0b10100100, // 2
0b10110000, // 3
0b10011001, // 4
0b10010010, // 5
0b10000010, // 6
0b11111000, // 7
0b10000000, // 8
0b10010000 // 9
};
// Fungsi untuk mengirim data ke 74HC595
void shiftOutData(byte data1, byte data2) {
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, MSBFIRST, data2);
shiftOut(dataPin, clockPin, MSBFIRST, data1);
digitalWrite(latchPin, HIGH);
}
// Fungsi untuk menampilkan angka pada kedua 7-segment display
void displayNumber(int number) {
int tens = number / 10;
int ones = number % 10;
shiftOutData(digitPatterns[tens], digitPatterns[ones]);
}
void setup() {
pinMode(dataPin, OUTPUT);
pinMode(latchPin, OUTPUT);
pinMode(clockPin, OUTPUT);
}
void loop() {
// Tampilkan angka 00 hingga 99 dengan jeda 1 detik
for (int i = 0; i < 100; i++) {
displayNumber(i);
delay(1000); // Jeda 1 detik
}
}
Penjelasan Kode
- Pin Setup:
dataPin
,latchPin
, danclockPin
adalah pin-pin Arduino yang terhubung ke pin-pin yang sesuai di kedua IC 74HC595. - Array digitPatterns: Menyimpan pola bit untuk menyalakan segmen-segmen pada 7-segment display common anoda untuk angka 0 hingga 9.
- Fungsi shiftOutData: Mengirimkan dua byte data ke dua IC 74HC595, yang masing-masing mengendalikan satu 7-segment display.
data1
mengendalikan digit puluhan (74HC595 pertama) dandata2
mengendalikan digit satuan (74HC595 kedua). - Fungsi displayNumber: Mengambil angka yang akan ditampilkan, membaginya menjadi digit puluhan dan satuan, dan mengirimkan pola bit yang sesuai ke IC 74HC595.
- Setup dan Loop: Mengatur pin-pin sebagai output dan menjalankan loop yang menampilkan angka dari 00 hingga 99 dengan jeda 1 detik di antara setiap angka.
Dengan program ini, kedua 7-segment display akan menampilkan angka dari 00 hingga 99 secara berurutan dengan jeda 1 detik di antara setiap angka. Pastikan untuk memeriksa koneksi pin dengan benar agar program ini berjalan dengan baik.