Teknik Interface Keypad 4x3 ke DST-51 Keypad 4x3 di sini adalah sebuah keypad matrix dengan susunan empat baris dan tiga kolom dengan sebuah common.
1
2
3
4
5
6
7
8
9
*
9
#
R1 R2 R3
C1
C2
COMMON
R4 C3
Gambar 1 Konstruksi Keypad 4x3 dengan common
Seperti terlihat dalam gambar di atas, apabila saklar ‘1’ ditekan, maka baris 1 dan kolom 1 akan terhubung ke common. Apabila saklar ‘2’ ditekan, maka baris 1 dan kolom 2 akan terhubung ke common dan seterusnya. R1 P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7
2 3 4 5 6 7 8 9
VCC 1 R-PACK
S1 KEYPAD 4X3 1
2
3
4
5
6
7
8
9
*
0
#
JP1 P1.3 P1.2 P1.1
P1.0 P1.2 P1.4 P1.6
P1.0
1 3 5 7 9
2 4 6 8 10
P1.1 P1.3 P1.5 P1.7
PORT 1
P1.4 P1.5 P1.6
Gambar 2 Interface Keypad 4 x 3
Agar keypad tersebut dapat memberian input pada DST-51, maka terlebih dahulu keypad ini harus disusun dalam sebuah rangkaian di mana terdapat perbedaan kondisi pada pin-pinnya antara kondisi tidak ada penekanan tombol, penekanan tombol 1, 2, 3 dan seterusnya.
DELTA ELECTRONIC http://www.delta-electronic.com
Kondisi tidak adanya penekanan tombol diatur dengan adanya kondisi logika high dengan menghubungkan semua pin keypad (kecuali common) ke VCC melalui resistor pull up. Pada saat tombol tidak ditekan, maka arus akan mengalir dari VCC melalui resistor menuju ke port seperti tampak pada gambar berikut.
Gambar 3 Aliran arus saat tombol tidak ditekan
Sedangkan saat tombol ditekan, maka baris dan kolom akan terhubung ke ground sehingga kondisi pada baris dan kolom tersebut akan menjadi low. Apabila tombol ‘1’ ditekan, maka baris 1 dan kolom 1 akan terhubung ke ground sehingga kondisi baris dan kolom tersebut akan berubah menjadi low, demikian pula pada tombol ‘2’ dan seterusnya sehingga terbentuk tabel berikut. Tabel 1 Kombinasi Keypad
Tombol 1 2 3 4 5 6 7 8 9 0 * #
P1.7 1 1 1 1 1 1 1 1 1 1 1 1
C1 P1.6 0 1 1 0 1 1 0 1 1 0 1 1
C2 P1.5 1 0 1 1 0 1 1 0 1 1 0 1
DELTA ELECTRONIC http://www.delta-electronic.com
C3 P1.4 1 1 0 1 1 0 1 1 0 1 1 0
R1 P1.3 0 0 0 1 1 1 1 1 1 1 1 1
R2 P1.2 1 1 1 0 0 0 1 1 1 1 1 1
R3 P1.1 1 1 1 1 1 1 0 0 0 1 1 1
R4 P1.0 1 1 1 1 1 1 1 1 1 0 0 0
Hexa B7 D7 E7 BB DB EB BD DD ED BE DE EE
Pengambilan data dari keypad dilakukan dengan menunggu adanya penekanan tombol keypad. Kondisi tidak ada penekanan tombol adalah high untuk semua pin keypad kecuali common yang terhubung ke ground atau FFh pada port mikrokontroler. Untuk itu program akan mendeteksi dengan tidak adanya kondisi FFh pada port sebagai detektor adanya penekanan tombol. Inisial Serial Port
DPTR <- Tabel Keypad
Tunggu tekan
Parity error?
Delay Antibouncing
Tunggu lepas
Konversi Keypad berdasar Tabel Keypad
Kirim ke Serial Port
Gambar 4 Flowchart Program pengambilan keypad Walaupun kondisi port mikrokontroler bukan lagi FFh, penekanan keypad masih belum valid, hal ini disebabkan adanya bouncing, atau getaran secara mekanis dalam tombol keypad yang terjadi. Oleh karena itu, apabila pengambilan data keypad langsung dilakukan saat itu, maka akan seringkali terjadi kesalahan. Data keypad akan valid apabila salah satu baris telah terhubung dengan salah satu kolom dan common. Hal ini ditandai dengan adanya hanya dua buah logika 0 pada kaki-kaki keypad. Contohnya pada penekanan tombol ‘2’, maka data dari keypad hanya akan valid bila baris dua dan kolom dua sudah terhubung ke ground atau berlogika 0. Untuk mengetahui kondisi ini, dapat dilakukan dengan memasukkan data keypad ke akumulator dan memeriksa kondisi Flag Parity. Apabila jumlah logika 0 dalam akumulator adalah genap, maka Flag Parity akan clear, dan apabila jumlah logika 0 dalam akumulator adalah ganjil, maka Flag Parity akan set. Program akan terus menerus mengambil data dari keypad hingga jumlah logika 0 dalam akumulator adalah genap atau Flag Parity clear. DELTA ELECTRONIC http://www.delta-electronic.com
Setelah data valid diambil, maka program akan menunggu tombol keypad dilepas dengan menunggu adanya kondisi FFh kembali serta melakukan konversi berdasarkan tabel keypad setelah kondisi tersebut terpenuhi. Proses konversi tabel keypad dilakukan dengan menganggap data-data dari keypad sebagai suatu alamat memori di mana isi dari alamat tersebut adalah berupa data yang dianggap sebagai tanda saat tombol tersebut ditekan. Contohnya pada tombol ‘1’ yang menghasilkan data B7h pada keypad. Program akan mengambil data di alamat Tabel Keypad + B7h di mana pada alamat tersebut dapat diisikan 01H atau 31H (ASCII dari bilangan 1) tergantung kebutuhan pengguna. Untuk mengatur isi tabel ini, maka pengguna dapat mengedit isi dari Tabel Keypad pada listing program. Listing Program Init_Serial Serial_Out ROM Org Ajmp Org Reti Org Reti Org Reti Org Reti Org Reti
EQU EQU EQU
01B8H 01C8H 2000H
ROM Start ROM+3H ROM+0BH ROM+13H ROM+1BH ROM+23H
;Reset Vector ; ;External Interrupt 0 Vector ; ;Timer 0 Interrupt Vector ; ;External Interrupt 1 Vector ; ;Timer 1 Interrupt Vector ; ;Serial Interrupt Vector ;
Start: Lcall Init_Serial Loop: Mov Mov Lcall Lcall Ajmp
DPTR,#TabelKeypad B,#01H Ambil_Keypad Serial_Out Loop
;---------; Yang perlu diinisial adalah: ; - Register B sebagai besaran delay anti bouncing dalam ordo 5 mS ; - DPTR sebagai alamat tabel keypad (DPL harus 00H) ; - Tabel Keypad, diisi dengan include c:\...\tabkey.asm Ambil_Keypad: Mov P1,#0FFH Push TH0 Push TL0 Push TMOD Tunggu_Ditekan: Mov A,P1 Cjne A,#0FFH,Ambil_Lagi Ajmp Tunggu_Ditekan Ambil_Lagi:
DELTA ELECTRONIC http://www.delta-electronic.com
Jb P,Tunggu_Ditekan Lcall Delay_Bounce Push A Tunggu_Dilepas: Mov A,P1 Cjne A,#0FFH,Tunggu_Dilepas Pop A Mov DPL,A Movx A,@DPTR Pop TMOD Pop TL0 Pop TH0 Ret Delay_Bounce: Push B Mov B,#1H LoopDelayBounce: Mov TH0,#0EEH Mov TL0,#00H Setb TR0 Jnb TF0,* Clr TF0 Djnz B,LoopDelayBounce Pop B Ret Org Kpd1 EQU Kpd2 EQU Kpd3 EQU Kpd4 EQU Kpd5 EQU Kpd6 EQU Kpd7 EQU Kpd8 EQU Kpd9 EQU Kpdstar Kpd0 EQU Kpd# EQU
3000H 0B7H 0D7H 0E7H 0BBH 0DBH 0EBH 0BDH 0DDH 0EDH EQU 0BEH 0DEH 0EEH
TabelKeypad: Org TabelKeypad+Kpd1 DB '1' Org TabelKeypad+Kpd2 DB '2' Org TabelKeypad+Kpd3 DB '3' Org TabelKeypad+Kpd4 DB '4' Org TabelKeypad+Kpd5 DB '5' Org TabelKeypad+Kpd6 DB '6' Org TabelKeypad+Kpd7 DB '7' Org TabelKeypad+Kpd8 DB '8'
DELTA ELECTRONIC http://www.delta-electronic.com
Org DB Org DB Org DB Org DB
TabelKeypad+Kpd9 '9' TabelKeypad+Kpd# '#' TabelKeypad+Kpd0 '0' TabelKeypad+Kpdstar '*'
DELTA ELECTRONIC http://www.delta-electronic.com