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

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

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

Teknik Interface Keypad 4x3 ke DST-51

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

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

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

AD Channel AD Conversion

Pengendalian 8 buah Motor oleh DST-51

ANTAR MUKA DST-51 DENGAN MODUL AD-0809

Register-register MT8888

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

DESKRIPSI SINGKAT INSTRUKSI-INSTRUKSI PADA AT89S51

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

KOMUNIKASI DATA DENGAN MENGGUNAKAN TEKNIK RS485

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

DT-51 Application Note

BAHASA PEMOGRAMAN AT89S/Cxx (assembly)

Antar Muka Modul RTC-1287 dengan Modul DST-51

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

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

LAMPIRAN D DATA SHEET

PENGATURAN KECEPATAN MOTOR DENGAN PC OLEH DST-5 2

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

Memprogram Port sebagai Output dan Input Sederhana

Mengenal bahasa assembly

PORT PARALEL MIKROKONTROLER ATMEL AT89C51

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

Ringkasan Set Instruksi Dan Mode pengalamatan ( Addressing Mode )

Percobaan 5. TIMER/COUNTER Menggunakan DT-51 MinSys

PERCOBAAN 9 T I M E R/ COUNTER

Akuisasi data dengan remote host AT89s51 melalui serial RS232

Menggunakan Bahasa Pemrograman Assembly

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

INSTRUKSI DAN BAHASA PEMOGRAMAN MIKROKONTROLER

PORT SERIAL MIKROKONTROLER ATMEL AT89C51

BAB 13 INTERFACE KE PRINTER DOT MATRIKS

Tabel Perbandingan ROM dan RAM pada beberapa seri ATMEL

AKSES MEMORI Menggunakan DT-51 MinSys

Memprogram Interface Motor

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

BAB IV ANALISA DAN HASIL UJI COBA RANGKAIAN

Gambar 1. Rangkaian interface ke LCD Karakter 2 x16

PETUNJUK PEMROGRAMAN DAN SET INSTRUKSI

INTRUKSI-INTRUKSI BAHASA PEMROGRAMAN ASSEMBLY

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

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

Memprogram Interface Display

Memprogram Interupsi AT89S51

LM124/LM224/LM324/LM2902

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

LAMPIRAN A PERANGKAT LUNAK

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

PERCOBAAN 3 DISPLAY 7 SEGMEN

de KITS Application Note AN9-8 Channel Temperature Display

Program Studi Fisika Fakultas Matematika dan Ilmu Pengetahuan Alam Universitas Lambung Mangkurat

Lampiran 2 Rangkaian Lengkap

Percobaan 5 PENGENALAN MIKROKONTROLER 8051

TIMER DAN COUNTER MIKROKONTROLER ATMEL

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

Akses I2C dengan menggunakan Delta I2C System

PEMBUATAN ALAT PRAKTIKUM MIKROKONTROLER (AT89S51)

Instruction Set Mikrokontroler

PERTEMUAN. SET INSTRUKSI MIKROKONTROLER AT 89C51 (Lanjutan)

Daftar Isi. Trademarks & Copyright

PERCOBAAN 15 I N T E R U P S I

Lab Elektronika Industri Mikrokontroler - 1 AT89C1051

Simple As Posible 2 (bag-2)

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

Antarmuka LCD pada DST-AVR

BAB III ANALISA DAN CARA KERJA RANGKAIAN

BAB 2 LANDASAN TEORI. Agar kendaraan lebih teratur dan tidak terlalu padat, biasanya tempat perparkiran ini dibagi

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

4. Port Input/Output Mikrokontroler MCS-51

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

PERCOBAAN 2 SAKLAR PUSH BUTTON

Universitas Sumatera Utara

PENGENDALIAN KECEPATAN MOTOR DC DENGAN METODE LOOK UP TABLE BERBASIS MIKROKONTROLER AT89C51

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

TEKNIK MERANCANG APLIKASI DENGAN DST-UNI PROG

BAB 3 PERANCANGAN ALAT DAN PROGRAM

Flowchart Bagian Pemancar

BAB 1 PRAKTIKUM DASAR MIKROKONTROLER MENGGUNAKAN TOP VIEW SIMULATOR DAN MODUL LAROS-ELECTOR V2.1

Bahasa Pemrograman Assembler 8051

BAB 2 LANDASAN TEORI. Dalam bidang elektronika, perlahan-lahan peralatan-peralatan manual mulai digantikan

PETUNJUK PRAKTIKUM MIKROKONTROLER. (AT89Sxx) Disusun oleh : Sumarna.

BAB IV PENGUJIAN DAN ANALISA DATA

RUNNING TEXT. Gambar 1. Susunan Running Text

BAB 3 SET ARAHAN. Bahasa Tahap Rendah. Bahasa yang memudahkan pengaturcaraan tanpa memikirkan bagaimana data diolah (pindahmemindah)

BAB III RANCANGAN DAN CARA KERJA ALAT

PERTEMUAN BAHASA PEMOGRAMAN ASSEMBLER

Blastica Press Release 2008

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

PERCOBAAN 2 TRANSFER DATA. Oleh : Sumarna, Jurdik Fisika, FMIPA, UNY

main mov R7,#FFh a1 djnz R7,a1 ;port1 = untuk kondisi LCD clr p1.0 clr p1.1 clr p1.2

Secara fisik, kerja dari sebuah mikrokontroler dapat dijelaskan sebagai siklus

I/O dan Struktur Memori

Transkripsi:

PENULISAN KARAKTER DENGAN MENGGUNAKAN TEKNIK PENULISAN PADA KEYPAD HANDPHONE OLEH MODUL DST-51, KEYPAD 4X3 DAN M1632 LCD Keypad 4x3 adalah merupakan keypad dengan konfigurasi 4 baris dan 3 kolom dan terdiri dari 12 tombol. Penggunaan 12 tombol pada proses input data numeric tentunya dapat dilakukan dengan mudah, namun pada proses input data alphabet dan karakter-karakter tanda bacanya, maka diperlukan sebuah teknik yang biasa digunakan pada keypad handphone. Pada teknik ini, setiap tombol tidak hanya mewakili satu alphabet atau tanda baca saja, melainkan untuk beberapa alphabet atau tanda baca sekaligus. Untuk membedakan alphabet atau tanda baca yang diinginkan dilakukan dengan mendeteksi jumlah penekanan tombol dalam satu waktu tertentu. A Penekanan 1 2 B C Penekanan 2 Penekanan 3 2 Penekanan 4 Gambar 1 Contoh penekanan tombol 2 Tombol-tombol numeric juga dapat dilakukan dengan menekan dan menahan tombol tersebut agak lama sehingga untuk memberikan angka 2 tidak harus dilakukan dengan menekan tombol 2 sebanyak 4 kali. Untuk penerapan teknik tersebut dalam Modul DST-51 dilakukan dengan proses yang tampak pada diagram alir di gambar 2. Diagram alir ini menggambarkan proses yang terjadi pada subroutine program listing 2, program ambil_keypad. Dalam proses ini terdapat timer yang bekerja untuk mendeteksi time out selama tombol ditekan dan time out selama tombol dilepas. Timer mulai menghitung pada saat terjadi penekanan tombol dan berhenti saat program keluar dari subroutine. Time out pada bagian pertama (time out karena tombol tidak ditekan) mengakibatkan program keluar dari subroutine ini dengan variable nilai berisi data hasil konversi table sesuai jumlah penekanan tombol. Sedangkan pada time out bagian kedua (time out karena tombol ditekan terus) mengakibatkan program akan keluar dari subroutine dengan variable nilai berisi data numeric yang terletak pada bagian akhir data pada setiap tombol (lihat table 1). Pada teknik penulisan keypad handphone, setelah terjadi penekanan tombol dan karakter tampil pada LCD maka karakter berikutnya hanya dapat diinputkan dengan penekanan tombol sesudah waktu tertentu yaitu saat cursor mulai blinking, kecuali tombol tersebut berbeda dengan tombol sebelumnya. Apabila tombol tersebut berbeda penekanan tersebut tidak perlu menunggu waktu tertentu. Contoh, pada saat penulisan kata AAA, tombol 2 ditekan untuk pertama kali dan layar LCD akan menampilkan karakter A, karakter A yang kedua hanya dapat dituliskan setelah waktu tertentu

yaitu saat cursor di LCD mulai blinking. Namun pada penulisan kata ADA di mana huruf pertama, kedua dan ketiga dituliskan dengan tombol yang berlainan, maka proses penekanan tidak perlu menunggu waktu tertentu. Untuk itu pada sistem ini, program dapat memeriksa perbedaan antara penekanan tombol saat ini dengan sebelumnya dengan membandingkan nilai dari input keypad dan nilai pada variable keypad buffer. Apabila kedua nilai tersebut tidak sama, maka program akan langsung keluar dari subroutine dengan variable nilai berisi data keypad yang lama, namun bila kedua nilai tersebut sama, maka program kembali melakukan konversi table dengan mengambil data kedua dari tombol yang ditekan. Total Tekan = 0 Reset Timer Keypad Timer 0 16 bit counter Keypad ditekan? Time Out? Total Tekan = 0? KeypadBuffer = Keypad? Keypad Buffer <= Keypad Konversi Tabel Keypad Total Tekan = 0 Akhir Data tombol? Total Tekan + 1 Tampilkan buffer ke LCD Delay Bouncing Reset Timer Keypad Start Timer Keypad Nilai<=Hasil Konversi Tabel Keypad dilepas? Tidak Time Out? Ambil data terakhir tombol Nilai = Hasil Konversi Tabel Stop Timer Keluar dari subroutine Gambar 2

Diagram Alir Subroutine Ambil Keypad Penekanan tombol yang sama yang dilakukan berulang-ulang hingga data terakhir dari tombol (00h) akan mengakibatkan karakter kembali ke bentuk pertama, yaitu misalkan A untuk tombol 2. Hal ini dilakukan dengan mereset nilai variable Total Tekan. Reset LCD CharCounter=0 Akses Keypad Tampilkan di LCD Char Counter = Char Counter + 1 Char Counter = 16? Char Counter = 32? LCD Pindah baris 2 Gambar 2 Diagram Alir Program Utama Gambar 2 menunjukkan diagram alir dari program utama yaitu program yang menggunakan subroutine ambil_keypad. LCD M1632 adalah LCD dengan susunan 16 karakter dan 2 baris oleh karena itu program harus memindah tampilan LCD ke baris 2 saat karakter ke 16 ditampilkan dan LCD akan pindah layar saat karakter ke 32. Untuk mengetahui jumlah karakter yang ditampilkan dilakukan dengan menggunakan variable character counter yang selalu bertambah setiap kali adanya penampilan karakter pada LCD.

Tabel 1. Tabel Kode Tombol dg alamat awal table di 2200h Alamat Tombol Tekan 1x Tekan 2x Tekan 3x Tekan 4x Tekan 5x Tekan 6x Tekan 7x Tekan 8x Tekan 9x Tekan 10x 2200h 0 Spasi 0 00h 220Ah 1 Titik Koma?! - & 1 00h 2214h 2 A B C 2 00h 221Eh 3 D E F 3 00h 2228h 4 G H I 4 00h 2232h 5 J K L 5 00h 223Ch 6 M N O 6 00h 2246h 7 P Q R S 7 00h 2250h 8 T U V 8 00h 225Ah 9 W X Y Z 9 00h 226Eh # # 00h 2278h * * 00h

Tabel 1 menunjukkan table data yang berisi kode-kode untuk setiap tombol keypad dengan konfigurasi tertentu. Kode 00h adalah merupakan tanda akhir dari datadata setiap tombol. Pada table di atas setiap data-data setiap tombol disimpan di lokasi memori dengan jarak 10 byte (0Ah). Dengan jarak sebesar 10 byte lokasi memori untuk tiap data-data tombol, maka tampak beberapa lokasi kosong yang tampak di table 1 sebagai kotak-kotak ber arsir. Lokasi-lokasi tersebut dapat digunakan untuk menambah kode-kode lain pada setiap tombol, contohnya kode { ingin ditambahkan di tombol 2 urutan keempat, maka data konfigurasi di baris Alamat 2214h harus diganti menjadi A B C { 2 00h. Listing 1 KonversiTabel: Movc A,@A+DPTR Mov B,#10 Mul AB Push DPH Push DPL Mov DPTR,#TabelKodeTombol Mov B,TotalTekan Add A,B Movc A,@A+DPTR Pop DPL Pop DPH Listing 1 adalah subroutine proses konversi dari data yang diperoleh dari keypad ke kode dari tombol. Karena setiap tombol dipisahkan dengan lokasi sebesar 10 byte, maka data dari keypad tersebut dikali dengan 10. Sedangkan untuk mengambil data sesuai dengan jumlah penekanan, maka selanjutnya data yang telah dikali 10 tadi dijumlahkan dengan variable total tekan yang berisi jumlah penekanan yang telah terjadi. Listing 2 Subroutine Ambil_Keypad DSEG TimeOutKeypad: Ds 1 TotalTekan: Ds 1 ;Jumlah penekanan keypad Nilai: Ds 1 KeypadBuffer: Ds 1 CSEG Keypad EQU 90H Org $ Ambil_Keypad: Mov Keypad,#0FFH ; Acall RSTTimeKeypad ;Reset Timer Keypad Mov A,TMOD ;Timer 0 mode 16 bit counter Anl A,#0F0H ; Orl A,#01H ; Mov TMOD,A ; Clr TR0 ResetTotalTekan: Mov TotalTekan,#0 ;Total penekanan = 0

Tunggu_Ditekan: Mov A,Keypad ; Cjne A,#0FFH,KeypadDitekan ; Jnb TF0,Tunggu_Ditekan Clr TF0 Inc TimeOutKeypad Mov R7,TimeOutKeypad Cjne R7,#010,Tunggu_Ditekan Clr TR0 KeypadDitekan: Jb P,Tunggu_Ditekan ;Periksa apakah baris dan kolom ;telah terhubung Mov R7,TotalTekan ; Cjne R7,#0,TidakSkip Ajmp Skip TidakSkip: Mov B,KeypadBuffer Clr C Subb A,B Jnz GantiTombol Mov A,Keypad skip: Mov Keypadbuffer,Keypad Acall KonversiTabel Jz ResetTotalTekan ;Akhir data tombol? Inc TotalTekan Mov Nilai,A Lcall Kirim_Karakter Mov A,#04H Lcall Kirim_Perintah Mov A,#' ' Lcall Kirim_Karakter Mov A,#06H Lcall Kirim_Perintah Lcall DelayBouncing3 Acall RSTTimeKeypad TungguLepas: Mov A,Keypad Setb TR0 Cjne A,#0FFH,PeriksaTimer Setb TR0 Ajmp Tunggu_Ditekan PeriksaTimer: Jnb TF0,TungguLepas Clr TF0 Inc TimeOutKeypad Mov R7,TimeOutKeypad Cjne R7,#010,TungguLepas Mov DPTR,#TabelKeypad CariAkhirDataTombol: Mov A,Keypad ;Cari akhir data tombol

Acall KonversiTabel ; Inc TotalTekan ; Jnz CariAkhirDataTombol ; Dec TotalTekan ; Dec TotalTekan ; Mov A,KeypadBuffer ;Ambil data terakhir tombol Acall KonversiTabel ; Mov Nilai,A ;Simpan di Nilai Lcall Kirim_Karakter Mov A,#04H Lcall Kirim_Perintah Mov A,#' ' Lcall Kirim_Karakter Mov A,#06H Lcall Kirim_Perintah BelumLepas: Mov A,Keypad Cjne A,#0FFH,BelumLepas GantiTombol: Clr TR0 ;Stop Timer KonversiTabel: Movc A,@A+DPTR Mov B,#10 Mul AB Push DPH Push DPL Mov DPTR,#TabelKodeTombol Mov B,TotalTekan Add A,B Movc A,@A+DPTR Pop DPL Pop DPH Reset: Mov TotalTekan,#00 Ajmp Tunggu_Ditekan DelayBouncing3: Push B Mov B,#01 Loop2DelayBounce: Acall DelayBouncing2 Djnz B,Loop2DelayBounce Pop B DelayBouncing2: Push B Mov B,#0FFH Loop1Delaybounce: Acall DelayBouncing1 Djnz B,Loop1Delaybounce Pop B

DelayBouncing1: Push B Mov B,#0FFH Djnz B,$ Pop B RSTTimeKeypad: Mov TH0,#00H Mov TL0,#00H Mov TimeOutKeypad,#00 Listing 3 Program Utama $MOD51 ;********* ; PROGRAM PENULISAN KARAKTER DENGAN MENGGUNAKAN TEKNIK PENULISAN PADA KEYPAD ; HANDPHONE OLEH MODUL DST-51, KEYPAD 4X3 & M1632 LCD DSEG CharCounter: Ds 1 Org 50H CSEG Delay_500mS EQU 0099H ;Menunda waktu selama 500 ms (timer 0 digunakan) KirimPesan_LCD EQU 160DH ;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 1619H Kirim_Perintah EQU 1658H ;Mengirim data ke register perintah LCD ;- Data diisi di akumulator Kirim_Karakter EQU 1677H ;Mengirim data ke register data LCD ;- Data diisi di akumulator Baris2 EQU 1681H ;Memindah posisi cursor ke baris 2 ROM EQU 2000H Org ROM ;Reset Vector Ajmp Start ; Org ROM+3H ;External Interrupt 0 Vector

i ; Org ROM+0BH ;Timer 0 Interrupt Vector i ; Org ROM+13H ;External Interrupt 1 Vector i ; Org ROM+1BH ;Timer 1 Interrupt Vector i ; Org ROM+23H ;Serial Interrupt Vector i ; Start: Lcall Init_LCD ;Inisial LCD Mov CharCounter,#00 ; Loop: Mov DPTR,#TabelKeypad ;Akses Keypad Lcall Ambil_keypad ; 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 Ajmp Start ;ke baris 1 $include (keypad2.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 CSEG Org ROM+0F00H

Kpd1 EQU 0B7H Kpd2 EQU 0D7H Kpd3 EQU 0E7H Kpd4 EQU 0BBH Kpd5 EQU 0DBH Kpd6 EQU 0EBH Kpd7 EQU 0BDH Kpd8 EQU 0DDH Kpd9 EQU 0EDH Kpdstar EQU 0BEH Kpd0 EQU 0DEH Kpdpgr EQU 0EEH TabelKeypad: Org TabelKeypad+Kpd1 DB 1 Org TabelKeypad+Kpd4 DB 4 Org TabelKeypad+Kpd7 DB 7 Org TabelKeypad+Kpdstar DB 0BH Org TabelKeypad+Kpd2 DB 2 Org TabelKeypad+Kpd5 DB 5 Org TabelKeypad+Kpd8 DB 8 Org TabelKeypad+Kpd0 DB 0 Org TabelKeypad+Kpd3 DB 3 Org TabelKeypad+Kpd6 DB 6 Org TabelKeypad+Kpd9 DB 9 Org TabelKeypad+Kpdpgr DB 0CH END