0% menganggap dokumen ini bermanfaat (0 suara)
535 tayangan

Program AVR Keypad

Program ini membuat sistem input menggunakan keypad 4x4 dan output menggunakan LED. Program mendeteksi tombol mana yang ditekan pada keypad lalu menampilkan kode hexadecimalnya pada LED tertentu.

Diunggah oleh

Bayu Tria Ganecha
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai DOCX, PDF, TXT atau baca online di Scribd
0% menganggap dokumen ini bermanfaat (0 suara)
535 tayangan

Program AVR Keypad

Program ini membuat sistem input menggunakan keypad 4x4 dan output menggunakan LED. Program mendeteksi tombol mana yang ditekan pada keypad lalu menampilkan kode hexadecimalnya pada LED tertentu.

Diunggah oleh

Bayu Tria Ganecha
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai DOCX, PDF, TXT atau baca online di Scribd
Anda di halaman 1/ 22

Laporan Praktikum

Laboratorium MIKROKONTROLER 1
AVR ATmega8535
Proyek 05
Keypad

Disusun oleh:
Kelompok EK-2A / 06
06
09

- Bayu Triatmono
- Hanfil Lutfia Anisa

NIM
NIM

3.32.13.0.06
3.32.13.0.09

Dosen: Dr. Samuel BETA; Ing-Tech.,M.T.

PROGRAM STUDI TEKNIK ELEKTRONIKA


JURUSAN TEKNIK ELEKTRO
POLITEKNIK NEGERI SEMARANG
2014-2015
Proyek - 05

Lab. Mikrokontroler I

Keypad
1. Tujuan
Tujuan dari percobaan ini praktikan dapat :

Memahami cara kerja sistem pengendali masukan luaran digital secara keseluruhan dan
mampu membuat sistem untuk membaca masukan dan menghasilkan luaran digital

Memahami cara kerja perangkat keras (rangkaian) pengendali masukan luaran digital dan
mampu menghubungkan mikrokontroler AVR ATmega8535 dengan rangkaian penggerak
masukan luaran

Memahami cara kerja perangkat lunak (program) dan perintah bahasa rakitan
mikrokontroler AVR ATmega8535 dan mampu membuat program untuk rangkaian
penggerak masukan luaran

Memahami cara kerja sistem tunda pada perangkat lunak dan mampu membuat program
menu

2. Dasar Teori
ATmega8535 yang menggunakan teknologi RISC (Reduce Instruction Set Computing)
dimana program berjalan lebih cepat karena hanya membutuhkan satu siklus clock untuk
mengeksekusi satu instruksi program. Secara umum, AVR dapat dikelompokkan menjadi 4
kelas, yaitu kelas ATtiny, keluarga AT90Sxx, keluarga ATmega, dan AT86RFxx. Pada
dasarnya yang membedakan masing-masing kelas adalah memori, peripheral, dan fungsinya.
Dari segi arsitektur dan instruksi yang digunakan, mereka bisa dikatakan hampir sama.
Mikrokontroler ATmega8535 memiliki 3 jenis m emori, yaitu memori program, memori
data dan memori EEPROM. Ketiganya memiliki ruang sendiri dan terpisah.
a. Memori program
ATmega8535 memiliki kapasitas memori progam sebesar 8 Kbyte yang terpetakan dari
alam at 0000h 0FFFh dimana masing-masing alamat memiliki lebar data 16 bit.
Memori program ini terbagi menjadi 2 bagian yaitu bagian program boot dan bagian
program aplikasi.
b. Memori data
ATmega8535 memiliki kapasitas memori data s ebesar 608 byte yang terbagi menjadi 3
bagian yaitu register serba guna, register I/O dan SRAM. ATmega8535 memiliki 32
byte register serba guna, 64 byte register I/O yang dapat diakses sebagai bagian dari
memori RAM (menggunakan instuksi LD atau ST) atau dapat juga diakses sebagai I/O
Proyek05-Keypad

Lab. Mikrokontroler I

(menggunakan instruksi IN atau OUT), dan 512 byte digunakan untuk memori data
SRAM.
c. Memori EEPROM
ATmega8535 memiliki memori EEPROM sebesar 512 byte yang terpisah dari memori
program maupun memori data. Memori EEPROM ini hanya dapat diakses dengan
menggunakan register-register I/O yaitu register EEPROM Address, register EEPROM
Data, dan register EEPROM Control. Untuk mengakses memori EEPROM ini
diperlakukan seperti mengakses data eksternal, sehingga waktu eksekusinya relatif lebih
lama bila dibandingkan dengan mengakses data dari SRAM.

Setiap port ATmega8535 terdiri dari 3 register I/O yaitu DDRx, PORTx, dan PINx

DDRx (Data Direction Register)


Register DDRx digunakan untuk memilih arah pin. Jika DDRx=1 maka pin x

sebagai keluaran dan jika DDRx=0 makan pin x sebagai masukan


PORTx (Port Data Register)
Register Portx digunakan untuk 2 keperluan yaitu untuk jalur keluaran atau

untuk mengaktifkan resistor pull up internal


PINx (Port Input Pin Addres)
Digunakan sebagai register masukan

ATmega8535 memiliki 3 modul timer yang terdiri dari 2 buah tim er/counter 8 bit dan 1
buah timer/counter 16 bit. Ketiga modul timer/counter ini dapat diatur dalam mode yang
berbeda secara individu dan tidak saling mempengaruhi satu sama lain. Selain itu, semua
timer/counter juga dapat difungsikan sebagai sumber interupsi. Masing-masing timer/counter
ini memiliki register tertentu yang digunakan untuk mengatur mode dan cara kerjanya.
KEYPAD

Proyek05-Keypad

Lab. Mikrokontroler I

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
44 pada artikel ini merupakan salah satu contoh keypad yang dapat digunakan untuk
berkomunikasi antara manusia dengan mikrokontroler. Matrix keypad 44 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. Konstruksi matrix keypad 44 untuk mikrokontroler dapat dibuat
seperti pada gambar berikut.

Konstruksi Matrix Keypad 44 Untuk Mikrokontroler

Konstruksi matrix keypad 44 diatas cukup sederhana, yaitu terdiri dari 4 baris dan 4
kolom dengan keypad berupas saklar push buton yang diletakan disetiap persilangan kolom
dan barisnya. Rangkaian matrix keypad diatas terdiri dari 16 saklar push buton dengan
konfigurasi 4 baris dan 4 kolom. 8 line yang terdiri dari 4 baris dan 4 kolom tersebut
dihubungkan dengan port mikrokontroler 8 bit. Sisi baris dari matrix keypad ditandai dengan
nama Row1, Row2, Row3 dan Row4 kemudian sisi kolom ditandai dengan nama Col1, Col2,
Col3 dan Col4. Sisi input atau output dari matrix keypad 44 ini tidak mengikat, dapat
Proyek05-Keypad

Lab. Mikrokontroler I

dikonfigurasikan kolom sebagi input dan baris sebagai output atau sebaliknya tergantung
programernya.

3. Praktikum
3.1. Keypad
3.1.1. Permasalahan
Program untuk menampilkan tombol KEYPAD yang ditekan pada LED (hanya 1
kolom).
Masukan

: Pintu PA (Keypad)

Proses

: Peralihan data segera ke pintu PD

Keluaran

: Pintu PD (LED)

Gambar rangkaian :

3.1.2. Penyelesaian
luaran LED menampilkan kode (hex) sesuai dengan masukan Keypad yang ditekan
pada kolom ke 3.
3.1.2.1. Diagram Alir

Proyek05-Keypad

Lab. Mikrokontroler I

3.1.2.2. Program
Program untuk menampilkan tombol keypad yang ditekan pad LED (kolok ke 3)
/* =========================================
Proyek 05-Papan Tombol Keypad
P051a-Keypad LED
program untuk menampilkan tombol KEYPAD
yang ditekan pada LED (hanya 1 kolom)
---------------------------------------Materi baru:
- KEYPAD 4x4
---------------------------------------Komponen:
- 1x modul KEYPAD 4 kolom x 4 baris
- 1x Bargraf (8xLED)
- 1x R Net 120 ohm
======================================== */
//=== Daftar Pustaka ===
#include <mega8535.h>
#include <delay.h>

//AVR ATmega 8535


//tunda

//=== Deklarasi sub program ===


unsigned char bacaKeypad(void);

//membaca tombol Keypad yang ditekan

//=== Deklarasi variabel ===


unsigned char
keypad [4][4]= {
//tombol keypad
{0x01, 0x02, 0x03, 0x0C},
{0x04, 0x05, 0x06, 0x0D},
{0x07, 0x08, 0x09, 0x0E},
{0x0A, 0x00, 0x0B, 0x0F}
},//keypad
kode,
tombol;

//tombol yang ditekan

void main (void)


Proyek05-Keypad

Lab. Mikrokontroler I
6
{
//=== Pengesetan Awal ====
DDRD = 0b11111111;
//semua pin pada pintu Py sebagai luaran
DDRA = 0b11110000;
//Px 7-4:luaran (kolom) 3-0:masukan (baris)
//=== Program Utama ===
while(1)
{
kode = bacaKeypad();
PORTD= kode;
}//while
}//main

//baca tombol Leypad yang ditekan


//tampilkan kode di 7 ruas(pintu Py)

//=== Sub program ===


//-bacaKeypad: untuk membaca tombol Keypad yang ditekan
unsigned char bacaKeypad(void)
{
PORTA = 0b01111111;
//kolom 3 diaktifkan
delay_ms(5);
if (PINA.0 == 0)
//cek baris 0
tombol = keypad[0][3];
if (PINA.1 == 0)
//cek baris 1
tombol = keypad[1][3];
if (PINA.2 == 0)
//cek baris 2
tombol = keypad[2][3];
if (PINA.3 == 0)
//cek baris 3
tombol = keypad[3][3];
return(tombol);
//kembalikan nilai tombol
}
/* =========================================

3.1.2.3 Hasil Percobaan

Proyek05-Keypad

Lab. Mikrokontroler I

Untuk mendapatkan hasil percobaan ini, langkah percobaan yang dilakukan adalah
sebagai berikut:
1. Membuka aplikasi CodeVisionAVR, klik file New Project pilih target ATmega
pada CodeWizardAVR pilih ATmega8535 lalu klik Generate Program Simpan
dengan nama P05-Keypad.prj.
2. Memasukkan program, mengkompilasi [.c] amati apakah ada peringatan kesalah
error.
3. Selanjutnya, buka software simulasi Proteus > ISIS 8.1 Profesional .
4. Program yang sudah jadi disimulasikan ke Proteus, masukkan file P05-Keypad.hex
ke Mikrokontroler ATmega8535. Lalu klik tombol play untuk menjalankan
simulasinya. Dan amati hasilnya.
5. Menghubungkan bootloader

ke pintu USB komputer dan ke konektor

[PROGRAMER]. Menyalakan modul pelatihan.


6. Membuka program isp. Jika USB sudah terhubung maka progamstate bertuliskan
PROGSIP akan menyala hijau.
7. Membuka program progisp, pilih ATmega8535 pada SelectChip, klik load Flash,
unggah file P05-Keypad.hex ke kit, klik erase, kemudian klik auto.
8. Lihat hasil nya pada layar LED di modul pelatihan
1.1.3. Pembahasan
Program dengan menggunakan keypad sebagai input pada pintu PA dan LED sebagai output
pada pintu PD. Tampilan pada Led yaitu data yang telah dibuat sebelumnya yang ditampung
pada Array dua dimensi
//=== Deklarasi variabel ===
unsigned char
keypad [4][4]= {
//tombol keypad
{0x01, 0x02, 0x03, 0x0C},
{0x04, 0x05, 0x06, 0x0D},
{0x07, 0x08, 0x09, 0x0E},
{0x0A, 0x00, 0x0B, 0x0F}
},//

Pada program diatas menunjukan data yang akan ditampilkan pada led yaitu data yang akan
ditampilkan dengan susunan yang diibaratkan sebuah tombol keypad sebagai contoh:
Kolom ke empat baris ke dua (keypad[1][3]) berisi data hex 0x0D bila tombol pada keypad
pada kolom dan baris tersebut ditekan maka Led menampilan data hex 0D
Program pada keypad adalah:
Proyek05-Keypad

Lab. Mikrokontroler I
//-bacaKeypad: untuk membaca tombol Keypad yang ditekan
unsigned char bacaKeypad(void)
{
PORTA = 0b01111111;
//kolom 3 diaktifkan
delay_ms(5);
if (PINA.0 == 0)
//cek baris 0
tombol = keypad[0][3];
if (PINA.1 == 0)
//cek baris 1
tombol = keypad[1][3];
if (PINA.2 == 0)
//cek baris 2
tombol = keypad[2][3];
if (PINA.3 == 0)
//cek baris 3
tombol = keypad[3][3];
return(tombol);
//kembalikan nilai tombol
}

Penyambungan keypad ke mikrokontroler seperti ditunjukan pada gambar rangkaian yaitu


pada PORTA bit 0 3 sebagai masukan dan bit 4 7 sebagai luaran, pengaktifan setiap kolom
pada keypad secara bergantian, seperti pada program di atas bit ke 7 bernilai Low (0) maka
hanya kolom ke 4 yang dicek keadaannya dan bila PinA 0 = 0 maka akan menjalankan
perintah tombol sama dengan data pada array keypad [0] [3] = 0x0C begitu pula pada
pengaktifan baris lainnya.
3.2. Keypad
3.2.1. Permasalahan
Program untuk menampilkan tombol KEYPAD yang ditekan pada LED (hanya 1
kolom).
Masukan

: Pintu PA (Keypad)

Proses

: Peralihan data segera ke Pintu PD

Keluaran

: Pintu PD (LED)

Gambar rangkaian :

Proyek05-Keypad

Lab. Mikrokontroler I

3.2.2. Penyelesaian
Luaran LED menampilkan kode (hex) sesuai dengan masukan Keypad yang ditekan.
3.2.2.1. Diagram Alir

3.2.2.2. Program
Program untuk menampilkan tombol keypad yang ditekan pad LED.
/* =========================================
Proyek 05-Papan Tombol Keypad
P051a-Keypad LED
program untuk menampilkan tombol KEYPAD
yang ditekan pada LED (hanya 1 kolom)
---------------------------------------Materi baru:
- KEYPAD 4x4
---------------------------------------Komponen:
- 1x modul KEYPAD 4 kolom x 4 baris
- 1x Bargraf (8xLED)
- 1x R Net 120 ohm
======================================== */
//=== Daftar Pustaka ===
#include <mega8535.h>
#include <delay.h>

//AVR ATmega 8535


//tunda

//=== Deklarasi sub program ===


unsigned char bacaKeypad(void);
ditekan

//membaca tombol Keypad yang

//=== Deklarasi variabel ===


unsigned char
keypad [4][4]= {
//tombol keypad
{0x01, 0x02, 0x03, 0x0C},
{0x04, 0x05, 0x06, 0x0D},
Proyek05-Keypad

Lab. Mikrokontroler I
{0x07, 0x08, 0x09, 0x0E},
{0x0A, 0x00, 0x0B, 0x0F}
},//keypad
b,k,
kode,
tombol;

10

//tombol yang ditekan

void main (void)


{
//=== Pengesetan Awal ====
DDRD = 0b11111111;
//semua pin pada pintu Py sebagai luaran
DDRA = 0b11110000;
//Px 7-4:luaran (kolom) 3-0:masukan (baris)
//=== Program Utama ===
while(1)
{
kode = bacaKeypad();
PORTD= kode;
}//while
}//main

//baca tombol Leypad yang ditekan


//tampilkan kode di 7 ruas(pintu Py)

//=== Sub program ===


//-bacaKeypad: untuk membaca tombol Keypad yang ditekan
unsigned char bacaKeypad(void)
{
for(k=0;k<4;k++) {
PORTA=~(0b00010000<<k);
delay_ms(5);
for(b=0;b<4;b++) {
if((PINA & (0b00000001<<b)) == 0) {
tombol=keypad[b][k];
};
};//baris
}//kolom
return(tombol);

//kembalikan nilai tombol

}
/* =========================================

3.2.2.3 Hasil Percobaan

Proyek05-Keypad

Lab. Mikrokontroler I

11

Untuk mendapatkan hasil percobaan ini, langkah percobaan yang dilakukan adalah
sebagai berikut:
1. Membuka aplikasi CodeVisionAVR, klik file New Project pilih target ATmega
pada CodeWizardAVR pilih ATmega8535 lalu klik Generate Program Simpan
dengan nama P05-Keypad.prj.
2. Memasukkan program, mengkompilasi [.c] amati apakah ada peringatan kesalah
error.
3. Selanjutnya , buka software simulasi Proteus > ISIS 8.1 Profesional .
4. Program yang sudah jadi disimulasikan ke Proteus, masukkan file P05-Keypad.hex
ke Mikrokontroler ATmega8535. Lalu click tombol play untuk menjalankan
simulasinya. Dan amati hasilnya.
5. Menghubungkan bootloader

ke pintu USB komputer dan ke konektor

[PROGRAMER]. Menyalakan modul pelatihan.


6. Membuka program isp. Jika USB sudah terhubung maka progamstate bertuliskan
PROGSIP akan menyala hijau.
7. Membuka program progisp, pilih ATmega8535 pada SelectChip, klik load Flash,
unggah file P05-Keypad.hex ke kit, klik erase, kemudian klik auto.
8. Lihat hasil nya pada layar LED di modul pelatihan
3.2.3. Pembahasan
Proyek05-Keypad

Lab. Mikrokontroler I

12

Program dengan menggunakan keypad sebagai input pada pintu PA dan LED sebagai output
pada pintu PD. Tampilan pada Led yaitu data yang telah dibuat sebelumnya yang ditampung
pada Array dua dimensi
//=== Deklarasi variabel ===
unsigned char
keypad [4][4]= {
//tombol keypad
{0x01, 0x02, 0x03, 0x0C},
{0x04, 0x05, 0x06, 0x0D},
{0x07, 0x08, 0x09, 0x0E},
{0x0A, 0x00, 0x0B, 0x0F}
},//

Pada program diatas menunjukan data yang akan ditampilkan pada led yaitu data yang akan
ditampilkan dengan susunan yang diibaratkan sebuah tombol keypad sebagai contoh:
Kolom ke empat baris ke dua (keypad[1][3]) berisi data hex 0x0D bila tombol pada keypad
pada kolom dan baris tersebut ditekan maka Led menampilan data hex 0D
//-bacaKeypad: untuk membaca tombol Keypad yang ditekan
unsigned char bacaKeypad(void)
{
for(k=0;k<4;k++) {
PORTA=~(0b00010000<<k);
delay_ms(5);
for(b=0;b<4;b++) {
if((PINA & (0b00000001<<b)) == 0) {
tombol=keypad[b][k];
};
};//baris
}//kolom
return(tombol);

//kembalikan nilai tombol

Penyambungan keypad ke mikrokontroler seperti ditunjukan pada gambar rangkaian yaitu


pada PORTA bit 0 3 sebagai masukan dan bit 4 7 sebagai luaran, pengaktifan setiap kolom
pada keypad secara bergantian. Program di atas pembacaan keypad dengan metode looping.
3.3. Keypad
3.3.1. Permasalahan
Program untuk menampilkan tombol KEYPAD yang ditekan pada 7 ruas.
Masukan

: Pintu PA (Keypad)

Proses

: Peralihan data segera ke Pintu PD

Keluaran

: Pintu PD (7 Ruas)

Gambar rangkaian :

Proyek05-Keypad

Lab. Mikrokontroler I

13

3.3.2. Penyelesaian
Program untuk menampilkan tombol keypad yang ditekan pada 7 ruas.
3.3.2.1. Diagram Alir

3.3.2.2. Program
Program untuk menampilkan tombol keypad yang ditekan pada 7 ruas.
/* =========================================
Proyek 05-Papan Tombol Keypad
P051a-Keypad LED
program untuk menampilkan tombol KEYPAD
yang ditekan pada LED (hanya 1 kolom)
---------------------------------------Materi baru:
- KEYPAD 4x4
---------------------------------------Proyek05-Keypad

Lab. Mikrokontroler I
Komponen:
- 1x modul KEYPAD 4 kolom x 4 baris
- 1x Bargraf (8xLED)
- 1x R Net 120 ohm
======================================== */
//=== Daftar Pustaka ===
#include <mega8535.h>
#include <delay.h>

14

//AVR ATmega 8535


//tunda

//=== Deklarasi sub program ===


unsigned char bacaKeypad(void);
ditekan

//membaca tombol Keypad yang

//=== Deklarasi variabel ===


unsigned char
keypad [4][4]= {
//tombol keypad
{0x01, 0x02, 0x03, 0x0C},
{0x04, 0x05, 0x06, 0x0D},
{0x07, 0x08, 0x09, 0x0E},
{0x0A, 0x00, 0x0B, 0x0F}
},//keypad
b, k,
kode,
tombol;

//tombol yang ditekan

void main (void)


{
//=== Pengesetan Awal ====
DDRD = 0b11111111;
//semua pin pada pintu Py sebagai luaran
DDRA = 0b11110000;
//Px 7-4:luaran (kolom) 3-0:masukan (baris)
//=== Program Utama ===
while(1)
{
kode = bacaKeypad();
PORTD= 0x70 | kode;
}//while
}//main

//baca tombol Leypad yang ditekan


//tampilkan kode di 7 ruas(pintu Py)

//=== Sub program ===


//-bacaKeypad: untuk membaca tombol Keypad yang ditekan
unsigned char bacaKeypad(void)
{
for(k=0;k<4;k++) {
PORTA=~(0b00010000<<k);
delay_ms(5);
for(b=0;b<4;b++) {
if((PINA & (0b00000001<<b)) == 0) {
tombol=keypad[b][k];
};
};//baris
}//kolom
}

return(tombol);

//kembalikan nilai tombol

/* =========================================

3.3.2.3 Hasil Percobaan


Proyek05-Keypad

Lab. Mikrokontroler I

15

Untuk mendapatkan hasil percobaan ini, langkah percobaan yang dilakukan adalah
sebagai berikut:
1. Membuka aplikasi CodeVisionAVR, klik file New Project pilih target ATmega
pada CodeWizardAVR pilih ATmega8535 lalu klik Generate Program Simpan
dengan nama P05-Keypad.prj.
2. Memasukkan program, mengkompilasi [.c] amati apakah ada peringatan kesalah
error.
3. Selanjutnya , buka software simulasi Proteus > ISIS 8.1 Profesional .
4. Program yang sudah jadi disimulasikan ke Proteus, masukkan file P05-Keypad.hex
ke Mikrokontroler ATmega8535. Lalu click tombol play untuk menjalankan
simulasinya. Dan amati hasilnya.
5. Menghubungkan bootloader

ke pintu USB komputer dan ke konektor

[PROGRAMER]. Menyalakan modul pelatihan.


6. Membuka program isp. Jika USB sudah terhubung maka progamstate bertuliskan
PROGSIP akan menyala hijau.
7. Membuka program progisp, pilih ATmega8535 pada SelectChip, klik load Flash,
unggah file P05-Keypad.hex ke kit, klik erase, kemudian klik auto.
8. Lihat hasil nya pada layar LED di modul pelatihan
3.3.3. Pembahasan

Proyek05-Keypad

Lab. Mikrokontroler I

16

Program dengan menggunakan keypad sebagai input pada pintu PA dan 7 ruas sebagai output
pada pintu PD dengan tambahan komponen inversi decoder BCD 7 ruas. 7 ruas akan
menampilkan angka 0 9 yaitu data yang telah dibuat sebelumnya yang ditampung pada
Array dua dimensi 7 ruas tidak dapat menampilkan data hex A F (10-15), sehingga tampilan
pada 7 ruas akan manampilkan kode bentuk aneh.
//=== Deklarasi variabel ===
unsigned char
keypad [4][4]= {
//tombol keypad
{0x01, 0x02, 0x03, 0x0C},
{0x04, 0x05, 0x06, 0x0D},
{0x07, 0x08, 0x09, 0x0E},
{0x0A, 0x00, 0x0B, 0x0F}
},//

Pada program diatas menunjukan data yang akan ditampilkan pada led yaitu data yang akan
ditampilkan dengan susunan yang diibaratkan sebuah tombol keypad sebagai contoh:
Kolom ke dua baris ke satu (keypad[0][2]) berisi data hex 0x02 bila tombol pada keypad pada
kolom dan baris tersebut ditekan maka 7 ruas menampilan angka 2.

3.4. Keypad
3.4.1. Permasalahan
Program untuk menampilkan tombol KEYPAD yang ditekan pada 7 ruas.
Masukan

: Pintu PA (Keypad)

Proses

: Peralihan data segera ke Pintu PD

Keluaran

: Pintu PD (LCD)

Gambar rangkaian :

3.4.2. Penyelesaian
Program untuk menampilkan tombol keypad yang ditekan pada LCD.
Proyek05-Keypad

Lab. Mikrokontroler I

17

3.4.2.1. Diagram Alir

3.4.2.2. Program
Program untuk menampilkan tombol keypad yang ditekan pada LCD.
/* =========================================
Proyek 05-Papan Tombol Keypad
P051a-Keypad LED
program untuk menampilkan tombol KEYPAD
yang ditekan pada LED (hanya 1 kolom)
---------------------------------------Materi baru:
- KEYPAD 4x4
---------------------------------------Komponen:
- 1x modul KEYPAD 4 kolom x 4 baris
- 1x Bargraf (8xLED)
- 1x R Net 120 ohm
======================================== */
//=== Daftar Pustaka ===
Proyek05-Keypad

Lab. Mikrokontroler I
#include <mega8535.h>
#include <delay.h>
#include <stdlib.h>
#include <stdio.h>

18
//AVR ATmega 8535
//tunda

//=== Deklarasi sub program ===


unsigned char bacaKeypad(void);
ditekan

//membaca tombol Keypad yang

#include <alcd.h>
//=== Deklarasi variabel ===
unsigned char
keypad [4][4]= {
//tombol keypad
{'1', '2', '3', 'C'},
{'4', '5', '6', 'D'},
{'7', '8', '9', 'E'},
{'A', '0', 'B', 'F'}
},//keypad
b, k,
kode,
tombol;

//tombol yang ditekan

void main (void)


{
//=== Pengesetan Awal ====
DDRC = 0b11111111;
//semua pin pada pintu Py sebagai luaran
DDRA = 0b11110000;
//Px 7-4:luaran (kolom) 3-0:masukan (baris)
lcd_init(16);
lcd_clear();
lcd_gotoxy(0,0);
lcd_puts("Tombol yang ditekan: ");
//=== Program Utama ===
while(1)
{
kode = bacaKeypad();
lcd_gotoxy(5,1);
lcd_putchar(kode);

//baca tombol Leypad yang ditekan

}//while
}//main
//=== Sub program ===
//-bacaKeypad: untuk membaca tombol Keypad yang ditekan
unsigned char bacaKeypad(void)
{
for(k=0;k<4;k++) {
PORTA=~(0b00010000<<k);
delay_ms(5);
for(b=0;b<4;b++) {
if((PINA & (0b00000001<<b)) == 0) {
tombol=keypad[b][k];
};
};//baris
}//kolom
return(tombol);

//kembalikan nilai tombol

}
Proyek05-Keypad

Lab. Mikrokontroler I

19

/* =========================================

3.4.2.3. Hasil Percobaan

Untuk mendapatkan hasil percobaan ini, langkah percobaan yang dilakukan adalah
sebagai berikut:
1. Membuka aplikasi CodeVisionAVR, klik file New Project pilih target ATmega
pada CodeWizardAVR pilih ATmega8535 lalu klik Generate Program Simpan
dengan nama P05-Keypad.prj.
2. Memasukkan program, mengkompilasi [.c] amati apakah ada peringatan kesalah
error.
3. Selanjutnya , buka software simulasi Proteus > ISIS 8.1 Profesional .
4. Program yang sudah jadi disimulasikan ke Proteus, masukkan file P05-Keypad.hex
ke Mikrokontroler ATmega8535. Lalu click tombol play untuk menjalankan
simulasinya. Dan amati hasilnya.
5. Menghubungkan bootloader

ke pintu USB komputer dan ke konektor

[PROGRAMER]. Menyalakan modul pelatihan.


6. Membuka program isp. Jika USB sudah terhubung maka progamstate bertuliskan
PROGSIP akan menyala hijau.
Proyek05-Keypad

Lab. Mikrokontroler I

20

7. Membuka program progisp, pilih ATmega8535 pada SelectChip, klik load Flash,
unggah file P05-Keypad.hex ke kit, klik erase, kemudian klik auto.
8. Lihat hasil nya pada layar LED di modul pelatihan
3.4.3. Pembahasan
Program dengan menggunakan keypad sebagai input pada pintu PA dan LCD sebagai output
pada pintu PD. Tampilan pada Lcd yaitu data yang telah dibuat sebelumnya yang ditampung
pada Array dua dimensi
//=== Deklarasi variabel ===
unsigned char
keypad [4][4]= {
//tombol keypad
{'1', '2', '3', 'C'},
{'4', '5', '6', 'D'},
{'7', '8', '9', 'E'},
{'A', '0', 'B', 'F'}
},//keypad

Pada program diatas menunjukan data yang akan ditampilkan pada led yaitu data yang akan
ditampilkan dengan susunan yang diibaratkan sebuah tombol keypad sebagai contoh:
Kolom ke dua baris ke satu (keypad[0][2]) berisi data hex 0x02 bila tombol pada keypad pada
kolom dan baris tersebut ditekan maka LCD menampilan angka 2 atau Tombol yang
ditekan 2
//-bacaKeypad: untuk membaca tombol Keypad yang ditekan
unsigned char bacaKeypad(void)
{
for(k=0;k<4;k++) {
PORTA=~(0b00010000<<k);
delay_ms(5);
for(b=0;b<4;b++) {
if((PINA & (0b00000001<<b)) == 0) {
tombol=keypad[b][k];
};
};//baris
}//kolom
}

return(tombol);

//kembalikan nilai tombol

Penyambungan keypad ke mikrokontroler seperti ditunjukan pada gambar rangkaian yaitu


pada PORTA bit 0 3 sebagai masukan dan bit 4 7 sebagai luaran, pengaktifan setiap kolom
pada keypad secara bergantian. Program di atas pembacaan keypad dengan metode looping

4. Simpulan
Dari hasil praktik yang telah dilakukan oleh kelompok A6 dapat disimpulkan bahwa:

Proyek05-Keypad

Lab. Mikrokontroler I

21

1. Percobaan pertama LED menyala sesuai dengan kode yang telah ditulis, akan menyala
bila tombol ditekan.
2. Kotak penyimpanan data dua dimensi berupa array,
int matrix[3][4] = { 0, 1, 2, 3,
4, 5, 6, 7,
8, 9, 10, 11 };

Bila kita menuliskan alamat matrix[0][2] = 2


3. Cara kerja keypad adalah pengecekan secara bergantian, pengaktifan setiap kolom pada
keypad secara bergantian, seperti pada program di atas bit ke 7 bernilai Low (0) maka
hanya kolom ke 4 yang dicek keadaannya dan bila PinA 0 = 0 maka akan menjalankan
perintah yang dituliskan
4. Percobaan IV LED pembalikan kode berada di sub program namun sub program berada di
file yang berbeda, sehingga pada penulisan library brogram ditambahkan dengan nama
file yang dimaksud (byarpet.c). ketika dituliskan program nama yang tidak terdeklarasikan
di file utama program tidak terjadi kesalahan data karena nama tersebut sudah
dideklarasikan pada file luar yang tertulis di library
=====================

Proyek05-Keypad

Anda mungkin juga menyukai