Senin, 05 Desember 2016

Laporan Antarmuka Mikrokontroler TOGGLE SWITCH


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 menggu­na­kan 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

0 komentar:

Posting Komentar

Twitter Facebook

 
Design by Free WordPress Themes | Bloggerized by Lasantha - Premium Blogger Themes | Affiliate Network Reviews