Saya pernah ditanya oleh seorang teman tentang sebuah program untuk AT89S51 mengenai keypad. Jujur ketika itu saya memang belum pernah membuatnya. Berikan saya waktu, saya akan perlihatkan programnya. Saya meyakinkan dahulu jenis keypad yang dipakai adalah jenis keypad 4x4, dan bahasa yang digunakan adalah assembly.
Berikut ini merupakan gambar dari keypad 4x4 yang digunakan dan skematik push button pada keypad tersebut.
Berikut ini merupakan gambar dari keypad 4x4 yang digunakan dan skematik push button pada keypad tersebut.
Hal pertama yang harus dilakukan adalah mengenal lebih jauh mengenai keypad tersebut. Berikut merupakan gambar skematik dari keypad 4x4.
Dari skematik terlihat bahwa keypad tersebut terbentuk dari dua buah bagian, yaitu baris dan kolom. Bagian-bagaian itu terdapat beberapa push button yang saling berhubungan. Pada dasarnya program yang digunakan pada keypad 4x4 mengacu pada program push button. Pada program push button, kontroler hanya mendapatkan input. Namun pada program keypad, kontroler bukan hanya menerima input, namun juga mengeluarkan output.
Kaki keluaran keypad seluruhnya dihubungkan dengan satu port kontroler. Jika seperti ini kita harus membuat suatu keadaan dimana setiap baris dan kolom dapat menerima input dan juga mengeluarkan output.
Sebelum masuk ke pembahasan program keypad, kita buat dahulu pemetaan datanya.
col4 bit p1.0
col3 bit p1.1
col2 bit p1.2
col1 bit p1.3
row1 bit p1.4
row2 bit p1.5
row3 bit p1.6
row4 bit p1.7
keypad equ p1
keydata equ 30hPort yang digunakan untuk keypad adalah port 1.
keydata merupakan tempat untuk menyimpan data tombol yang digunakan. Kode program awal untuk keypad ini dimulai dengan memberi logika high kepada port keypad. mov keypad,#0ffhKemudian berikan logika low pada salah satu kolom secara bertahap, kita mulai dengan kolom 4. Ini menginstruksikan bahwa kolom 4 sebagai ground.
clr col4Pada kolom 4 terdapat baris yang bernomor 1, 2, 3, dan A. Kemudian fungsikan pushbutton tersebut sebagai keypad. Saya ambil contoh keypad untuk tombol 1, 2 dan 3. Gunakan fungsi
jb sebagai lompatan apabila tombol tidak ditekan. Ketika salah satu tombol ditekan maka keydata akan terisi oleh bilangan yang telah disesuaikan dengan nomor tombol.key3:
jb row3,key2
mov keydata,#03h
ret
key2:
jb row2,key1
mov keydata,#02h
ret
key1:
jb row1,key6
mov keydata,#01h
retPada subrutin terakhir di
key1:, lompatan menuju key6. Ini merupakan subrutin kode program selanjutnya. Dengan program seperti ini kita telah mengfungsikan keypad tombol 1, 2, dan 3. Untuk mengaktifkan tombol berikutnya yaitu 4, 5, dan 6, telebih dahulu pindahkan logika low dikolom 4 ke kolom 3. Karena tombol 4, 5, dan 6 terdapat di kolom 3. Kemudian lakukan pengkodean jb seperti pada keypad 1, 2, dan 3. Tentunya gunakankeydata yang sesuai dengan nomor tombol.key6:
setb col4
clr col3
jb row3,key5
mov keydata,#06h
ret
key5:
jb row2,key4
mov keydata,#05h
ret
key4:
jb row1,key9
mov keydata,#04h
retLakukan hal yang sama pada kolom 2 dan kolom 1. Kita namai saja subrutin keypad ini dengan nama keypad4x4. Maka program utama untuk menjalankan fungsi keypad tersebut adalah seperti berikut.
mulai: acall keypad4x4 mov a,keydata Hal ini nantinya akan mengingisi nilai akumulator sesuai dengan data tombol yang ditekan. Untuk lebih jelasnya berikut merupakan kode program lengkap keypad 4x4.




Tidak ada komentar:
Posting Komentar