You are on page 1of 19

Laporan Microcontroler

“Menampilkan NIM pada 7 segmen”

Disusun oleh:
Kelompok : Maxtor
Adi Pramono (2B / 01 / 0731130019 )
Lina Ernani (2B / 15 / 0731130046)
Nurul Furqon R (2B / 20 / 0731130073)

JURUSAN TEKNIK ELEKTRO


PROGRAM STUDI TEKNIK TELEKOMUNIKASI

POLITEKNIK NEGERI MALANG


2008
A. Tujuan
1. Menampilkan NIM pada 7 segmen common anoda dengan kendali
microcontroler Atmega 8535.
2. Mengetahui cara menampilkan angka pada 7 segmen yang ditulis dalam
hexadecimal
3. Pemprograman bahasa C untuk memprogram microcontroller AT mega 8535
dengan bantuan Code Vision AVR.

B. Teori dasar input output


7 segmen common anoda piranti display yang mempuyai input dalam bentuk
level tegangan , jika tegangan pada pin tersebut adalah “high” maka led yang
terhubung pada pin tersebut mati dan sebaliknya jika tegangan pada pin tersebut
“low” maka led yang tersebut akan menyala.

Logika diatas dapat kita gunakan untuk mengkontrol 7 segmen untuk


menanmpilkan angka sesuai dengan kebutuhan kita dengan menggunakan kontrol
microcontroller Atmega 8535. Dengan menghubungkan salah satu port I/O
microcontroller pada 7 segmen kita dapat mengatur logika pin yang ada pada port
I/O ter sebut sehingga menampilkan angka pada 7 segmen sesuai dengan
kebutuhan kita.

Dibawah ini adalah tabel hubungan antara angka hexadecimal microcontroller


dan output tampilan pada 7 segmen display

Nyala 0
P P P P P P P P
Mati 1 7 6 5 4 3 2 1 0 tampilan
desim hexadesi
al mal . g f e d c b a 7 segmen
1 0xF9 1 1 1 1 1 0 0 1
b

2 0xA4 1 0 1 0 0 1 0 0
a

e
g

3 0xB0 1 0 1 1 0 0 0 0
a

4 0x99 1 0 0 1 1 0 0 1
f

g
c

5 1 0 0 1 0 0 1 0
0x92
a

g
c

6 0x82 1 0 0 0 0 0 1 0
a

e
g
c

1 1 1 1 1 0 0 0
0xF8
7
a

8 0x80 1 0 0 0 0 0 0 0
a

e
g
c

9 0x90 1 0 0 1 0 0 0 0
a

g
c

0 0xC0 1 1 0 0 0 0 0 0
a

C. Gambar Rangkaian
D. Flow Char
Start

Tombol0,
tombol1,
tombol2=1

Semua led
Menyala selama
5000ms

Tombol0==0

T F

Tombol1==0

T Tombol2==0

Tampilkan NIM Tampilkan NIM Tampilkan NIM Tampilkan


0731130073 0731130046 073113019 Led berkedip

E. Program
#include <mega8535.h>
#include <delay.h>
unsigned int led=255;
unsigned int tombol0=255,tombol1=255,tombol2=255;
void main(void)
{
PORTA=0xff;
DDRA=0x00;
PORTB=0x00;
DDRB=0xFF;
delay_ms(5000);
while (1)
{
tombol0=PINA.0;
tombol1=PINA.1;
tombol2=PINA.2;

if (tombol0==0) //furqon
{ PORTB=0xc0;
delay_ms(850);
PORTB=0xff;
delay_ms(450);

PORTB=0xf8;
delay_ms(850);
PORTB=0xff;
delay_ms(450);

PORTB=0xb0;
delay_ms(850);
PORTB=0xff;
delay_ms(450);

PORTB=0xf9;
delay_ms(850);
PORTB=0xff;
delay_ms(450);

PORTB=0xf9;
delay_ms(850);
PORTB=0xff;
delay_ms(450);

PORTB=0xb0;
delay_ms(850);
PORTB=0xff;
delay_ms(450);

PORTB=0xc0;
delay_ms(850);
PORTB=0xff;
delay_ms(450);

PORTB=0xc0;
delay_ms(850);
PORTB=0xff;
delay_ms(450);

PORTB=0xf8;
delay_ms(850);
PORTB=0xff;
delay_ms(450);

PORTB=0xb0;
delay_ms(850);
PORTB=0xff;
delay_ms(2500);}

else if(tombol1==0) //ninet


{ PORTB=0xc0;
delay_ms(850);
PORTB=0xff;
delay_ms(450);

PORTB=0xf8;
delay_ms(850);
PORTB=0xff;
delay_ms(450);

PORTB=0xb0;
delay_ms(850);
PORTB=0xff;
delay_ms(450);

PORTB=0xf9;
delay_ms(850);
PORTB=0xff;
delay_ms(450);

PORTB=0xf9;
delay_ms(850);
PORTB=0xff;
delay_ms(450);

PORTB=0xb0;
delay_ms(850);
PORTB=0xff;
delay_ms(450);

PORTB=0xc0;
delay_ms(850);
PORTB=0xff;
delay_ms(450);

PORTB=0xc0;
delay_ms(850);
PORTB=0xff;
delay_ms(450);

PORTB=0x99;
delay_ms(850);
PORTB=0xff;
delay_ms(450);

PORTB=0x82;
delay_ms(850);
PORTB=0xff;
delay_ms(2500);
}

else if (tombol2==0) //adi


{ PORTB=0xc0;
delay_ms(850);
PORTB=0xff;
delay_ms(450);

PORTB=0xf8;
delay_ms(850);
PORTB=0xff;
delay_ms(450);

PORTB=0xb0;
delay_ms(850);
PORTB=0xff;
delay_ms(450);

PORTB=0xf9;
delay_ms(850);
PORTB=0xff;
delay_ms(450);

PORTB=0xf9;
delay_ms(850);
PORTB=0xff;
delay_ms(450);

PORTB=0xb0;
delay_ms(850);
PORTB=0xff;
delay_ms(450);

PORTB=0xc0;
delay_ms(850);
PORTB=0xff;
delay_ms(450);

PORTB=0xc0;
delay_ms(850);
PORTB=0xff;
delay_ms(450);

PORTB=0xF9;
delay_ms(850);
PORTB=0xff;
delay_ms(450);

PORTB=0x90;
delay_ms(850);
PORTB=0xff;
delay_ms(2500);}
else
{ PORTB=led;
delay_ms(1500);
led=~led;
};

};
}

F. Analisis
1. Code DDRA=0x00 PORTA=0xff menunjukkan perintah port A sebagai input
dan nilai awalnya adalah 0xff yang berarti semua pin pada PORTA akan
mempuyai logika “high”.
2. Code DDRB=0xff PORTB=0x00 menunjukkan perintah port B sebagai output
dan nilai awalnya adalah 0x00 yang berati semua led pada 7 segmen display
menyala.
3. Perintah delay_ms (5000) menahan agar tampilan nyala led diatas tetap
menyala selama 5 detik.
4. Pada baris bawahnya adalah inisiasi atau deklarasi pin input .
5. Perintah if pada baris selanjutnya mempunyai arti jika PINA.0 ( pin pertama
pada port A) berlogika “low” maka outpot pada 7 segmen menampilkan NIM
0731130073.
6. Jika PINA.1 berlogika “low” maka 7 segmen akan menampilkan NIM
0731130046.
7. Jika PINA.2 berlogika “low” maka 7 segmen akan menam[ilkan NIM
0731130019.
8. Bila PINA.0, PINA.1, dan PINA.2 tidak ada yang berlogika “low” , maka
output pada 7 segmen menampilkan semua led berkedip terus menerus sampai
salah satu dari ketiga pin input diatas ada yang berlogika “low”
9. Perintah pada penjelasan nomor 4 sampai nomor 8 akan diulangi terus
menerus sampai ada interupsi reset dari pin reset, dan eksekusi program
kembali mulai baris yang pertama.

G. Kesimpulan
1. Microcontroller dapat difungsikan sebagai pengendali 7 segmen display
dengan cara mengatur logika dari pin-pin dari port I/O microcontroller
tersebut.
2. Pemilihan keluaran / respons output dari microcontroller dapat dikendalikan
dari luar dengan cara membaca level tegangan dari masing – masing pin input.
3. Cara penulisan code untuk 7 segmen common anoda dan common katoda
berbeda hal ini dikarenakan logikan pin yang dibutuhkan untuk
mengendalikan led – led pada dua 7 segmen tersebut berbeda.

You might also like