MODUL I
ANTARMUKA MIKROKONTROLER DENGAN LED
·
Menjelaskan rangkaian antarmuka mikrokontroler
dengan LED.
·
Mempraktekkan pemrograman mikrokontroler untuk
menyalakan 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.
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.
·
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
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);
ANALISA DATA
1.
Analisa Program LED1 – LED5
Program 1
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.
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:
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 0b00000001, 0b00000010, 0b00000100, 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..).
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.
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);
Karena terdapat perintah delay_ms(1000);
No comments:
Post a Comment