Anda di halaman 1dari 5

LCD DAN KEYPAD

>>>KEYPAD<<<

Pada dasarnya keypad yang ada dipasaran baik yang berukuran keypad 3×3, 3×4 atau
4×4, hanya tersusun dari beberapa push button yang dikonfigurasikan antara kolom
dengan baris. Sehingga sering disebut juga keypad matriks nxm (n=kolom m=baris).
Kolom dan baris ini nantinya yang digunakan untuk pendeteksian penekanan tombol.
Berikut adalah konfigurasi dasar untuk keypad 4×4.

B1, B2, B3 dan B4 merupakan baris ke 1 sampai baris ke 4, sedangkan C1, C2, C3 dan
C4 merupakan kolom ke 1 sampai kolom ke 4 keypad. Terlihat jelas betapa sederhananya
rangkaian dasar keypad untuk ukuran keypad 4×4 yang terdiri dari 16 buah push button
yang dikonfigurasikan seperti matriks. Saya sendiri membuat keypad menggunakan
rangkaian diatas, dikarenakan mahalnya harga keypad. Dipasaran saja keypad 4×4 bisa
seharga Rp. 50.000, sedangkan untuk membuatnya tidak sampai Rp. 10.000.

Baiklah kembali lagi kemateri keypad. Sekarang saya punya pertanyaan? Kenapa kita
tidak menggunakan push button saja yang disusun seperti biasa, kenapa harus
menggunakan keypad matrik. Jawabannya mudah saja, kalo menggunakan susunan
seperti biasa maka akan menghabiskan 16 pin mikrokontroler untuk 16 buah tombol.
Sedangkan jika dikonfigurasikan seperti diatas hanya menghabiskan 8 pin saja. Jadi lebih
ringkas dan irit dalam penggunaan pin mikrokontroler.

Sekarang cara untuk mengakses keypad, tapi terlebih dahulu perhatikan gambar berikut.
Sebelumnya kita harus menentukan terlebih dahulu mana yang akan dijadikan input atau
output mikrokontroler. Sebagian banyak orang membuat kolom keypad sebagai output
mikrokontroler sedangkan baris keypad sebagai input mikrokontroler. Sebenarnya bisa
saja kita balik penggunaannya, tetapi agar standar kita ikut saja yang sudah banyak
digunakan orang. Cara kerja keypad adalah scanning yaitu mendeteksi terus menerus
apakah ada penekanan tombol. Berikut adalah algoritma cara mengakses keypad:

Tentukan terlebih dahulu kolom sebagai output dari mikrokontroler sedangkan baris
sebagai input kemikrokontroler. Mengacu pada gambar diatas

Langkah pertama (Scanning kolom 1 PB0)


keluarkan output ke kolom 1(PB0)
kemudian deteksi penekanan baris1 (PB4)
kemudian deteksi penekanan baris2 (PB5)
kemudian deteksi penekanan baris3 (PB6)
kemudian deteksi penekanan baris4 (PB7)

Langkah kedua (Scanning kolom 2 PB1)


keluarkan output ke kolom 2 (PB1)
kemudian deteksi penekanan baris1 (PB4)
kemudian deteksi penekanan baris2 (PB5)
kemudian deteksi penekanan baris3 (PB6)
kemudian deteksi penekanan baris4 (PB7)

Langkah ketiga (Scanning kolom 3 PB2)


keluarkan output ke kolom 3 (PB2)
kemudian deteksi penekanan baris1 (PB4)
kemudian deteksi penekanan baris2 (PB5)
kemudian deteksi penekanan baris3 (PB6)
kemudian deteksi penekanan baris4 (PB7)

Langkah kempat (Scanning kolom 4 PB3)


keluarkan output ke kolom 4 (PB3)
kemudian deteksi penekanan baris1 (PB4)
kemudian deteksi penekanan baris2 (PB5)
kemudian deteksi penekanan baris3 (PB6)
kemudian deteksi penekanan baris4 (PB7)

Untuk lebih jelasnya dapat teman-teman lihat pada listing program. Berikut adalah
schematic keypad dan LCD yang dihubungkan ke mikrokontroler.

#include <mega8535.h>
#include <stdlib.h>
#include <delay.h>
#include <lcd.h>

// Alphanumeric LCD Module functions


#asm
.equ __lcd_port=0×15 ;PORTC
#endasm
void tekan_keypad_tampil_lcd() //penekanan keypad kemudian
ditampilkan di LCD
{
PORTB = 0b11111110;
delay_ms(30);
if (PINB.4 == 0) {lcd_putsf(“1″); delay_ms(300);}
if (PINB.5 == 0) {lcd_putsf(“4″); delay_ms(300);}
if (PINB.6 == 0) {lcd_putsf(“7″); delay_ms(300);}
if (PINB.7 == 0) {lcd_putsf(“F”); delay_ms(300);}
PORTB = 0b11111101;
delay_ms(30);
if (PINB.4 == 0) {lcd_putsf(“2″); delay_ms(300);}
if (PINB.5 == 0) {lcd_putsf(“5″); delay_ms(300);}
if (PINB.6 == 0) {lcd_putsf(“8″); delay_ms(300);}
if (PINB.7 == 0) {lcd_putsf(“0″); delay_ms(300);}
PORTB = 0b11111011;
delay_ms(30);
if (PINB.4 == 0) {lcd_putsf(“3″); delay_ms(300);}
if (PINB.5 == 0) {lcd_putsf(“6″); delay_ms(300);}
if (PINB.6 == 0) {lcd_putsf(“9″); delay_ms(300);}
if (PINB.7 == 0) {lcd_putsf(“E”); delay_ms(300);}
PORTB = 0b11110111;
delay_ms(30);
if (PINB.4 == 0) {lcd_putsf(“A”); delay_ms(300);}
if (PINB.5 == 0) {lcd_putsf(“B”); delay_ms(300);}
if (PINB.6 == 0) {lcd_putsf(“C”); delay_ms(300);}
if (PINB.7 == 0) {lcd_putsf(“D”); delay_ms(300);}
}

void tampil_string()
{
lcd_gotoxy(0,0); //menempatkan kursor lcd pada baris 0
kolom 0
lcd_putsf(“tampilan lcd2x16″); //menampilkan tulisan
tampilan lcd2x16
lcd_gotoxy(0,1); //menempatkan kursor lcd pada baris 1
kolom 0
lcd_putsf(“Elektro-cOntrOl”); //menampilkan tulisan
ElektrO-cOntrOl
}

void tampil_variabel()
{
//sebuah variabel yg akan ditampilkan kedalam LCD harus
diubah dahulu kedalam tipe data array
//jika variabel bertipe data float maka diubah kedalan array
dengan instruksi ftoa
//jika variabel bertipe data int maka diubah kedalan array
dengan instruksi itoa
char temp[6];
int a=500;
float b=123.45;
itoa(a,temp);
lcd_gotoxy(0,0);
lcd_puts(temp);
ftoa(b,2,temp); //angka 2, banyaknya digit dibelakang koma
yg ditampilkan
lcd_gotoxy(0,1);
lcd_puts(temp);
}

void main(void)
{
PORTB = 0xff;
DDRB = 0x0f;//PA0-3 sebagai output, PA4-7 sebagai input

while(1) //program utama


{
//tinggal dilakukan pemanggilan fungsi saja, contoh:
tampil_string(); //pemanggilan fungsi tampil_string()
};
}

Anda mungkin juga menyukai