Você está na página 1de 15

ANTARMUKA MIKROKONTROLER DENGAN SEVEN SEGMENT(7-S)

A. TUJUAN
• Membuat program aplikasi menggunakan media tampilan 7-Segment.
• Membuat proses kontrol display seven segment menggunakan SWITCH
sebagai set (H) dan reset (L) program.

A. DASAR TEORI

Identifikasi Segment
Mempermudah pembuatan program untuk menampilkan nyala LED 7-Segment

Suatu segment yang digunakan menampilkan angka. Kumpulan dari beberapa dioda
dengan identifikasi a, b, c, d, e, f, g dan dp (Decimal Point).

C
A
Rangkaian dioda pada 7-Segment

Jenis Seven Segment


• Common Katoda

Common Cathode 0.56 Inch (14.20mm)


• Common Anoda

Common Anode 0.56 Inch (14.20mm)

Jenis 7-S
Menggunakan Multitester
Common Anoda
• Kalibrasi multitester pada skala 1 Ohm
• Tempatkan penyindik hitam (-) pada multitester ke 7S bagian tengah (CA).
• Tempatkan penyindik merah (+) pada multitester ke 7S bagian yang lain
secara berpindah pindah maka akan menyalakan lampu tiap bagian pada 7S
begitu seterusnya sampai lampu segment dapat menyala secara berurutan.
• Semua anoda LED seven segmen disatukan dihubungkan ke VCC, kemudian
LED dihubungkan melalui tahanan pembatas arus keluar dari penggerak
LED.
• COMMON ANODA berada pada kondisi AKTIF LOW (led akan
menyala/aktif bila diberi logika 0).

Common Katoda
• Kalibrasi multitester pada skala 1 Ohm
• Tempatkan penyindik merah (+) pada multitester ke 7S bagian tengah (CC).
• Tempatkan penyindik hitam (-) pada multitester ke 7 segment bagian kawat
yang lain secara berpindah pindah maka akan menyalakan lampu tiap bagian
pada 7S begitu seterusnya sampai lampu segment dapat menyala secara
berurutan
• Semua katoda disatukan dihubungkan ke GROUND.
• COMMON KATODA berada pada kondisi AKTIF HIGH (led akan
menyala/aktif bila diberi logika 1).

Prinsip Kerja 7S dgn Driver

• Input biner dimasukan ke dalam decoder, kemudian decoder mengkonversi


bilangan biner tersebut menjadi decimal, yang akan ditampilkan pada 7
segment.
• Sebuah decoder atau seven segment driver akan mengatur aktif tidaknya led-
led dalam seven segment sesuai dengan nilai biner yang diberikan.
• Dekoder BCD ke 7 segment :
◦ menyalakan 7 segment mode common anoda IC TTL 74LS47
◦ menyalakan 7 segment mode common katoda IC TTL 74LS48.

1. Konfigurasi pin IC 74LS47

• Dekoder BCD ke 7 segment mempunyai


masukan berupa bilangan BCD 4-bit
(masukan A0, A1, A2 dan A3).
• Bilangan BCD ini dikodekan sehingga
membentuk kode tujuh segmen yang akan
menyalakan ruas-ruas yang sesuai pada
seven segment.
• Masukan BCD diaktifkan oleh logika ‘1’,
dan keluaran dari dekoder 7447 adalah aktif
low.
• Tiga masukan ekstra juga ditunjukkan pada konfigurasi pin IC 7447 yaitu
lamp test, blanking input/ripple blanking output, dan ripple blanking input.
• Lamp Test, berfungsi mengeset display, bila diberi logika ‘0’ maka semua
keluaran IC = berlogika 0 dan Seven segment = angka delapan (8).
• BI'/RBO‘, berfungsi mematikan keluaran dari IC. Bila diberi logika “0” maka
semua keluaran IC = berlogika “1” dan seven segment akan mati.
• RBI' , berfungsi mematikan keluaran dari IC jika semua input berlogika “0”.
Bila diberi logika “0”, maka semua keluaran IC akan berlogika “1” dan seven
segment akan mati.

◦ Driver Common Katoda

◦ Driver Common Anoda

Tabel kebenaran IC 74LS47


A. PERALATAN
• Arduino Uno Board
• 1 buah Seven segmet common Anoda
• Kabel jumper

A. RANGKAIAN

Vcc
B. HASIL PERCOBAAN

1. Program 1a switch (digit) {


case 0:
int A=13, B=12, C=11, D=10; digit0 ();
int E=9, F=8, G=7, DP=6; break;
void setup() { case 1:
pinMode(A, OUTPUT); digit1 ();
pinMode(B, OUTPUT); break;
pinMode(C, OUTPUT); case 2:
pinMode(D, OUTPUT); digit2 ();
pinMode(E, OUTPUT); break;
pinMode(F, OUTPUT); case 3:
pinMode(G, OUTPUT); digit3 ();
pinMode(DP, OUTPUT); break;
} case 4:
void digit0 () { digit4 ();
digitalWrite(A, LOW); break;
digitalWrite(B, LOW); case 5:
digitalWrite(C, LOW); digit5 ();
digitalWrite(D, LOW); break;
digitalWrite(E, LOW); case 6:
digitalWrite(F, LOW); digit6 ();
digitalWrite(G, HIGH); break;
digitalWrite(DP, HIGH); case 7:
}; digit7 ();
void digit1 () { break;
digitalWrite(A,HIGH); case 8:
digitalWrite(B, LOW); digit8 ();
digitalWrite(C, LOW); break;
digitalWrite(D, HIGH); case 9:
digitalWrite(E, HIGH); digit9 ();
digitalWrite(F, HIGH); break;
digitalWrite(G, HIGH); default:
digitalWrite(DP, HIGH); break;
}; };
void digit2 () { };
digitalWrite(A,LOW); void loop() {
digitalWrite(B, LOW); for (int i=0;i<10;i++) { //counting
digitalWrite(C, HIGH); from 0 to 9
digitalWrite(D, LOW); showdigit(i);
digitalWrite(E, LOW); delay (1000); // 1000ms= 1s delay
digitalWrite(F, HIGH); if (i%2) { digitalWrite(DP,
digitalWrite(G, LOW); HIGH); }
digitalWrite(DP, HIGH); else {digitalWrite(DP, LOW); };
}; };
void digit3 () { };
digitalWrite(A,LOW);
digitalWrite(B, LOW);
digitalWrite(C, LOW);
digitalWrite(D, LOW);
digitalWrite(E, HIGH);
digitalWrite(F, HIGH);
digitalWrite(G, LOW);
digitalWrite(DP, HIGH);
};

void digit4 () {
digitalWrite(A,HIGH);
digitalWrite(B, LOW);
digitalWrite(C, LOW);
digitalWrite(D, HIGH);
digitalWrite(E, HIGH);
digitalWrite(F, LOW);
digitalWrite(G, LOW);
digitalWrite(DP, HIGH);
};
2. Program 1b

byte seven_seg_digits[10][7] = {
{ 0,0,0,0,0,0,1 }, // = 0
{ 1,0,0,1,1,1,1 }, // = 1
{ 0,0,1,0,0,1,0 }, // = 2
{ 0,0,0,0,1,1,0 }, // = 3
{ 1,0,0,1,1,0,0 }, // = 4
{ 0,1,0,0,1,0,0 }, // = 5
{ 0,1,0,0,0,0,0 }, // = 6
{ 0,0,0,1,1,1,1 }, // = 7
{ 0,0,0,0,0,0,0 }, // = 8
{ 0,0,0,0,1,0,0 }, // = 9
};
void setup() {
pinMode(13, OUTPUT);
pinMode(12, OUTPUT);
pinMode(11, OUTPUT);
pinMode(10, OUTPUT);
pinMode(9, OUTPUT);
pinMode(8, OUTPUT);
pinMode(7, OUTPUT);
pinMode(6, OUTPUT);
writeDot(1); // padamkan tanda "dot" (titik)
}
void writeDot(byte dot) {
digitalWrite(6, dot);
}
void sevenSegWrite(byte digit) {
byte pin = 13;
for (byte segCount = 0; segCount < 7; ++segCount) {
digitalWrite(pin, seven_seg_digits[digit][segCount]);
++pin;
}
}
void loop() {

for (byte count = 0; count < 10 ; ++count) {


sevenSegWrite(count);
delay(1000);
}

for (byte count = 9; count > 0; --count) {


sevenSegWrite(count-1);
delay(1000);
}
}

3. Program 2

void setup()
{
for (int i=0; i < 8; i++)
{
pinMode(segmentPins[i], OUTPUT);
}
}
void loop()
{
for (int i=0; i <=10; i++)
{
showDigit(i);
delay(1000);
}
delay(2000);
}
void showDigit (int number)
{
boolean isBitSet;

for (int segment=1; segment < 8; segment++)


{
IsBitSet= bitRead(numeral[number], segment);
digitalWrite(segmentPins[segment], isBitSet);
}
}
C. LATIHAN
1. Buatlah eksperimen dengan meggunakan 1 driver (IC TTL 74LS47) dan sebuah
7S Common Anoda.

Rangkaian:

Program:

int input[]={13,12,11,10}; counter=1+counter;


}
void setup() { }
for(int a=0;a<4;a++){ void displayBinary(byte numToShow){
pinMode(input[a], OUTPUT); for(int b=0;b<4;b++){
} if(bitRead(numToShow,b)==1){
} digitalWrite(input[b], HIGH);
void loop() { } else{
for(int counter=0;counter<10;counter+ digitalWrite(input[b], LOW);
+){ }
displayBinary(counter); }
delay(300); }
Hasil:
Latihan ini menghasilkan output pada 7 segment bilangan genap. Jadi outputnya
adalah 0, 2, 4, 6, 8 lalu kembali lagi ke 0, dst.

2. Buatlah eksperimen dengan meggunakan 1 driver (IC TTL 74LS48) dan sebuah
7S Common Katoda.

Rangkaian:

Program:

int inputs[4]={10,11,12,13}; void drivers(byte digit) {


int number; for (byte Count = 0; Count < 4;
byte BCD[10][4]={ Count++) {
{0,0,0,0}, digitalWrite(inputs[Count],
{0,0,0,1}, BCD[digit][Count]);
{0,0,1,0}, }
{0,0,1,1}, }
{0,1,0,0},
{0,1,0,1}, void loop() {
{0,1,1,0}, for(int number=0;number<10;number+
{0,1,1,1}, +){
{1,0,0,0}, drivers(number);
{1,0,0,1}, delay(1000);
}; }
}
void setup() {
for (int a=0; a<4;a++){
pinMode(inputs[a],OUTPUT);
}
Hasil:
Latihan ini menghasilkan output pada 7 segment angka 0-9 lalu kembali lagi ke 0
dst.

3. Buat aplikasi kontrol 7S Common Anoda dan driver 74LS74 dengan


menggunakan saklar sebagai input untuk Set data (Up/down-counter) dan RESET
data.
Rangkaian:

Program:
int input[]={13,12,11,10};
int saklar=6;
int buttonState=0;

void setup() {
for(int a=0;a<4;a++){
pinMode(input[a], OUTPUT);
}
pinMode(saklar,INPUT);
}

void loop() {
buttonState=digitalRead(saklar);
if(buttonState==HIGH){
for(int counter=0;counter<10;counter++){
displayBinary(counter);
delay(300);
}
}

else if(buttonState==LOW){
for(int counter=9;counter>=0;counter--){
displayBinary(counter);
delay(300);
}
}
}
void displayBinary(byte numToShow){
for(int b=0;b<4;b++){
Hasil:
Latihan ini menghasilkan output pada 7 segment angka 0-9 (up counter) dan 9-0
(down counter). Untuk saklar bagian bawah digunakan untuk up/down counter,
sedangkan saklar atas digunakan untuk reset.
D. ANALISA DAN KESIMPULAN

Analisa
Berdasarkan percobaan yang telah dilakukan untuk membuat program
aplikasi menggunakan tampilan 7 segment dan membuat proses kontrol display 7
segment, diperoleh hasil percobaan seperti di atas.

PROGRAM-1a. Pada percobaan ini, membuat program menampilkan


angka 0-9 pada 7 segment menggunakan common anoda. pertama, dibuat variable
A, B, C, D, E, F, G, DP yang diberi nilai dari pin-pin arduino. Pada fungsi void
setup(), variable-variable tersebut diberikan mode pin sebagai OUTPUT.
Selanjutnya dibuat fungsi-fungsi untuk menampilkan angka 0-9. pada fungsi-
fungsi tersebut, variable diberikan kondisi HIGH ataupun LOW yang mana HIGH
berarti mati dan LOW berarti nyala (common anoda). Kita ambil contoh pada
fungsi void digit0(), variable A-F diberikan kondisi LOW (nyala) dan variable G
& DP diberi kondisi HIGH (mati), sehingga ketika fungsi digit0() dipanggil
dihasilkan output berupa angka 0. pada fungsi void showdigit(), terdapat kondisi
switch case yang membawa nilai dari fungsi loop(). Sehingga pada fungsi void
loop(), data yang dibawa pada fungsi showdigit adalah 0-9. maka dihasilkan
output angka 0-9 dengan delay 1000ms. jika sudah sampai pada angka 9, output
akan kembali ke angka 0.

PROGRAM-1b. Pada percobaan ini, membuat program menampilkan


angka 0-9 pada 7 segment menggunakan common anoda. Pertama dibuat array
dua dimensi dengan nama seven_seg_digits yang merupakan kondisi HIGH dan
LOW untuk pin-pin pada seven segment sesuai dengan dimensi pertamanya. Pada
fungsi void setup(), variable-variable tersebut diberikan mode pin sebagai
OUTPUT. Lalu, ada fungsi sevenSegWrite yang berfungsi untuk memberi nilai
HIGH atau LOW pada tiap-tiap pin arduino yang terhubung pada seven segment
tergantung dari nilai angka yang diberikan pada fungsi tersebut.. Lalu pada fungsi
void loop nya terdapat for yang dimana berfungsi untuk menghitung mulai dari 0
hingga 9 yang dimana nilai dari looping ini akan dibawa ke fungsi sevenSegWrite
untuk dioutputkan pada arduino dengan delay 1 detik, lalu for selanjutnya untuk
menghitung mulai 9 hinnga 0 dengan delay yang sama.

PROGRAM-2. Pada percobaan ini, membuat program menampilkan angka


0-9 pada 7 segment menggunakan common katoda. Pertama dibuat array dua
dimensi dengan nama numeral yang merupakan kondisi HIGH dan LOW untuk
pin-pin pada seven segment sesuai dengan dimensi pertamanya. Pada fungsi void
setup(), variable-variable tersebut diberikan mode pin sebagai OUTPUT. Pada
fungsi void loop terdapat looping for yang mengitung dari 0 hingga 10 dengan
delay 1 detik yang dimana variabel dari perhitungan tadi akan dibawa ke fungsi
showDigit, apabila loopin sudah mencapai angka 10 maka akan ada delay selama
2 detik untuk memulai loopin lagi dari 0. Pada fungsi showDigit sendiri berfungsi
untuk memberi nilai HIGH atau LOW pada tiap-tiap pin arduino yang terhubung
pada seven segment tergantung dari nilai angka yang diberikan pada fungsi
tersebut.

LATIHAN 1. Pada percobaan ini membuat sebuah program dengan


meggunakan 1 driver (IC TTL 74LS47) dan sebuah 7S Common Anoda. Pertama
dikenalkan array input yang merupakan pin-pin yang digunakan untuk output ke
driver. Pada fungsi void setup(), variable-variable tersebut diberikan mode pin
sebagai OUTPUT. Pada fungsi void loop terdapat looping for yang merupakan
looping untuk menghitung dari 0, 2, 4, 6, 8 lalu kembali ke 0 dengan delay 300
milidetik yang dimana variabel dari perhitungan tadi akan dibawa ke fungsi
displayBiner. Pada fungsi displayBiner sendiri berfungsi untuk memberi nilai
HIGH atau LOW pada tiap-tiap pin arduino yang terhubung pada driver seven
segment tergantung dari nilai angka yang diberikan pada fungsi tersebut.

LATIHAN 2. Pada percobaan ini membuat sebuah program dengan


meggunakan 1 driver (IC TTL 74LS48) dan sebuah 7S Common Katoda.
Pertama dikenalkan array input yang merupakan pin-pin yang digunakan untuk
output ke driver. Pada fungsi void setup(), variable-variable tersebut diberikan
mode pin sebagai OUTPUT. Pada fungsi void loop terdapat looping for yang
merupakan looping untuk menghitung dari 0 hingga 9 dengan delay 1000
milidetik yang dimana variabel dari perhitungan tadi akan dibawa ke fungsi
displayBiner. Pada fungsi driver sendiri berfungsi untuk memberi nilai HIGH
atau LOW pada tiap-tiap pin arduino yang terhubung pada driver seven segment
tergantung dari nilai angka yang diberikan pada fungsi tersebut.

LATIHAN 3. kontrol 7S Common Anoda dan driver 74LS74 dengan


menggunakan saklar sebagai input untuk Set data (Up/down-counter) dan RESET
data. Pertama dikenalkan array input yang merupakan pin-pin yang digunakan
untuk output ke driver dan saklar. Pada fungsi void setup(), variable-variable
tersebut diberikan mode pin sebagai OUTPUT dan INPUT. Pada fungsi loop
terdapat variabel buttonState yang membaca kondisi dari saklar HIGH atau LOW.
Apabila kondisi variabel saklar HIGH maka menghitung dari 0 hingga 9 dengan
delay 300 milidetik, sedangkan apabila kondisi variabel saklar LOW maka akan
menghitung dari 9 hingga 0 dengan delay 300 milidetik yang dimana variabel dari
perhitungan tadi akan dibawa ke fungsi displayBiner. Pada fungsi displayBiner
sendiri berfungsi untuk memberi nilai HIGH atau LOW pada tiap-tiap pin
arduino yang terhubung pada driver seven segment tergantung dari nilai angka
yang diberikan pada fungsi tersebut. Lalu pada rangkaiannya terdapat saklar yang
terhubung pada pin reset yang dimana apabila saklar tersebut ditekan akan
mereset program menjadi seperti awal dijalankan.

Kesimpulan
Berdarkan percobaan yang telah dilakukan, dapat disimpulkan bahwa
Seven Segment merupakan alat yang digunakan untuk mempermudah pembuatan
program untuk menampilkan nyala LED 7-Segment. Penggunaan driver
mempermudah proses datanya, karena tidak perlu mendefinikan datanya.

Você também pode gostar