Sabtu, 04 Juli 2009

Keypad Matriks : Konsep Dasar

.
Pada tutorial ini akan saya paparkan konsep dasar mengakses dan menggunakan Keypad Matriks 4x4 sebagai media inputan tetapi sebelumnya, anda sebaiknya membaca terlebih dahulu tutorial hardware mengenai Keypad Matriks agar mudah dipahami programnya karena memprogram mikrokontroler berdasarkan dengan hardwarenya.

Program berikut menggunakan mikrokontroler ATmega8535 dengan bahasa pemrograman CodeVisionAVR (baca Memulai CoViAVR) akan tetapi jika telah memahami konsepnya, mikro apapun dengan bahasa pemrograman yang lain pun tidak akan mengalami kesulitan.

Yup.. saya anggap sudah membaca turorial hardware Keypad Matriks dan konfigurasi keypad sebagai berikut :
  • Kolom 1 pada PORTA.0
  • Kolom 2 pada PORTA.1
  • Kolom 3 pada PORTA.2
  • Kolom 4 pada PORTA.3
  • Baris 1 pada PORTA.4
  • Baris 2 pada PORTA.5
  • Baris 3 pada PORTA.6
  • Baris 4 pada PORTA.7
Prinsip dasar pada program :
  • Jika tombol 2 di tekan (S2) maka Kolom 2 Baris 1 terhubung atau PORTA.1 terhubung dengan PORTA.4, Jika tombol B di tekan (SB) maka Kolom 4 Baris 2 terhubung atau PORTA.3 terhubung dengan PORTA.5, dst.
  • Pin-pin KOLOM pada port tersebut dijadikan output dan pin-pin BARIS pada port tersebut dijadikan input, bisa juga sebaliknya terserah anda sebagai programmer, yang jelas salah satu output dan yang lain input.
  • Setiap saklar atau penekanan tombol, harus didefinisikan nilai dari tombol tersebut baik berupa nilai Desimal, Heksadesimal, maupun karakter ASCII.
  • Saat saklar (tombol keypad) ditekan dan BARIS dengan KOLOM terhubung maka terserah anda mendetaksi perubahan logika yang terjadi pada pin-pin INPUT. Apakah dari LOW ke HIGH (0 - 1) atau HIGH ke LOW (1 - 0). Pada
Pada Coding program untuk Keypad Matriks yang saya buat menggunakan nilai ASCII dan saat tombol ditekan mendeteksi perubahan logika dari HIGH ke LOW (1 - 0) atau rendah aktif.
Alasan :
  • Nilai ASCII adalah nilai karakter seperti '1', '2', 'A', 'D', dst, yang pada listing program akan mudah dilihat nilainya dan mudah pahami, berbeda dengan desimal maupun heksadesimal. '1' = 0x31 (heksa), '1' = 49 (desimal), 'A' = 0x41 (heksa), 'A' = 65 (desimal), dst.
  • Pada penekanan tombol, mengapa mendeteksi HIGH ke LOW daripada LOW ke HIGH ? karena untuk mikrokotroler maupun rangkaian digital secara umum "menurunkan" tegangan berapapun ke 0 volt lebih mudah dan pasti dibandingkan "menaikkan" tegangan dari 0 volt ke nilai tertentu.
Berikut Coding Keypad Matriks 4x4 untuk Konsep Dasarnya :










Efek Bounching (Pantulan)
Listing pada gambar belum termasuk menangani tentang bounching dan lain-lain. Bounching pada keypad yaitu efek perubahan sinyal berkali-kali (pantulan) saat penekanan keypad yang menyebabkan keypad seolah-olah tombol keypad ditekan berkali-kali.

Ada berbagai macam cara untuk mencegah menghilangkan efek bouncing ini baik dari segi hardware dan software.
  • Jika hardware maka dengan menambahkan filter frekuensi tinggi atau dengan IC555 untuk menambah lebar pulsa.
  • Jika Software dengan menambah delay atau tundaan saat tombol ditekan atau dengan mendeteksi karakter tombol apakah sama dengan sebelumnya.

Saya memilih dengan cara software dan menggabung antara delay dengan mengecek karakter tombol. Berikut contoh main program untuk keypad yang dan kemudian nilai keypad d tampilkan pada LCD dan USART.

Topik yang Populer