Sebuah LED (Light
Emitting Diode) adalah sebuah sumber cahaya yang terbuat dari
semikonduktor. Biasanya LED digunakan sebagai lampu indikator dalam beberapa
piranti, dan mulai banyak digunakan sebagai penerangan/lampu. Gambar (a)
memperlihatkan bentuk fisik LED dan Gambar (b) simbol rangkaiannya.
(a)
Bentuk
fisik LED (b) Simbol elektronik
Untuk menyalakan sebuah LED perlu rangkaian tambahan yang
dapat dilihat pada gambar disamping. Rangkaian tersebut berupa sebuah
transistor yang difungsikan sebagai saklar dan dua buah resistor untuk pembatas
arus. Dalam modul I/O yang dipakai dalam praktikum, kedelapan rangkaian LED
tersebut dihubungkan ke sebuah soket jumper bernama OUTPUT.
Sebelum mulai menulis program dengan bahasa C, perlu
diketahui bahwa mikrokontroler ATmega8535 perlu diset isi register DDR dan PORT
agar bisa digunakan sebagaimana mestinya, seperti yang terlihat dalam Tabel 1.
Tabel 1
Konfigurasi Pengaturan Port I/O
|
|
DDR bit = 1
|
DDR bit = 0
|
|
PORT bit = 1
|
Output ; High
|
Input; R pull up
|
|
PORT bit = 0
|
Output; Low
|
Input, Floating
|
Untuk mengirim data byte dalam bentuk
bilangan desimal ke PORTX (X=A, B, C, D) digunakan statement
PORTX =
desimal;
PORTB = 128;
Untuk mengirim data byte dalam bentuk
bilangan biner ke PORTX (X=A, B, C, D) digunakan statement
PORTX =
0bdata;
PORTB = 0b10101010;
Untuk mengirim data per bit ke PORTX.Y
(X=A, B, C, D, dan Y=0, 1, 2 , 3, 4, 5, 6, 7) digunakan statement
PORTX.Y =
data;
PORTB.1
= 0;
Dimana data bisa berupa 0 atau 1.
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
·
1
buah kabel pita hitam
PROSEDUR
1. Rangkailah peralatan yang
diperlukan seperti pada gambar dibawah. Hubungkan soket jumper PORTA pada
minimum system dengan soket jumper OUTPUT pada I/O.
2. Buka program Code Vision
AVR
3. Buatlah project baru
dengan inisialisasi PORTA sebagai output dan output value = 0
4. Tambahkan file header
#include
<delay.h>
5. Tuliskan dalam program
utama sebagai berikut:
// Program LED1
PORTA=0x0f;
delay_ms(1000);
PORTA=0xf0;
delay_ms(1000);
6. Amati nyala LED dan
gambarkan nyala LED tersebut.
7. Ulangi langkah 3-6 untuk
program-program berikut:
//Program LED2
PORTA=0b00001111;
delay_ms(1000);
PORTA=0b11110000;
delay_ms(1000);
//Program LED3
PORTA=0x55;
delay_ms(1000);
PORTA=0xaa;
delay_ms(1000);
//Program LED4
PORTA=0b11100111;
delay_ms(1000);
PORTA=0b11011011;
delay_ms(1000);
PORTA=0b10111101;
delay_ms(1000);
PORTA=0b01111110;
delay_ms(1000);
PORTA=0b10111101;
delay_ms(1000);
PORTA=0b11011011;
delay_ms(1000);
//Program LED5
PORTA=0b00000001; PORTA.2=1;
delay_ms(1000);
PORTA=0b00000010; PORTA.1=1;
delay_ms(1000);
PORTA=0b00000100;
delay_ms(1000);
PORTA=0b00001000;
delay_ms(1000);
PORTA=0b00010000;
delay_ms(1000);
PORTA=0b00100000;
delay_ms(1000);
PORTA=0b01000000;
delay_ms(1000);
PORTA=0b10000000;
delay_ms(1000);
DATA HASIL PERCOBAAN
1. LED Program LED1
PORTA=0x0f;
delay_ms(1000);
PORTA=0xf0;
delay_ms(1000);
LED Program LED2
PORTA=0b00001111;
delay_ms(1000);
PORTA=0b11110000;
delay_ms(1000);
LED
Program LED3
PORTA=0x55;
delay_ms(1000);
PORTA=0xaa;
delay_ms(1000);
LED
Program LED4
PORTA=0b11100111;
delay_ms(1000);
PORTA=0b11011011;
delay_ms(1000);
PORTA=0b10111101;
delay_ms(1000);
PORTA=0b01111110;
delay_ms(1000);
PORTA=0b10111101;
delay_ms(1000);
PORTA=0b11011011;
delay_ms(1000);
1. LED Program
LED5
Program LED5
PORTA=0b00000001; PORTA.2=1;
delay_ms(1000);
PORTA=0b00000010; PORTA.1=1;
delay_ms(1000);
PORTA=0b00000100;
delay_ms(1000);
PORTA=0b00001000;
delay_ms(1000);
PORTA=0b00010000;
delay_ms(1000);
PORTA=0b00100000;
delay_ms(1000);
PORTA=0b01000000;
delay_ms(1000);
PORTA=0b10000000;
delay_ms(1000);
ANALISA DATA
1.
Analisa
Program LED1 – LED5!
Jawab :
Program LED1
PORTA=0x0f;
delay_ms(1000);
PORTA=0xf0;
delay_ms(1000);
Program pada sintax diatas akan
berjalan sesuai dengan perintah sintax yang telah kita buat seperti
pada program LED 1 yang hasil outputnya seperti yang ditunjukan gambar
diatas yaitu detik pertama pada LED 1 akan mengikuti perintah PORT A = 0x0f ini berarti
4 bagian pada LED kiri akan mati dn 4 bagian pada LED kanan akan menyala.
Begitu juga sebaliknya dengan perintah PORT A = 0xf0 maka 4 bagian pada LED
kiri akan menyala dan 4 bagian pada LED kanan mati, hal ini terjadi bergantian selama 1000ms atau 1detik, yang disintax yaitu
dilay ms(1000);.
Program LED2
PORTA=0b00001111;
delay_ms(1000);
PORTA=0b11110000;
delay_ms(1000);
Terjadi perbedaan dalam penggunaan
bilangan pada program LED1 menggunakan bilangan heksa sedangakan pada program
LED2 menggunakan bilangan biner, kemudian
pada programan LED 2 akan menghasilkan keluaran yang sama dengan LED 1,
karena perintah yang diberikan pada LED 1 dan
pada LED 2 adalah sama,letak perbedaan hanya pada penggunaan bilangan
heksa dan biner.
Program LED3
PORTA=0x55;
delay_ms(1000);
PORTA=0xaa;
delay_ms(1000);
Pada program LED 3 akan menghasilkan keluaran berupa 01010101 karena
perintah pertama pada program yang kita tulis PORT A = 0x55 kemudian led akan
berganti nilai menjadi PORT A = 0xaa
yang berarti kita akan memerintahkan LED untuk menghasilkan keluaran yang
senilai dengan program yang kita tulis yaitu 10101010 apabila ditulis dengan
biner. Delay tiap gantinya program adalah 1000ms atau 1 detik.
Program LED4
PORTA=0b11100111;
delay_ms(1000);
PORTA=0b11011011;
delay_ms(1000);
PORTA=0b10111101;
delay_ms(1000);
PORTA=0b01111110;
delay_ms(1000);
PORTA=0b10111101;
delay_ms(1000);
PORTA=0b11011011;
delay_ms(1000);
Pada
program LED4 ini menggunkan bilangan hexa decimal, hanya menggunakan portA
sebagai masukan dimana jika input diberi nilai 1 maka output akan bernilai 1 (lampu
menyala), apabila input 0 maka nilai outputnya akan benilai 0 (lampu mati),
terdapat jeda selama 1detik untuk berlanjud ke perintah program yang selanjutnya.
Program LED5
PORTA=0b00000001;
PORTA.2=1;
delay_ms(1000);
PORTA=0b00000010; PORTA.1=1;
delay_ms(1000);
PORTA=0b00000100;
delay_ms(1000);
PORTA=0b00001000;
delay_ms(1000);
PORTA=0b00010000;
delay_ms(1000);
PORTA=0b00100000;
delay_ms(1000);
PORTA=0b01000000;
delay_ms(1000);
PORTA=0b10000000;
delay_ms(1000);
Pada Percobaan LED 5, pada
percobaan ini sama dengan percobaan sebelumnya yaitu dengan menggunakan kode
biner dan ditambah kode sebagai berikut:
PORTA=0b00000001; PORTA.2=1; pada
perintah ini PORTA (bit.0) dan PORTA (bit.2) akan menyala karena disampingnya
PORTA=0b00000001 diberi perintah PORTA.2=1 tanpa menggunakan delay sehingga
akan dieksekusi secara bersamaan,
PORTA=0b00000010; PORTA.1=1 pada
perintah ini PORTA (bit.1) akan menyala karena diberi logika 1. kenapa yang
hidup hanya (bit.1)??? alasanya karena antara kode PORTA=0b00000010; dan PORTA.1=1
adalah satu bit yang sama sehingga led hanya menyala satu saja, sedangkan yang
lain mati karena diberikan logika 0.
pada perintah
selanjutnya PORTA (bit.2) akan menyala karena diberi logika 1 sedangkan yang
lain mati karena diberi logika 0. Dan selanjutnya PORTA (bit.3) akan menyala
karena diberi logika 1 sedangkan yang lain mati karena diberi logika 0 , LED
akan bergeser satu bit ke kiri pada tiap satu detik, hal ini dikarenakan kita
menggunakan delay 1000ms.
2.
Apakah
persamaan dan perbedaan PROGRAM
LED1 dan PROGRAM LED2?
Jawab : pada
dasarnya program LED 1 dan LED 2 memiliki pemberian nilai dan output yang sama
pada PORTA, letak perbedaanya adalah penggunaan bilangan heksadesimal pada LED
1 yaitu
PORTA=0x0f; Menggunakan
Heksadesimal
delay_ms(1000);
PORTA=0xf0;
delay_ms(1000);
sedangkan pada
program LED 2 menggunakan bilangan biner,
PORTA=0b00001111; Menggunakan Biner
delay_ms(1000);
PORTA=0b11110000;
delay_ms(1000);
3.
Instruksi
apa yang digunakan untuk mengeluarkan data ke LED?
Intruksi yang digunakan
untuk mengeluarkan data ke LED adalah nilai yang diberikan pada PORTA seperti
contoh
PORTA=0b00001111
delay_ms(1000);
PORTA=0b11110000
delay_ms(1000);
program diatas memberikan intruksi untuk
menyalakan LED.0-LED.3 ( LED4 - LED7 mati ) pada awal program yang kemudian
akan menyalakan LED6-LED7 ( LED) - LED3 mati ) dengan selisih 1 detik.
4.
Mengapa
ada jeda waktu sekitar 1 detik antara tampilan LED yang pertama dengan yang
berikutnya?
Jawab : karena
pada program kita menggunakan atau menambahkan delay yaitu pemberian jeda waktu untuk mengeksekusi listing program
berikutnya / selanjutnya, pada delay program tersebut menggunakan satuan ms
(millisecond), sehingga 1000 ms = 1 s (detik) maka dari itu setiap dijalankan
programnya, nyala led akan berpindah tiap 1 detik.
KESIMPULAN
Langkah pertama dalam
pemberian program pada microkontroler adalah menginisalisasi PORT, yaitu
fungsinya untuk menentukan pengaturan fungsi PORT sebagai input atau output.
Pada praktikum PORTA di inisialisasikan sebagai output yaitu dengan cara
DDRA=FFH. Dalam pemberian nilai input kita dapat menggunakan kode digital yaitu
kode heksadesimal dan biner. bila kita menggunkan kode heksimal maka harus
diawali dengan 0x sedangkan kode biner menggunakan awalan 0b.
Dalam praktikum ini digunakan 2 jenis bilangan yaitu heksadesimal dan biner untuk menentukan hasil keluaran atau perintah
dari program. Pada hakikatnya bilangan ini mempunyai fungsi sama dalam
perintah, hanya berbeda dalam penulisannya.
Hasil yang dikeluarkan dari LED adalah output dalam bentuk logika dengan
masukan program dari listing program yang telah dilakukan sebelumnya, yaitu
jika masukan berupa bilangan heksa desimal maka bentuk keluaran atau output
pada LED adalah bentuk dalam bilangan binernya misalkan 0x0f = 0b00001111
dengan logika tersebut jika keluarannya nol (0) maka LED akan mati dan begitu
juga sebaliknya jika keluarannya logika satu (1) maka LED akan menyala. Lama
perpindahan antara listing program yang satu dengan listing program yang
lainnya tergantung pada delay masukan pada program yang dibuat.
Pada interface output LED kita menggunakan aktif high sehingga led akan
menyala apabila diberi logika 1, disini kita juga menggunakan delay sehingga
pada file header harus dideklarasikan terlebih dahulu dengan #include <delay.h>
DAFTAR
RUJUKAN
Lestari,
Dyah.2015. MODUL PRAKTIKUM SISTEM MIKROKONTROLER PRODI S1 TEKNIK ELEKTRO A 14.
Malang.Universitas Negeri Malang.