2 Teknik Membaca keypad dengan microcontroller

Keypad, saya yakin anda sudah tidak asing lagi dengan istilah tersebut. Setiap saat anda selalu memencetnya. Tulis sms-lah, update status-lah, atau hanya sekedar supaya terlihat ‘sok sibuk’ hehe.. 🙂
Yang saya maksud tadi adalah keypad HP (tidak berlaku bagi yang HP nya touch screen lho). Nah keypad yang akan dibahas ini adalah keypad yang biasa dipakai aplikasi bersama mikrokontroler. Fungsinya sebagai tombol masukan untuk member sebuah nilai. Beberapa contoh keypad :

Keypad 3×4

 

Keypad 4×4

 

Kalo dibongkar maka ketahuan bahwa dalemnya saklar yang disusun secara matrik, ada baris dan kolomnya.
Interfacing  keypad dengan mikrokontroler juga sangat gampang. Tinggal hubungkan masing – masing pin ke kaki mikrokontroler, contohnya kayak gini :
Membacanyapun juga tidak susah – susah amir, apalagi kalau pakai BASCOM-AVR. Paling tidak ada 2 cara untuk membaca ‘tombol’ keypad ini.

Cara pertama.

Kita ambil contoh keypad ukuran 3×4. Cara pertama ini kita tinggal pakai fungsi yang sudah ada di BASCOM-AVR, yaitu :  Getkbd().

Program lengkapnya begini :
$regfile = “m16def.dat”
$crystal = 16000000
Config Lcdpin = Pin , Rs = Portc.0 , E = Portc.2 , Db4 = Portc.4
Config Lcdpin = Pin , Db5 = Portc.5 , Db6 = Portc.6 , Db7 = Portc.7
Config Lcd = 16 * 2
Cursor Off
Cls
Lcd “Tombol=”

Config Kbd = Porta
Dim Keypad As Byte

Do
   Keypad = Getkbd()
   If Keypad <> 16 Then
      Gosub Get_keypad
      Waitms 350
   End If
Loop
End
Get_keypad:
   Locate 1 , 8
   Select Case Keypad
      Case 19 : Lcd “0”
      Case 0 : Lcd “1”
      Case 4 : Lcd “2”
      Case 8 : Lcd “3”
      Case 1 : Lcd “4”
      Case 5 : Lcd “5”
      Case 9 : Lcd “6”
      Case 2 : Lcd “7”
      Case 18 : Lcd “8”
      Case 10 : Lcd “9”
      Case 3 : Lcd “*”
      Case 11 : Lcd “#”
   End Select
Return
End

 

Cara kedua.

Cara konvensional, walaupun saya sering pakai yang ini. Aktifkan secara berurutan kolomnya kemudian dibaca logika barisnya.

$regfile = “m16def.dat”
$crystal = 16000000
Config Lcdpin = Pin , Rs = Portc.0 , E = Portc.2 , Db4 = Portc.4
Config Lcdpin = Pin , Db5 = Portc.5 , Db6 = Portc.6 , Db7 = Portc.7
Config Lcd = 16 * 2
Cursor Off
Cls
Lcd “Tombol=”
Ddra = &B11110000
Porta = &B11111111
Do
Porta = &B11101111
If Pina.0 = 0 Then
Locate 1 , 8
Lcd “1”
Elseif Pina.1 = 0 Then
Locate 1 , 8
Lcd “4”
Elseif Pina.2 = 0 Then
Locate 1 , 8
Lcd “7”
Elseif Pina.3 = 0 Then
Locate 1 , 8
Lcd “*”
End If

   ‘——— kolom 2
Porta = &B11011111
If Pina.0 = 0 Then
Locate 1 , 8
Lcd “2”
Elseif Pina.1 = 0 Then
Locate 1 , 8
Lcd “5”
Elseif Pina.2 = 0 Then
Locate 1 , 8
Lcd “8”
Elseif Pina.3 = 0 Then
Locate 1 , 8
Lcd “0”
End If

   ‘——— kolom 3
Porta = &B10111111
If Pina.0 = 0 Then
Locate 1 , 8
Lcd “3”
Elseif Pina.1 = 0 Then
Locate 1 , 8
Lcd “6”
Elseif Pina.2 = 0 Then
Locate 1 , 8
Lcd “9”
Elseif Pina.3 = 0 Then
Locate 1 , 8
Lcd “#”
End If

Loop

End

 

Hasilnya tampak seperti ini :

Oya, bagi yang mau hardware seperti gambar diatas, silahkan ambil, cukup ganti Rp 290 rb saja (kalo tanpa keypad cukup 265 rb) dengan spec :

  • Berbasis ATmega16A
  • LCD 16×2 (blue backlight)
  • Crystal 16 MHz
  • 3 Port Ekspansi : PORTA, PORTB, PORTD
  • 2 button (INT0 dan INT1)
  • Terintegrasi dengan USB Downloader (sehingga program tinggal download aja)
  • Kabel USB
  • PCB Fiber

 

 

16 thoughts on “2 Teknik Membaca keypad dengan microcontroller

  • August 12, 2012 at 6:16 pm
    Permalink

    saya mw pesan hardwarenya gan…
    ne no.Hp saya gan : 085275699125
    mohon cepet d’confirm ya gan…???

    Reply
  • February 26, 2013 at 10:47 pm
    Permalink

    saya sedang mencoba program Keypad = Getkbd() pada atmega128, saat di simulasi untuk menekan keypadnya ga bisa jalan ya.. kira2 apa problemnya? apakah simulasi pada software berlaku juga pada kondisi sebenarnya pada hardware.. tapi untuk Cara konvensional, makasih atas masukannya..

    Reply
    • March 2, 2013 at 10:04 am
      Permalink

      Setingan keypadnya sudah benar ?
      Trus coba dulu hasil dari penekanan keypad ditampilkan di LCD.

      Reply
  • June 25, 2013 at 7:37 am
    Permalink

    bg..mau nanya gmna cra supaya dalam penekanan keypad tidak double nampilnya di lcd walaupun ditekan lama…thanks

    Reply
    • June 26, 2013 at 9:58 am
      Permalink

      Dikasih anti bounching, bisa dikasih penundaan (delay) setelah tombol ditekan. Sekitar 200 – 300 ms.

      Reply
      • June 27, 2013 at 6:18 am
        Permalink

        cara lain ad bg??
        trus stu lg bg saya bsa ga minta tlong buatin list program untuk set password
        dari keypad nampilin di lcd ,sya pke bascom 8051…klau bsa krim lwat email saya ya bg
        yogi.frans@yahoo.com
        tlong ya bg thanks…

        Reply
        • July 8, 2013 at 4:04 pm
          Permalink

          mohon maaf mas, saat ini lum bisa, cz masih full orderan nih..

          Reply
  • November 20, 2013 at 3:03 pm
    Permalink

    mas, ngitung casenya gmana?

    Reply
    • November 25, 2013 at 4:14 pm
      Permalink

      maksudnya mas ?

      Reply
  • September 30, 2014 at 6:33 pm
    Permalink

    Mas, saya mau nanya untuk Cara Kedua. Di situ ditulis Ddra = &B11110000 itu fungsinya apa ya? Ddra itu artinya apa?
    Terimakasih

    Reply
    • October 2, 2014 at 8:18 am
      Permalink

      DDRA itu register untuk menentukan fungsi PORTA sebagai input atau output. Jika input maka DDRA diisi dg 0 ‘LOW” dan jika output maka DDRA diisi dengan 1 ‘HIGH’.

      Reply
  • November 15, 2014 at 10:04 pm
    Permalink

    mas, kalo minta dibuatin inputnya keypad 3×4, outputnya ke 3 digit 7segmen bisa ndak?? email ke ysuprasojo@gmail.com mksh.

    Reply
  • Pingback:LAPORAN PRAKTIKUM MIKROPROSESOR (Pengunci pintu (door lock) berpassword dengan keypad dan LCD) | Semua Yang Ku Tahu

    • April 16, 2016 at 9:15 am
      Permalink

      Ok mas Arga Yudha ..

      Reply

Leave a Reply to johan Cancel reply

WhatsApp chat
%d bloggers like this: