1. Merangkai dan menguji rangkaian hexadesimal keypad
2. Memahami prinsip kerja rangkaian hexadesimal keypad
2. Alat dan Bahan [kembali]
Komponen yang digunakan adalah:
- Push button
- LED
- Resistor
- ATMEGA32
3. Dasar Teori [kembali]
Keypad 4 x 4 (HEXADECIMAL
KEYPAD)
Rangkaian hexadecimal
keypad seperti terlihat pada gambar 92. Melalui port B (PBO - PB3) dikirimkan
pola bit untuk scan kolom. Selanjutnya dari port A (PAO - PA3) akan dibaca data
(hasil penekanan tombol) yang terdapat pada kolom yang sedang di scan.
Gambar 92 Rangkaian Hexadecimal
Keypad
Sinyal scan dari port B
adalah active low. Jadi kondisi low akan diberikan atau dikirimkan ke kolom
yang sedang di scan. Rangkaian dilengkapi dengan resistor-resistor pull-up ke
+5 Volt. Dalam kondisi normal, atau tidak ada tombol yang ditekan, maka port A (PA0
-PA3) akan berada pada kondisi high. Dalam keadaan ada tombol yang dtekan, maka
input port A yang bersesuaian akan berada pada kondisi low jika tombol yang
ditekan tersebut berada pada kolom yang sedang di scan. Salah satu contoh dari
kejadian dimana ada tombol yang ditekan dapat dilihat pada gambar 93.
Gambar 93 Kondisi port A dan port B
jika tombol ‘3’ ditekan
Jadi sinyal ‘0’ (low)
pada port A (PA0 - PA3) menandakan ada tombol yang ditekan. Sedangkan sinyal
‘1’ (high) pada semua input port A (PA0 - PA3) menandakan tidak ada tombol yang
ditekan.
Contoh program scanning
keypad 4 x 4
mulai:
mov ah, 6 ; pengecekan tombol Esc
mov dl, 0ffh
int 21h
loc0:
test al, ch
jne loc1
lea bx, data ; offset address data ---> bx
loc2:
mov dx, pb
mov al, cl
out dx, al ; scan kolom ke-n (cl)
mov dx, pa
in al, dx ; baca input di port a
mov ch, 8 ; cek baris
cmp al, 27
je out
xor si, si
xor ax, ax
mov cl, 11110111b ; scan kolom di port b
mov al, [bx+si] ; ambil index ke-n data ---> al
mov ah, 0eh
int 10h
cmp al, '0'
je out
call delay
jmp mulai
loc1:
inc si
shr ch, 1
jnc loc0
shr cl, 1
jc
loc2
jmp mulai
out:
4. Percobaan [kembali]
Rangkaian hexadecimal keypad yang terhubung dengan mikrokontroler ATmega32 ini dirancang untuk memungkinkan pengguna memasukkan angka dan karakter heksadesimal (0-9 dan A-F) ke dalam sistem dengan menekan tombol pada keypad. Rangkaian ini menggunakan matriks keypad 4x4, yang artinya ada 4 baris dan 4 kolom yang terhubung secara langsung ke port mikrokontroler. Setiap tombol pada keypad terletak di persimpangan antara baris dan kolom tertentu, dan ketika tombol ditekan, sirkuit yang menghubungkan baris dan kolom tersebut tertutup, memungkinkan mikrokontroler mendeteksi tombol mana yang telah ditekan.
Pada rangkaian ini, baris keypad (diwakili oleh PC0-PC3) dikonfigurasi sebagai output, sedangkan kolom (PC4-PC7) dikonfigurasi sebagai input. Ketika program dimulai, port C dari mikrokontroler diatur sedemikian rupa sehingga hanya PC0-PC3 yang berfungsi sebagai output dan PC4-PC7 sebagai input. Port A (PA0-PA7) dikonfigurasi sebagai output yang terhubung ke LED, di mana setiap LED merepresentasikan sebuah bit dari nilai heksadesimal yang dihasilkan dari input keypad. Rangkaian ini juga dilengkapi dengan resistor pull-up pada kolom untuk memastikan bahwa saat tidak ada tombol yang ditekan, input dari kolom tetap berada pada level logika tinggi (1).
Setelah inisialisasi, program memulai dengan mengirimkan sinyal logika rendah secara bergantian ke setiap baris pada keypad melalui PC0-PC3. Ketika sebuah baris diberikan logika rendah, program kemudian membaca nilai pada kolom (PC4-PC7) untuk mendeteksi apakah ada perubahan nilai yang menunjukkan bahwa sebuah tombol pada baris tersebut telah ditekan. Jika sebuah tombol pada baris tertentu ditekan, maka salah satu dari pin input kolom akan berubah menjadi rendah, dan ini menandakan kepada mikrokontroler bahwa sebuah tombol telah ditekan pada persilangan baris dan kolom tersebut.
Misalnya, ketika program memberikan sinyal logika rendah ke PC0 (baris pertama), program kemudian memeriksa apakah ada perubahan pada kolom (PC4-PC7). Jika tombol "1" pada keypad ditekan, yang menghubungkan baris pertama dengan kolom keempat, maka pin PC4 akan terdeteksi sebagai rendah oleh mikrokontroler. Ketika ini terjadi, program melompat ke instruksi yang menyalakan LED pertama (PA0) dengan mengirimkan nilai 0b00000001 ke PORTA. LED ini menyala untuk menunjukkan bahwa tombol "1" telah ditekan.
Proses ini diulang untuk setiap tombol di keypad. Program secara sistematis mengirimkan sinyal logika rendah ke setiap baris satu per satu, dan membaca kolom untuk mendeteksi tombol yang ditekan. Setiap kombinasi baris dan kolom yang terdeteksi sebagai rendah diubah menjadi nilai heksadesimal yang sesuai, yang kemudian dikirimkan ke PORTA untuk menyalakan LED yang merepresentasikan nilai tersebut. Program ini menggunakan instruksi SBIS (Skip if Bit in I/O Register is Set) untuk memeriksa status dari masing-masing pin input kolom. Jika bit pada pin tertentu dalam register port C menunjukkan logika tinggi, program melompat ke instruksi berikutnya tanpa melakukan tindakan apapun. Namun, jika bit tersebut menunjukkan logika rendah, program melaksanakan instruksi yang sesuai, yaitu mengirimkan nilai ke PORTA untuk menyalakan LED.
Ketika semua tombol telah dipindai, program mengulangi proses tersebut tanpa henti, terus-menerus memantau input dari keypad untuk mendeteksi setiap perubahan status tombol. Dengan demikian, mikrokontroler dapat secara terus-menerus menerima input dari pengguna melalui keypad dan menampilkan hasilnya melalui LED. Selain itu, program juga menangani tombol "clr" pada keypad, yang berfungsi untuk mengosongkan semua output pada PORTA dan mematikan semua LED, mengembalikan sistem ke kondisi awal.
Keseluruhan proses ini berjalan dalam loop tanpa henti yang dimulai dari awal dan terus memeriksa input dari keypad. Setiap kali tombol ditekan, nilai heksadesimal yang sesuai dengan tombol tersebut segera dikirimkan ke PORTA untuk ditampilkan oleh LED. Hal ini memungkinkan pengguna untuk berinteraksi dengan sistem secara real-time dan memastikan bahwa semua input dari keypad tercatat dan ditampilkan dengan benar.
HMTL [Download]
Rangkaian hexadecimal keypad [Download]
Video penjelasan [Download]
Tidak ada komentar:
Posting Komentar