Laporan praktikum ini menjelaskan cara mengantarmukakan mikrokontroler dengan LED dan memprogramnya untuk mengontrol nyala LED. Dilakukan 5 percobaan dengan menggunakan berbagai kode biner dan heksadesimal untuk mengatur nyala LED secara bergantian selama 1 detik setiap pergantian.
1 of 14
Downloaded 42 times
More Related Content
Laporan praktikum mikrokontroler dengan led
1. LAPORAN PRAKTIKUM 1
ANTARMUKA MIKROKONTROLER DENGAN LED
NAMA : ASADUL UMAM PURNAMA YUDA KUSUMA
NIM : 130532606600
KELOMPOK : IX
FAKULTAS TEKNIK
JURUSAN TEKNIK ELEKTRO
PRODI D3 TEKNIK ELEKTRONIKA
UNIVERSITAS NEGERI MALANG
September 2014
2. PERCOBAAN 1
ANTARMUKA MIKROKONTROLER DENGAN LED
1. TUJUAN
Mengetahui dan memahami cara mengantarmukakan mikrokontroler dengan rangkaian LED.
Mengetahui dan memahami bagaimana memrogram mikrokontroler untuk menyalakan LED.
Untuk mengetaui cara memrogram I/O dengan menggunakan aplikasi Khazama AVR Programmer dan Code Vision AVR.
2. DASAR TEORI
a. LED Diode pancaran cahaya atau biasa disebut LED (Light Emitting Diode) adalah sebuah sumber cahaya monokromatik yang terbuat dari bahan 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) Bentuk fisik LED (b) Simbol elektronik
Gambar 1
3. Gambar 2
Untuk menyalakan sebuah LED perlu rangkaian tambahan yang dapat dilihat pada Gambar 2 diatas. Rangkaian diatas merupakan sebuah transistor yang difungsikan sebagai saklar dan dua buah resistor sebagai pembatas arus. Dalam modul I/O yang dipakai dalam praktikum, kedelapan rangkaian LED tersebut dihubungkan ke sebuah soket jumper bernama OUTPUT. 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
4. Untuk mengirim data byte dalam bentuk bilangan desimal ke PORTX (X=A, B, C, D) digunakan statement
PORTX = decimal;
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.
3. ALAT DAN BAHAN YANG DIGUNAKAN
1 set PC/Laptop yang sudah berisi program Code Vision dan Khazama
1 buah ISP Downloader AVR
1 buah sistem minimum AVR
1 buah I/O
1 buah kabel printer USB
1 buah kabel pita hitam
4. PROSEDUR KERJA
1. Rangkailah peralatan yang diperlukan seperti pada gambar dibawah. Hubungkan soket jumper PORTA pada minimum system dengan soket jumper OUTPUT pada I/O.
5. 2. Buka program Code Vision AVR
3. 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;
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;
6. 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);
5. DATA HASIL PERCOBAAN
1. Tampilan nyala LED Program LED1
Program LED1
PORTA=0x0f;
7. delay_ms(1000);
PORTA=0xf0;
delay_ms(1000);
Tampilan nyala LED :
Setelah delay selama 1 detik berganti menjadi
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
2. Tampilan nyala LED Program LED2
Program LED2
PORTA=0b00001111;
delay_ms(1000);
PORTA=0b11110000;
delay_ms(1000);
Tampilan nyala LED :
Setelah delay selama 1 detik berganti menjadi
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
3. Tampilan nyala LED Program LED3
Program LED3
PORTA=0x55;
delay_ms(1000);
PORTA=0xaa;
delay_ms(1000);
Tampilan nyala LED :
Setelah delay selama 1 detik berganti menjadi
8. Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
4. Tampilan nyala LED 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);
Tampilan nyala LED :
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
5. Tampilan nyala LED Program LED4
Program LED5
PORTA=0b00000001; PORTA.2=1;
delay_ms(1000);
PORTA=0b00000010; PORTA.1=1;
delay_ms(1000);
PORTA=0b00000100;
Setelah delay ke 1
Setelah delay ke 2
Setelah delay ke 3
Setelah delay ke 4
Setelah delay ke 5
9. 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);
Tampilan nyala LED :
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
6. ANALISA DATA
1. Analisa Program LED1 LED5!
Saat pertamakali kita menginisialisasi PORTA dengan jalan menset DDRA = FFH maka kita menjadikannya sebagai output. Kita memberikan output value = 0 (PORTA=00H) maka lampu LED pada PORTA tidak ada yang menyala. Dengan menambahkan file library #include <delay.h> kita memberikan perintah pada program untuk melakukan waktu penundaan. Pada program utama kita tambahkan program sebagai berikut :
Pada Percobaan LED 1, pemberian nilai menggunakan kode heksadesimal dan ditambahkan kode seperti:
Setelah delay ke 1
Setelah delay ke 2
Setelah delay ke 3
Setelah delay ke 4
Setelah delay ke 5
Setelah delay ke 6
Setelah delay ke 7
10. PORTA=0x0f; // pada perintah ini seluruh PORTA (bit.0 - bit.7) kita berikan nilai 0x0f artinya pada PORTA.0-PORTA.3 kita berikan nilai 1 sedangkan pada PORTA.4-PORTA.7 kita beri nilai 0 (0x0f menunjukkan pemberian nilai dengan menggunakan kode heksadesimal).
delay_ms(1000); // memberikan waktu tundan selama 1000 ms atau 1 detik.
PORTA=0xf0; // pada perintah ini seluruh PORTA (bit.0 - bit.7) kita berikan nilai 0xf0 artinya pada PORTA.0-PORTA.3 kita berikan nilai 0 sedangkan pada PORTA.4-PORTA.7 kita beri nilai 1 (0x0f menunjukkan pemberian nilai dengan menggunakan kode heksadesimal)
delay_ms(1000); // memberikan waktu tundan selama 1000 ms atau 1 detik
Pada percobaan LED 2, pemberian nilai menggunakan kode biner dan hasil yang ditampilkan sama dengan kode heksadesimal seperti di atas dan di tambahkan dengan sebuah kode sebagai berikut:
PORTA=0b00001111; // pada perintah ini seluruh PORTA (bit.0 - bit.7) kita berikan nilai 0b00001111 artinya pada PORTA.0-PORTA.3 kita berikan nilai 1 sedangkan pada PORTA.4-PORTA.7 kita beri nilai 0 (0b00001111 menunjukkan pemberian nilai dengan menggunakan kode biner).
delay_ms(1000); // memberikan waktu tundan selama 1000 ms atau 1 detik.
PORTA=0b11110000; // pada perintah ini seluruh PORTA (bit.0 - bit.7) kita berikan nilai 0b11110000 artinya pada PORTA.0-PORTA.3 kita berikan nilai 1 sedangkan pada PORTA.4-PORTA.7 kita beri nilai 0 (0b11110000 menunjukkan pemberian nilai dengan menggunakan kode biner).
delay_ms(1000); // memberikan waktu tundan selama 1000 ms atau 1 detik.
Pada percobaan LED 3, pemberian nilai menggunakan kode hekxa- desimal dengan menambahkan kode sebagai berikut :
11. PORTA=0x55; // pada perintah ini PORTA (bit.0,2,4 dan 6) akan menyala karena diberikan logika 1 (x55 merupakan perintah untuk menyalakan LED secara bersilangan).
delay_ms(1000); // memberikan waktu tundan selama 1 detik.
PORTA=0xaa; // pada perintah ini sama dengan perintah sebelumnya akan tetapi perintah ini mengakibatkan PORTA (bit.1,3,5 dan 7) akan menyala karena di berikan perintah delay yang mengakibatkan lampu berubah secara bergantian.
delay_ms(1000); // memberikan waktu tundan selama 1 detik.
Pada percobaan LED 4, pemberian nilai yang digunakan menggunakan kode biner yaitu 0b dan ditambahkan dengan kode sebagai berikut:
PORTA=0b11100111; // pada perintah ini PORTA (bit.0,1,2,5,6 dan 7) akan menyala karena diberikan logika 1, sedangakan PORTA (bit.3 dan 4) akan mati karena diberikan logika 0.
PORTA=0b11011011; // pada perintah ini PORTA (bit.0,1,3,4,6 dan 7) akan menyala karena diberikan logika 1, sedangakan PORTA (bit.2 dan 5) akan mati karena diberikan logika 0.
PORTA=0b10111101; // pada perintah ini PORTA (bit.0,2,3,4,5 dan 7) akan menyala karena diberikan logika 1, sedangakan PORTA (bit.1 dan 6) akan mati karena diberikan logika 0.
PORTA=0b01111110; // pada perintah ini PORTA (bit.1,2,3,4,5 dan 6) akan menyala karena diberikan logika 1, sedangakan PORTA (bit.0 dan 7) akan mati karena diberikan logika 0.
PORTA=0b10111101; // pada perintah ini PORTA (bit.0,2,3,4,5 dan 7) akan menyala karena diberikan logika 1, sedangakan PORTA (bit.1 dan 6) akan mati karena diberikan logika 0.
PORTA=0b11011011; // pada perintah ini PORTA (bit.0,1,3,4,6 dan 7) akan menyala karena diberikan logika 1, sedangakan PORTA (bit.2 dan 5) akan mati karena diberikan logika 0.
delay_ms(1000); // memberikan waktu tunda selama 1 detik, delay ini diletakkan diantara setiap PORTA.
12. 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) akan menyala karena diberi logika 1 sedangkan yang lain mati karena diberikan logika 0 dan bit.2 akan menyala karena disampingnya diberi perintah PORTA.2=1.
PORTA=0b00000010; PORTA.1=1; // pada perintah ini PORTA (bit.1) akan menyala karena diberi logika 1 sedangkan yang lain mati karena diberikan logika 0.
PORTA=0b00000100; // pada perintah ini PORTA (bit.2) akan menyala karena diberi logika 1 sedangkan yang lain mati karena diberi logika 0.
PORTA=0b00001000; // pada perintah ini PORTA (bit.3) akan menyala karena diberi logika 1 sedangkan yang lain mati karena diberi logika 0.
PORTA=0b00010000; // pada perintah ini PORTA (bit.4) akan menyala karena diberi logika 1 sedangkan yang lain mati karena diberi logika 0.
PORTA=0b00100000; // pada perintah ini PORTA (bit.5) akan menyala karena diberi logika 1 sedangkan yang lain mati karena diberi logika 0.
PORTA=0b01000000; // pada perintah ini PORTA (bit.6) akan menyala karena diberi logika 1 sedangkan yang lain mati karena diberi logika 0.
PORTA=0b10000000; // pada perintah ini PORTA (bit.7) akan menyala karena diberi logika 1 sedangkan yang lain mati karena diberi logika 0.
delay_ms(1000); // memberikan waktu tunda selama 1 detik, delay ini diletakkan diantara setiap PORTA.
2. Apakah persamaan dan perbedaan PROGRAM LED1 dan PROGRAM LED2?
Persamaannya adalah pada pemberian nilai pada pemberian nilai logikanya sama dan nyala LED juga sama sedangkan perbedaan yaitu terletak pada pemberian kode nilai pada program LED 1 menggunakan kode heksadesimal (0xnilai hekxa) sedangkan pada program led 2 pemberian nilai menggunakan kode biner (0bnilai biner).
13. 3. Instruksi apa yang digunakan untuk mengeluarkan data ke LED?
Intruksi yang digunakan untuk mengeluarkan data ke LED adalah PORTA data nilai sebagai contoh pada program LED 1 sebagai berikut:
PORTA=0x0f;
delay_ms(1000);
PORTA=0xf0;
delay_ms(1000);
program diatas memberikan intruksi untuk menyalakan LED.0-LED.3 dengan selisih 1 detik.
4. Mengapa ada jeda waktu sekitar 1 detik antara tampilan LED yang pertama dengan yang berikutnya?
Karena kita memberikan perintah delay pada listing program yaitu delay 1000 ms atau sekitar 1 detik. apabila program tersebut tidak diberikan delay atau jeda maka program yang selanjutnya tidak akan bekerja dan output atau nyala led hanya akan menampilkan program yang pertama diberikan.
7. KESIMPULAN
Langka 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. Delay digunakan sebagai pemberian waktu tundaan artinya kita memberikan waktu tundaan sesuai dengan perintah tunda yang kita berikan dari satu program ke program selanjutnya. Pemberian nilai pada masing-masing bit port dapat dilakukan dengan cara mengset masing-masing bit dengan memberikan logika 1
14. DAFTAR PUSTAKA
Lestari, Dyah.2012.PRAKTIKUM MIKROPROSESSOR DAN TEKNIK ANTARMUKA PTI-494 PRODI S1 PENDIDIKAN TEKNIK INFORMATIKA. Malang.Universitas Negeri Malang.
http://id.wikipedia.org/wiki/Diode_pancaran_cahaya