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

dokumen-dokumen yang mirip
MESIN KETIK ELEKTRONIK DENGAN TAMPILAN M1632 LCD OLEH MODUL DST-52

PENULISAN KARAKTER DENGAN MENGGUNAKAN TEKNIK PENULISAN PADA KEYPAD HANDPHONE OLEH MODUL DST-51, KEYPAD 4X3 DAN M1632 LCD

PENGHITUNG WAKTU DENGAN TAMPILAN LCD M1632 OLEH DST-51

MENAMPILKAN 1000 KARAKTER PESAN PADA MODUL M1632 LCD OLEH MODUL DST-51

Aplikasi Modul InfraRed Object Detector Sebagai Pengukur Jarak

Aplikasi Pengukur Ketinggian Air Mengunakan Modul Sensor InfraRed Object Detector

PROGRAMMABLE TIMER DENGAN TAMPILAN M1632 LCD MENGGUNAKAN MODUL DST-51

PENAMPIL TOMBOL-TOMBOL REMOTE CONTROL SONY PADA M1632 LCD OLEH MODUL DST-52

Teknik Interface Keypad 4x3 ke DST-51

APLIKASI MODUL DST -52 SEBAGAI JAM DIGITAL DENGAN INPUT DARI PC KEYBOARD DAN M1632 LCD SEBAGAI PENAMPIL

TAMPILKAN NADA DTMF DAN DERING TELEPHONE OLEH MODUL DF-88 DAN MODUL DST-51 PADA LCD

ANTAR MUKA M1632 LCD DENGAN MODUL DST-52 MENGGUNAKAN BAHASA C

Pengendalian 8 buah Motor oleh DST-51

AD Channel AD Conversion

Wireless Infrared Printer dengan DST-51 (Pengambilan Data dari Standard Parallel Port)

Register-register MT8888

ANTAR MUKA DST-51 DENGAN MODUL AD-0809

PENGATURAN KECEPATAN MOTOR DENGAN PC OLEH DST-5 2

DESKRIPSI SINGKAT INSTRUKSI-INSTRUKSI PADA AT89S51

PANDUAN PRAKTIKUM DASAR MIKROKONTROLER KELUARGA MCS-51 MENGGUNAKAN DT-51 MINIMUM SYSTEM VER 3.0 DAN DT-51 TRAINER BOARD

DT-51 Application Note

THERMOMETER DIGITAL DENGAN MODUL DST-51, ADC-0809 DAN LCD 2X16

KOMUNIKASI DATA DENGAN MENGGUNAKAN TEKNIK RS485

DOWNLOAD BITMAP FILE KE LCD GRAFIK 240X64 PIXEL OLEH MODUL DST-51

Daftar Isi. Daftar Isi Pertemuan 6: Perintah Masukkan dari Keyboard P6.1. Teori Masukkan dari Keyboard... 3

PORT SERIAL MIKROKONTROLER ATMEL AT89C51

Percobaan 5. TIMER/COUNTER Menggunakan DT-51 MinSys

Antarmuka PC Keyboard dengan DST-AVR

PORT PARALEL MIKROKONTROLER ATMEL AT89C51

LAMPIRAN D DATA SHEET

Antar Muka Modul RTC-1287 dengan Modul DST-51

Percobaan 4. Mengakses built-in routine LCD pada DT-51 Minimum sistem. Membuat program untuk menampilkan karakter ASCII pada LCD.

DASAR INPUT/OUTPUT (1) (PORT PPI DAN PORT 1 SEBAGAI OUTPUT)

Memprogram Port sebagai Output dan Input Sederhana

Tabel Perbandingan ROM dan RAM pada beberapa seri ATMEL

TERJADI INTERRUPT MELAYANI INTERRUPT KEMBALI MENERUSKAN PROGRAM YANG TERHENTI PROGRAM YANG SEDANG BERJALAN. Gambar 4.1 Interrupt

de KITS Application Note AN24 - How 2 Use de KITS Phone Interface with DT-51 MinSys ver 3.0

DASAR INPUT/OUTPUT (2) (PORT PPI DAN PORT 1 SEBAGAI INPUT/OUTPUT)

AKSES MEMORI Menggunakan DT-51 MinSys

de KITS Application Note AN51 How 2 Use de KITS SPC Character LCD w/ PC

TIMER DAN COUNTER MIKROKONTROLER ATMEL

Mengenal bahasa assembly

TEKNIK MERANCANG APLIKASI DENGAN DST-UNI PROG

BAHASA PEMOGRAMAN AT89S/Cxx (assembly)

Ringkasan Set Instruksi Dan Mode pengalamatan ( Addressing Mode )

PERTEMUAN. SET INSTRUKSI MIKROKONTROLER AT 89C51 (Lanjutan)

Daftar Isi. Trademarks & Copyright

Akuisasi data dengan remote host AT89s51 melalui serial RS232

Lab Elektronika Industri Mikrokontroler - 1 AT89C1051

Gambar 1. Rangkaian interface ke LCD Karakter 2 x16

Memprogram Interface Display

SISTEM INTERUPSI MIKROKONTROLER ATMEL

BAB IV HASIL PENGUKURAN DAN PENGUJIAN ALAT SISTEM PENGONTROL BEBAN DAYA LISTRIK

Alarm Pintu, Harap Pintu Tutup Kembali, Jangan Buka Pintu Lama-lama versi 2

APLIKASI SMS PADA JARINGAN TELEPHONE OLEH MODUL DST-52 DAN DF-88

Menggunakan Bahasa Pemrograman Assembly

BAB 2 LANDASAN TEORI. Dalam bab ini penulis akan membahas tentang komponen-komponen yang

Percobaan 5 PENGENALAN MIKROKONTROLER 8051

APLIKASI MIKROKONTROLER

Antarmuka LCD pada DST-AVR

Laporan Modul 2, EL3006 Timer/Counter dan Interrupt Jongguran Sondang DN ( )/ Kelompok 48/ Jumat, 14 Maret 2008 Asisten: Virgilius

Memprogram Interupsi AT89S51

de KITS Application Note AN9-8 Channel Temperature Display

BAB 3 PERANCANGAN ALAT DAN PROGRAM

APLIKASI HITACHI M1632 LCD PADA SC - AVR

DT-BASIC Application Note

DAFTAR PUSTAKA. Agfianto Eko Putra, BELAJAR MIKROKONTROLLER AT89C51/52/53, Gava Media, 2005.

BAB IV ANALISA DAN HASIL UJI COBA RANGKAIAN

INSTRUKSI DAN BAHASA PEMOGRAMAN MIKROKONTROLER

PERCOBAAN 15 I N T E R U P S I

Microcontroller: Bahasa Pemrograman Assembly 8051

INTERRUPT. Cara penggunaan int [no int]

M1632 MODULE LCD 16 X 2 BARIS (M1632)

INTRUKSI-INTRUKSI BAHASA PEMROGRAMAN ASSEMBLY

Reference Manual DST-51/2 V3.7

PC-Link Application Note

a b a AND b a OR b a XOR b a NOT a

Percobaan 6. SERIAL INTERFACE Menggunakan DT-51 MinSys

Mesin Absensi Sederhana dengan menggunakan R/W RFID

I/O dan Struktur Memori

AKSES KEYPAD 4X3 OLEH DST-51 DENGAN BAHASA C

PERCOBAAN 2 SAKLAR PUSH BUTTON

Percobaan 8 INTERFACE MIKROKONTROLER DAN KOMPUTER SECARA SERIAL

de KITS Application Note AN44 - Morse Code Generator

Program di computer (visual basic) Private Sub Command1_Click() End Sub. Private Sub Command2_Click() End Sub. Private Sub Command3_Click() End Sub

PETUNJUK PEMROGRAMAN DAN SET INSTRUKSI

BAB III PERANCANGAN DAN PEMBUATAN ALAT

Smart Peripheral Controller ALPHANUMERIC DISPLAY


Menampilkan nilai dari 8 kanal ADC ke Port Serial PC oleh Modul ST-51 dan AD-0809 V2.0

LM124/LM224/LM324/LM2902

PERCOBAAN 3. KONTROL DISPLAY 7-SEGMENT Menggunakan DT-51 MinSys

BAB 13 INTERFACE KE PRINTER DOT MATRIKS

MODUL 5 APLIKASI DISPLAY LCD

PERCOBAAN 1 DISPLAY LED

Instruksi logika (1) Memanipulasi isi Accumulator, dibagi menjadi 2. Panjang instruksi : 1 byte. Panjang instruksi : 2 byte

TUGAS AKHIR (Resume) Perancangan MODUL ALTERNATIF SISTEM MANAJEMEN SENSOR BERBASIS MIKROKONTROLER AT89S52 DAN KOMUNIKASI SERIAL RS232 SEBAGAI KANALNYA

PEMBUATAN ALAT PRAKTIKUM MIKROKONTROLER (AT89S51)

Percobaan 7 INTERFACE MIKROKONTROLER DAN MOTOR STEPPER

Universitas Sumatera Utara

Transkripsi:

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 Keybo ard 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-5 2 d e n gan 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 14 13 12 11 10 9 8 7 6 5 4 U? D7 D6 D5 D4 D3 D2 D1 D0 E R/W RS LCD MATRIX 2X16 VCC VLCD GND 2 3 1 10K Gambar 1 Antar muka Modul DST-52 dengan M1632 LCD

P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7 R1 2 3 4 5 6 VCC 7 8 9 1 R-PACK S1 KEYPAD 4X3 1 2 3 4 5 6 7 8 9 * 0 # JP1 P1.3 1 2 P1.0 P1.1 3 4 P1.2 P1.2 P1.3 5 6 P1.4 P1.5 7 8 P1.1 P1.6 P1.7 9 10 P1.0 PORT 1 P1.4 P1.5 P1.6 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 pro ses 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.

Inisial LCD Inisial Keyboard Aktifkan Interupsi Keyboard Character Counter = 0 Ambil Keypad Input diperoleh Nilai <= Keypad Tampilkan nilai di LCD Character Counter + 1 Character Counter = 16? Character Counter = 32? Pindah ke Baris 2 Matikan Interupsi Keyboard 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

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 Deteksi tombol ditekan ScanCode = F0? No RShift/Lshift/ Caps Lock? Konversi Scan Code Shift Flag = 1? Tunggu KbdClock Ambil Keyboard Rubah ke huruf besar No Deteksi Scan Code saat Keyboard dilepas RShift/LShift? Yes Set Carry Flag Aktifkan Interrupt No Complement Shift Flag Clear Carry Flag Deteksi Scan Code saat keyboard ditekan Kembali dari Interrupt Penekanan tombol pada keyboard tidak hanya menghasilkan sebuah s can 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 dikir im 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

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 f l a g c a r r y 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 diperl ukan 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 w w w. d e l t a- 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

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 ;Inisialisasi LCD EQU 05ECH 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 ;Inisialisasi Keyboard EQU 08C4H 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 ; Start:

Loop: Lcall Init_LCD ;Inisial LCD Lcall InitKeyboard ; Setb EA ; Setb EX0 ; Mov CharCounter,#00 ; Mov StackTemp,SP 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:

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