MateriKu

Blog Kumpulan Materi Soal Laporan

Breaking

Monday, January 16, 2017

Praktikum Mikrokontroller Antarmuka Mikrokontroler Dengan Led

MODUL I
ANTARMUKA MIKROKONTROLER DENGAN LED

 TUJUAN

·         Menjelaskan rangkaian antarmuka mikrokontroler dengan LED.
·         Mempraktekkan pemrograman mikrokontroler untuk menyalakan LED.

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.1 memperlihatkan bentuk fisik LED dan simbol rangkaiannya.

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.
  
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 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 outputvalue = 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);  

GAMBAR RANGKAIAN



DATA HASIL PERCOBAAN
FILE CVAVR DAN PROTEUS


ANALISA DATA
1.      Analisa Program LED1 – LED5
                  Program 1
                  PORTA=0x0f;              
delay_ms(1000); 

Pada perintah ini akan mengatur PORT A dengan nilai 0x0f. Kode ini merupakan kode heksadesimal yang ditandai dengan 0x.... Jika diubah menjadi biner maka akan menjadi 0000 1111. Sehingga pada LED bit ke 0 - 3 akan menyala sedangkan LED bit 4-7 akan mati.

Perintah delay_ms() digunakan untuk memberikan jeda/waktu tunda pada program. Sehingga LED akan menyala selama waktu dari delay tersebut. Karena diisi dengan 1000 ms, maka akan menyala selama 1 detik.  
     
PORTA=0xf0;              

delay_ms(1000);

Pada perintah ini hampir sama dengan sebelumnya, hanya saja kali ini PORT A diatur dengan nilai 0xf0. Yang artinya jika diubah kebilangan biner maka menjadi 1111 0000. Sehingga LED pada bit 0-3 akan mati dan pada bit 4-7 akan menyala. Kemudian delay nya diatur 1000ms, maka menyebabkan nyala LED tersebut selama 1 detik.  

Program 2
PORTA=0b00001111;             
delay_ms(1000);

Pada perintah ini akan mengatur PORT A dengan kode nilai biner yaitu 0b00001111 yang ditandai dengan 0b... Sehingga pada PORT A bit 0-3 akan diberi logika 1 menyebabkan LED menyala sedangkan pada bit 4-7 diberi logika 0 sehingga LED mati. Kondisi ini berlangsung selama 1000ms atau 1 detik.

PORTA=0b11110000;             
delay_ms(1000); 

Pada perintah ini akan mengatur PORT A dengan kode nilai biner yaitu 0b11110000 yang ditandai dengan 0b... Sehingga pada PORT A bit 0-3 akan diberi logika 0 sehingga LED mati sedangkan pada bit 4-7 diberi logika 1 menyebabkan LED menyala. Kondisi ini berlangsung selama 1000ms atau 1 detik.

Program 3
PORTA=0x55;             
delay_ms(1000);  
  
Pada perintah ini mengatur PORT A dengan nilai 0x55. Jika dibinerkan menjadi 01010101. Sehingga bit yang berlogika 1 maka LED menyala dan bit yang berlogika 0 maka LED mati.

PORTA=0xaa;             
delay_ms(1000);
  
Pada perintah ini mengatur PORT A dengan nilai 0xaa. Jika dibinerkan menjadi 10101010. Sehingga bit yang berlogika 1 maka LED menyala dan bit yang berlogika 0 maka LED mati.

Program 4
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 perintah ini akan mengatur PORT A secara bergantian mulai dari 0b11100111, 0b11011011, 0b10111101, dst. Pada bit yang berlogika 1 maka LED akan menyala sedangkan bit yang berlogika 0 maka LED mati. Hal ini berlangsung denga jeda waktu1 detik, karena terdapat perintah delay_ms(1000). Sehingga nyala LED menjadi:
OOOO OOOO   
OOOO OOOO  
OOOO OOOO  
OOOO OOOO  
OOOO OOOO  
OOOO OOOO  

Program 5
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 perintah ini akan mengatur PORT A secara bergantian mulai dari 0b000000010b000000100b00000100, dst. Pada bit yang berlogika 1 maka LED akan menyala sedangkan bit yang berlogika 0 maka LED mati. Hal ini berlangsung denga jeda waktu1 detik, karena terdapat perintah delay_ms(1000).

Perbedaannya yaitu pada baris ke-1 terdapat perintah PORTA.2=1, sehingga PORT A bit ke 2 akan berlogika 1 pula. Maka PORTA yang awalnya 0000 0001 menjadi 0000 0101. Pada baris ke-3 PORTA tetap yaitu 0000 0010 karena PORTA bit 1 sudah berlogika 1.

2.   Apakah persamaan dan perbedaan PROGRAM LED1 dan PROGRAM LED2?
    Pada program LED1 pengaturan nilai PORT menggunakan kode heksadesimal (0x..)         sedangkan porgram LED2 menggunakan kode biner (0b..).

3.   Instruksi apa yang digunakan untuk mengeluarkan data ke LED?
      PORTx = data ;
         atau
      PORTx.bity = data;

      Dengan x adalah PORT yang digunakan dan y adalah bit.

4.   Mengapa ada jeda waktu sekitar 1 detik antara tampilan LED yang pertama dengan yang         berikutnya?
      Karena terdapat perintah delay_ms(1000);

No comments:

Post a Comment