Program AVR Keypad
Program AVR Keypad
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
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
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 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
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>
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
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
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
}
: Pintu PA (Keypad)
Proses
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>
Lab. Mikrokontroler I
{0x07, 0x08, 0x09, 0x0E},
{0x0A, 0x00, 0x0B, 0x0F}
},//keypad
b,k,
kode,
tombol;
10
}
/* =========================================
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
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);
: Pintu PA (Keypad)
Proses
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
return(tombol);
/* =========================================
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
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
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.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
#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;
}//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);
}
Proyek05-Keypad
Lab. Mikrokontroler I
19
/* =========================================
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
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);
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 };
Proyek05-Keypad