Anda di halaman 1dari 20

LAPORAN

PRAKTIKUM SISTEM MIKROKONTROLER

PERCOBAAN 3

ANTARMUKA MIKROKONTROLER DENGAN SEVEN SEGMEN

Disusun untuk Memenuhi Matakuliah Praktikum Sistem Mikrokontroler Yang Dibimbing


oleh Ibu Dyah Lestari, ST., M.Eng.,

DISUSUN OLEH :
DANANG ALFIAN TRI CAHYO ( 140536605287 )
INDAH ARSITA SARI ( 140536606542 )
AMRINA ULFA ( 140536606139 )

TGL PRAKTIKUM : 17 September 2015

FAKULTAS TEKNIK
JURUSAN TEKNIK ELEKTRO
PRODI S1 TEKNIK ELEKTRO
UNIVERSITAS NEGERI MALANG

September 2015
MODUL III
ANTARMUKA MIKROKONTROLER DENGAN SEVEN SEGMEN

TUJUAN

 Mengetahui dan memahami cara mengantarmukakan mikrokontroler dengan


rangkaian seven segment.
 Mengetahui dan memahami bagaimana memrogram mikrokontroler untuk
menampilkan karakter ke seven segment.

SEVEN SEGMENT

Penampil seven segment adalah sebuah piranti penampil untuk menampilkan angka
desimal. Penampil seven segment banyak digunakan dalam jam digital, meter elektronik,
dan piranti elektronik yang lain. Gambar 3.1 memperlihatkan bentuk fisik dan layout dasar
penampil seven segment. Penampil seven segment terdiri atas 8 LED yang disusun seperti
dalam Gambar 3.1(b). Setiap LED diidentifikasi sebagai huruf a, b, c, d, e, f, g, yang
dimulai dari huruf a di sebelah atas. Di sebelah kanan terdapat satu LED tambahan yang
digunakan sebagai koma (dp).

(a) Penampil seven segment (b) Layout LED


Gambar 3.1 Seven segment
Untuk menampilkan sebuah karakter, minimal 2 LED harus dinyalakan. Tabel 3.1
memperlihatkan kode heksadesimal untuk menampilkan angka 0 sampai 9.
Dalam modul I/O yang dipakai dalam praktikum, seven segment yang digunakan
ada 2 buah, semuanya bertipe common anoda. Kedua seven segment tersebut dimultipleks
sehingga data diperoleh dari satu kaki (D0-D7), sedangkan untuk menyalakannya
digunakan kaki kontrol yang berbeda (DO1 dan DO2). Rangkaian lengkap seven segment
dapat dilihat dalam Gambar 3.2.

Tabel 3.1 Kode heksadesimal untuk angka 0-9

Digit gfedcba g f e D c b a

0 0x3F off on on on on on on

1 0x06 off off off off on on off

2 0x5B on off on on off on on

3 0x4F on off off on on on on

4 0x66 on on off off on on off

5 0x6D on on off on on off on

6 0x7D on on on on on off on

7 0x07 off off off off on on on

8 0x7F on on on on on on on

9 0x6F on on off on on on on
Gambar 3.2 Rangkaian penampil seven segment

Dalam Gambar 3.2, kaki a, b, c, d, e, f, g, dp dihubungkan ke soket jumper DATA 7S,


sedangkan kaki kontrol (DO1 dan DO2 dihubungkan dengan soket jumper I/P S KEY.

ALAT DAN BAHAN YANG DIGUNAKAN


 1 set PC/Laptop yang sudah berisi program Code Vision dan Khazama
 1 buah catu daya DC +5V
 1 buah multimeter
 1 buah ISP Downloader AVR
 1 buah sistem minimum AVR
 1 buah I/O
 1 buah kabel printer USB
 2 buah kabel pita hitam
PROSEDUR
1. Hubungkan soket jumper PORTB pada minimum system dengan soket jumper
DATA7S pada I/O dan soket jumper PORTC pada minimum system dengan soket
jumper I/P S KEY pada I/O.
2. Buka program Code Vision AVR
3. Buatlah project baru dengan inisialisasi PORTB sebagai output (DDRB = FFH) dan
output value = 0 (PORTB=00H), dan PORTC.0-PORTC.3 sebagai input,
PORTC.4-PORTC.7 sebagai output (DDRC = F0H) dan (PORTC=F0H) sehingga
pada program bagian inisialisasi PORTB dan PORTC terlihat sebagai berikut:
PORTB=0x00;
DDRB=0xff; //portb sebagai output, 0b11111111
//untuk data 7s
PORTC=0xf0;
DDRC=0xf0; //portc sebagai input dan output, 0b11110000
//untuk kontrol DO1, DO2
4. Tuliskan dalam program utama sebagai berikut:
PROGRAM SEGMEN1
//Menampilkan angka 8 pada seven segmen sebelah kanan.
while (1)
{
PORTC.7=1; //nonaktifkan seven segment kiri
PORTC.6=0; //aktifkan seven segmen kanan
PORTB=0x7f; //tampilkan data angka 8
delay_ms(10);
}
5. Amati nyala seven segment.
6. Ulangi langkah 3-5 untuk program berikut:
PROGRAM SEGMEN2
//Menampilkan angka 4 pada seven segmen sebelah kiri.
while (1)
{
PORTC.7=0; //aktifkan seven segment kiri
PORTC.6=1; //nonaktifkan seven segmen kanan
PORTB=0x66; //tampilkan data angka 4
delay_ms(10);
}
7. Gabungkan kedua program di atas dan lihat nyala seven segmen.
8. Ubah nilai delay untuk masing-masing seven segment menjadi 100 ms dan amati
tampilan seven segmen.
9. Ulangi langkah 3-5 untuk program berikut:
PROGRAM SEGMEN3
//Membuat counter 0-9 di segmen sebelah kanan
// Declare your global variables here
unsigned char bil[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
// Declare your local variables here
int kanan;
while (1)
{
// Place your code here
kanan=0;
for (kanan=0;kanan<10;kanan++)
{
PORTC.7=1;
PORTC.6=0;
PORTB=bil[kanan];
delay_ms(1000);
}
}
10. Ubah nilai delay untuk program SEGMEN3 menjadi 100 ms dan amati tampilan
seven segmen.
11. Buat program SEGMEN4 untuk menampilkan 00-99 di kedua seven segmen
sehingga kedua angka tampil bersamaan.
12. Buat program SEGMEN5 untuk menampilkan 00 hingga dua digit terakhir NIM
anda (counter up) lalu menghitung mundur dari dua digit NIM terakhir anda ke 00
(counter down). (kedua seven segment menyala bersamaan).
DATA HASIL PERCOBAAN
1. Program SEGMEN1

Segmen Kiri Segmen Kanan

2. Program SEGMEN2

Segmen Kiri Segmen Kanan

3. Gabungan SEGMEN1 dan SEGMEN2 delay 100ms

Saat Pertama Segmen menyala (T1)

Segmen Kiri Segmen Kanan

Saat Kedua Segmen menyala (T2)

Segmen Kiri Segmen Kanan


Segmen kiri dan segmen kanan menyala bergantian selama 0.1 detik ( 100ms ), dengan
segmen kanan hidup terlebih dahulu menunjukan angka 8, lalu berganti segmen kiri
menunjukan angka 4, Saat segmen kanan menyala segmen kiri mati (Off) begitu juga
sebaliknya.

4. Program SEGMEN3

T0

Segmen Kiri Segmen Kanan

T1

Segmen Kiri Segmen Kanan

T2

Segmen Kiri Segmen Kanan

T3

Segmen Kiri Segmen Kanan


T4

Segmen Kiri Segmen Kanan

T5

Segmen Kiri Segmen Kanan

T6

Segmen Kiri Segmen Kanan

T7

Segmen Kiri Segmen Kanan

T8

Segmen Kiri Segmen Kanan


T9

Segmen Kiri Segmen Kanan


Segmen kanan berganti tiap 1 detik karena menggunakan delay 1000ms.

5. Program SEGMEN3 delay 100ms

T0

Segmen Kiri Segmen Kanan

T1

Segmen Kiri Segmen Kanan

T2

Segmen Kiri Segmen Kanan

T3
Segmen Kiri Segmen Kanan

T4

Segmen Kiri Segmen Kanan

T5

Segmen Kiri Segmen Kanan

T6

Segmen Kiri Segmen Kanan

T7

Segmen Kiri Segmen Kanan

T8
Segmen Kiri Segmen Kanan

T9

Segmen Kiri Segmen Kanan


Output sama namun pergantian angka lebih cepat yaitu 0.1 detik.

6. Source code Program SEGMEN4


Jawab :

#include <mega8535.h>
#include <delay.h>
unsigned char
bil[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
void main (void)
{PORTB=0x00;
DDRB=0xff;
PORTC=0xf0;
DDRC=0xf0;

while (1)
{
int kanan;
int kiri;
int u;

kiri=0;
for (kiri=0;kiri<10;kiri++)
{
for (kanan=0;kanan<10;kanan++)
{for (u=0;u<10;u++)
{
PORTC.7=1;
PORTC.6=0;
PORTB=bil[kanan];
delay_ms(10);
PORTC.7=0;
PORTC.6=1;
PORTB=bil[kiri];
delay_ms(10);
}
}
}
}
}

7. Source code Program SEGMEN5


#include <mega8535.h>
#include <delay.h>
void main(void)
{unsigned char
bil[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
int kanan, kiri, a, n;

atas:
for (kiri=0;kiri<10;kiri++)
{
for (kanan=0; kanan<10;kanan++)
{
for(a=0;a<10;a++)
{
if(kanan==5&&kiri==8)
goto bawah;

{
PORTD.7=1;
PORTD.6=0;
PORTA=bil[kanan];
delay_ms(100);
PORTD.7=0;
PORTD.6=1;
PORTA=bil[kiri];
delay_ms(100);
}
}
}
}
bawah:
for (kiri=1;kiri>=0;kiri--)
{
if(kiri==1)
n=3;
else
n=9;
for (kanan=n; kanan>=0;kanan--)
{
for(a=1;a<10;a++)
{
if(kanan==0&&kiri==0);
{

PORTD.7=1;
PORTD.6=0;
PORTA=bil[kanan];
delay_ms(100);
PORTD.7=0;
PORTD.6=1;
PORTA=bil[kiri];
delay_ms(100);
}
}
}
}
}
}
ANALISA DATA
1. Analisa Program SEGMEN1 sampai SEGMEN5
Segmen 1
Pada program segmen 1 ini adalah menampilkan angka 8 pada segmen kanan
sehingga kita harus menginisialisasi dulu port port mana yang akan digunakan
sebagai input maupun output, pada percobaan ini kita menggunakan portb sebagai
output, namun outputnya diparalel sehingga kita harus menonaktifkan salah satu
segmen sehingga hanya salah satu segmen saja yang hidup, agar dapat menampilkan
angka 8 maka portb diberi nilai 0x7f.

Segmen 2
Pada program segmen 2 ini sama dengan program segmen 1 namun berbeda segmen
yang diaktifkan, jika pada program pertama segmen kanan yang aktif sedangkan
program kedua segmen kiri yang aktif dan menunjukan angka 4 karena portb diberi
nilai 0x66.

Segmen 3
Program pada segmen 3 adalah counter up 0—9 dengan menggunakan segmen
kanan, program ini menggunakan instruksi for dengan kondisi awal angka 0 dan
terus bertambah hingga jumlah maksimal angka 9, pergantian angka terjadi tiap 1
detik karena delaynya menggunakan 1000ms.

Segmen 4
Pada segmen 4 adalah pengembangan dari counter up segmen 3, jika pada segmen 3
hanya menampilkan 0—9 menggunakan 1 segmen, pada segmen 4 ini menampilkan
00—99 dengan mengunakan 2 segmen, saat segmen kanan mencapai angka 9 maka
segmen kiri akan bertambah 1 nilainya.
Segmen 5
Pada segmen 4 adalah modifikasi dari counter up segmen 4, jika pada segmen 4
menampilkan 00—99 dengan mengunakan 2 segmen, sedangkan pada program
segmen 5 adalah counter up sampai menunjukan angka terakhir NIM dalam
percobaan ini angka 58, nah program ini akan menghitung hingga mencapai angka
58, kemudian dari angka 58 program angkan berhitung mundur hingga mencapai
angka 00.

2. Instruksi apa yang digunakan untuk mengeluarkan data ke seven segment?


Jawab : instruksi yang digunakan untuk mengeluarkan data ke seven segmen adalah
nilai yang diberikan pada port b, sebagai contoh menampilkan angka 4, lihat
instruksi setelah menentukan segmen mana yang menyala. Portb diberi nilai 0x66 =
angka 4.
while (1)
{
PORTC.7=0; //aktifkan seven segment kiri
PORTC.6=1; //nonaktifkan seven segmen kanan
PORTB=0x66; //tampilkan data angka 4
delay_ms(10); }
3. Instruksi apa yang digunakan untuk mengontrol nyala seven segment?
Jawab : Instruksi yang digunakan untuk mengontrol nyala seven segmen ini berada
pada portc kaki 7 dan kaki 6 yang diinisialisai seperti berikut :
PORTC=0xf0;
DDRC=0xf0; //portc sebagai input dan output, 0b11110000 //untuk kontrol DO1,
DO2
Kemudian untuk mengatur seven segmen kiri atau kanan yang menyala (karena kaki
input kedua seven segmen diparalel) digunakan pogram berikut
while (1)
{
PORTC.7=1; //nonaktifkan seven segment kiri
PORTC.6=0; //aktifkan seven segmen kanan
PORTB=0x7f; //tampilkan data angka 8
delay_ms(10);
}
Jadi yang digunakan untuk mengontrol nyala seven segmen adalah portc.7 (untuk
segmen kiri) dan portc.6 (untuk segmen kanan)

4. Jika nilai delay pada Gabungan Program SEGMEN1 dan SEGMEN2 diperbesar,
apa yang terjadi pada tampilan seven segment?
Jawab : Delay adalah jeda, sehingga apabila dirubah nilainya entah itu diperbesar
atau diperkecil maka akan berpengaruh pada pergantian antara instruksi progam atas
dengan istruksi program dibawahnya, sebagai contoh pada program gabungan
segmen 1 dan segmen 2 ini, apabila nilai delay diperbesar maka pergantian angka
pada seven segmen akan lebih lama, jika delaynya = 1000ms maka pergantian
angka akan terjadi tiap 1 detik dan apabila dirubah menjadi 100ms maka akan
berganti amgka tiap 0.1 detik, sehingga dapat disimpulkan apabila nilai delay
diperbesar maka pergantian nyala segmen kiri dan segmen kanan akan lebih lama
.

5. Jika nilai delay pada program SEGMEN3 diperkecil, apa yang terjadi pada tampilan
seven segment?
Jawab : seperti penjelasan pada jawaban soal nomer 4, apabila nilai delay diperkecil
maka pergantian angka pada seven segmen akan lebih cepat.
KESIMPULAN
Penampil seven segment adalah sebuah piranti penampil untuk menampilkan angka
desimal, Untuk menampilkan sebuah karakter, minimal 2 LED harus dinyalakan, sebelum
mengunakan seven segmen untuk menampilkan karakter kita harus meninisialisasi port
terlebih dahulu, Inisialisasi PORT yang akan digunakan. Inisialisasinya adalah sebagai
berikut :
PORTB=0x00;
DDRB=0xff; //portb sebagai output, 0b11111111
//untuk data 7s
PORTC=0xf0;
DDRC=0xf0; //portc sebagai input dan output, 0b11110000
//untuk kontrol DO1, DO2

Instruksi yang digunakan untuk mengontrol nyala seven segmen ini berada pada portc kaki
7 dan kaki 6 seperti beikut :
PORTC=0xf0;
DDRC=0xf0; //portc sebagai input dan output, 0b11110000 //untuk kontrol DO1,
DO2
Kemudian untuk mengatur seven segmen kiri atau kanan yang menyala (karena kaki input
kedua seven segmen diparalel) digunakan pogram berikut
while (1)
{
PORTC.7=1; //nonaktifkan seven segment kiri
PORTC.6=0; //aktifkan seven segmen kanan
PORTB=0x7f; //tampilkan data angka 8
delay_ms(10);
}
instruksi yang digunakan untuk mengeluarkan data ke seven segmen adalah nilai yang
diberikan pada port b, sebagai contoh menampilkan angka 8, lihat instruksi setelah
menentukan segmen mana yang menyala. Portb diberi nilai 0x7f = angka 8