MODUL
IV
ANTARMUKA
MIKROKONTROLER DENGAN KEYPAD
TUJUAN
- Mengetahui
dan memahami cara mengantarmukakan mikrokontroler dengan keypad.
- Mengetahui
dan memahami bagaimana memrogram mikrokontroler untuk membaca masukan dari
keypad.
KEYPAD
Keypad merupakan tombol push button
yang disusun sebagai baris dan kolom sehingga membentuk matriks. Keypad banyak
digunakan sebagai piranti masukan dalam piranti elektronik. Gambar 4.1
memperlihatkan bentuk fisik keypad. Keypad ini memiliki 16 tombol yaitu 0,1,2,3,4,5,6,7,8,9,A,B,C,
D,* dan #.
Dalam modul I/O yang di Dalam gambar
4.2 keypad dihubungkan ke PORTB mikrokontroler dengan posisi baris (b1-b4)
terhubung ke PORTB.0-PORTB.3 dan posisi kolom (c1-c4) terhubung ke PORTB.4-PORTB.7.
Sedangkan untuk mengetahui tombol apa yang ditekan oleh user, 8 buah LED yang
terdapat dalam MODUL I/O dihubungkan ke PORTC.
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 modul I/O
- 1
buah keypad
- 1
buah kabel printer USB
- 2
buah kabel pita hitam
PROSEDUR
1.
Hubungkan soket jumper PORTB pada
minimum system dengan soket jumper KEYPAD dan soket jumper PORTC pada minimum
system dengan soket jumper OUTPUT pada I/O.
2.
Buat program dengan menggunakan aplikasi Code
Vision AVR
3.
Buatlah file project (.prj) kemudian pilih IC
yang digunakan (ATmega8535) dan atur clock 4.000 Mhz. (seperti praktikum
sebelumnya)
4.
Buatlah file source (.c) kemudian hubungkan file
project dengan file source seperti pada praktikum sebelumnya.
5.
Tambahkan file header
6.
Buatlah program utama dan inisialisasikan PORTB.0-PORTB.3
sebagai output dengan kondisi awal berlogika HIGH dan PORTB.4-PORTB.7 sebagai
input dengan pull-up (DDRB = 0FH dan PORTB=FFH), serta PORTC sebagai output dan
kondisi awal LOW (DDRC = FFH dan PORTC=00H).
7.
Deklarasikan fungsi keypad() dengan
bilangan yang dikembalikan ke program utama sebagai bilangan integer pada
global variabel ( diluar program utama).
8.
Tambahkan fungsi keypad berikut di luar program utama
9.
Tuliskan program berikut pada program utama tepatnya di dalam
while(1).
10. Compile
dan Build program jika ada yang error perbaiki program. Masukkan file hex
menggunakan Khanzama AVR Programer. Klik auto program, tekan tombol keypad, amati nyala LED dan isi
Tabel 4.1.
11. Ubah program utama untuk algoritma berikut:
a.
Jika tombol 0 ditekan semua LED mati.
b.
Jika tombol 1 ditekan semua LED menyala.
12. Buatlah satu program dengan algoritma sebagai
berikut:
a.
Jika tombol 0 ditekan LED bit 0 menyala.
b.
Jika tombol 1 ditekan LED bit 1 menyala.
c.
Jika tombol 2 ditekan LED bit 2 menyala.
d.
Jika tombol 3 ditekan LED bit 3 menyala.
e.
Jika tombol 4 ditekan LED bit 4 menyala.
f.
Jika tombol 5 ditekan LED bit 5 menyala.
g.
Jika tombol 6 ditekan LED bit 6 menyala.
h.
Jika tombol 7 ditekan LED bit 7 menyala.
i.
Jika tombol 8 ditekan LED menyala sesuai gambar dibawah ini
ber urutan dari atas kebawah dengan delay 1 detik. (Gunakan perulangan for ...)
j.
Jika tombol 9 ditekan LED menyala sesuai gambar dibawah ini ber urutan dari atas kebawah dengan delay 1 detik. (Gunakan perulangan for ...)
Jika tombol 9 ditekan LED menyala sesuai gambar dibawah ini ber urutan dari atas kebawah dengan delay 1 detik. (Gunakan perulangan for ...)
k.
Jika tombol A ditekan LED bit 0,2,4,6 menyala dan bit
1,3,5,7 mati.
l.
Jika tombol B ditekan LED bit 0,2,4,6, mati dan bit 1,3,5,7
menyala.
m.
Jika tombol C ditekan ditekan algoritma k dan l dilaksanakan
bergantian dengan delay 1 detik.
n.
Jika tombol D ditekan ditekan maka LED menyala menunjukkan
nilai biner dua digit terakhir NIM anda.
o.
Jika tombol * semua LED mati.
p.
Jika tombol # semua LED menyala.
DATA HASIL PERCOBAAN
1.
Tabel 4.1
No
|
Tombol keypad yang
ditekan
|
Tampilan LED
|
Nilai tampilan LED
(dalam desimal)
|
1
|
0
|
0 0 0 0 0 0 0 0
|
0
|
2
|
1
|
0 0 0 0 0 0 0 1
|
1
|
3
|
2
|
0 0 0 0 0 0 1 0
|
2
|
4
|
3
|
0 0 0 0 0 0 1 1
|
3
|
5
|
4
|
0 0 0 0 0 1 0 0
|
4
|
6
|
5
|
0 0 0 0 0 1 0 1
|
5
|
7
|
6
|
0 0 0 0 0 1 1 0
|
6
|
8
|
7
|
0 0 0 0 0 1 1 1
|
7
|
9
|
8
|
0 0 0 0 1 0 0 0
|
8
|
10
|
9
|
0 0 0 0 1 0 0 1
|
9
|
11
|
A
|
0 0 0 0 1 0 1 0
|
10
|
12
|
B
|
0 0 0 0 1 0 1 1
|
11
|
13
|
C
|
0 0 0 0 1 1 0 0
|
12
|
14
|
D
|
0 0 0 0 1 1 0 1
|
13
|
15
|
*
|
0 0 0 0 1 1 1 0
|
14
|
16
|
#
|
0 0 0 0 1 1 1 1
|
15
|
2.
Source code program pada langkah percobaan nomor 8
#include <mega8535.h>
#include <delay.h>
unsigned char keypad();//mendeklarasikan
fungsi keypad
void main ()
{
PORTB=0xff;//0b11111111
DDRB=0X0f; //PORTB
sebagai input dan output, ob00001111
PORTC=0X00;
DDRC=0Xff;//PORTC sebagai output
while (1)
{
//PORTC=keypad();//menampilkan hasil yang
dikembalikan oelh fungsi ke LED
if (keypad()==1)
PORTC=0b11111111;
delay_ms(10);
if (keypad()==0)
PORTC=0b00000000;
delay_ms(10);
}
}
unsigned char keypad ()
{
PORTB=0b11111110;//aktifkan baris 1(memberi
logika 0 ke baris 1
delay_ms(100);//jeda waktu
if(PINB.7==0)return(10);
if(PINB.6==0)return(3);
if(PINB.5==0)return(2);
if(PINB.4==0)return(1);
//=====================
PORTB=0b11111101;//aktifkan baris 2
delay_ms(100);//jeda waktu
if(PINB.7==0)return(11);
if(PINB.6==0)return(6);
if(PINB.5==0)return(5);
if(PINB.4==0)return(4);
//=====================
PORTB=0b11111011;//aktifkan baris ke 3
delay_ms(100);
if(PINB.7==0)return(12);
if(PINB.6==0)return(9);
if(PINB.5==0)return(8);
if(PINB.4==0)return(7);
//=====================
PORTB=0b11110111;//aktifkan baris ke 4
delay_ms(100);
if(PINB.7==0)return(13);
if(PINB.6==0)return(15);
if(PINB.5==0)return(0);
if(PINB.4==0)return(14);
}
3.
Source code program pada langkah percobaan nomor 9
#include <mega8535.h> //sebagai header
program
#include <delay.h> //sebagai header
delay
unsigned char keypad();//mendeklarasikan
fungsi keypad()
void main ()
{
int kiri,kanan;
unsigned char
bil[9]={0x18,0x3c,0x7e,0xff,0xff,0xff,0x7e,0x3c,0x18};
unsigned char blg[15]= {0xf0,0xe0, 0xd0,0xc0,0xb0,0xa0,0x90,0x80,0x70,0x60,0x50,0x40,0x30,0x20,0x10};
PORTB=0xff;//0b11111111
DDRB=0X0f;//PORTB sebagai input dan output,
0b00001111
PORTC=0X;00;
DDRC=0Xff;//PORTC sebagai output
while (1)
{
//PORTC=keypad()
if (keypad()==0)
PORTC=0b00000001;
delay_ms(10);
if (keypad()==1)
PORTC=0b00000010;
delay_ms(10);
if (keypad()==2)
PORTC=0b00000100;
delay_ms(10);
if (keypad()==3)
PORTC=0b00001000;
delay_ms(10);
if (keypad()==4)
PORTC=0b00010000;
delay_ms(10);
if (keypad()==5)
PORTC=0b00100000;
delay_ms(10);
if (keypad()==6)
PORTC=0b01000000;
delay_ms(10);
if (keypad()==7)
PORTC=0b10000000;
delay_ms(10);
if (keypad()==8)
{ for(kanan=0;kanan<=14;kanan++)
{
PORTC=blg[kanan];
delay_ms(1000);
}
}
if (keypad()==9)
{ for(kiri=0;kiri<=8;kiri++)
{
PORTC=bil[kiri];
delay_ms(100);
}
}
If(keypad()=10)
PORTC=0b01010101; //output untuk nyala LED
0,2,4,6
delay_ms(100);
if(keypad()=11)
PORTC=ob10101010;
//output untuk nyala LED 1,3,5,7
delay_ms(100);
if(keypad()==12)
PORTC=0b01010101;
//output untuk nyal LED bit 0,2,4,6
delay_ms(1000);
//jeda waktu 1 menit
PORTC=0b10101010;
//output nyala LED bit 1,3,5,7
Delay_ms(1000);//untuk
jeda waktu 1 menit
If(keypad()==13
PORTC=0b00111100;
//nilai ouput dua digit NIM
if (keypad()==14)
PORTC=0b00000000;
delay_ms(10);
if (keypad()==15)
PORTC=0b11111111;
delay_ms(10);
}
}
unsigned char keypad ()
{
PORTB=0b11111110;
delay_ms(100);
if(PINB.7==0)return(10);
if(PINB.6==0)return(3);
if(PINB.5==0)return(2);
if(PINB.4==0)return(1);
//=====================
PORTB=0b11111101;
delay_ms(100);
if(PINB.7==0)return(11);
if(PINB.6==0)return(6);
if(PINB.5==0)return(5);
if(PINB.4==0)return(4);
//=====================
PORTB=0b11111011;
delay_ms(100);
if(PINB.7==0)return(12);
if(PINB.6==0)return(9);
if(PINB.5==0)return(8);
if(PINB.4==0)return(7);
//=====================
PORTB=0b11110111;
delay_ms(100);
if(PINB.7==0)return(13);
if(PINB.6==0)return(15);
if(PINB.5==0)return(0);
if(PINB.4==0)return(14);
}
4.
Jika tombol A ditekan LED bit 0,2,4,6
menyala dan bit 1,3,5,7 mati
5.
ANALISA DATA
1.
Analisa hasil percobaan pada tabel 4.1!
2.
Instruksi apa yang digunakan untuk membaca tombol keypad
yang ditekan?
3.
Instruksi yang digunakan untuk menyalakan LED sesuai keypad
yang ditekan?
4.
Buatlah flowchart instruksi pada nomor 3 dan jelaskan algoritmanya!
JAWAB
Pada program 4.1 alat keypad yang digunakan,
berfungsi untuk memunculkan tampilan keluaran yang dapat dilihat pada LED.Pada
keypad sendiri terdapat tombol:
·
Angka 0 – 9
·
Huruf A- D
·
Karakter * dan #
Dan didapat dari data hasil percobaan, apabila
setiap tombol-tombol pada keypad mempunyai nilai tampilan pada LED yang
berbeda-beda. Tampilan LED berlogika 1 saat kondisi nyala dan berlogika 0 saat
kondisi mati.Tampilan nyala pada LED ini juga merupakan bilangan biner yang
dapat diubah pula menjadi nilai desimal yang berbeda-beda pula tiap
tombolnya.Misalnya :
o
Angka 5 = 00000101 = 5
o
Huruf D = 00001101 = 13
o
Karakter # = 00001111= 15
Pada percobaan ini adanya masukan serta
keluaran juga sangat dipengaruhi oleh script program.Berikut merupakan script
program yang digunakan untuk mengubah dari masukan tombol keypad ke keluaran
berupa tampilan LED :
0 Profil penulis:
Posting Komentar