Rabu, 15 Desember 2010

ANTARMUKA MIKROKONTROLER DENGAN LIGHT EMITTING DIODE (LED)


1.      TUJUAN
1.                  Mengetahui dan memahami cara mengantarmukakan mikrokontroler dengan rangkaian LED.
2.                  Mengetahui dan memahami bagaimana memprogram mikrokontroler untuk menyalakan LED.

2.      DASAR TEORI
2.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.

RBG-LED.jpg

(a)     LED warna merah, hijau dan biru


(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.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 = 0xdata;
      PORTB = 0xff;
Untuk mengirim data byte dalam bentuk bilangan biner ke PORTX (X=A, B, C, D) digunakan statement
      PORTX = 0bdata;
      PORTB = 0b11111111;
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.                  1 set Personal Computer/Laptop yang sudah berisi program Code Vision dan Khazama
2.                  1 buah catu daya DC +5V
3.                  1 buah multimeter
4.                  1 buah ISP Downloader AVR
5.                  1 buah sistem minimum AVR
6.                  1 buah I/O
7.                  1 buah kabel printer USB
8.                  1 buah kabel pita hitam

4.        PROSEDUR
1.      Rangkailah peralatan yang diperlukan seperti dalam Gambar 2.3. Hubungkan soket jumper PORTA pada minimum system dengan soket jumper OUTPUT pada I/O.

Gambar 2.3 Rangkaian antarmuka mikrokontroler

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;
delay_ms(1000);         
PORTA=0b10111101;
delay_ms(1000);         
PORTA=0b01111110;
delay_ms(1000);         
PORTA=0b10111101;
delay_ms(1000);         
PORTA=0b11011011;
delay_ms(1000);         
PORTA=0b11100111;
delay_ms(1000);         

//Program LED5
PORTA=0b00000001;
delay_ms(1000);         
PORTA=0b00000010;
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
Keterangan :
Rounded Rectangle: •	= LED Padam (mati/tidak menyala)
•	= LED Menyala (hidup)
 




LED 1
Nyala ke
Bit 7
Bit 6
Bit 5
Bit 4
Bit 3
Bit 2
Bit 1
Bit 0
1
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
2
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  

LED 2
Nyala ke
Bit 7
Bit 6
Bit 5
Bit 4
Bit 3
Bit 2
Bit 1
Bit 0
1
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
2
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  

LED 3
Nyala ke
Bit 7
Bit 6
Bit 5
Bit 4
Bit 3
Bit 2
Bit 1
Bit 0
1
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
2
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  

LED 4
Nyala ke
Bit 7
Bit 6
Bit 5
Bit 4
Bit 3
Bit 2
Bit 1
Bit 0
1
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
2
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
3
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
4
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
5
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
6
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
7
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  

LED 5
Nyala ke
Bit 7
Bit 6
Bit 5
Bit 4
Bit 3
Bit 2
Bit 1
Bit 0
1
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
2
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
3
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
4
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
5
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
6
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
7
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
8
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  





















6.                  PEMBAHASAN
1.                  Buatlah kesimpulan hasil masing-masing program.
PROGRAM LED 1
·           Dalam program LED 1 diberikan header #include<delay.h> agar library delay dapat dipanggil.
·           Pada program LED 1, LED akan menyala (hidup) bila diberi logika LOW ‘0’ melalui port 0, dan LED akan padam bila diberi logika HIGH ‘1’ melalui port 0. Untuk mengirim data byte dalam bentuk bilangan heksadesimal ke PORTA, digunakan PORTA=0x00; DDRA=0xff; hal ini berfungsi untuk mensetting agar LED menyala bila diberi logika LOW ‘0’ melalui port 0.
·           Dalam program LED1 terdapat sintak: PORTA=0x0f; 0f jika di binerkan = 00001111 merupakan perintah untuk  menyalakan 4 bit LED terendah (0,1,2,3) di PORTA dalam bilangan heksa. PORTA=0xf0; f0 jika di binerkan = 11110000 merupakan perintah untuk menyalakan 4 bit LED tertinggi (4,5,6,7) di PORTA dalam bilangan heksa.
·           Sintak delay_ms(1000);  artinya perintah untuk memberi jeda selama 1000 ms(1 detik). Sehingga ketika program dijalankan, tampilan tiap perubahan memiliki jeda selama 1 detik.
PROGRAM LED 2
·           Dalam program LED 2 diberikan header #include<delay.h> agar library delay dapat dipanggil.
·           Pada program LED 2, LED akan menyala(hidup) bila diberi logika LOW ‘0’ melalui port 0, dan LED akan padam bila diberi logika HIGH ‘1’ melalui port 0. PORTA=0x00; DDRA=0xff; hal ini berfungsi untuk mensetting agar LED menyala bila diberi logika LOW ‘0’ melalui port 0.
·           Untuk mengirim data byte dalam bentuk bilangan biner ke PORTA digunakan  sintak PORTA=0b00001111; merupakan perintah untuk  menyalakan 4 bit LED terendah (0,1,2,3) di PORTA dalam bilangan biner. PORTA=0b11110000; merupakan perintah untuk menyalakan 4 bit LED tertinggi (4,5,6,7) di PORTA dalam bilangan biner.
·           Sintak delay_ms(1000);  artinya perintah untuk memberi jeda selama 1000 ms(1 detik). Sehingga ketika program dijalankan, tampilan tiap perubahan memiliki jeda selama 1 detik.
    
PROGRAM LED 3
·           Dalam program LED 3 diberikan header #include<delay.h> agar library delay dapat dipanggil.
·           Pada program LED 3, LED akan nyala bila diberi logika LOW ‘0’ melalui port 0, dan LED akan padam bila diberi logika HIGH ‘1’ melalui port 0. PORTA=0x00; DDRA=0xff; yang berfungsi untuk men-setting agar LED menyala bila diberi logika LOW ‘0’ melalui port 0.
·           Terdapat sintak: PORTA=0x55; jika di binerkan = 01010101 merupakan perintah untuk  menyalakan bit 1,3,5,7 LED di PORTA dalam bilangan heksa. PORTA=0xaa; jika di binerkan = 10101010 merupakan perintah untuk menyalakan bit 0,2,4,6 LED di PORTA dalam bilangan heksa.
·           Sintak delay_ms(1000);  artinya perintah untuk memberi jeda selama 1000 ms(1 detik). Sehingga ketika program dijalankan, tampilan tiap perubahan memiliki jeda selama 1 detik.
    
PROGRAM LED 4
·           Dalam program LED 4 diberikan header #include<delay.h> agar library delay dapat dipanggil.
·           LED akan menyala(hidup) bila diberi logika LOW ‘0’ melalui port 0, dan LED akan padam bila diberi logika HIGH ‘1’ melalui port 0. PORTA=0x00; DDRA=0xff; berfungsi untuk mensetting agar LED menyala bila diberi logika LOW ‘0’ melalui port 0.
·           Sintak:
Ø PORTA=0b11100111; merupakan perintah untuk menyalakan bit 0,1,2,5,6,7 LED di PORTA dalam bilangan biner.
Ø PORTA=0b11011011; merupakan perintah untuk  menyalakan bit 0,1,3,4,6,7 LED di portA dalam bilangan biner.
Ø PORTA=0b10111101; merupakan perintah untuk  menyalakan bit 0,2,3,4,5,7 LED di portA dalam bilangan biner.
Ø PORTA=0b01111110; merupakan perintah untuk  menyalakan bit 1,2,3,4,5,6 LED di portA dalam bilangan biner.
Ø PORTA=0b10111101; merupakan perintah untuk  menyalakan bit 0,2,3,4,5,7 LED di portA dalam bilangan biner.
Ø PORTA=0b11011011; merupakan perintah untuk  menyalakan bit 0,1,3,4,6,7 LED di portA dalam bilangan biner.
Ø PORTA=0b11100111; merupakan perintah untuk  menyalakan bit 0,1,2,5,6,7 LED di portA dalam bilangan biner.
·           Sintak delay_ms(1000);  artinya perintah untuk memberi jeda selama 1000 ms(1 detik). Sehingga ketika program dijalankan, tampilan tiap perubahan memiliki jeda selama 1 detik.




PROGRAM LED 5
  • Dalam program LED 5 diberikan header #include<delay.h> agar library delay dapat dipanggil
  • Pada program LED 5, LED akan nyala bila diberi logika LOW ‘0’ melalui port 0, dan LED akan padam bila diberi logika HIGH ‘1’ melalui port 0. PORTA=0x00; DDRA=0xff; berfungsi untuk mensetting agar LED menyala bila diberi logika LOW ‘0’ melalui port 0.
  • Fungsi Sintak :
Ø  PORTA=0b00000001; merupakan perintah untuk menyalakan bit 7 LED di PORTA dalam bilangan biner.
Ø  PORTA=0b00000010; merupakan perintah untuk menyalakan bit 6 LED di PORTA dalam bilangan biner.
Ø  PORTA=0b00000100; merupakan perintah untuk menyalakan bit 5 LED di PORTA dalam bilangan biner.
Ø  PORTA=0b00001000; merupakan perintah untuk menyalakan bit 4 LED di PORTA dalam bilangan biner.
Ø  PORTA=0b00010000; merupakan perintah untuk menyalakan bit 3 LED di PORTA dalam bilangan biner.
Ø  PORTA=0b00100000; merupakan perintah untuk menyalakan bit  2 LED di PORTA dalam bilangan biner.
Ø  PORTA=0b01000000; merupakan perintah untuk menyalakan bit 1 LED di PORTA dalam bilangan biner.
Ø  PORTA=0b10000000; merupakan perintah untuk menyalakan bit 0 LED di PORTA dalam bilangan biner.
  • Sintak delay_ms(1000);  artinya perintah untuk memberi jeda selama 1000 ms(1 detik). Sehingga ketika program dijalankan, tampilan tiap perubahan memiliki jeda selama 1 detik

2.                  Apakah persamaan dan perbedaan PROGRAM LED1 dan PROGRAM LED2?
Persamaan :
  1. Urutan dalam penulisan script program sama
  2. Sama-sama terdapat sintak : delay_ms(1000);   
Sehingga jeda waktu tampilan sama-sama 1 detik
  1. Output yang dihasilkan sama yaitu LED menyala pada 4 bit LED terendah (0,1,2,3) di PORTA, dan LED menyala pada 4 bit LED tertinggi (4,5,6,7) di PORTA
Perbedaan :
Pada statement yang digunakan yaitu :
  1. Pada program LED1, digunakan statement  pengiriman data byte dalam bentuk bilangan heksadesimal ke PORTA
  2. Pada program LED2, digunakan statement  pengiriman data byte dalam bentuk bilangan biner ke PORTA

3.                  Instruksi yang digunakan untuk mengeluarkan data ke LED adalah :
Untuk mengirim data byte dalam bentuk bilangan heksadesimal ke PORTX (X=A, B, C, D) digunakan statement
Rounded Rectangle: PORTX = 0xdata;
PORTB = 0xff;



Untuk mengirim data byte dalam bentuk bilangan biner ke PORTX (X=A, B, C, D) digunakan statement
Rounded Rectangle: PORTX = 0bdata;
PORTB = 0b11111111;



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
Rounded Rectangle: PORTX.Y = data;
PORTB.1 = 0;
     


Dimana data bisa berupa 0 atau 1.

4.                  Mengapa ada jeda waktu sebesar 1 detik antara tampilan LED yang pertama dengan yang berikutnya?
Karena pada program utama diberi sintak:
delay_ms(1000);  artinya perintah untuk memberi jeda selama 1000 ms(1 detik). Sehingga ketika program dijalankan (pada waktu display), tampilan LED yang pertama dengan yang berikutnya memiliki jeda selama 1 detik.

7.                  KESIMPULAN
ü  Dalam memprogram mikrokontroler untuk menyalakan suatu LED adalah dengan memasukkan instruksi-instruksi dalam sebuah program sesuai dengan tampilan LED yang diinginkan. Perlu diperhatikan pula statement untuk mengirim data byte dalam bentuk bilangan heksadesimal ke sebuah PORT atau dalam bentuk bilangan biner. Karena sintak program dari keduanya berbeda.


DAFTAR PUSTAKA

Modul 2.2010. Antarmuka Mikrokontroler Dengan Light Emitting Diode (Led).Malang:Universitas Negeri Malang, Jurusan Teknik Elektro.




3 komentar:

roffi mengatakan...

trims mbk'e,,,,

Unknown mengatakan...

sama2.. smoga bermanfaat

vanslowoberbroeckling mengatakan...

Casino City NJ 2021 - Mapyro
Find your way around the 김해 출장안마 casino city and start winning! 화성 출장마사지 Hotel. Casino 익산 출장마사지 City offers 부산광역 출장샵 its guests the best location 포천 출장안마 in New Jersey, and it is a must have in

Posting Komentar