LAPORAN
PRAKTIKUM MIKROKONTROLER
ANTARMUKA
MIKROKONTROLER DENGAN TOGGLE SWITCH
Disusun untuk Memenuhi Matakuliah LAB PTE-3
Dibimbing oleh Ibu Dyah Lestari
Oleh:
Muhammad
Arif Syarifudin
150534605572
S1
PTE’15 C
UNIVERSITAS NEGERI MALANG
FAKULTAS TEKNIK
JURUSAN TEKNIK ELEKTRO
PRODI S1 PENDIDIKAN TEKNIK ELEKTRO
OKTOBER
2016
MODUL II
ANTARMUKA MIKROKONTROLER DENGAN TOGGLE SWITCH
TUJUAN
- Mengetahui
dan memahami cara mengantarmukakan mikrokontroler dengan rangkaian input
saklar toggle.
- Mengetahui
dan memahami bagaimana memrogram mikrokontroler untuk membaca data input
dari saklar toggle.
SAKLAR TOGGLE
Saklar
toggle adalah salah satu saklar elektrik yang digerakkan secara manual oleh
batang mekanik. Saklar toggle tersedia dalam berbagai bentuk dan ukuran, serta
digunakan dalam berbagai aplikasi. Gambar dibawah memperlihatkan bentuk fisik
dan symbol saklar toggle.
(a)
Salah satu toggle switch (b) Simbol elektronik
Dalam modul
I/O yang dipakai dalam praktikum, saklar toggle yang digunakan diberi rangkaian
tambahan berupa rangkaian LED untuk melihat secara langsung logika yang ada
pada saklar. Rangkaian LED sama dengan rangkaian dalam Modul I. Kedelapan
rangkaian saklar tersebut dihubungkan ke
sebuah soket jumper bernama INPUT.
PERINTAH DASAR MEMBACA DATA
- Sebelum
membaca data, perlu dibuat deklarasi variabel untuk data yang dimasukkan.
Data bisa bertipe char. Deklarasi variabel diletakkan di variabel lokal
pada main program.
void main (void)
{
//Declare your local variables here
unsigned char data_in;
…
- Untuk
membaca data byte ke PORTX (X=A, B, C, D) digunakan statement
data_in = PINX;
contoh: data_in
= PINB;
- Untuk
membaca data bit ke PORTX.Y (X=A, B, C, D dan Y=0, 1, 2 , 3, 4, 5, 6, 7)
digunakan statement
data_in = PINX.Y;
contoh:
data_in = PINB.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
- 2 buah
kabel pita hitam
PROSEDUR
1.
Hubungkan soket jumper PORTB pada minimum system
dengan soket jumper OUTPUT pada I/O dan soket jumper PORTC pada minimum system
dengan soket jumper INPUT pada I/O
2.
Buka program Code Vision AVR
3.
Buat file baru dengan cara klik File>>New,
atau klik icon Create a New File or Project, atau ketik Ctrl + N. Kemudian
muncul dialog box, pilih Project pada File Type, kemudian klik OK.
4.
Kemudian klik
No ketika muncul dialog box untuk menanyakan apakah ingin menggunakan
CodeWizardAVR
5.
Kemudian
pilih lokasi penyimpanan file dan buat folder baru dengan nama “praktikum 2”
untuk menyimpan file.
6.
Kemudian
simpan file pada folder tersebut dan berinama filedengan nama ”saklar“ dan klik
Save.
7.
Kemudian
muncul dialog box Configure Project. Pada subtab Code Generation pada tab C
Compiler pilih chip ATmega8535 dan ubah Clock menjadi 4 Mhz. Kemudian klik OK
8.
Buat file
Source baru dengan cara klik File>>New, atau klik icon Create
a New File or Project, atau ketik Ctrl + N. Kemudian muncul dialog box, pilih
Source pada File Type, kemudian klik OK. Kemudian Save as file Source itu
dengan nama ”saklar“ dan simpan
di dalam direktori yang sama yaitu di dalam folder “praktikum 2”.
9.
Hubungkan
file Project dengan File Source dengan Cara klik Project>> Configure
10. Pada dialog box, klik Add pada tab Input Files. Kemudian pilih
file yang sudah anda simpan tadi dan klik Open. Kemudian klik OK.
11. Jika sudah ditambahkan, maka pada Code Navigator akan terlihat
saklar.c.
12. Tambahkan
file header
13. Buat
program utama dan inisialisasikan PORTB sebagai output
(DDRB = FFH) dan output
value = 0 (PORTB=00H), dan PORTC sebagai
input (DDRC = 00H) dan resistor pullup dihubungkan (PORTC=FFH) sehingga pada program bagian
inisialisasi PORTB dan PORTC terlihat sebagai berikut:
14. Tambahkan
deklarasi variabel lokal di bawah ini dalam program utama.
15. Tuliskan
dalam program utama tepatnya tuliskan program didalam while (1)
16. Compile
program tersebut dengan cara klik Project>> Compile atau ketik F9.
17. Jika ada error, koreksi program yang errordan perbaiki. Jika sudah tidak ada
yang errorbuild program tersebut
dengan cara klik Project>> Build atau klik Shift + F9.
18. Hubungkan
kabel usb printer antara PC/ Laptop dengan trainer.
19. Buka
aplikasi Khanzama AVR Programmer. Pilih ATmega8535 pada pilihan chip AVR.
Kemudian buka program kompilasi saklar.hex biasanya terdapat pada folder atau
sub derektori..\Exe yang terdapat pada folder “praktikum 2 “ dengan cara klik
file>> Load Flash File to Bufferatau ketik Ctrl + L kemudian klik Open.
20. Klik Auto
Program kemudianpindahkan saklar sesuai tabel 2.1 dibawah, amati dan catat
nyala LED.
Tabel 2.1
Program Saklar1
No.
|
Saklar
|
LED
|
|
7 6
5 4 3
2 1 0
|
7 6
5 4 3
2 1 0
|
1
|
0 0
0 0 0
0 0 1
|
|
2
|
0 0
0 0 0
0 1 1
|
|
3
|
0 0
0 0 0
1 0 1
|
|
4
|
0 0
0 0 1
0 0 1
|
|
5
|
0 0
0 1 0
0 0 1
|
|
6
|
0 0
1 0 0
0 0 1
|
|
7
|
0 1
0 0 0
0 0 1
|
|
8
|
1 0
0 0 0
0 0 1
|
|
9
|
1 1
1 1 1
1 1 1
|
|
21. Hapus
program yang ada pada program utama tepatnya program di dalam while (1)
kemudian tuliskan program di dalam
while(1).
22. Compile dan
Build program, jika ada yang error perbaiki program. Masukkan file hex
menggunakan Khanzama AVR Programer. Klik auto program.
23. Pindahkan saklar sesuai tabel 3.1 dibawah,
amati dan catat nyala LED.
Tabel 3.1 Program Saklar2
No.
|
Saklar
|
LED
|
|
7 6
5 4 3
2 1 0
|
7
6 5 4
3 2 1
0
|
1
|
0
0 0 0
0 0 0
1
|
|
2
|
0
0 0 0
0 0 1
1
|
|
3
|
0
0 0 0
0 1 0
0
|
|
4
|
0
0 0 0
1 0 0
1
|
|
5
|
0
0 0 1 0
0 0 0
|
|
6
|
0
0 1 0
0 0 0
1
|
|
7
|
0
1 0 0
0 0 0
0
|
|
24. Buat
program untuk masing–masing algoritma berikut dengan menggunakan if :
a)
Jika switch bit 0 berlogika 1 maka LED bit 4
menyala.
b)
Jika switch bit 1 berlogika 1 maka LED bit 7
menyala.
25. Buat satu
program untuk masing–masing algoritma berikut dengan menggunakan if-else.
a)
Jika switch bit 0 berlogika 1 maka LED bit 4
menyala.
b)
Jika switch bit 1 berlogika 1 maka LED bit 7
menyala.
c)
Jika switch bit 2 berlogika 1 maka LED menyala
dengan konfigurasi
ON-OFF-ON-OFF-ON-OFF-ON-OFF (bit7-bit0).
d)
Jika switch bit 3 berlogika 1 maka LED menyala
dengan konfigurasi
OFF-ON-OFF-ON-OFF-ON-OFF-ON (bit7-bit0).
e)
Jika switch bit 4 berlogika 1 maka LED menyala
semua.
f)
JIka switch bit 5 berlogika 1 maka LED mati
semua.
g)
Jika switch bit 6 berlogika 1 maka LED menyala
berurutan mulai dari bit0 ke bit7 lalu kembali lagi ke bit0 dengan delay 1
detik
h)
Jika switch bit 7 berlogika 1 maka LED akan
menyala dengan nilai sama dengan dua digit terakhir NIM anda.
DATA HASIL PERCOBAAN
1.
Tabel 2.1
No.
|
Saklar
|
LED
|
|
7 6
5 4 3
2 1 0
|
7 6
5 4 3
2 1 0
|
1
|
0 0
0 0 0
0 0 1
|
0 0
0 0 0
0 0 1
|
2
|
0 0
0 0 0
0 1 1
|
0 0
0 0 0
0 1 1
|
3
|
0 0
0 0 0
1 0 1
|
0 0
0 0 0
1
0 1
|
4
|
0 0
0 0 1
0 0 1
|
0 0
0 0 1 0
0 1
|
5
|
0 0
0 1 0
0 0 1
|
0 0
0 1 0
0 0 1
|
6
|
0 0
1 0 0
0 0 1
|
0 0 1 0
0 0 0
1
|
7
|
0 1
0 0 0
0 0 1
|
0 1 0
0 0 0
0 1
|
8
|
1 0
0 0 0
0 0 1
|
1 0 0
0 0 0
0 1
|
9
|
1 1
1 1 1
1 1 1
|
1 1 1
1 1 1
1 1
|
Analisa :
Pada
table diatas menggunakan program :
data_in=PINC;
PORTB=data_int;
Artinya
PORTB akan menampilkan data yang telah disimpan divariable data_in ke PINC.
2.
Tabel 3.1
No.
|
Saklar
|
LED
|
|
7
6 5 4
3 2 1
0
|
7
6 5 4
3 2 1
0
|
1
|
0
0 0 0
0 0 0
1
|
1 0 0
0 0 0
0 0
|
2
|
0
0 0 0
0 0 1
1
|
1 0 0
0 0 0
0 0
|
3
|
0
0 0 0
0 1 0
0
|
0 0
0 0 0
0 0 0
|
4
|
0
0 0 0
1 0 0
1
|
1 0 0
0 0 0
0 0
|
5
|
0
0 0 1
0 0 0
0
|
0 0
0 0 0
0 0 0
|
6
|
0
0 1 0
0 0 0
1
|
1 0 0
0 0 0
0 0
|
7
|
0
1 0 0
0 0 0
0
|
0 0
0 0 0
0 0 0
|
Analisa :
Pada table diatas menggunakan
program :
data_in=PINC.0;
PORTB.7=data_in;
Maksud dari program diatas adalah saat PINC.0 mendapat logika 1 maka
LED bit ke-7 pada PORTB akan menyala, jadi apapun yang kita masukkan data pada
saklar selain di PINC.0 maka tidak akan memberi efek apapun pada PORTB.
3.
Source code program pada percobaan langkah 9
dengan menggunakan if.
·
Jika switch bit 0 berlogika 1 maka LED bit 4
menyala
while(1)
{
if (PINC.0==1) data_in= PINC.0;
if (PINC.0==0) data_in= PINC.0;
PORT.4=data_in;
}
·
Jika switch bit 1 berlogika 1 maka LED bit 7
menyala
while(1)
{
if (PINC.1==1) data_in= PINC.1;
if (PINC.1==0) data_in= PINC.1;
PORT.7=data_in;
}
·
Jika bit 2 berlogika 1 maka LED menyala dengan
konfigurasi ON-OFF-ON-OFF- ON-OFF- ON-OFF (bit7-bit0)
while(1)
{
if (PINC.2==1) PORTB=0b10101010;
if (PINC.2==0) PORTB=0b00000000;
}
·
Jika switch bit 3 berlogika 1 maka LED menyala dengan
konfigurasi OFF-ON- OFF-ON- OFF-ON- OFF-ON (bit7-bit0)
while(1)
{
if (PINC.3==1) PORTB=0b01010101;
if (PINC.3==0) PORTB=0b00000000;
}
·
Jika switch bit 4 berlogika 1 maka LED akan
menyala semua
while(1)
{
if (PINC.4==1) PORTB=0b11111111;
if (PINC.4==0) PORTB=0b00000000;
}
·
Jika switch bit 5 berlogika 1 maka LED mati
semua
while(1)
{
if
(PINC.5==1) PORTB=0b00000000;
if (PINC.5==0) PORTB=0b00000000;
}
·
Jika switch bit 6 berlogika 1 maka LED menyala
berurutan mulai dari bit0 ke bit 7 lalu kembali lagi ke bit0 dengan delay 1
detik
#include (delay.h) pada program.
while(1)
{
if (PINC.6==1)
PORTB=0b00000001; delay_ms
(1000);
PORTB=0b00000010; delay_ms
(1000);
PORTB=0b00000100; delay_ms
(1000);
PORTB=0b00001000; delay_ms
(1000);
PORTB=0b00010000; delay_ms
(1000);
PORTB=0b00100000; delay_ms
(1000);
PORTB=0b01000000; delay_ms
(1000);
PORTB=0b10000000; delay_ms (1000);
PORTB=0b10000000; delay_ms
(1000);
PORTB=0b01000000; delay_ms
(1000);
PORTB=0b00100000; delay_ms
(1000);
PORTB=0b00010000; delay_ms
(1000);
PORTB=0b00001000; delay_ms
(1000);
PORTB=0b00000100; delay_ms
(1000);
PORTB=0b00000010; delay_ms
(1000);
PORTB=0b00000001; delay_ms
(1000);
if (PINC.6==0)
PORTB=0b00000000;
}
·
Jika switch bit7 berlogika 1 maka LED akan
menyala dengan nilai sama dengan dua digit terakhir NIM anda
//Dengan NIM 150534605572861
while(1)
{
if (PINC.7==1) PORTB=0b00111101;
if (PINC.0==0) PORTB=0b00000000;
}
4.
Source code program pada percobaan langkah 10
dengan menggunakan if-else
·
Jika switch bit 0 berlogika 1 maka LED bit 4
menyala.
#include <mega8535.h>
#include <delay.h>
void main (void)
{
PORTB=0x00;
DDRB=0xFF;
PORTC=0xFF;
DDRC=0x00;
while(1)
{
if (PINC.0==1) PORTB=0b00001000;
else if (PINC.0==0) PORTB=0;
}
}
·
Jika switch bit 1 berlogika 1 maka LED bit7 menyala.
#include <mega8535.h>
#include <delay.h>
void main (void)
{
PORTB=0x00;
DDRB=0xFF;
PORTC=0xFF;
DDRC=0x00;
while(1)
{
if (PINC.1==1) PORTB=0b10000000;
else if
(PINC.1==0) PORTB=0;
}
}
·
Jika switch bit 2 berlogika 1 maka LED menyala
dalam konfigurasi ON-OFF- ON-OFF- ON-OFF- ON-OFF (bit7-bit0).
while(1)
{
if (PINC.2==1) PORTB=0xAA;
else if (PINC.2==0) PORTB=0x00;
}
·
Jika switch bit 3 berlogika 1 maka LED menyala
dengan konfigurasi OFF-ON- OFF-ON- OFF-ON- OFF-ON (bit7-bit0)
while(1)
{
if (PINC.3==1) PORTB=0x55;
if (PINC.3==0) PORTB=0x00;
}
·
Jika switch bit 4 berlogika 1 maka LED menyala
semua
while(1)
{
if (PINC.4==1) PORTB=0xFF;
else if (PINC.4==0) PORTB=0x00;
}
·
Jika switch bit 5 berlogika 1 maka LED mati
semua
while(1)
{
if (PINC.5==1) PORTB=0x00;
else if (PINC.5==0) PORTB=0x00;
}
·
Jika switch bit 6 berlogika 1 maka LED menyala
berurutan mulai dari bit0 ke bit7 lalu kembali lagi ke bit0 dengan delay 1
detik
while(1)
{
if (PINC.6==1)
PORTB=0b00000001; delay_ms (1000);
PORTB=0b00000010; delay_ms (1000);
PORTB=0b00000100; delay_ms (1000);
PORTB=0b00001000; delay_ms (1000);
PORTB=0b00010000; delay_ms (1000);
PORTB=0b00100000; delay_ms (1000);
PORTB=0b01000000; delay_ms (1000);
PORTB=0b10000000; delay_ms (1000);
PORTB=0b10000000; delay_ms (1000);
PORTB=0b01000000; delay_ms (1000);
PORTB=0b00100000; delay_ms (1000);
PORTB=0b00010000; delay_ms (1000);
PORTB=0b00001000; delay_ms (1000);
PORTB=0b00000100; delay_ms (1000);
PORTB=0b00000010; delay_ms (1000);
PORTB=0b00000001; delay_ms (1000);
else if (PINC.6==0)
PORTB=0b00000000;
}
·
Jika switch bit7 berlogika 1 maka LED akan
menyala dengan nilai sama dengan dua digit terakhir NIM anda.
while(1)
{
if (PINC.7==1) PORTB=0x61;
else if (PINC.0==0) PORTB=0x00;
}
ANALISA
DATA
1.
Analisa Program Saklar1 dan Saklar2
·
Analisa Saklar1 :
data_in=PINC;
PORTB=data_int;
Artinya
PORTB akan menampilkan data yang telah disimpan divariable data_in ke PINC.
·
Analisa Saklar2 :
data_in=PINC.0;
PORTB.7=data_in;
Maksud dari program diatas adalah saat PINC.0 mendapat logika 1 maka
LED bit ke-7 pada PORTB akan menyala, jadi apapun yang kita masukkan data pada
saklar selain di PINC.0 maka tidak akan memberi efek apapun pada PORTB.
2.
Instruksi apa yang digunakan untuk membaca data
input?
Pada program ini dapat membuat dan menampilkan variable, Untuk
menyimpan data di suatu PORT dapat menggunakan instruksi data_in, yang
digunakan untuk membaca di PORTC dan ditampilkan di PORTB, maka sintaknya:
data_in=PINC.0;
PORTB.0=data_in;
3.
Apakah perbedaan program yang menggunakan if dan
if-else?
Instruksi if adalah program fungsi yang digunakan untuk satu kondisi
saja seperti jika ‘ya’ maka apa dan jika tidak maka program akan selesai,
sedangkan if-else digunakan untuk dua kondisi seperti jika ‘ya’ maka apa dan
jika tidak maka apa.
LAMPIRAN