Anda di halaman 1dari 4

Akses Keypad Matrix 4*4 dengan ATMega32 dan Bascom AVR

Pada post kali ini saya akan membahas tentang penggunaan perangkat input digital yang berupa Keypad Matrix 4*4 .. Tentu saja sobat sudah tau kan apa itu Keypad Matrix 4*4?? Secara umum keypad matrix 4*4 adalah 16 buah push button yang disusun / dirangkai dengan konnfigurasi matrix, sehingga memiliki index baris dan kolom.. Berikut contoh gambar dari keypad matrix 4*4 tersebut :

Keypad Matrix 44 Untuk rangkaiannya kira2 seperti ini :

Rangkaian Keypad Matrix 44

Penggunaan keypad matrix ini biasanya pada aplikasi yang membutuhkan banyak perangkat input teteapi pada kontrollernya (misal mikrokontroller) memiliki I/O yang terbatas.. Misalnya pada aplikasi input data untuk memasukkan nomor Hp, Nomor ID, Password, dll Pertanyaannya adalah : Bagaimanakah cara membaca inputan dari keypad matrix ini dan mengetahui tombol manakah yang ditekan?? Itulah yang akan saya bahas pada artikel kali ini. Kita akan sama2 belajar tentang bagaimana menggunakan Keypad Matrix 4*4 ini menggunakan BASCOM AVR dan mikrokontroller ATMega32. Langsung saja, berikut adalah rangkaian yang akan kita gunakan :

Rangkaian Uji Coba Secara garis besar, uji coba yang kita lakukan adalah membaca nilai output dari keypad matrix 4*4 dan ditampilkan ke LCD 16*2.. Langsung saja, berikut hasil uji cobanya :

Hasil Uji Coba

Prinsip kerja dari keypad matrix sebenarnya adalah menggunakan proses scanning Baris dan Kolom.. Pada Keypad Matrix 4*4 memiliki 4 buah Baris dan 4 buah kolom. Jika kita menggunakan program scanning manual, maka salah satu dari Baris atau Kolom tsb harus di set sebagai output dan yang lainnya sebagai input (pada pin mikrokontroller yang terhubung dg keypad). Pada contoh ini Kolom (PortD.0 PortD.3) yang di set sebagai Output dan Baris sebagai Input (PinD.4 PinD.7) Langkah pertama adalah mengirimkan nilai 0001 pada Kolom, selanjutnya bit digeser ke kiri setiap 1 kali looping dan bila bit high (1) sudah mencapai bit paling kiri, maka diulangi lagi dari awal.. Sekuens-nya kira kira seperti ini : 0001 => 0010 => 0100 => 1000 => 0001 =>0010 =>. dst Kemudian untuk Baris (PinD.4 PinD.7), semuanya di set sebagai input dengan nilai awal Low (0). nah, dengan seperti ini ketika ada tombol yang ditekan, maka kita akan tahu tombol di koordinat manakah yang ditekan. pada contoh gambar diatas, tombol yang ditekan adalah tombol B, Tombol B berada pada koordinat (Baris, Kolom) B(1,3). Artinya : Ketika nilai Kolom = 0001, tombol yang terhubung ke PinD.5 DITEKAN.. atau nilai PortD.3 = 1 dan PinD.5 = 1 Terdengar rumit ha?? XDD Diatas itu adalah algoritma cara membaca nilai keypad matrix secara manual.. Apabila kita memprogram menggunakan BASCOM AVR, hal diatas bisa dilakukan dengan jauuh lebih mudah.. XD Karena pada BASCOM AVR telah disediakan fungsi untuk membaca keypad matrix 4*4.. Fungsi itu adalah GETKBD().. Dengan fungsi Getkbd(), nilai dari tombol yang ditekan akan secara otomatis kita dapatkan!! Sebagai contoh, pada gambar diatas ketika tombol B ditekan, maka fungsi Getkbd() akan memberikan nilai 7.. Berikut tabel nilai yang akan diberikan oleh fungsi Getkbd() jika kita menggunakan rangkaian seperti pada contoh diatas : Tombol yang ditekan | Nilai fungsi Getkbd() 0 13 1 0 2 1 3 2 4 4 5 5 6 6 7 8 8 9 9 10

A 3 B 7 C 11 D 15 * 12 # 14 Untuk Listing programnya, kira2 seperti ini :


'========================================================================== ============================ 'joe4cva.wordpress.com 'Program : Mengakses Keypad 4*4 pada PortD 'Oleh : Pramudita Johan I. 'Elektronika Dan Instrumentasi 'Universitas Gadjah mada

$regfile = m32def.dat Deklarasi mikrokontroller yang dipakai adalah ATMega32 $crystal = 12000000 Deklarasi crystal yang dipakai adalah 11059200 Hz Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portc.1 , Db7 = Portc.0 , E = Portc.4 , Rs = Portc.5 Mengkonfigurasi Pin LCD yang terkoneksi ke mikrokontroller Pin Db4 (Data Bus 4) = ke PortC.3 Pin Db5 (Data Bus 5) = ke PortC.2 Pin Db6 (Data Bus 6) = ke PortC.1 Pin Db7 (Data Bus 7) = ke PortC.0 Pin E (Enable) = ke PortC.4 Pin RS (Register Select) = ke PortC.5 Config Lcdbus = 4 Mengkonfig Bus LCD yang dipakai Config Lcd = 16 * 2 Mengkonfig type LCD yang dipakai (kolom * baris) Cursor Off Matikan cursor Config Kbd = Portd , Debounce = 20 [ , Delay = 10] mengkonfigurasi Keypad Matrix Pada Portd , Debounce = 20ms , Delay Antar Penekanan = 10ms Dim Datakeypad As Byte Deklarasi Variabel Datakeypad sebagai byte Cls Do Datakeypad = Getkbd() nilai variabel Datakeypad diambil dari keypad matrix Locate 1 , 1 Lcd Tes Keypad Matrx Locate 2 , 1 Lcd Datakeypad : ; Datakeypad ; tampilkan nilai datakeypad (NB : ketika tidak ada tombol yg ditekan, maka nilai datakeypad = 16) Loop =================================================================

Anda mungkin juga menyukai