Anda di halaman 1dari 14

LAPORAN PRAKTIKUM

ANTARMUKA MIKRONTROLER DENGAN SEVEN SEGMENT


Disusun untuk Memenuhi Matakuliah Workshop Mikroprosesor
Yang Dibimbing oleh
Bu Dyah Lestari,S.T.M.Eng.

Disusun Oleh:
RIZKI NUR ARIFIN (150531507817)
UNIVERSITAS NEGERI MALANG
FAKULTAS TEKNIK
JURUSAN TEKNIK ELEKTRO
PRODI D3 TEKNIK ELEKTRO
SEPTEMBER 2016

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


gfedc
Digit
G f E d c b a
ba
o o o o o o
0
0x3F of
n n n n n n
o o
1
0x06 of of of of
of
n n
O
o o
o o
2
0x5B
of
of
n
n n
n n
O
o o o o
3
0x4F
of of
n
n n n n
O o
o o
4
0x66
of of
of
n n
n n
O o
o o
o
5
0x6D
of
of
n n
n n
n
O o o o o
o
6
0x7D
of
n n n n n
n
o o o
7
0x07 of of of of
n n n
O o o o o o o
8
0x7F
n n n n n n n
O o
o o o o
9
0x6F
of
n n
n n n n

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.
2.
3.
4.
5.

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.
Buka aplikasi Code Vision AVR
Buatlah file project (.prj) kemudian pilih IC yang digunakan
(ATmega8535) dan atur clock 4.000 Mhz. (seperti praktikum
sebelumnya)
Buatlah file source (.c) kemudian hubungkan file project dengan file
source seperti pada praktikum sebelumnya.
Tambahkan file header

6.

Buatlah program utama dan inisialisasikan PORTB sebagai output


(DDRB = FFH) dan output value = 0 (PORTB=00H), dan PORTC.0PORTC.3 sebagai input, PORTC.4-PORTC.7 sebagai output (DDRC =
F0H) dan (PORTC=F0H) sehingga inisialisasi PORTB dan PORTC
terlihat sebagai berikut:

7.

Tuliskan program seven segmen 1 dalam program utama tepatnya di


dalam while (1).

8.

Compile dan Build program jika ada yang error perbaiki program.
Masukkan file hex menggunakan Khanzama AVR Programer. Klik
auto program, amati nyala seven segment.

9.

Hapus program seven segmen 1 dan tuliskan program seven


segmen 2 dalam program utama tepatnya di dalam while (1).

10.

Compile dan Build program jika ada yang error perbaiki program.
Masukkan file hex menggunakan Khanzama AVR Programer. Klik
auto program, amati nyala seven segment.
Hapus program seven segmen 2. Gabungkan program seven
segmen 1 dan seven segmen 2.
Compile dan Build program jika ada yang error perbaiki program.
Masukkan file hex menggunakan Khanzama AVR Programer. Klik
auto program, amati nyala seven segment.
Ubah nilai delay untuk masing-masing program seven segment
menjadi 100 ms
Compile dan Build program jika ada yang error perbaiki program.
Masukkan file hex menggunakan Khanzama AVR Programer. Klik
auto program, amati nyala seven segment.
Hapus gabungan program seven segmen 1 dan program seven
segmen 2
Masukkan variabel berikut diluar program utama.

11.
12.
13.
14.
15.

16.

Masukkan variabel berikut di dalam program utama.

17.

Tuliskan program seven segmen 3 pada program utama tepatnya di


dalam while (1)

18.

Compile dan Build program jika ada yang error perbaiki program.
Masukkan file hex menggunakan Khanzama AVR Programer. Klik
auto program, amati nyala seven segment.
Ubah nilai delay untuk program SEGMEN3 menjadi 100 ms
Compile dan Build program jika ada yang error perbaiki program.
Masukkan file hex menggunakan Khanzama AVR Programer. Klik
auto program, amati nyala seven segment.
Buat program SEGMEN4 untuk menampilkan 00-99 di kedua seven
segmen sehingga kedua angka tampil bersamaan.
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).

19.
20.
21.
22.

DATA HASIL PERCOBAAN


1.
2.
3.
4.
5.
6.
7.

Program SEGMEN1
Program SEGMEN2
Gabungan SEGMEN1 dan SEGMEN2 delay 100ms
Program SEGMEN3
Program SEGMEN3 delay 100ms
Source code Program SEGMEN4
Source code Program SEGMEN5

ANALISA DATA
1.
2.
3.

Analisa Program SEGMEN1 sampai SEGMEN5


Instruksi apa yang digunakan untuk mengeluarkan data ke seven
segment?
Instruksi apa yang digunakan untuk mengontrol nyala seven
segment?

4.
5.

Jika nilai delay pada Gabungan Program SEGMEN1 dan SEGMEN2


diperbesar, apa yang terjadi pada tampilan seven segment?
Jika nilai delay pada program SEGMEN3 diperkecil, apa yang terjadi
pada tampilan seven segment?

DATA HASIL PERCOBAAN


1. Program SEGMEN 1

2. Program SEGMEN 2

3. Gabungan SEGMEN 1 dan SEGMEN 2 delay 100 ms


while (1)
{
PORTC.7=1;
PORTC.6=0;
PORTB=0x7f;
delay_ms(10);
}
PORTC.7=0;
PORTC.6=1;
PORTB=0x66;
delay_ms(10);
}

4. Program SEGMEN 3

5. Program SEGMEN 3 delay 100 ms

6. Source code program SEGMEN 4


while (1)
{
//
for (kiri=0; kiri<=9; kiri++) {
for (kanan=0; kanan<9; kanan++) {
for (x=0; x<=10; x++) {
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 SEGMEN 5 dengan NIM 817


for(kiri=0;kiri<=9;kiri++){
for(kanan=0;kanan<=9;kanan++){
for(x=0;x<=100;x++){
PORTC.7=0;
PORTC.6=1;
PORTB=bil[kiri];
delay_ms(3);
PORTC.7=1;
PORTC.6=0;
PORTB=bil[kanan];
delay_ms(3);
}
if(kiri==1&&kanan==7)
break;
}
if(kiri==1&&kanan==7)
break;

ANALISA DATA
1. Analisa Program SEGMEN1 sampai SEGMEN5
a. Program Segmen1
Pada program segmen1, PORTC.7 sebagai DO2( seven
segmen kiri) diberi logika 1 untuk menonaktifkan seven segment
sebelah kiri. PORTC.6 sebagai DO1( seven segmen sebelah
kanan) diberi logika 0 untuk mengaktifkan seven segment
sebelah kanan untuk mengeluarkan output dari input dari
mikrokontroler.PORTB yang sudah diprogram sebagai output.
PORTB=0x6d; // dimaksudkan memunculkan angka 5 pada seven
segmen sebelah kanan.
Untuk memunculkan angka 5, maka yang akan diaktifkan adalah
bagian a,f,g,c,d.
Dp
G
f
e
d
c
b
a
0
1
1
0
1
1
0
1
Penulisan dalam PORTB dapat dituliskan dalam bentuk
biner: PORTB = 0b01101101 ; atau dalam bentuk heksadesimal
adalah PORTB =0x6d ;. Fungsi delay dalam program ini tidak ada

pengaruh karena hanya memunculkan satu karakter angka 5


dalam seven segmen

Dp
0

b. Program Segmen2
Pada program segmen2, PORTC.7 dilogikankan nol untuk
mengaktifkan seven segment sebelah kiri. PORTC.6 dilogikakan
satu untuk menonaktifkan seven segment sebelah kanan. Data
akan ditunjukkan pada seven segment sebelah kiri akan
menunjukkan angka 2. PORTB=0x5b; // dimaksudkan
memunculkan angka 2 pada seven segmen sebelah kiri.
Untuk memunculkan angka 2, maka yang akan diaktifkan adalah
bagian a,b,g,e,d.
g
F
e
D
C
b
a
1
0
1
1
0
1
1
Penulisan dalam bentuk desimal adalah PORTB =
0b01011011 ; apabila ditulis dalam bentuk heksa desimal adalah
PORTB = 0x5b ; fungsi delay dalam program ini tidak ada
pengaruh karena hanya memunculkan satu karakter angka 2
dalam seven segmen.
c. Program Segmen1 dan Segmen2
Pada program, PORTC.7 sebagai DO2 (seven segment kiri)
dilogikakan 1 untuk menonaktifkan seven segment sebelah kiri.
PORTC.6 sebagai DO1( seven segmen sebelah kanan) dilogikakan
0 untuk mengaktifkan seven segment sebelah kanan untuk
mengeluarkan output dari input dari mikrokontroler.PORTB yang
sudah deprogram sebagai output. PORTB=0x6d; // dimaksudkan
memunculkan angka 5 pada seven segmen sebelah kanan.
Setelah delay selama 100 ms maka akan dijalankan
perintah untuk memunculkan angka 2 pada seven segment.
Selanjutnya, dengan mengeset PORTC.7 dengan logika nol untuk
mengaktifkan seven segmen sebelah kiri. Dan mengeset PORTC.6
dengan logika satu untuk menonaktifkan seven segment sebelah
kanan. Dan memberi perintah pada PORTB. PORTB=0x5b; //
dimaksudkan memunculkan angka 2 pada seven segmen sebelah
kiri.
Maka program akan muncul angka 5 di seven
segmen sebelah kanan, setelah jeda 100ms maka akan muncul
angka 2 di seven segment sebelah kiri.
d. Program Segmen3
Pada program segmen3, program counter dijalankan pada
seven segment sebelah kanan dengan mengeset PORTC.6=0.
Kemudian PORTB= bil[kanan]; bilangan yang didefinisikan yang
memunculkan angka 0 sampai 9 akan dilakukan counter 0-9
dengan jeda waktu 100 ms. Memunculkan angka 0-9 secara urut
dengan jeda waktu 100 ms.

Pada program segmen3, dalam program didefinisikan


variabel global unsigned char bil[10] = {0x3f, 0x06, 0x5b, 0x4f,
0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f}; dan mendefinisikan
deklarasi local bertipe integer dengan nama kanan. Dengan
menggunakan pernyataan for yang akan melakukan perulangan
berapa kali sesuai yang diinginkan. Yang diberi nilai awal kanan
adalah 0 sampai nilai akhir kanan kurang dari 10. Dan
melakukan penambahan dari nilai awal.
2. Instruksi apa yang digunakan untuk mengeluarkan data ke seven
segment?
PORTC.7 dan PORTC.6 yang di set 1 atau 0
3. Instruksi apa yang digunakan untuk mengontrol nyala seven
segment?
Inputan pada PORTB = nilai
Misalnya : PORTB = 0x5b
4. Jika nilai delay pada Gabungan Program SEGMEN1 dan SEGMEN2
diperbesar, apa yang terjadi pada tampilan seven segment?
Seven segmen kiri dan kanan akan memunculkan nilai
bergantian dengan periode waktu yang cukup lama.
5. Jika nilai delay pada program SEGMEN3 diperkecil, apa yang terjadi
pada tampilan seven segment?
Seven segmen kiri dan kanan akan memunculkan nilai
bergantian dengan periode waktu yang lebih singkat (jika nilai
sangat kecil, bahkan pergantian nilai tidak bisa di ikuti oleh
penglihatan mata).

KESIMPULAN
Dari hasil praktikum yang di lakukan dapat di simpulkan bahwa cara
mengantarmukakan mikrokontroler dengan rangkaian penampil
seven segment adalah sebagai berikut :
a. Menyusun program untuk mengantarmukakan rangkaian
penampil seven segment dengan program Code Vision AVR .
Membuat project baru dengan inisialisasi PORT-PORT yang akan
digunakan sesuai dengan tampilan seven segment yang
diinginkan.
b. Program yang sudah dibuat ditransfer dari computer ke dalam
mikrokontroler dengan menggunakan ISP downloader.
c. Jika program yang dibuat sudah benar, maka seven segment
akan menyala sesuai dengan yang diinginkan.
2.
Cara memprogram mikrokontroler untuk menampilkan
karakter ke penampil seven segment adalah sebagai berikut :
a. Inisialisasi PORT yang akan digunakan.
Inisialisasinya adalah sebagai berikut :

PORTB=0x00;
DDRB=0xf;
//portb sebagai output, 0b11111111
PORTC=0xf0;
DDRC=0xf0; // portc sebagai input dan output, 0b11110000
Untuk mengaktifkan segment sebelah kanan maka dalam main
program harus diberi script :
PORTC.7=1;
Sebaliknya untuk mengaktifkan segment sebelah kiri maka dalam
main program harus diberi script :
PORTC.7=0
Instruksi yang digunakan untuk mengeluarkan data ke seven
segmen adalah :
PORTC.7 dan PORTC.6 yang di set 1 atau 0
Instruksi yang digunakan untuk mengontrol nyala seven segmen
adalah
Inputan pada PORTB = nilai
Misalnya : PORTB = 0x5b

DAFTAR PUSTAKA
Modul 4.2010. Antarmuka Mikrokontroler Dengan Seven
Segment.Malang:Universitas Negeri Malang, Jurusan Teknik Elektro.
Malvino, Albert Paul. 1983. Elektronika Komputer Digital. Jakarta :
Erlangga.

Beri Nilai