Anda di halaman 1dari 18

LAPORAN PRAKTIKUM IV MIKROPROSESOR

ANTARMUKA MIKROKONTROLER DENGAN KEYPAD


Untuk memenuhi Tugas Mata Kuliah Lab PTE 3
Yang dibimbing oleh
Ibu Dyah Lestari, S.T. M.ENG

Oleh Kelompok 6:
1. Abdur Rohman (150534603246)
2. Ahmat Nur Santoso (150534603442)
3. Amin Khoirun Nisak (150534601748)
4. Andi Suryo Handoyo (150534602292)

S1 Pendidikan Teknik Eelektro Offr. A 2015

UNIVERSITAS NEGERI MALANG


FAKULTAS TEKNIK
JURUSAN TEKNIK ELEKTRO
Oktober 2016
MODUL IV

ANTARMUKA MIKROKONTROLER DENGAN KEYPAD

A. Tujuan Praktikum
 Mahasiswa daoat Mengetahui dan memahami cara mengantarmukakan mikrokontroler
dengan keypad.
 MahasiswaMengetahui dan memahami bagaimana memrogram mikrokontroler untuk
membaca masukan dari keypad.

B. Dasar Teori

Keypad adalah bagian penting dari suatu perangkat elektronika yang membutuhkan
interaksi manusia. Keypad berfungsi sebagai interface antara perangkat (mesin) elektronik dengan
manusia atau dikenal dengan istilah HMI (Human Machine Interface). Matrix keypad 4×4 memiliki
konstruksi atau susunan yang simple dan hemat dalam penggunaan port mikrokontroler.
Konfigurasi keypad dengan susunan bentuk matrix ini bertujuan untuk penghematan port
mikrokontroler karena jumlah key (tombol) yang dibutuhkan banyak pada suatu sistem dengan
mikrokontroler. 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 #.

Gambar 4.1 Keypad 4x4

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.
Gambar 2.2 Rangkaian keypad dan LED

Proses Scaning Matrix Keypad 4×4 Untuk Mikrokontroler Proses scaning untuk membaca
penekanan tombol pada matrix keypad 4×4 untuk mikrokontroler diatas dilakukan secara bertahap
kolom demi kolom dari kolom pertama sampai kolom ke 4 dan baris pertama hingga baris ke 4.
Program untuk scaning matrix keypad 4×4 dapat bermacam-macam, tapi pada intinya sama. Misal kita
asumsikan keyapad aktif LOW (semua line kolom dan baris dipasang resistor pull-up) dan dihubungkan
ke port mikrokontrolr dengan jalur kolom adalah jalur input dan jalur baris adalah jalur output maka
proses scaning matrix keypad 4×4 diatas dapat dituliskan sebagai berikut.

1. Mengirimkan logika Low untuk kolom 1 (Col1) dan logika HIGH untuk kolom yang lain
kemudian membaca data baris, misal tombol SW1 ditekan maka data baris pertama
(Row1) akan LOW sehingga data baris yang dibaca adalah 0111, atau tombol yang ditekan
tombol SW5 maka data pada baris ke 2 akan LOW sehingga data yang terbaca 1011, atau
tombol SW9 yang ditekan sehingga data yang terbaca 1101, atau tombol SW13 yang
ditekan maka data yang dibaca adalah 1110 dan atau tidak ada tombol pada kolom
pertama yang di tekan maka data pembacaan baris akan 1111.

2. Mengirimkan logika Low untuk kolom 2 (Col2) dan logika HIGH untuk kolom yang lain
kemudian membaca data baris, misal tombol SW1 ditekan maka data baris pertama
(Row1) akan LOW sehingga data baris yang dibaca adalah 0111, atau tombol yang ditekan
tombol SW5 maka data pada baris ke 2 akan LOW sehingga data yang terbaca 1011, atau
tombol SW9 yang ditekan sehingga data yang terbaca 1101, atau tombol SW13 yang
ditekan maka data yang dibaca adalah 1110 dan atau tidak ada tombol pada kolom
pertama yang di tekan maka data pembacaan baris akan 1111.
3. Mengirimkan logika Low untuk kolom 3 (Col3) dan logika HIGH untuk kolom yang lain
kemudian membaca data baris, misal tombol SW1 ditekan maka data baris pertama
(Row1) akan LOW sehingga data baris yang dibaca adalah 0111, atau tombol yang ditekan
tombol SW5 maka data pada baris ke 2 akan LOW sehingga data yang terbaca 1011, atau
tombol SW9 yang ditekan sehingga data yang terbaca 1101, atau tombol SW13 yang
ditekan maka data yang dibaca adalah 1110 dan atau tidak ada tombol pada kolom
pertama yang di tekan maka data pembacaan baris akan 1111

4. Mengirimkan logika Low untuk kolom 4 (Col4) dan logika HIGH untuk kolom yang lain
kemudian membaca data baris, misal tombol SW1 ditekan maka data baris pertama
(Row1) akan LOW sehingga data baris yang dibaca adalah 0111, atau tombol yang ditekan
tombol SW5 maka data pada baris ke 2 akan LOW sehingga data yang terbaca 1011, atau
tombol SW9 yang ditekan sehingga data yang terbaca 1101, atau tombol SW13 yang
ditekan maka data yang dibaca adalah 1110 dan atau tidak ada tombol pada kolom
pertama yang di tekan maka data pembacaan baris akan 1111.

Kemudian data pembacaan baris ini diolah sebagai pembacaan data penekanan tombol
keypad. Sehingga tiap tombol pada matrix keypad 4×4 diatas dengan teknik scaning tersebut akan
menghasilkan data penekanan tiap-tiap tombol sebagai berikut.

Data port mikrokontroler, misalkan pada SW2 = 1011 0111 tersebut terbagi dalam nible atas
dan nible bawah dimana data nible atas (1011) merupakan data yang kita kirimkan sedangkan data
nible bawah (0111) adalah data hasil pembacaan penekanan tombol keypad SW2 pada proses
scaning matrix keypad 4×4 diatas
C. METODOLOGI

ALAT DAN BAHAN


 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), sehingga inisialisasi PORTB dan PORTC terlihat sebagai
berikut:

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 ...)

 LED Menyala
 LED Mati

j. Jika tombol 9 ditekan LED menyala sesuai gambar dibawah ini ber urutan dari
atas kebawah dengan delay 1 detik. (Gunakan perulangan for ...)
 LED Menyala
 LED Mati

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.

D. DATA HASIL PERCOBAAN

1. Tampilan LED program keypad 1

Tabel 1. hasil percobaan 1


Tombol keypad yang Tampilan LED bit Nilai tampilan LED
NO
diekan 7 6 5 4 3 2 1 0 (dalam desimal)
1 0 0
2 1 1
3 2 2
4 3 3
5 4 4
6 5 5
7 6 6
8 7 7
9 8 8
10 9 9
11 A 10
12 B 11
13 C 12
14 D 13
15 * 14
16 # 15
2. Source code program keypad 2
#include <mega8535.h>
#include <delay.h>

unsigned char keypad();


unsigned char keypad()
{
PORTB=0b11111110; //mengaktifkan baris ke 1
delay_ms(100); //nilai delay setiap pergantian tampilan LED (saat
tombol ditekan)
if(PINB.7==0)return(10); //pemberian nilai yang akan ditampilkan pada
LED jika PINB.X berlogika 0
if(PINB.6==0)return(3);
if(PINB.5==0)return(2);
if(PINB.4==0)return(255);

PORTB=0b11111101; //mengaktifkan baris 2


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; //mengaktifkan baris 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; mengaktifkan baris 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);

void main(void) //program utama


{
PORTB=0xff; //inisialisasi konfigursai PORTB floating pada pin yang
berfungsi sebagai input dan akan aktif low pada pin yang berfungsi
sebagai output
DDRB=0x0f; //inisialisasi registrasi DDRB sebagai input dan output
PORTC=0x00; //inisialisasi konfigurasi PORTC aktif high
DDRC=0xff; //inisialisasi register DDRC sebagai output

while (1)
{

PORTC=keypad(); //menampilkan hasil output PORTC dengan melakukan


pemanggilan terhadap fungsi keypad
}
}
3. Source code program keypad 3

#include <mega8535.h>
#include <delay.h>
unsigned char keypad();
unsigned char keypad()
{
PORTB=0b11111110; //mengaktifkan baris ke 1
delay_ms(10); //nilai delay setiap pergantian tampilan LED (saat
tombol ditekan)

//menentukan tampilan LED saat tombol X ditekan


if(PINB.7==0)return(0x55); //tombol A
if(PINB.6==0)return(8); //tombol 3
if(PINB.5==0)return(4); //tombol 2
if(PINB.4==0)return(2); //tombol 1

PORTB=0b11111101; //mengaktifkan baris 2


delay_ms(10);

//menentukan tampilan LED saat tombol X ditekan


if(PINB.7==0)return(0xaa); //tombol B
if(PINB.6==0)return(64); //tombol 6
if(PINB.5==0)return(32); //tombol 5
if(PINB.4==0)return(16); //tombol 4

PORTB=0b11111011; //mengaktifkan baris 3


delay_ms(10);

//menentukan tampilan LED saat tombol X ditekan


if(PINB.7==0) //tombol C
{
char urutan[2]={0xaa,0x55}; //deklarasi fungsi
char u; //deklarasi variable
for(u=0;u<2;u++) //perulangan untuk menampilkan data yang telah
ditentukan sebanyak 2 kali
{
PORTC=urutan[u]; //menampilkan data pada LED dengan pemanggilan
fungsi urutan
delay_ms(50); //nilai delay pada setiap perulangan

}
};
if(PINB.6==0) //tombol 9
{
char urutan[9]={0x18,0x3c,0x7e,0xff,0xff,0xff,0x7e,0x3c,0x18};
char u;
for(u=0;u<9;u++)
{
PORTC=urutan[u];
delay_ms(100);
}
}
if(PINB.5==0) //tombol 8
{
Char
urutan[15]={0xf0,0xe0,0xd0,0xc0,0xb0,0xa0,0x90,0x80,0x70,0x60,0x50,0x
40,0x30,0x20,0x10};
char u;
for(u=0;u<15;u++)
{
PORTC=urutan[u];
delay_ms(100);
}
}
if(PINB.4==0)return(128); //tombol 7

//menentukan tampilan LED saat tombol X ditekan


PORTB=0b11110111; //aktifkan baris 4
delay_ms(10);
if(PINB.7==0)return(0x42); //tombol D
if(PINB.6==0)return(0xff); //tombol #
if(PINB.5==0)return(1); //tombol 0
if(PINB.4==0)return(0x00); //tombol *

void main(void) //program utama


{
PORTB=0xff; //inisialisasi konfigursai PORTB floating pada pin yang
berfungsi sebagai input dan akan aktif low pada pin yang berfungsi
sebagai output
DDRB=0x0f; //inisialisasi registrasi DDRB sebagai input dan output
PORTC=0x00; //inisialisasi konfigurasi PORTC aktif high
DDRC=0xff; //inisialisasi register DDRC sebagai output

while (1)
{

PORTC=keypad(); //menampilkan hasil output PORTC dengan melakukan


pemanggilan terhadap fungsi keypad
}
}

E. ANALISA DATA

1. Analisa hasil percobaan pada tabel 4.1

a. Analisa data program keypad 1

Program keypad satu berfungsi menampilkan nilai dari setiap tombol keypad yang
ditekan pada rangkaian LED yang terdiri dari 7 bit sesuai dengan nilai yang ada pada tombol
namun dikonversikan dalam bentuk bilangan biner. Dimana setiap LED mewakili satu bit
bilangan biner. hasil dari konversi nilai tombol menjadi nyala LED yang nilainya sesuai dengan
nilai tombol yang ditekan dapat dilihat pada tabel 4.1.

Pada tabel 4.1 tertera tombol yang ditekan, hasil tampilan LED dan nilainya jika
dikonversikan menjadi bilangan desimal. Seprti jika tombol 1 ditekan maka LED bit 1 akan
menyala dan LED bit ke 1 ini jika dalam bilangan biner berarti berniali 1 apabila dikonversikan
menjadi bilangan desimal. Sedangkan untuk tombol A, B, C, D, * dan # apabila ditekan akan
menghasilkan tampilan LED yang apabila nilainya dikonversikan menjadi bilangan desimal
memiliki nilai yang berurutan mulai dari 10, 11, 12, 13, 14 dan 15.

Untuk bisa membuat hasil tampilan seperti yang dijelaskan diatas maka kita terlebih
dahulu harus mengetahui perkalian matriks setiap tombol – tombol keypadnya. Pada keypad
yang kita gunakan merupakan jenis keypad 4x4 yang berarti memiliki 4 baris dan 4 kolom.
Baris satu kolom 1, 2, 3, 4 yang masing – masing merupakan tombol dengan nilai 1, 2, 3, A.
Sedangkan baris dua kolom 1, 2, 3, 4 yang masing – masing merupakan tombol dengan nilai
4, 5, 6, B. Baris tiga kolom 1, 2, 3, 4 yang masing – masing merupakan tombol dengan nilai 7,
8, 9, C. Dan terakhir baris 4 kolom 1, 2, 3, 4 yang masing – masing merupakan tombol dengan
nilai *, 0, #, D.

Untuk perancangannya pada mikrokontroler baris 1, 2, 3 dan 4 akan dihubungkan


pada PORTB bit ke 0 sampai bit ke 3 yang difungsikan sebagai output. Sedangkan kolom
keypad dihubungkan pada PORTB bit ke 4 sampai 7 yang difungsikan sebagai input. Karena
pada PORTB sebagai input(foating) dan output(aktif low) maka setting register DDRB= 0x0f.

Sedangkan LED yang terhubung pada PORTC berfungsi sebagai output. Karena PORTC
bekerja sebagai output maka setting register DDRC = 0x00 (aktif low).

Untuk dapat mengaktifkan baris maka baris yang diingkan harus diberi logika 0 dan
ketika tombol ditekan maka akan membuat kolom yang terhubung dengan baris yang
berlogika nol menjadi ikut berlogika nol. Dan pada saat inilah kita bisa memberi nilai balik
pada kolom dengan nilai yang sesuai dengan nilai tombol. Nilai balik yang diberikan
merupakan bilangan desimal. Nantinya bilangan desimal ini akan dikonversi menjadi bilangan
biner 8 bit yang nilainya akan ditampilkan pada LED yang terhubung dengan PORTC. Berikut
adalah contoh source code dari penjelasan diatas :

PORTB=0b11111110; //mengaktifkan baris ke 1


delay_ms(100); //nilai delay setiap pergantian tampilan LED (saat
tombol ditekan)
if(PINB.7==0)return(10); //pemberian nilai yang akan ditampilkan pada
LED jika PINB.X berlogika 0
if(PINB.6==0)return(3);
if(PINB.5==0)return(2);
if(PINB.4==0)return(255);

pemberian nilai balik pada setiap baris dan kolom ini dilakukan dengan memasukan
setiap inisialisasi logika dan nilai balik pada sebuah fungsi yang nantinya akan dipanggil pada
program utama.
Perintah pemanggilan fungsi ini adalah sebagai berikut :

PORTC=keypad(); //menampilkan hasil output PORTC dengan melakukan


pemanggilan terhadap fungsi keypad

Peletakan inisialisasi logika baris dan kolom serta pemberian nilai balik ini dailakukan
dengan pemanggilan fungsi dengan tujuan agar program utama source code program keypad
ini tidak terlalu panjang.

b. Analisa data program keypad 2

Secara keseluruhan program keypad 2 memiliki cara perancagan dan source code
yang sama seperti progaram pertama. Perbedaannya hanya pada pemberian nilai balik yang
berbeda pada tombol satu dan nol. Karena pada program ini ingin membuat semua LED
menyala ketika tombol satu ditekan dan membuat semua LED mati ketika tombol nol ditekan.

Untuk bisa membuat tampilan LED menyala semua ketika tomol satu ditekan maka
terlebih dahulu harus mengkonversikan nilai biner dari nyala LED menjadi bilangan desimal.
Karena ada 8 bit LED dan semua dibuat menyala berarti jika dijadikan nilai biner akan
menghasilkan bilangan 11111111. Bilangan biner ini jika dikonversikan menjadi bilangan
desimal akan bernilai 255. Jadi pada baris 1 kolom 4 harus diberi nilai balik 255. Berikut adalah
source codenya :

if(PINB.4==0)return(255);

sedangkan jika LED mati semua maka nilai binernya adalah 00000000, apabila
dikonversikan menjadi bilangan desimal maka bernilai 0. Jadi saat tombol nol ditekan atau
pada baris 4 kolom ke 2 nilai baliknya adalah nol. Berikut adalah source codenya :

if(PINB.5==0)return(0);

c. Analisa data program keypad 2

sama dengan program keypad sebelumnya pada program keypad ini untuk membuat
tampilan nyala LED sesuai dengan apa yang diinginkan maka dilakukan dengan memberikan
nilai balik pada tombol dan baris yang sesusi dengan tombol yang ingin diatur tampilan nyala
LED nya. Namun pada beberapa tombol karena yang harus ditampilkan merupakan
konfigurasi nyala LED maka dilakukan dengan membuat sebuah perulangan dengan perintah
perulangan for.

Pada tombol 0 sampai 7 untuk menampilkan nyala LED dilakukan dengan pemberian
nilai balik sesuai dengan nilai yang diingkan jika tombol ditekan. Seperti contoh jika tombol
satu ditekan maka LED bit 1 akan menyala. Untuk bisa menciptakan kondisi ini maka harus
mengkonversi dahulu nilai biner LED pada bilangan desimal. Jika LED bit satu menyala berarti
nilai bilangan binernya adalah 00000010 jika dikonversikan menjadi desimal maka akan
menghasilkan bilangan 2. Jadi nilai balik pada baris 1 kolom 1 adalah 2
if(PINB.4==0)return(2); //tombol 1

sedangkan untuk membuat konfigurasi nyala LED digunakan perulangan for. Namun
sebelum membuat perulangan terlebih dahulu harus mengkonversikan nyala setiap LED yang
akan dikonfigurasikan menjadi nilai bilangan desimal. Nilai ini kenudian dimasukan pada
sebuah fungsi yang akan dipanggil pada proses perulangan. Sebagai contoh jika tombol 9
ditekan akan menghasilkan konfigurasi LED seperti :

Untuk bisa menampilakan kofigurasi seperi gambar diatas maka kita perlu
mengkonfigurasi setiap baris tampilan LED menjadi bilangan desimal, kemudian memasukan
nilai desimal setiap baris LED pada sebuah fungsi kemudian memanggilnya pada perulangan.
Berikut adalah source codenya :

if(PINB.6==0) //tombol 9
{
char
urutan[9]={0x18,0x3c,0x7e,0xff,0xff,0xff,0x7e,0x3c,0x18};
char u;
for(u=0;u<9;u++)
{
PORTC=urutan[u];
delay_ms(100);
}
}

2. Instruksi apa yang digunakan untuk mebaca tombol keypad yang ditekan?

Instruksi yang digunakan untuk membaca tombol keypad yang ditekan adalah

PORTB=0b11110111; //mengaktifkan baris 4


delay_ms(100);
if(PINB.7==0) //ketika tombol ditekan kolom akan terhubung dengan baris
sehinga kolom berlogika nol dan saat kolom berlogika nol maka keypad
akan dibaca aktif

untuk membaca tombol yang ditekan terlebih dahulu harus memberi logika nol pada baris.
Ketika baris berlogika nol maka baris tersebut aktif. Setelah itu jika ada tombol yang ditekan
maka akan membuat kolom akan aktif sehingga kolom akan terhubung dengan baris dan akan
memiliki logika nol. Saat kolom pada tobol yang ditekan berlogika nol maka yombol keypad
akan dibaca aktif.

3. Instruksi yang digunakan untuk menyalakan LED sesuai keypad yang ditekan?

Untuk menyalakan LED sesuai tombol yang ditekan dilakukan dengan memberi nilai balik
setiap kali kolom aktif atau kolom berlogika nol
Contoh :
if(PINB.5==0)return(32); //tombol 5

perintah return berfungsi untuk memberi nilai balik sehingga LED akan menyala sama sepe rti
nilai balik yang diberikan. Jika nilai balik merupakan bilangan desimal maka akan
dikonversikan menjadi bilangan biner 8 bit sedangkan jika bilangan hexadesimal akan
dikonversikan menjadi bilangan biner 4 bit

4. Buatlah flowchart instruksi pada nomor 3 dan jelaskan algoritmanya!

Fowchart : terlampir pada lampiran 1

Algoritma :

1. Tentukan header porgram


2. Deklarasi fungssi keypad
3. Buat isi program fungsi keypad
a. Aktifkan baris pertama
- Jika kolom satu berlogika nol maka niai balik yang ditampilkan pada
LED 0x55 (bilangan desimal)
- Jika kolom dua berlogika nol maka nilai balik yang di tampilkan pada
LED 8 (desimal)
- Jika kolom tiga berlogika nol maka nilai balik yang di tampilkan pada
LED 4 (desimal)
- Jika kolom empat berlogika nol maka nilai balik yang di tampilkan
pada LED 2 (desimal)
b. Aktifkan baris kedua
- Jika kolom satu berlogika nol maka nilai balik yang di tampilkan
pada 0xaa (hexadesimal)
- Jika kolom dua berlogika nol maka nilai balik yang di tampilkan pada
LED 64 (desimal)
- Jika kolom tiga berlogika nol maka nilai balik yang di tampilkan pada
LED 32 (desimal)
- Jika kolom empat berlogika nol maka nilai balik yang di tampilkan
pada LED 16 (desimal)
c. Aktifkan baris ketiga
- Jika kolom satu berlogika nol maka akan menampilkan konfigurasi
LED,
Buat fungsi urutan didalamnya terdapat nilai dari konversi tampilan
LED yang diinginkan
Deklarasi variable
Perulangan variable dengan for
Tanpilkan hasil dengan memanggil fungsi urutan
- Jika kolom dua berlogika nol maka akan menampilkan konfigurasi
LED,
Buat fungsi urutan didalamnya terdapat nilai dari konversi tampilan
LED yang diinginkan
Deklarasi variable
Perulangan variable dengan for
Tanpilkan hasil dengan memanggil fungsi urutan
- Jika kolom tiga berlogika nol maka akan menampilkan konfigurasi
LED,
Buat fungsi urutan didalamnya terdapat nilai dari konversi tampilan
LED yang diinginkan
Deklarasi variable
Perulangan variable dengan for
Tanpilkan hasil dengan memanggil fungsi urutan
- Jika kolom satu berlogika nol maka nilai balik yang di tampilkan
pada 128 (desimal)
d. Aktifkan baris keempat
- Jika kolom satu berlogika nol maka nilai balik yang di tampilkan
pada LED adalah 0x42 (hexadesimal)
- Jika kolom dua berlogika nol maka nilai balik yang di tampilkan pada
LED adalah 0xff (hexadesimal)
- Jika kolom tiga berlogika nol maka nilai balik yang di tampilkan pada
LED adalah 1 (desimal)
- Jika kolom empat berlogika nol maka nilai balik yang di tampilkan
pada LED adalah 0x00 (hexadesimal)
4. Program utama
5. Setting konfigurasi PORT dan register DDR
6. Pemnaggilan fungsi keypad
7. Menampilkan hasil
8. selesai
F. KESIMPULAN

1. Untuk mengantarmukakan mikrokontroler dengan keypad dilakukan dengan


menghubungkan keypad dengan PORT pada mikrokontroler dan difungsikan sebagai input
dan output. Dan untuk mengetahui tombol mana yang kita tekan dapat dilakukan dengan
cara memasang LED pada PORT lain chip mikro dan difungsikan sebagai output.
2. Sebelum menghubungkan keypad pada chip mikro terlebih dahulu harus mengetahui
jenis keypad dan konfigurasi tombolnya berdsarkan setiap baris dan kolom yang terhubug
pada tombol.
3. Untuk memebaca masukan keypad maka program akan dibagi berdasarkan posisi
barisnya kemudian memberi logika nol pada setiap baris. Tombol yang ditekan akan
mengaktifkan kolom sehinnga kolom yang terhubung pada baris yang aktif akan ikut
berlogika nol dan membuat tombol berfungsi atau aktif.
4. Untuk mengetahui atau memastikan tombol yang aktif bisa menggunakan LED sebagai
output. Dimana setiap tombol akan menghasilkan tampilan LED yang berbeda. Untuk bisa
membuat kondisi itu dilakukan dengan memberikan nilai balik pada setiap kolom.
Besarnya nilai balik bisa diatursesuai keinginan.
5. Nilai balik yang diberikan pada setiap kolom akan dikonversian menjadi bilangan biner 8
bit yang akan ditampilkan pada LED. Dimana jika bernilai satu maka LED menyala
sedangkan jika berlogika nol maka LED akan mati.
6. Untuk membuat konfigurasi pada tampilan LED ketika tombol tertentu ditekan. Bisa
dilakukan dengan mengganti nilai balik dengan program perulangan for.
LAMPIRAN 1 FLOWCHART

mulai
A

Deklarasi fungsi Aktifan baris 1


keypad

Fungsi keypad PINB.7==0 benar Return 0x55

salah

end
PINB.6==0 benar Return 8

B Tampilkan
hassil
pada LED
Fungsi keypad
PINB.5==0 benar Return 4

B
B A
A
Salah
Return 2
PINB.7==4
A

Aktifan baris 2

PINB.7==0 benar Return 0xaa

salah

PINB.6==0 benar Return 64

Tampilkan
hassil
pada LED

PINB.5==0 benar Return 32 B

Salah
Return 16
PINB.7==4
A

Aktifan baris 1

PINB.7==0 benar Return 0x42

salah

PINB.6==0 benar Return 0XFF

Tampilkan
hassil
pada LED

PINB.5==0 benar Return 1

Salah
Return 0x00
PINB.7==4

Anda mungkin juga menyukai