LAPORAN PRAKTIKUM
MIKROPROSESOR
PERCOBAAN 3
ANTARMUKA MIKROKONTROLER DENGAN
SEVEN SEGMEN

Disusun oleh :
Alfan Edwin Wibowo 120534431435
Tegar Wira Abdilla 120534431477
Adiba Hasna P 120534431459
S1 PENDIDIKAN TEKNIK ELEKTRO
JURUSAN TEKNIK ELEKTRO
FAKULTAS TEKNIK
UNIVERSITAS NEGERI MALANG
FEBRUARI 2014
ANTARMUKA MIKROKONTROLER DENGAN SEVEN
SEGMEN
A. Tujuan :
v
Mengetahui
dan memahami cara mengantarmukakan mikrokontroler dengan rangkaian seven
segment.
v
Mengetahui
dan memahami bagaimana memrogram mikrokontroler untuk menampilkan karakter ke
seven segment.
B. Dasar
Teori :
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).

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
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.
C.
Alat dan Bahan yang digunakan :
v 1 set PC/Laptop yang sudah berisi
program Code Vision dan Khazama
v 1 buah catu daya DC +5V
v 1 buah multimeter
v 1 buah ISP Downloader AVR
v 1 buah sistem minimum AVR
v 1 buah I/O
v 1 buah kabel printer USB
v 2 buah kabel pita hitam
D.
Langkah Kerja :
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).
E.
Data Hasil :
1.
Program SEGMEN1

2.
Program SEGMEN2
Program SEGMEN2
3.
Gabungan SEGMEN1 dan SEGMEN2
delay 100ms
While (1)
{
PORTC.7=1; //nonaktifkan seven segment kiri
PORTC.6=0;
//mengaktifkan seven segment kanan
PORTB=0x7f;//menampilkan
data angka 8
delay_ms(10);
PORTC.7=0;
//mengaktifkan seven segment kiri
PORTC.6=1;
//nonaktifkan seven segment kanan
PORTB=0x66;//menampilkan data angka 4
delay_ms(10);
}
4.
Program SEGMEN3
//Membuat counter 0-9 di seven
segment 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);
}
}
5.
Program SEGMEN3 delay 100ms
//Membuat counter 0-9 di seven
segment 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(100);
}
}
6.
Source code Program SEGMEN4
// 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, kiri;
while (1)
{
// Place your code here
kanan=0;
kiri=0;
for (kiri=0;kiri<10;kiri++)
{for (kanan=0;kanan<10;kanan++)
{
PORTC.7=0;
PORTC.6=1;
PORTB=bil[kiri];
delay_ms(10);
PORTC.7=1;
PORTC.6=0;
PORTB=bil[kanan];
delay_ms(100);
}
}
7.
Source code Program SEGMEN5
Int kanan, kiri, x;
while (1)
{
for (kiri=0;kiri<5;kiri++) //berisi angka puluhan NIM
if (kiri==5&&kanan==9) goto turun;//kiri=puluhan,kanan=satuan
else
{
{
for (kanan=0;kanan<10;kanan++)
{
{
for(x=0;x<10;x++)
{
PORTC.7=0;
PORTC.6=1;
PORTB=bil[kiri];
delay_ms(10);
PORTC.7=1;
PORTC.6=0;
PORTB=bil[kanan];
delay_ms(10);
}
}
}
}
}
turun:
for (kiri=5;kiri>=0;kiri--) //berisi angka puluhan NIM
{
for (kanan=9;kanan>=0;kanan--) //berisi angka satuan NIM
{
for(x=0;x<10;x++)
{
PORTC.7=0;
PORTC.6=1;
PORTB=bil[kiri];
delay_ms(10);
PORTC.7=1;
PORTC.6=0;
PORTB=bil[kanan];
delay_ms(10);
}
}
}
}
}
F.
Analisa Data :
1.
Analisa
Program SEGMEN1 sampai SEGMEN5
Menampilkan seven
segment dengan cara scaning tergantung kita mengatur delay seberapa lama yang
kita inginkan. Karena makin lama delay yang kita atur maka akan makin mudah kelihatan
tampilan scannya.
2.
Instruksi
apa yang digunakan untuk mengeluarkan data ke seven segment?
Pertama di
global variable di beri deklarasi
“unsigned char bil[n]=...” n diisi banyaknya data dan
titik – titik diisi datanya.
“int
kanan, kiri;” untuk menambah satu data pada label kanan atau kiri.
3.
Instruksi
apa yang digunakan untuk mengontrol nyala seven segment?
· PORTC.7=1;
//menonaktifkan seven
segment kiri
· PORTC.6=0;
//mengaktifkan seven segment
kanan
· PORTB=0x...; //menampilkan data angka
4.
Jika
nilai delay pada Gabungan Program SEGMEN1 dan SEGMEN2 diperbesar, apa yang
terjadi pada tampilan seven segment?
· Pergantian segmen akan lama dan
kelihatan pergantian.
5.
Jika
nilai delay pada program SEGMEN3 diperkecil, apa yang terjadi pada tampilan
seven segment?
·
Pergantian angka pada
segmen akan lebih cepat.
Tidak ada komentar:
Posting Komentar