PERCOBAAN
I
ANTARMUKA
MIKROKONTROLER DENGAN
LIGHT EMITTING DIODE (LED)
I.
TUJUAN
1. Mengetahui
dan memahami cara mengantarmukakan mikrokontroler dengan rangkaian LED.
2. Mengetahui
dan memahami bagaimana memrogram mikrokontroler untuk menyalakan LED.
II.
DASAR
TEORI
1.
LED
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 1 memperlihatkan bentuk fisik LED dan simbol
rangkaiannya.
(a)LED warna merah (b) Simbol elektronik
Gambar
2.1 LED
Untuk menyalakan sebuah LED perlu
rangkaian tambahan yang dapat dilihat dalam Gambar 2.2. 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.
Gambar
2.2 Rangkaian LED
2.
PERINTAH DASAR MENGELUARKAN DATA
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 heksadesimal 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.
III.
ALAT
DAN BAHAN YANG DIGUNAKAN
- 1 set Personal Computer/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 USB Type B
- 1 buah kabel pita hitam
IV.
PROSEDUR
- Rangkailah peralatan yang diperlukan seperti dalam Gambar 2.3. Hubungkan soket jumper PORTB pada minimum system dengan soket jumper OUTPUT pada I/O.
Gambar
2.3 Blok diagram antarmuka mikrokontroler
- Buka program Code Vision AVR
- Buatlah project baru dengan inisialisasi PORTA sebagai output (DDRA = FFH) dan output value = 0 (PORTA=00H) sehingga pada program bagian inisialisasi PORTA terlihat sebagai berikut:
PORTA=0x00;
DDRA=0xff;
- Tambahkan file header
#include
<delay.h>
- Tuliskan dalam program utama sebagai berikut:
// Program LED1
PORTA=0x0f;
delay_ms(1000);
PORTA=0xf0;
delay_ms(1000);
- Amati nyala LED dan gambarkan nyala LED tersebut.
Lampu LED semua mati
- 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);
V.
DATA
HASIL PERCOBAAN
- Program LED1
Nyala
|
Nyala
|
Nyala
|
Nyala
|
Mati
|
Mati
|
Mati
|
Mati
|
4 lampu LED menyala
selama 1 detik di lanjut 4 lampu LED yang lain menyala selama 1 detik secara
bergantian
- Program LED2
Nyala
|
Nyala
|
Nyala
|
Nyala
|
Mati
|
Mati
|
Mati
|
Mati
|
Mati
|
Mati
|
Mati
|
Mati
|
Nyala
|
Nyala
|
Nyala
|
Nyala
|
4 lampu LED menyala
selama 1 detik di lanjut 4 lampu LED yang lain menyala selama 1 detik secara
bergantian
- Program LED3
Mati
|
Nyala
|
Mati
|
Nyala
|
Mati
|
Nyala
|
Mati
|
Nyala
|
Nyala
|
Mati
|
Nyala
|
Mati
|
Nyala
|
Mati
|
Nyala
|
Mati
|
Bergantian selama 1
detik antara LED 1 dengan LED yang
lain
- Program LED4
Nyala
|
Nyala
|
Mati
|
Nyala
|
Nyala
|
Mati
|
Nyala
|
Nyala
|
Nyala
|
Mati
|
Nyala
|
Nyala
|
Nyala
|
Nyala
|
Mati
|
Nyala
|
Mati
|
Nyala
|
Nyala
|
Nyala
|
Nyala
|
Nyala
|
Nyala
|
Mati
|
Mati
|
Mati
|
Nyala
|
Nyala
|
Nyala
|
Nyala
|
Mati
|
Nyala
|
Nyala
|
Nyala
|
Mati
|
Nyala
|
Nyala
|
Mati
|
Nyala
|
Nyala
|
- Program LED5
Mati
|
Mati
|
Mati
|
Mati
|
Nyala
|
Mati
|
Mati
|
Nyala
|
Mati
|
Mati
|
Mati
|
Mati
|
Mati
|
Mati
|
Nyala
|
Mati
|
Mati
|
Mati
|
Mati
|
Mati
|
Mati
|
Nyala
|
Mati
|
Mati
|
Mati
|
Mati
|
Mati
|
Mati
|
Nyala
|
Mati
|
Mati
|
Mati
|
Mati
|
Mati
|
Mati
|
Nyala
|
Mati
|
Mati
|
Mati
|
Mati
|
Mati
|
Mati
|
Nyala
|
Mati
|
Mati
|
Mati
|
Mati
|
Mati
|
Mati
|
Nyala
|
Mati
|
Mati
|
Mati
|
Mati
|
Mati
|
Mati
|
Nyala
|
Mati
|
Mati
|
Mati
|
Mati
|
Mati
|
Mati
|
Mati
|
VI.
PEMBAHASAN
1.
Buatlah kesimpulan
hasil masing-masing program.
A.
PROGRAM
LED1
// 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 table
perumpamaan 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);.
B.
PROGRAM
LED2
//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 sama.
C.
PROGRAM
LED3
//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 dan PORT A = 0xaa yang
berarti kita memerintahkan LED untuk menghasilkan keluaran yang senilai dengan
program yang kita tulis yaitu 10101010. Sedangkan delay 1000ms berarti jeda
waktu nyala program pertama, kedua dan keberikutnya 1 detik.
D.
PROGRAM
LED4
//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
selanjudnya.
E.
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);
Pada program LED5 ini sama seperti
dalam program LED4 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 berikutnya.
2. Apakah
persamaan dan perbedaan PROGRAM LED1 dan PROGRAM LED2?
Jawab :
Persamaan : 4 lampu LED menyala
selama 1 detik di lanjut 4 lampu LED yang lain menyala selama 1 detik secara
bergantian (Perintahnya
sama).
Perbedaan : Terletak pada penggunaaan bilangan dalam
masing-masing program. Pada
program LED 1 kode program di tulis menggunakan bilangan hexa desimal sedangkan
pada program LED 2 kode program di tulis menggunakan bilangan biner.
3. Instruksi
yang digunakan untuk mengeluarkan data ke LED adalah
Jawab :
AUTO
PROGRAM pada khazama AVR Programmer
4. Mengapa
ada jeda waktu sekitar 1 detik antara tampilan LED yang pertama dengan yang
berikutnya?
Jawab
:
Karena pada program di terdapat kode
“delay_ms(1000); “ yang berarti ada jeda per 1000
ms atau sama dengan 1mnt untuk
menampilkan keperintah program LED
berikutnya.
VII.
KESIMPULAN
Dalam praktikum ini digunakan 2
bilangan untuk menentukan hasil keluaran atau perintah dari program yang kita
buat yaitu bilangan biner dan bilangan hexa decimal. Pada hakikatnya bilangan
ini mempunyai fungsi sama dalam perintah, hanya berbeda dalam penulisannya.
Hasil yang dikeluarkan dari LED
adalah output dalm 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.
0 komentar:
Posting Komentar