Академический Документы
Профессиональный Документы
Культура Документы
PERCOBAAN 3
DISUSUN OLEH :
DANANG ALFIAN TRI CAHYO ( 140536605287 )
INDAH ARSITA SARI ( 140536606542 )
AMRINA ULFA ( 140536606139 )
FAKULTAS TEKNIK
JURUSAN TEKNIK ELEKTRO
PRODI S1 TEKNIK ELEKTRO
UNIVERSITAS NEGERI MALANG
September 2015
MODUL III
ANTARMUKA MIKROKONTROLER DENGAN SEVEN SEGMEN
TUJUAN
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).
Digit gfedcba g f e D c b a
0 0x3F off on on on on on on
6 0x7D on on on on on off 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
2. Program SEGMEN2
4. Program SEGMEN3
T0
T1
T2
T3
T5
T6
T7
T8
T0
T1
T2
T3
Segmen Kiri Segmen Kanan
T4
T5
T6
T7
T8
Segmen Kiri Segmen Kanan
T9
#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);
}
}
}
}
}
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.
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