Antarmuka Mikrocontroller dengan 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 (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.
 

Related Post

First