You are on page 1of 3

Keypad Matrix 3x4

Keypad 3x4 yang tersedia di pasaran adalah seperti gambar diatas. Keypad ini biasanya digunakan untuk berbagai aplikasi yang mengharuskan penggunaan tombol sebagai input numeric maupun abjad. Misalnya untuk telepon, tiket printer dll. Walaupun terlihat sama, ketiga keypad diatas biasanya memiliki konfigurasi pin yang berbeda tetapi tetap saja prinsip kerjanya sama.

Keypad 3x4 berarti memiliki 12 tombol, tapi kenapa pin yang tersedia hanya 7 atau 8 ???. nah itu dia. Coba perhatikan gambar berikut ini

Ketujuh atau kedelapan pin tersebut adalah 3 pin untuk kolom dan 4 pin untuk baris. Untuk mengakses keypad ini tidak seperti push button biasa. Adapun cara yang saya pakai untuk mengakses keypad ini adalah dengan metode scanning. Dengan menggunakan mikrokontroler hal ini sangat mudah dilakukan, karena mengingat mikrokontroler memiliki frekuensi clock yang tinggi. Misalnya saya menggunakan ATmega32 kemudian saya hubungkan pin keypad secara urut dari baris kemudian kolom ke pin mikrokontroler. row1 row2 row3 row4 col1 col2 col3 ->PINC.6 -> PINC.0 ->PINC.1 ->PINC.2 ->PINC.3 ->PINC.4 ->PINC.5

berikut ini adalah program dengan bahasa C untuk mengakses keypad ini. saya buat scanning pada PORTC 4-6 artinya PORTC 4-6 adalah pin output, kali ini saya membuat PINC 4-6 sebagai output low. misalnya angka '1' pada keypad ditekan output low dari col1 atau PINC.4 akan terhubung ke PINC.0 atau row1. row1 - row4 yaitu PINC 0-3 adalah PIN yang berfungsi sebagai input dengan kondisi high, hal ini diharapkan ketika ada tombol yang ditekan akan ada perubahan logic di PIN input tersebut sehingga mudah untuk dikenali oleh PIN input.
unsigned char keypadoutput(void) { unsigned char padkey; padkey=0; countscankeypad++; PORTC=~(1<<countscankeypad+3); if(countscankeypad==3){countscankeypad=0;} if(PINC.0==0&&PORTC.4==0){padkey='1';}

if(PINC.1==0&&PORTC.4==0){padkey='4';} if(PINC.2==0&&PORTC.4==0){padkey='7';} if(PINC.3==0&&PORTC.6==0){padkey='#';} if(PINC.0==0&&PORTC.5==0){padkey='2';} if(PINC.1==0&&PORTC.5==0){padkey='5';} if(PINC.2==0&&PORTC.5==0){padkey='8';} if(PINC.3==0&&PORTC.5==0){padkey='0';} if(PINC.0==0&&PORTC.6==0){padkey='3';} if(PINC.1==0&&PORTC.6==0){padkey='6';} if(PINC.2==0&&PORTC.6==0){padkey='9';} if(PINC.3==0&&PORTC.4==0){padkey='*';} return padkey; } Jangan lupa lakukan inisialisasi PINC yaitu //init keypad DDRC=0b01110000; PORTC=0b00001111; Sekarang coba panggil fungsi keypadoutput ke main fungsi. Selamat mencoba

You might also like