• Tidak ada hasil yang ditemukan

PENGGUNAAN KEYPAD 4X3 DAN PC KEYBOARD PADA MODUL DST-52 DENGAN TAMPILAN M1632 LCD

N/A
N/A
Protected

Academic year: 2021

Membagikan "PENGGUNAAN KEYPAD 4X3 DAN PC KEYBOARD PADA MODUL DST-52 DENGAN TAMPILAN M1632 LCD"

Copied!
8
0
0

Teks penuh

(1)

PENGGUNAAN KEYPAD 4X3 DAN PC KEYBOARD PADA

MODUL DST-52 DENGAN TAMPILAN M1632 LCD

Setelah kita bahas penggunaan keypad 4x3 (tipe KP-43865) dengan metode penulisan karakter pada keypad handphone di mana hanya dengan menggunakan keypad 4x3 data alphabet maupun tanda baca dapat diinputkan ke dalam sebuah sistem pada edisi sebelumnya. Kali ini akan dibahas gabungan pemakaian keypad 4x3 dengan sistem penulisan menggunakan metode penulisan karakter pada keypad handphone dengan PC Keyboard.

Penggunaan PC Keyboard dalam memberikan input data pada suatu sistem memang dirasa lebih cepat dan leluasa dibandingkan dengan keypad terutama untuk data alphabet. Namun PC Keyboard seringkali juga dirasa terlalu besar untuk sebuah sistem yang bersifat portable. Oleh karena itu pada artikel ini akan dibahas bagaimana pengguunaan kedua perangkat input tersebut dalam satu sistem.

DST-52 dalam hal ini yang berfungsi sebagai basis sistem akan memproses data dari kedua perangkat input tersebut tanpa menggunakan bantuan peripheral atau perangkat elektronik apapun, sehingga pengguna Modul DST-52 tidak perlu menambah anggaran biaya untuk membeli peripheral pendukung dalam aplikasi yang dibahas ini.

Seperti yang telah dijelaskan pada edisi sebelumnya hubungan antara Modul DST-52 dengan M1632 LCD dan Keypad 4x3 tampak pada gambar 1. Sedangkan diagram alir dari bagian software yang merupakan bagian utama dari aplikasi ini terdiri dari 3 bagian. Diagram alir pertama pada gambar 3 membahas bagian program utama, diagram alir kedua pada gambar 4 akan membahas bagian interupsi keyboard dan gambar 5 akan membahas lebih detail mengenai proses pengambilan data karakter pada keyboard. VCC P0.7 P0.6 P0.5 P0.4 P3.2 P2.1/A9 10K U? LCD MATRIX 2X16 8 12 11 10 9 6 5 4 7 1 2 3 13 14 D1 D5 D4 D3 D2 E R/W RS D0 GND VCC VLCD D6 D7 Gambar 1

(2)

VCC P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7 P1.3 P1.0 P1.1 P1.2 P1.2 P1.3 P1.4 P1.5 P1.1 P1.6 P1.7 P1.0 P1.4 P1.5 P1.6 S1 KEYPAD 4X3 1 2 3 4 5 6 7 8 9 * 0 # R1 R-PACK 2 3 4 5 6 7 8 9 1 JP1 PORT 1 1 2 3 4 5 6 7 8 9 10 Gambar 2

Antar Muka KP-43865 dengan Modul DST-52

Proses kerja dari aplikasi ini diawali dengan proses inisialisasi LCD maupun keyboard yang selalu dilakukan pada bagian awal dari program. Secara garis besar proses ini akan melakukan polling terhadap input dari keypad sedangkan input dari keyboard dilakukan dengan interupsi. Oleh karena itu selanjutnya interupsi keyboard yang terletak pada interupsi eksternal 0 terlebih dahulu diaktifkan. Sedangkan variabel character counter yang merupakan penunjuk lokasi karakter pada LCD diberi harga nol sehingga lokasi karakter akan dimulai pada bagian kiri atas LCD.

Kemudian sistem akan menunggu masukan dari keypad secara polling ataupun interupsi dari PC Keyboard. Masukan dari keypad maupun PC Keyboard akan menyebabkan program berjalan ke bagian lebih lanjut yaitu proses menampilkan data pada variabel nilai ke LCD. Variabel nilai dalam hal ini akan berisi nilai yang terbaca oleh keypad ataupun PC Keyboard.

Setelah nilai ditampilkan ke layar LCD, maka variabel character counter bertambah satu yang menunjukkan bahwa satu karakter telah ditampilkan ke layar LCD. Hal ini dilakukan berulang-ulang setiap adanya input data dari PC Keyboard maupun Keypad hingga data ke 16 maupun 32. Pada data ke 16 maka tampilan akan dipindah ke baris 2, sedangkan pada data ke 32 maka tampilan akan dihapus dan penulisan akan dimulai dari bagian awal LCD kembali.

(3)

Inisial LCD Inisial Keyboard Aktifkan Interupsi Keyboard Character Counter = 0 Ambil Keypad Nilai <= Keypad Tampilkan nilai di LCD Character Counter + 1 Character Counter = 16? Pindah ke Baris 2 Character Counter = 32? Matikan Interupsi Keyboard Input diperoleh Gambar 3

Diagram Alir Program Utama

Matikan Interupsi Keyboard Ambil Karakter Keyboard Recover Stack Lompat ke input diperoleh Gambar 4

Diagram Alir Interupsi Keyboard

Pada gambar 4 dijelaskan proses yang terjadi pada saat interupsi dari keyboard dilakukan. Terlebih dahulu program akan mematikan interupsi keyboard tersebut selama layanan interupsi sedang diproses. Kemudian proses pengambilan karakter keyboard dilakukan sehingga variabel nilai terisi dengan kode ASCII dari karakter keyboard

(4)

tersebut. Pada proses ini selain pengambilan kode ASCII dari karakter keyboard, juga dilakukan deteksi penekanan tombol Shift maupun Caps Lock yang akan dibahas pada Diagram Alir Ambil Karakter Keyboard.

Ambil Keyboard ScanCode = F0? Tunggu KbdClock Ambil Keyboard RShift/LShift?

Complement Shift Flag

Clear Carry Flag No

Deteksi Scan Code saat Keyboard dilepas

Kembali dari Interrupt RShift/Lshift/ Caps Lock? No Yes Konversi Scan Code Shift Flag = 1? Rubah ke huruf besar

Set Carry Flag Aktifkan Interrupt

No

Deteksi tombol ditekan

Deteksi Scan Code saat keyboard ditekan

Penekanan tombol pada keyboard tidak hanya menghasilkan sebuah scan code saja, namun dapat terdiri dari tiga atau bahkan lebih scan code. Apabila tombol sebuah tombol ditekan maka scan code akan terkirim terus menerus hingga pada saat tombol tersebut dilepas maka scan code F0 dan scan code tombol itu sendiri akan dikirim sebagai tanda bahwa tombol telah dilepas.

Contoh:

- - 1C F0 1C Tombol “a” ditekan sekali

- - 1C 1C 1C ……… F0 1C Tombol “a” ditekan agak lama dan

dilepas

- - 12 12 12 ……… 1C F0 1C F0 12 Tombol “shift kiri” ditekan agak

lama, kemudian “a” ditekan sekali dan “shift kiri” dilepas

Oleh karena itu Pada diagram alir tersebut terdapat dua bagian proses secara garis besarnya, yaitu proses deteksi scan code saat tombol ditekan dan deteksi scan code saat tombol dilepas. Pada masing-masing proses, baik saat tombol ditekan maupun dilepas dibedakan menjadi dua proses lagi yaitu deteksi apakah scan code berupa shift kanan atau

(5)

kiri untuk tombol dilepas dan scan code berupa caps lock, shift kanan atau shift kiri untuk tombol ditekan. Oleh karena itu hasil dari bagian ini terdiri dari:

- - Tombol shift ditekan : flag carry logika 0, komplemen flag shift - - Bukan tombol shift ditekan : flag carry logika 1, konversi scan code - - Tombol shift dilepas : flag carry logika 0, komplemen flag shift - - Bukan tombol shift dilepas ; flag carry logika 0

Bila tombol shift ditekan maka kondisi flag shift di komplemen sehingga karakter pada penekanan selanjutnya akan diubah menjadi huruf besar bila sebelumnya adalah huruf kecil dan sebaliknya menjadi huruf kecil bila sebelumnya adalah huruf besar dan kondisi flag carry adalah logika 0. Bila bukan tombol shift yang ditekan, maka scan code dikonversi sesuai tabel keyboard dan kondisi flag carry adalah logika 1.

Flag shift di komplemen lagi pada saat tombol shift dilepas sehingga karakter pada penekanan selanjutnya akan diubah menjadi huruf besar bila sebelumnya adalah huruf kecil dan sebaliknya menjadi huruf kecil bila sebelumnya adalah huruf besar dan kondisi flag carry adalah logika 0. Bila bukan tombol shift dilepas maka flag carry berlogika 0 dan flag shift tidak berubah dari kondisi sebelumnya.

Carry Flag dalam hal ini digunakan untuk mendeteksi masukan data keyboard berupa karakter atau tombol shift. Hal ini diperlukan oleh program untuk mendeteksi apakah masukan tersebut perlu ditampilkan ke LCD atau tidak. Masukan berupa karakter maupun tanda baca akan ditampilkan ke LCD, sedangkan masukan berupa tombol shift tidak akan ditampilkan ke layar LCD.

Dengan adanya aplikasi ini, proses pemberian input ke dalam suatu sistem akan berlangsung dengan lebih mudah dan praktis. Program lengkap aplikasi ini dapat didownload di www.delta-electronic.com bagian software

Listing 1 $MOD51 DSEG CharCounter: Ds 1 StackTemp: Ds 1 Org 50H CSEG Serial_Out EQU 00FCH

Delay_100mS EQU 00A2H ;Menunda waktu selama 100 mS (timer 0 digunakan)

Delay_500mS EQU 0099H ;Menunda waktu selama 500 mS (timer 0 digunakan) ;============= ;HD44780 ;============= GeserDisplay_Kanan EQU 05BDH ;Menggeser tampilan LCD HD44780 ke kanan

GeserDisplay_Kiri EQU 05C4H ;Menggeser tampilan LCD HD44780 ke kiri

(6)

Posisi_Awal EQU 05CBH ;Mengatur posisi cursor LCD ke posisi awal

GeserCursor_Kiri EQU 05D2H ;Menggeser Cursor LCD ke kiri

GeserCursor_Kanan EQU 05D9H ;Menggeser Cursor LCD ke kanan

KirimPesan_LCD EQU 05E0H

;Mengirim data di alamat yang ditunjuk oleh DPTR ke LCD hingga data 0F ;- DPTR diisi dengan alamat awal data yang dikirim

;- Akhir data adalah 0FH

Init_LCD EQU 05ECH ;Inisialisasi LCD

Kirim_Perintah EQU 062BH ;Mengirim data ke register perintah LCD

;- Data diisi di akumulator

Kirim_Karakter EQU 064AH ;Mengirim data ke register data LCD

;- Data diisi di akumulator

Baris2 EQU 0654H ;Memindah posisi cursor ke baris 2

Ambil_ScanCode EQU 0865H ;Mengambil 1 byte scan code keyboard ;- Nilai scan code berada pada akumulator

KirimScanCode EQU 08A3H ;Mengirim 1 byte scan code keyboard

;- Nilai scan code berada pada akumulator

InitKeyboard EQU 08C4H ;Inisialisasi Keyboard

CapslockLED EQU 08DDH ;Mengaktifkan LED Caps Lock Keyboard

ROM EQU 2000H

Org ROM ;Reset Vector Ajmp Start ;

Org ROM+3H ;External Interrupt 0 Vector Ljmp Intr0

Org ROM+0BH ;Timer 0 Interrupt Vector

Reti ;

Org ROM+13H ;External Interrupt 1 Vector

Reti ;

Org ROM+1BH ;Timer 1 Interrupt Vector

Reti ;

Org ROM+23H ;Serial Interrupt Vector

Reti ;

(7)

Lcall Init_LCD ;Inisial LCD Lcall InitKeyboard ; Setb EA ; Setb EX0 ; Mov CharCounter,#00 ; Mov StackTemp,SP Loop:

Mov DPTR,#TabelKeypad ;Akses Keypad Lcall Ambil_keypad ;

Setb EX0 InputDiperoleh:

Mov A,Nilai ;Hasil dari penekanan keypad ;tersimpan di variabel nilai

Lcall Kirim_Karakter ;Kirim hasil ke LCD Inc CharCounter ;Char Counter + 1

Mov R7,CharCounter ;

Cjne R7,#16,Cek32 ;Char Counter = 16, pindah Lcall Baris2 ;ke baris 2 LCD

Ajmp Loop ;

Cek32:

Cjne R7,#32,Loop ;Char Counter = 32, kembali Clr EX0

Ajmp Start ;ke baris 1 Intr0: Clr EX0 Push ACC Push 07H Lcall AmbilKarakterKeyboard Pop 07H Mov Nilai,A Lcall Delay_100mS Lcall Delay_100mS Pop ACC Mov A,SP Mov B,StackTemp Clr C Subb A,B LoopRecoverStack: Pop B Djnz ACC,LoopRecoverStack Mov DPTR,#Inputdiperoleh Push DPL Push DPH Setb EX0 Reti AmbilKarakterKeyboard: Push DPH Push DPL LoopAmbilKarakterKbd:

(8)

Mov DPTR,#AmbilKarakterSelesai Jb INT0,$ Lcall AmbilKeyboard AmbilKarakterSelesai: Jnc LoopAmbilKarakterKbd Pop DPL Pop DPH Ret $include (keypad2.asm) $include (kboard2.asm) TabelKodeTombol: DB ' 0',0 Org TabelKodeTombol+10 DB '.,?!-&1',0 Org TabelKodeTombol+20 DB 'ABC2',0 Org TabelKodeTombol+30 DB 'DEF3',0 Org TabelKodeTombol+40 DB 'GHI4',0 Org TabelKodeTombol+50 DB 'JKL5',0 Org TabelKodeTombol+60 DB 'MNO6',0 Org TabelKodeTombol+70 DB 'PQRS7',0 Org TabelKodeTombol+80 DB 'TUV8',0 Org TabelKodeTombol+90 DB 'WXYZ9',0 Org TabelKodeTombol+110 DB '#',0 Org TabelKodeTombol+120 DB '*',0 $include (tabkey.asm) END

Gambar

Diagram Alir Program Utama        Matikan Interupsi Keyboard Ambil Karakter Keyboard Recover Stack Lompat  ke input diperoleh Gambar 4

Referensi

Dokumen terkait

Tujuan dari pengembangan produk ini adalah untuk mengembangkan kualitas keterampilan atlet dalam bermain bola basket, dengan menekankan model latihan berbentuk menggunakan latihan

Mi koji smo bili iz daljine vidili smo da je to bija Boneta i nije nas bilo stra jer smo znali da se napija i tu lega na grob nečiji, i samo smo se smijali, a on od stra nije zna

(3) Penyelesaian perizinan penanaman modal diluar Undang-Undang Penanaman Modal Asing dan Undang-Undang Penanaman Modal Dalam Negeri dilakukan oleh Menteri yang membina

&#34;Sen kısa yaşarsın ufaklık. Biz uzun yaşarız. Ama bizler zaman içinde yaşarız. Çocuk İmparatoriçe benden daha önce vardı. Onun varlığı süreyle değil,

Landasan hukum yang berkaitan dengan pelaksanaan penelitian dan pengabdian kepada masyarakat didasarkan atas: (1) Undang-Undang Dasar 1945 pasal 31 ayat 5

Interaksi penggunaan media MS dan hormon BAP dengan konsentrasi yang berbeda memberikan pengaruh yang berbeda terhadap multiplikasi tunas, tinggi tunas, jumlah buku,

Koefisien determinasi (Goodness of fit), yang dinotasikan dengan , merupakan suatu ukuran yang penting dalam regresi, karena dapat menginformasikan baik atau

Berdasarkan teori di atas perananan kepala sekolah sebagai manajer pendidikan dapat dijabarkan sebagai berikut: 1) mengadakan prediksi (membuat rencana); 2)