Anda di halaman 1dari 73

BUKA TUTUP PINTU OTOMATIS BERBASIS MIKROKONTROLER AT89S52 DENGAN BARCODE

TUGAS AKHIR Diajukan Untuk Memenuhi Salah Satu Syarat Mencapai Gelar Ahli Madya Program Diploma III Ilmu Komputer

Disusun Oleh : ANJAR RUBIYANTO M3306010

PROGRAM DIPLOMA III ILMU KOMPUTER FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM UNIVERSITAS SEBELAS MARET SURAKARTA 2009

HALAMAN PERSETUJUAN

BUKA TUTUP PINTU OTOMATIS DENGAN BARCODE BERBASIS MIKROKONTROLER AT89S52

Disusun Oleh :

ANJAR RUBIYANTO NIM. M3306010

Tugas Akhir ini telah disetujui untuk dipertahankan Di hadapan dewan penguji pada tanggal ____ ____ _______

Pembimbing Utama

Drs. SYAMSURIZAL NIP. 19561212 198803 1 001

ii

HALAMAN PENGESAHAN

BUKA TUTUP PINTU OTOMATIS DENGAN BARCODE BERBASIS MIKROKONTROLER AT89S52 Disusun Oleh :

ANJAR RUBIYANTO NIM. M3306010

Di bimbing oleh Pembimbing Utama

Drs. SYAMSURIZAL NIP. 19561212 198803 1 001

Tugas Akhir ini telah diterima dan disahkan oleh dewan penguji Tugas Akhir Program Diploma III Ilmu Komputer pada hari ________ tanggal____________

Dewan Penguji 1. Penguji 1 2. Penguji 2 3. Penguji 3

Drs. Syamsurizal NIP. 19561212 198803 1 001 Drs. Siswanto, M.si. NIP. 19670813 199203 1 002 Umi Salamah, S.si, M.Kom NIP. 19700217 199702 2 001 Disahkan Oleh

( ( (

) ) )

Dekan Fakultas MIPA UNS

Ketua Program Studi DIII Ilmu Komputer UNS

Prof. Drs. Sutarno, M.Sc, Ph.D NIP. 19600809 198612 1 001

Drs. Ys. Palgunadi, M.Sc NIP. 19560407 198303 1 004

iii

ABSTRACT

Anjar Rubiyanto. M3306010. THE AUTOMATIC DOOR COVER BASE ON THE MICROCONTROLLER AT89S52 BY BARCODE. Final Project, Surakarta : Faculty of Mathematics and Natural Sciences, Sebelas Maret University, Surakarta, 2009. Security system at office building is rare has less efficient, How problem is show that it was found the block owners, of after lost then valuable goods, letters, and document. The aim of research is to design and to develop security system at the main gate connected to a database. The system was connected to a computer with a database and it was facility to input using barcode. Research method used are developing prototype, hardware, as well as software. The software was developed by Assembler and Borland Delphi 7. Baudrate speed was 9600 bps and the voltage used was 5 Volt and 12 Volt. It was concluded that the system was tested for all component. It was shown that the barcode can be read by the computer to processed as id information, time, and report of the people who intrance the room.

iv

ABSTRAK

Anjar Rubiyanto. M3306010. BUKA TUTUP PINTU OTOMATIS BERBASIS MIKROKONTROLER AT89S52 DENGAN BARCODE. Tugas Akhir, Surakarta : Fakultas Matematika dan Ilmu Pengetahuan Alam, Universitas Sebelas Maret, Surakarta, 2009. Sistem keamanan pada gedung perkantoran sangatlah kurang. Hal ini terbukti karena masih banyak dijumpai gedung perkantoran yang sering kehilangan barang, surat, dan dokumen berharga. Tujuan dari tugas akhir ini adalah merancang dan membuat sistem keamanan ruangan pada pintu masuk yang telah terhubung dengan data base dan menggunakan input barcode. Metode penelitian yang digunakan adalah dengan pembuatan prototype, perangkat keras, dan perangkat lunak. Perangkat lunak meliputi bahasa pemrograman assembly dan bahasa pemrograman Borland Delphi 7. Kecepatan baudrate yang digunakan adalah 9600 bps dan tegangan yang digunakan adalah 5 Volt dan 12 Volt. Pengujian dilakukan dengan pengecekan seluruh komponen pada rangkaian. Berdasarkan pengujian, data barcode dapat dibaca oleh computer, sehingga diproses menjadi informasi identitas, jam dan tanggal serta laporan database karyawan yang telah memasuki ruangan.

MOTTO

"Kerjakanlah Pekerjaan Yang Membawa Berkah Bagimu Dan Orang Yang Kamu Cintai".

"Mulai dari mimpi, raih dengan jujur, wujudkan dengan usaha dan do'a, nikmati hasilnya dengan berbagi".

vi

PERSEMBAHAN

Tugas akhir ini aku persembahkan kepada :

1.

Ayah dan Ibuku tercinta 2. Adik-adikku tersayang 3. Ingkang kulo tresnani Agita Chrisnawa Resti 4. Semua pihak yang telah membantu untuk menyelesaikan Tugas Akhir ini.

vii

KATA PENGANTAR

Puji syukur, penulis panjatkan kehadirat Tuhan Yang Maha Esa, karena hanya dengan seluruh rahmat dan karunia-Nya, penulis dapat menyelesaikan tugas akhir dengan baik dan lancar. Tugas Akhir dengan judul Buka Tutup Pintu Otomatis Berbasis Mikrokontroler AT89S52 Dengan Barcode, yang disusun untuk memenuhi salah satu syarat dalam menyelesaikan program D3 pada Program Studi Teknik Komputer di Universitas Sebelas Maret Surakarta. Pada kesempatan ini, penulis ingin menyampaikan ucapan terima kasih kepada semua pihak yang telah membantu dan memberikan dukungan, bimbingan, serta bantuan kepada penulis selama proses penyelesaian tugas akhir ini. Karena tanpa adanya dukungan dari mereka penulis tidak akan sanggup untuk menyelesaikan laporan dengan baik. Secara khusus saya ucapkan terima kasih kepada: 1. Bapak Prof. Drs. Sutarno, M. Sc, Phd. selaku Dekan Fakultas Matematika dan Ilmu Pengetahuan Alam, Universitas Sebelas Maret. 2. Bapak Drs. Y.S.Palgunadi, M. Sc. selaku Ketua Program Studi D3 Ilmu Komputer Fakultas Matematika dan Ilmu Pengetahuan Alam, Universitas Sebelas Maret. 3. Bapak Syamsurizal selaku pembimbing dalam menyelesaikan tugas akhir, yang telah memberikan bimbingan secara moral maupun teknis. 4. Bapak dan Ibu yang telah memberi banyak bantuan dan motivasi baik secara moril maupun meteriil. 5. Adik adiku, Yuli dan Teguh yang selalu memberikan semangat untuk berusaha dalam segala hal. 6. Agita C. Resti, yang selalu memberikan semangat dan bantuan dalam menyelesaikan tugas akhir ini. 7. Teman-teman yang turut membantu dalam segala hal di kampus FMIPA.

viii

8. Dan semua pihak yang secara langsung maupun tidak langsung yang telah memberikan bantuan dan dukungan dalam penyelesaian Tugas Akhir ini, saya ucapkan banyak terima kasih. Pada kesempatan ini penulis memohon maaf yang sebesar-besarnya kepada semua pihak jika ada kesalahan-kesalahan dalam penulisan tugas akhir ini. Penulis menyadari bahwa hasil karya ini belum sempurna, maka kritik dan saran selalu penulis harapkan dari pembaca dan pihak lain. Akhir kata penulis berharap agar tugas akhir ini dapat bermanfaat bagi pembaca.

Surakarta, April 2009

Penulis

ix

DAFTAR ISI

HALAMAN JUDUL............... i HALAMAN PERSETUJUAN........ ii HALAMAN PENGESAHAN................................. iii ABSTRACH................ iv ABSTRAK................ v

MOTTO................... vi PERSEMBAHAN........... vii KATA PENGANTAR......... viii DAFTAR ISI........... x DAFTAR GAMBAR........... xii DAFTAR TABEL............... xiv DAFTAR LAMPIRAN....... xv BAB I PENDAHULUAN 1.1 Latar Belakang.......... 1 1.2 Rumusan Masalah............. 1 1.3 Tujuan dan Manfaat.......... 2 1.4 Batasan Masalah............... 2 1.5 Metodologi Penelitian............... 2 1.6 Sistematika Penulisan........................................................................... 2 BAB II LANDASAN TEORI 2.1 Mikrokontroler AT89S52... ......... 4 2.2 Konfigurasi Mikrokontroler AT89S52........................ 4 2.3 Special Function Register ............................. 7 2.4 Data Memori.......................... 8 2.5 Struktur Memori AT89S52............ 8 2.6 Diagram Blok Mikrokontroler AT89S52 ............. 9 2.7 Driver Motor DC........................... 9 2.8 Motor DC............................................................... 10

2.9 Barcode ...................................................... 10 2.10 Barcode Reader .................................................. 12 2.11 Bahasa Assembly di Mikrokontroler.................. 12 2.12 Karakteristik Sinyal Port Serial ..................... 13 2.13 Borland Delphi 7.0.............................................. 15 2.13.1 Comport ............................................................... 15 BAB III DESAIN DAN PERANCANGAN SISTEM 3.1 Diagram Blog Rangkaian......... 3.2 Perancangan Perangkat Keras (Hardware).............. 3.2.1 Unit Barcode Scanner....... ........... 3.2.2 Rangkaian Minimum Mikrokontroler AT89S52......... 16 16 17 18

3.2.3 Unit Penggerak Motor DC dan Prototype Pintu.... 20 3.2.4 Unit Catu Daya.......................................... 21 3.2.5 Interface RS 232.................................... 22 3.3 Perancangan Perangkat Lunak (Software)............................................ 23 3.3.1 Perancangan Data Base........................... 26 3.3.2 Tabel Data Identitas................................ 26 BAB IV PENGUJIAN DAN ANALISA 4.1 Pengujian................... 31 4.2 Pengujian Hardware.......... ........................... 31 4.2.1 Pengujian Penggerak Motor DC dan Prototype Pintu......... 31 4.2.2 Pengujian Catu Daya................... 32 4.3 Komunikasi Serial........... 33 4.4 Pengujian Tombol Otomatis.......... 34 4.5 Pengujian Software........... 34 BAB V PENUTUP 5.1 Kesimpulan.................... 44 5.2 Saran............................... 44 DAFTAR PUSTAKA................... 45 LAMPIRAN......................... 46

xi

DAFTAR GAMBAR

Gambar 2.1 Konfigurasi Mikrokontroller AT89S52.................................... 5 Gambar 2.2 Block Diagram Mikrokontroler AT89S52................................ 9 Gambar 2.3 Interface MAX 232............ 13 Gambar 2.4 Konektor Serial DB-9.... 14 Gambar 2.5 Komponen Comport .. 15 Gambar 3.1 Diagram blok pintu otomatis dengan barcode........................... 16 Gambar 3.2 Barcode Reader dan Contoh Barcode.... 17 Gambar 3.3 Barcode Reader konektor PS/2.. 17 Gambar 3.4 Rangkaian Mikrokontroler AT89S52 19 Gambar 3.5 Rangkaian Unit Penggerak Motor DC.. 20 Gambar 3.6 Rangkaian Unit Catu Daya............... 21 Gambar 3.7 Rangkaian Interface RS 232..................................................... 22 Gambar 3.8 Flowcart Program Koneksi Hardware Dengan Software........ 23 Gambar 3.9 Flowcart Mikrokontroler dengan input Barcode........................ 24 Gambar 3.10 Flowcart mikrokontroler memperoleh input dari Tombol....... 25 Gambar 3.11 Tabel identitas untuk data pegawai.......................................... 27 Gambar 3.12 Tabel identitas untuk data barcode...........................................27 Gambar 3.13 Tampilan Form Utama............................................................. 28 Gambar 3.14 Tampilan Form 2..................................................................... 28 Gambar 3.15 Tampilan Form 3. 29 Gambar 3.16 Tampilan Form 4. 29 Gambar 4.1 Port Setting ... 33 Gambar 4.2 Hyperterminal sesudah mikrokontroler mengirimkan data . 33 Gambar 4.3 Hyperterminal sesudah mikro mengirimkan data barcode.34 Gambar 4.4 Tampilan Form Utama untuk Data Pegawai 35 Gambar 4.5 Tampilan untuk mengisi data baru ... 35 Gambar 4.6 Pengisian data baru ............... 36 Gambar 4.7 Data baru masuk pada tabel utama data pegawai ... 36

xii

Gambar 4.8 Tampilan pilih tampilan tabel ... 37 Gambar 4.9 Tabel utama merupakan tabel data barcode .. 37 Gambar 4.10 Tampilan jika ingin mencetak laporan pegawai yang masuk.. 38 Gambar 4.11 Tampilan form 4 ..38 Gambar 4.12 Tampilan print preview laporan data masuk ... 39 Gambar 4.13 Tampilan untuk menyimpan data yang akan dicetak . 39 Gambar 4.14 Tampilan laporan siap untuk dicetak.. 40 Gambar 4.15 Tampilan jika ada pegawai yang masuk dengan barcode 41 Gambar 4.16 Tampilan pencarian data nama pegawai yang masuk.. 41 Gambar 4.17 Tampilan pencarian data tampil semua.. 42 Gambar 4.18 Tampilan Indikasi Kondisi Pintu jika terdapat error ... 42

xiii

DAFTAR TABEL

Tabel 2.1 Fungsi Pin Port 1.......................................................................... 5 Tabel 2.2 Fungsi Pin Port 3......................................................................... 6 Tabel 2.3 Fungsi Pin konektor DB9 .... 14

xiv

DAFTAR LAMPIRAN

LAMPIRAN 1 FOTO PROTOTYPE PINTU OTOMATIS LAMPIRAN 2 GAMBAR RANGKAIAN KESELURUHAN LAMPIRAN 3 FOTO RANGKAIAN PROTOTYPE YANG TERHUBUNG DENGAN KOMPUTER LAMPIRAN 4 ALAT, BAHAN DAN SOFTWARE PENDUKUNG LAMPIRAN 5 INSTALASI COMPORT LAMPIRAN 6 DATA SHEET ATMEL

xv

BAB I PENDAHULUAN

1.1 Latar Belakang Sistem keamanan biasanya di buat untuk menghindari adanya kejahatan di kantor atau di rumah. Sistem keamanan tersebut diposisikan pada pintu masuk agar dapat membatasi akses orang yang tidak berkepentingan. Proses buka tutup pintu biasanya dilakukan secara manual namun dengan meningkatnya tindakan kriminalitas di butuhkan sistem pengaman pintu yang baik dan pintu dapat bekerja secara otomatis dengan mempertimbangkan aspek pembiayaan agar tetap murah. Sistem keamanan dengan security kamera pada pintu masuk, di antara pintu masuk akan dibuka jika pengguna mengijinkan orang tersebut masuk. Kelebihannya pintu masuk dapat selalu diawasi, namun kelemahannya memerluakan orang untuk membuka dan menutup. Sistem lain adalah dengan cara memasukan password lewat keypad. Dimana pintu akan terbuka dan tertutup secara otomatis namun kelemahannya adalah pengguna harus mengingat kode passwordnya dan pemilik gedung atau rumah tidak dapat mengetahui siapa saja yang telah masuk. Dengan demikian sangat berarti sekali jika proses proses pengawasan setiap orang yang keluar dan masuk pintu di bantu dengan penerapan teknologi. Agar efisiensi dan proses pengawasannya lebih terstruktur dan lebih baik, penulis ingin merancang dan membuat sistem keamanan pada pintu masuk dengan sistem barcode disertai program perekam data siapa saja yang telah masuk pada gedung. Sistem ini lebih praktis karena pengguna tinggal membawa kartu pengenal yang sudah didaftarkan. Dan pemilik gedung dapat dapat melakukan pengawasan dengan melihat program yang menampilkan siapa saja yang telah masuk gedung.

1.2 Rumusan Masalah Dari urain tentang latar belakang masalah di atas dapat disimpulkan rumusan masalah yang menjadi sasaran utama tugas akhir ini yaitu bagaimana merancang dan implementasi sebuah program sistem keamanan pada pintu masuk berbasis mikrokontroler yang terhubung dengan basis data melalui sumber barcode.

1.3 Tujuan dan Manfaat Tugas akhir ini memiliki tujuan dan manfaat antara lain : 1. Merancang dan implementasi program system keamanan ruangan berbasis mikrokontroler AT89S52. 2. Membuat system data base pengguna ruang yang akan memudahkan pengawasan.

1.4 Batasan Masalah Ada 7 hal batasan masalah yang dapat mempermudah pembuatan pintu otomatis ini. Hal tersebut meliputi : 1. Pembuatan pintu otomatis dengan barcode ini hanya merupakan prototype saja. 2. 3. Perancangan pengendali mikrokontroler AT89S52. Bahasa pemrograman untuk mikrokontroler AT89S52 adalah assembly 4. Untuk perancangan tampilan utama dan data base menggunakan Delphi 7. 5. Alat penggerak pintu dengan motor DC dengan input

menggunakan barcode. 6. 7. Kecepatan motor DC tidak dapat diatur oleh software. Jenis barcode yang digunakan adalah barcode code 39.

1.5 Metode Penelitian Metode penelitian yang diterapkan adalah : 1. Observasi Metode observasi yang dilakukan meliputi : a. Proses pencarian dan pengumpulan data mengenai komponen yang diperlukan dalam pembuatan prototype pintu otomatis. b. Pengamatan dan pencatatan data yang digunakan sebagai dasar teori. 2. Studi Pustaka Metode pengumpulan data yang dilakukan meliputi : a. Membaca literatur atau bahan-bahan teori yang dapat menunjang penulisan laporan. b. Menerapkan bahan-bahan teori yang berkaitan dengan

perancangan dan pembuatan laporan.

1.6 Sistematika Penulisan Penulisan tugas akhir ini dibagi menjadi lima bab, dimana sistematika pembahasannya sebagai berikut : Bab I Pendahuluan Membahas latar belakang, rumusan masalah, tujuan dan manfaat, batasan masalah, metodologi penelitian dan sistematika penulisan. Bab II Landasan Teori Landasan teori memuat tinjauan pustaka dan teori-teori yang mendukung. Bab III Desain dan Perancangan Sistem Membahas perancangan sistem, perangkat keras (hardware), dan perangkat lunak (software). Bab IV Analisa dan Pembahasan Memuat tentang langkah, hasil analisa dan pembahasan Bab V Penutup Membahas Saran dan Kesimpulan.

BAB II LANDASAN TEORI

Perancangan dan pembuatan perangkat keras (hardware) maupun perangkat lunak (software) pintu otomatis menggunakan barcode ini, dalam pembuatannya merupakan penggabungan dari dua buah bidang, yaitu mekanik dan rangkaian elektronika kontrol. Sebuah mekanik tentu tidak dapat beroperasi dengan sendirinya tanpa ada sebuah rangkaian atau modul yang mengatur pergerakannya. Dalam bab dua, akan dijelaskan komponen-komponen pembentuk rangkaian elektronika sebagai pengontrol sistem mekanik dalam pembuatan Tugas Akhir ini. 2.1 Mikrokontroler AT89S52 AT89S52 merupakan mikrokontroler yang dikembangkan dari 8051 standar (semua pin dan instruksi assembler sesuai dengan standar 8051) oleh atmel Corporation. Mikrokontrol ini dirancang dengan teknologi CMOS dan memori non-volatile dari ATMEL dengan memori program internal (memori flash) sebesar 8 KB yang bisa diprogram dalam sistem (In-system programmable flash memory-ISP). Penambahan fitur dari mikrokontroler standar di antaranya: 1. Memori flash 8 KB yang bisa diprogram ulang sampai 1000 siklus baca/tulis 2. Fungsi penguncian memori program (program mamori lock) untuk memproteksi isi memori program internal 3. Bekerja pada frekuensi sampai 33 MHz 4. RAM internal sebesar 256 byte 5. Penambahan Timer 2 6. Timer Watchdog yang bisa diprogram 7. Dua data pointer(DPTR) 8. 8 sumber interupsi 9. Fungsi-fungsi penghematan daya (power down mode) Dengan penambahan fungsi-fungsi di atas, AT89S52 merupakan 4

mikrokontroler yang cukup handal untuk aplikasi sistem kendali atau yang lainnya. Memori flash internal sebesar 8KB yang bisa diprogram ulang dalam sistem(ISP memudahkan untuk merancang software sehingga mungkin tidak diperlukan emulator (Usman, 2008).

2.2 Konfigurasi Mikrokontroller AT89S52 Konfigurasi Mikrokontroller AT89S52 diperlihatkan pada Gambar 2.1

Gambar 2.1 Konfigurasi Mikrokontroller AT89S52

1.

P1.0-P1.7 (Port 1) Port 1 merupakan port 8 bit dua arah (input/output) dengan pull up

internal. Buffer output Port 1 bisa menangani sampai 4 masukan TTL. Ketika data FFH dikirim ke Port 1 maka Port 1 bisa menjadi port masukan. Port 1 bisa diakses menjadi port (P1) atau diakses per bit (P1.0-P1.7). Setelah reset P1 akan menjadi port masukan. Tabel 2.1 Fungsi Pin Port 1

2. P3.0-P3.7 (Port 3) Port 1 merupakan port 8 bit dua arah (input/output) dengan pull up internal. Buffer output Port 3 bisa menangani sampai 4 masukan TTL. Ketika data FFH dikirim ke Port 3 maka Port 3 bisa digunakan sebagai masukan. Port 3 bisa diakses sebagai port (P3) atau diakses per bit (P3.0-P3.7). Setelah reset P3 akan menjadi port masukan. Tabel 2.2 Fungsi Pin Port 3

3. XTAL 2 dan XTAL 1 XTAL 2 merupakan keluaran dari rangkaian penguat osilator internal. Sedangkan XTAL 1 merupakan masukan ke penguat osilator internal. Sebuah kristal dan dua buah kapasitor yang dihubungkan ke pin ini sudah cukup untuk menyediakan sinyal detak (clock) untuk mikrokontrloler.

4.

VCC dan GND VCC dan GND merupakan pin untuk tegangan DC. Mikrokontrloer 8051

standar membutuhkan tegangan DC sebesar 5 volt agar bisa bekerja dengan baik (standar TTL).

5.

P2.0-P2.7 (Port 2) Port 2 merupakan port 8 bit dua arah (input/output) dengan pull up

internal. Buffer output Port 2 bisa menangani sampai 4 masukan TTL. Ketika data FFH dikirim ke Port 2 maka Port 2 bisa digunakan sebagai masukan. Port 2 bisa diakses sebagai port (P2) atau diakses per bit (P2.0-P2.7). Setelah reset P2 akan menjadi port masukan.

Selain sebagai port multiguna , P2 juga akan mengeluarkan alamat orde tinggi (A8-A15) pada saat menjalankan program dari memori program eksternal atau pada saat mengakses memori data eksternal yang menggunakan perintah pengalamatan 16 bit (perintah movx @DPTR).

6.

PSEN, ALE dan EA PSEN atau program store enable adalah sinyal baca pada saat

menjalankan program dari memori eksternal. Didalam aplikasi PSEN akan dihubungkan dengan sinyal RD memori program eksternal (EEPROM). ALE atau address latch enable adalah pulsa keluaran latch pada proses pengaksesan memosri eksternal (program maupun data). Di dalam aplikasi ALE biasanya dihubungkan dengan masukan latch enable dari IC latch, 74373 misalnya. EA atau external access enable menentukan apakah alamat awal memori program berada di memori eksternal atau internal.

7.

P0.0-P0.7 (Port 0) Port 0 merupakan port 8 bit dua arah (input/output) dengan drai terbuka

(open drain). Port 0 mampu menangani 8 masukan TTL. Seperti halnya port-port yang lain, ketika data FFH dikirim ke port ini akan menjadi masukan dengan impedansi tinggi. Port 0 bisa diakses sebagai port (P0) atau diakses per bit (P0.0P0.7). Karena sifatnya drain terbuka, P0 membutuhkan pull up eksternal pada saat dihubungkan dengan peralatan eksternal. P0 memiliki fungsi khusus yaitu, yaitu sebagai bus data (D0-D7) dan bus alamat orde rendah (A0-A7) pada proses pembacaan program dari memori program eksternal maupun pengaksesan memori data eksternal. Pada mode ini P0 mempunyai pull up internal (Usman, 2008).

2.3 Special Function Register Mikrokontroler mempunyai sebuah peta memori yang disebut sebagai Special Function Register (SFR) . Port 0 berada di alamat 80h, port 1 90h, port 2

A0h dan P3 di alamat B0h. Sedangkan SBUF untuk komunikasi serial berada pada alamat 99h (Usman, 2008).

2.4 Data Memori AT89S52 menggunakan 256 bytes RAM dimana 128 bytes bagian atas menempati alamat parallel ke special function register (SFR). Artinya 128 bagian atas mempunyai alamat yang sama dengan SFR namun secara fisik terpisah dari SFR. Ketika instruksi mengakses lokasi internal diatas 7FH, mode alamat yang digunakan pada instruksi menentukan apakah CPU mengakses 128 bytes atas atau SFR. Instruksi yang menggunakan pengalamatan langsung akan mengakses ruang SFR. Sebagai contoh, Port 0 berada diset pada alamat 80H, port 1 90H dan lain lain, informasi ini juga dapat dilihat pada file MOD51 yang harus kita sertakan setiap membuat program assembly dengan sebagian isinya sebagai berikut : ; P0 SP DPL DPH PCON TCON TMOD TL0 TL1 TH0 TH1 P1 REV. DATA DATA DATA DATA DATA DATA DATA DATA DATA DATA DATA DATA 1.0 080H 081H 082H 083H 087H 088H 089H 08AH 08BH 08CH 08DH 090H MAY 23, 1984 ;PORT 0 ;STACK POINTER ;DATA POINTER - LOW BYTE ;DATA POINTER - HIGH BYTE ;POWER CONTROL ;TIMER CONTROL ;TIMER MODE ;TIMER 0 - LOW BYTE ;TIMER 1 - LOW BYTE ;TIMER 0 - HIGH BYTE ;TIMER 1 - HIGH BYTE ;PORT 1 (Usman, 2008).

2.5 Struktur Memori AT89S52 AT89S52, seperti halnya 8051 standar, bisa mengalamati memori program sebesar 64 KB dengan adanya pemisahan sinyal baca/tulis untuk memori program dan data. Selain memori data eksternal, AT89S52 dilengkapi dengan RAM

internal sebesar 256 byte. RAM internal tambahan hanya bisa diakses dengan mode pengalamatan tak langsung (indirect addressing) (Usman, 2008).

2.6 Diagram Block Mikrokontrol AT89S52 Diagram block mikrokontrol AT89S52 ditunjukan pada Gambar 2.2 (Usman, 2008).

Gambar 2.2 Block Diagram Mikrokontroler AT89S52

2.7 Driver Motor DC Blok ini mengatur putaran motor DC sebagai penggerak pintu, dimana mempunyai dua buah input yang aktif jika berlogika tinggi, input pertama

10

memerintahkan blok ini untuk melakukan putaran motor kearah yang berlawanan dengan input yang kedua. Penyusun dari blok ini yaitu sebuah rangkaian HBridge, merupakan sebuah sistem kontrol motor DC yang menggunakan transistor (Resmana dkk,1999). 2.8 Motor DC Ini bagian yang merupakan keluaran dari proses, blok ini berisi sebuah motor DC yang berfungsi menggerakkan pintu secara otomatis. Melakukan pembalikan putaran motor DC sangat mudah dilakukan, yaitu hanya perlu membalikkan polaritas sumber tegangan listrik, dan ini dilakukan oleh blok driver motor DC (www.robotindonesia.com). 2.9 Barcode Barcode dibuat menyerupai kode morse. Pola batang dan spasi yang berbeda digunakan untuk mewakili karakter-karakter yang berbeda. Kumpulan pola -pola ini dikelompokkan menjadi satu untuk membentuk sebuah simbol . ada banyak tipe tipe simbol barcode yang masing-masing memiliki karakter khusus dan keistimewaan a. Codebar Codebar adalah sebuah simbol panjang variabel yang mengkodekan sebanyak 20 karakter yaitu: 0123456789;/.ABCD. Codebar sering digunakan dalam

perpustakaan, bank daerah dan bisnis paket udara. Codebar menggunakan karakter A,B,C,dan D hanya saat awal dan akhir karakter. Dengan demikian digit pertama dan terakhir nomer pesan codebar harus A,B,C, atau D dan bagian lainnya tidak boleh terdapat karakter karakter tersebut. Barcode reader akan dapat membaca pesan codebar dengan panjang berapa pun selama terdiri atas karakter -karakter yang benar dan terdiri atas karakter-karakter A,B,C, atau D pada awal dan akhir pesan. Jika pada awal dan akhir pesan menggunakan huruf kecil a, b, c, atau d maka barcode reader akan mengubahnya menjadi huruf besar b. Code 39 (versi normal dan versi full ASCII) Code 39 versi normal merupakan sebuah simbol panjang variable yang dapat dikodekan ke dalam 44 karakter yaitu 1 2 3 4 5 6 7 8 9 0 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z serta tambahan karakter spesial-.*$/%+ Aplikasi

11

barcode jenis code 39 biasanya digunakan untuk inventory, asset tracking dan digunakan pada tanda pengenal identitas. Setiap barcode code 39 disusun dengan sebuah karakter start/stop yang ditandai oleh sebuah bintang (*). Tanda bintang ini dibuat untuk tujuan tertentu dan mungkin tidak digunakan dalam bagian simbol. Barcode reader secara otomatis menambahkan start dan stop pada setiap barcode. Jika menggunakan code 39 versi normal dan karakter barcode mengandung huruf kecil, maka barcode reader akan mengubahnya menjadi huruf besar. Keistimewaan barcode code 39 adalah dapat membaca rangkaian dari 2 barcode atau lebih dan code 39 dapat menguraikan pesan yang panjang menjadi simbol yang kecil dan pendek. Jika karakter pertama pada symbol code 39 adalah spasi maka beberapa barcode reader akan menyimpan sisa simbol ini kedalam buffer dan tidak akan mengirimkan data. Operasi ini berlanjut sampai simbol code 39 terbaca dengan karakter pertamanya adalah spasi, setiap pesan ditambahkan pada pesan sebelumnya. Ketikan sebuah pesan dengan spasi awal tidak terbaca, maka tidak akan ditambahkan dengan data sebelumnya yang terbaca dalam buffer dengan seluruh buffer dikirim sebagai sebuah pesan yang panjang. c. Code 93 Code 93 adalah sebuah simbol panjang variabel yang dapat mengkodekan 128 susunan ASCI I secara lengkap. Code 39 telah dikembangkan sebagai sebuah perkembangan simbol code 39 dengan tingkat karakter lebih tinggi dari code 39. Code 93 juga memasukkan 2 digit check sebagai satuan keamanan tambahan. Meskipun code 93 dianggap lebih kuat dibanding code 93, tetapi code 93 tidak banyak dikenal seperti code 39. barcode code 93 ditandai dengan karakter awal/akhir khusus. Barcode reader secara otomatis akan menambahkan karakter karakter awal dan akhir pada tiap-tiap barcode code 93 yang sama baiknya dengan digit-digit check. Oleh karena itu, jangan coba menambahkan sendiri pada barcode. d. Code 128 Code 128 adalah sebuah simbol panjang variabel dengan tingkat kepadatan tinggi dan terdiri atas alphanumeric (huruf dan angka). Code 128 mempunyai 106 perbedaan pola batang dan spasi. Setiap pola bisa mengandung satu dari tiga arti

12

yang berbeda, tergantung pada 3 perbedaan susunan karakter yang digunakan. Karakter - karakter awal tertentu mengartikan bahwa susunan -susunan karakter pada awalnya sedang digunakan dan 3 kode pengubahnya mengijinkan untuk mengubah susunan karakter pada bagian simbol. Satu susunan karakter mengkodekan semua huruf besar dan karakter -karakter kontrol ASCII. Susunan kedua mengkodekan semua karakter huruf besar maupun kecil, dan susunan ketiga mengkodekan pasangan digit bilangan 00 sampai 99. ketiga susunan karakter tersebut secara efektif melipatgandakan tingkat kepadatan kode ketika mencetak data bilangan /numeric (www.ittelkom.ac.id).

2.10 Barcode Reader Barcode Reader merupakan alat yang digunakan untuk membaca input berupa barcode. Barcode di gunakan sebagai input yang menjadi kunci buka tutup pintu (Abdullah, 2007).

2.11 Bahasa Assembly di Mikrokontroler AT89S52 memiliki sekumpulan instruksi yang sangat lengkap. Jika anda telah mempelajari bahasa assembly mikroprosesor keluarga intel (misal 8086), ada sedikit perbedaan dengan bahasa assembly di mikrokontroler. Instruksi MOV untuk byte dan bit dikelompokkan sesuai dengan mode pengalamatan (addressing modes). Isi memori ialah bilangan heksadesimal yang dikenal oleh mikrokontroler, yang merupakan representasi dari bahasa assembly yang telah kita buat. Mnemonic atau opcode ialah kode yang akan melakukan aksi terhadap operand. Operand ialah data yang diproses oleh opcode. Sebuah opcode bisa membutuhkan 1,2 atau lebih operand, kadang juga tidak perlu operand. Sedangkan komentar dapat diberikan dengan menggunakan tanda titik koma (;). Berikut contoh jumlah operand yang berbeda beda dalam suatu assembly. CJNE R5,#22H, aksi ; dibutuhkan 3 buah operand MOVX @DPTR, A RL A ; dibutuhkan 2 buah operand ; 1 buah operand

13

NOP

; tidak memerlukan operand

Program yang telah selesai dibuat dapat disimpan dengan ekstension .asm (Usman, 2008).

2.12 Karakteristik Sinyal Port Serial Standar sinyal komunikasi serial yang banyak digunakan adalah standar RS232 yang dikembangkan oleh Electronic Industry Association and the Telecommunications Industry Association (EIA/TIA) yang pertama kali dipublikasikan pada tahun 1962. ini terjadi jauh sebelum IC TTL popular sehingga sinyal ini tidak ada hubungan sama sekali dengan level tegangan IC TTL.Standar ini hanya menyangkut komunikasi data antara computer (Data Terminal Equipment DTE) dengan alat alat pelengkap computer (Data Circuit Terminating Equipment DCE). Standar RS232 inilah yang biasa di gunakan pada port serial IBM PC kompatibel. Standar sinyal serial RS232 memiliki ketentuan level tegangan sebagai berikut: Logika 1 disebut mark terletak antara -3 Volt hingga -25 Volt. Logika 0 disebut space terletak antara +3 Volt hingga +25 Volt. Daerah tegangan antara -3 Volt hingga +3 Volt adalah invalid level, yaitu daerah tegangan yang tidak memiliki level logika pasti sehingga harus di hindari. Demikian juga level tegangan lebih negatife dari -25 Volt atau lebih positif dari +25 Volt juga harus dihindari karena tegangan tersebut dapat merusak line driver pada saluran RS232.

Gambar 2.3 Interface MAX 232

14

Gambar 2.3 adalah gambar konektor port serial DB-9 pada bagian belakang CPU. Pada komputer IBM PC kompatibel biasanya dapat ditemukan dua konektor port serial DB-9 yang biasa dinamai COM 1 dan COM 2.

Gambar 2.4 Konektor Serial DB-9 Tabel 2.3 Fungsi pin konektor DB9

Dalam komunikasi serial, satu peralatan berfungsi sebagai pengirim dan peralatan lain diset sebagai penerima. Setelah selesai melakukan pengiriman, keduanya dapat berganti fungsi. Dalam melakukan komunikasi serial, pengirim dan penerima data harus memiliki kesamaan yang di antaranya: a. Baudrate (Kecepatan mengirim data). b. Format dan panjang data c. Level tegangan d. Sinkronisasi (Keserempakan)

15

2.13 Borland Delphi 7.0 Borland Delphi 7 merupakan suatu bahasa pemrograman yang memberikan berbagai fasilitas pembuatan aplikasi visual. Keunggulan bahasa pemrograman ini terletak pada produktifitas, kualitas, pengembangan perangkat lunak, kecepatan kompilasi, pola design yang menarik serta diperkuat dengan pemrogramannya yang terstruktur. Keunggulan lain dari delphi adalah dapat digunakan untuk merancang program aplikasi yang memiliki tampilan seperti program aplikasi lain yang berbasis windows. Lingkungan pengembangan terpadu atau Integrated Development Environment dalam program delphi terbagi menjadi delapan bagian utama, yaitu Main Window, Toolbar, Component Pallete, Form Designer, Code Editor, Code Explorer, Object Inspector dan Object Tree View. IDE merupkan sebuah

lingkungan dimana semua tombol perintah yang diperlukan untuk mendesain aplikasi, menjalankan dan menguji sebuah aplikasi disajikan dengan baik untuk memudahkan pengembangan program (Madcoms, 2003). .

2.13.1 Comport Untuk berhubungan dengan port serial, maka diperlukan sebuah pemrograman khusus untuk hardware. Delphi sebagai bahasa tingkat tinggi memiliki banyak dukungan komponen salah satunya adalah kompunen ComPort. Simbol kompunen ComPort dapat dilihat pada Gambar 2.5(Madcoms, 2003)

Gambar 2.5 Komponen ComPort

16

BAB III DESAIN DAN PERANCANGAN SISTEM

3.1. Blok Diagram Rangkaian Sistem otomatisasi buka tutup pintu ini merupakan salah satu bentuk aplikasi penggunaan mikrokontroler AT89S52 sebagai sistem kontrol yang dapat merespon semua input yang didapat dari barcode reader dan mengolahnya sesuai dengan instruksi-instruksi program yang dibuat. Apabila barcode yang dimasukan benar maka mikrokontroler mengirim data serial ke komputer dan oleh komputer direkam waktu dari penggunaan barcode yang berhasil tetapi apabila barcode yang dimasukan ternyata salah maka mikrokontroler tetap akan mengirimkan data serial ke komputer dan oleh program Borland Delphi 7.0 data tersebut dianggap data barcode yang belum terdaftar. Diagram blok dari rancangan perangkat keras pada sistem kunci ditunjukkan pada gambar 3.1 :

Gambar 3.1 Diagram Blok Pintu Otomatis Dengan Barcode

3.2. Perangcangan Perangkat Keras (Hardware) Perangkat keras yang perlu disiapkan dalam pembuatan alat pemesanan makanan otomatis antara lain:

16

17

1. Unit barcode scanner 2. Mikrokontroler AT89S52 3. Unit penggerak motor DC dan Prototype pintu 4. Unit Catu Daya 5. Interface RS232

3.2.1 Unit Barcode Scanner Barcode reader berfungsi sebagai pembaca barcode yang dimiliki oleh setiap pengguna. Sedangkan tombol digunakan untuk membuka dari dalam. Barcode dihuhungkan dengan rangkaian mikrokontroler. Bentuk fisik barcode dapat dilihat pada Gambar 3.2 berikut:

Gambar 3.2 Barcode Reader dan Contoh Barcode Adapun spesifikasi dari barcode reader tersebut adalah sebagai berikut : Type Interface Resolution Voltage Scan Speed : CD-2860 : TTL, Keyboard, RS232, USB, and WAND emolation. : 0,127 mm(5mil) : DC +5V 5% : 100

Gambar 3.3 Barcode reader konektor PS/2 Keterangan : 1. Clock 2. GND 3. Data 4. N/C 5. +5V (VCC) 6. N/C

18

Ada empat jalur yang menghubungkan barcode reader dengan mikrokontroler. Dua di antaranya adalah power supply dan ground, yang digunakan untuk memberikan daya ke rangkaian barcode reader. Dua sinyal yang lain adalah sebagai berikut: 1. Data barcode reader : Disinilah jalur bit-bit data dan perintah yang akan dikirimkan ke mikrokontroler dari barcode reader. Data barcode reader diinterfacekan dengan menggunakan port P1 bit 0. 2. Clock barcode reader : Ini merupakan sinyal clock regular, dengan suatu nilai yang berosilasi dari logika 1 ke 0 dengan pola yang teratur. Tujuan dari sinyal clock ini adalah untuk mensinkronisasi barcode reader.

3.2.2 Rangkaian Minimum Mikrokontroller AT89S52 Sistem minimum AT89S52 merupakan tempat pemrosesan,

pengontrolan terhadap input dan output. Adapun fungsi dari Port masukan dan keluaran tersebut adalah : 1. Port 1, P1.5 dan P1.7 digunakan sebagai port inputan dari barcode reader. Pada saat mikrokontroler menerima sinyal masukan dari barcode reader, mikrokontroler akan bekerja sesuai dengan program yang terdapat di dalamnya. 2. Port P3.6 dan P3.7, digunakan sebagai fungsi keluaran data untuk membuka atau menutup pintu secara otomatis. 3. Port P3.4 dan P3.5, digunakan sebagai indicator kondisi pintu. 4. Port P3.0 dan P3.1, digunakan untuk melakukan pengiriman data serial ke computer, yaitu Tx dan Rx.. 5. Sebagai keluaran yang dihubungkan dengan driver komunikasi serial RS232 yang berfungsi sebagai konverter dari data digital ke level tegangan (TTL). Kecepatan pengiriman data serial dinyatakan dalam jumlah bit per detik yang disebut dengan Baud Rate, sedangkan baut rate yang digunakan adalah 9600 bps.

19

Gambar rangkaian tersebut seperti pada gambar di bawah ini:

Gambar 3.4 Rangkaian Mikrokontroler AT89S52

Rangkaian mikrokontroler ini terdiri dari dua rangkaian yaitu rangkaian reset dan rangkaian osilator. Pada rangkaian Reset Reset pada mikrokontroler terjadi dengan adanya logika high 1 selama 2 cycle pada kaki RST pada mikrokontroler AT89S52. Setelah kondisi pin RST kembali low, maka mikrokontroler akan menjalankan program dari alamat 0000H. Reset dilakukan dengan mematikan sementara suplai daya ke mikrokontroler dan kemudian dihidupkan kembali. Pada saat sumber daya diaktifkan maka kapasitor C sesuai dengan sifat kapasitor akan terhubung singkat sehingga arus mengalir langsung dari Vcc ke pin RST. Pada rangkaian Osilator Clock merupakan sinyal yang digunakan oleh CPU (Central Processing Unit) mikrokontroler untuk beroperasi. Setiap jenis mikrokontroler MCS-51 memiliki sebuah on-chip oscillator, namun untuk menggunakannya diperlukan sebuah resonator kristal (XTAL) atau sebuah resonator kristal dan dua buah kapasitor (C1 dan C2). Pin XTAL1 dan XTAL2 merupakan pin osilator bagi mikrokontroler AT89S52. Pin XTAL1 befungsi sebagai input dan XTAL2 sebagai output osilator. Osilator

20

ini menggunakan kristal 11,0592 MHz kristal dan untuk nilai C1 dan C2 masingmasing 30 Pf.

3.2.3

Unit Penggerak Motor DC dan Prototype Pintu

Motor DC digunakan sebagai penggerak pintu. Motor DC dalam prototype pintu ini ini dihubungkan ke rangkaian mikrokontroler pada kedua ujungnya dipasang Limit Switch. Limit Switch ini digunakan sebagai indikasi kondisi pintu, apakah pintu terbuka, tertutup, atau error. Apabila terjadi error Motor DC tetap akan berputar menggerakan pintu beberapa kali, tetapi jika pintu tetap tidak bisa tertutup Motor DC berhenti. Gambar rangkaian tersebut seperti pada gambar di bawah ini:

Gambar 3.5 Rangkaian Unit Penggerak Motor DC

Penggunaan driver ini menggunakan transistor NPN dan relay, seperti halnya transistor sebagai saklar yaitu ketika ada arus (+) positif pada kaki basis maka emitor dan kolektor terhubung. Prinsip kerjanya adalah transistor sebagai saklar, sehingga rangkaian ini hanya mampu untuk mengeluarkan tegangan pada rangkaian 12 volt. Jika salah satu input diberi masukan akan mengaktifkan relay. Relay inilah yang berfungsi sebagai sakelar elektrik untuk memutus atau menghubungkan arus ke motor DC.

21

Pada rangkaian di atas motor dihubungkan dengan kaki common pada masing-masing relay. Saat P3.6 memberikan inputan maka transistor akan aktif sehingga menghidupkan relay. Jika yang memberikan inputan adalah P3.7 maka polaritas yang masuk pada motor akan berubah sehingga motor akan berbalik arah putarannya. Disini relay sebagai switch, pada kondisi normal output dari mikrokontroler bernilai 1 yang membuat kondisi transistor pada keadaan saturasi yang membuat relay pada kondisi normal close, dalam rancangan sistem ini relay dalam kondisi normal close dan output dari relay dibuat tidak aktif. Tetapi jika sebaliknya bila output dari mikrokontroler bernilai 0, maka transistor akan berada dalam kondisi cut off sehingga relay akan berada dalam kondisi normal open dan output yang terkontrol relay akan aktif.

3.2.4 Unit Catu Daya Catu daya yang diperlukan adalah sebesar 5 dan 12 volt, dimana catu 5 volt diperuntukkan bagi rangkaian digital dan 12 volt diperuntukkan bagi rangkaian analog dan supply tegangan pada motor DC. Gambar rangkaian tersebut seperti pada gambar di bawah ini:

Gambar 3.6 Rangkaian Unit Catu Daya Dari trafo yang digunakan dipakai tegangan 15 VAC. Tegangan tersebut digunakan untuk mencatu relay, motor DC yang besarnya 12 volt, dan barcode reader besarnya 5 volt. Hal ini bisa dilihat pada rangkaian catu daya menggunakan IC regulator 7812 yang akan menghasilkan tegangan 12 volt pada

22

keluarannya dan IC regulator 7805 yang akan menghasilkan tegangan 5 volt pada keluarannya. Tranformator yang digunakan adalah transformator step down yang digunakan untuk mentransfer daya, sehingga setelah melewati transformator, tegangan jala-jala akan diturunkan. Tegangan yang masih berupa tegangan bolakbalik tersebut disearahkan oleh rangkaian penyearah yang menggunakan dua buah dioda. Untuk mengurangi tegangan riak hasil dari penyearahan digunakan rangkaian penapis yaitu kapasitor. Semakin besar nilai kapasitor, semakin kecil tegangan riaknya. Untuk mendapatkan output yang diinginkan, digunakan IC regulator tegangan LM 7805 untuk tegangan 5 Volt dan LM 7812 untuk tegangan 12 Volt.

3.2.5

Interface RS232

Komunikasi serial RS-232 merupakan komunikator yang menunjukkan antara terminal data dari suatu peralatan dan peralatan ini menjalankan pertukaran data biner secara serial. Sedangkan IC yang dipakai untuk komunikasi juga menyediakan pemrosesan data dan protocol, sedang yang lain berupa interface ke jalur komunikasi secar fisik. IC serial RS-232 dipakai sebagai interface (antarmuka) dari PC ke perangkat luar (level TTL) atau berbeda dengan level tegangan digital. Gambar rangkaian tersebut sepeti pada gambar

Gambar 3.7 Rangkaian Interface RS232

23

Dalam pembuatan rangkaian, IC MAX232 memerlukan beberapa kapasitor dan pada tugas akhir ini digunakan kapasitor sebesar 1 F. IC ini memerlukan input +5 Volt. Ada 4 kapasitor yang digunakan dalam rangkaian ini yaitu pada pin C1-dengan pin C1+, pin C2+ dengan pin C2-, pin V+ dengan pin Vcc. Untuk pinV-, karena bertegangan -10 Volt maka terhubung dengan kaki kapasitor Gnd. Koneksi antara IC MAX232 dengan RS232 terhubung melalui pin T1out (driver 1 output) yaitu sebagai Tx (transmitter) dengan DB9 pin2 (received data) dan pin R1in (receiver 1 input) sebagai Rx (receiver) dengan DB9 pin 3 (transmitted data) dan DB9 pin 5 terhubung dengan Ground.

3.3. Perancangan Perangkat Lunak (Software) Untuk mempermudah membuat program buka tutup pintu otomatis, terlebih dahulu dibuat program bagian per bagian yaitu program mikrokontroler, program database, dan program tampilan pada komputer sebagai tempat penyimpan data dan juga eksekusi. Berikut adalah flowcart dan algoritma koneksi antara hardware dan software:
Start

Apakah data sama dengan data pegawai Tidak Ya Bikin Record di Data Barcode

Kirim @ ke Mikro

Proses Membuka

Selesai Gambar 3.8 Flowcart Program Koneksi Hardware Dengan Software

24

Perangkat lunak yang digunakan dalam pemograman adalah bahasa assembler dan Borland Delphi 7.0. Perangkat lunak ini digunakan untuk pengaturan dari seluruh mekanisme kerja sistem perangkat keras itu sendiri. Selain itu juga untuk memudahkan orang lain dalam mempelajari program yang dibuat. Adapun flowchart dari program tersebut adalah sebagai berikut:
Start

Interupt Serial

Tidak Apakah Data sama dengan Data pegawai Ya Pintu Membuka

Tidak Apakah Pintu Error ? Ya

Pintu Terbuka

Kirim Sinyal Error

Kirim sinyal Buka

Gambar 3.9 Flowcart Mikrokontroler dengan input Barcode Keterangan Gambar : 1. Input dari Barcode Reader. 2. Data dari Barcode Reader sama atau tidak dengan data yang tersimpan pada database, jika data tersebut sama berarti sinyal buka, jika tidak maka akan kembali ke start, jika ya maka akan melakukan cek pintu. 3. Jika pintu dalam kondisi tertutup, maka mikro akan memerintakan untuk pintu terbuka dengan mengirim sinyal (=sinyal buka, setelah pintu

25

terbuka Pintu terbuka dan terjadi penekanan pada limit switch, maka program akan memanggil delay untuk menghentikan pintu selama 10 detik. 4. Jika pintu dalam kondisi terbuka maka pintu akan langsung kembali pada keadaan tertutup. 5. Apabila pintu dalam keadaan antara terbuka dan tertutup dikarenakan karet lepas maka mikrokontroler akan mengirimkan sinyal & yaitu sinyal error,kemudian pintu secara otomatis akan kembali pada kondisi tertutup.
Start

Tombol Open

Pintu Membuka

Tidak Apakah Pintu Error ? Ya

Kirim Sinyal Error

Kirim Sinyal Buka

Gambar 3.10 Flowcart mikrokontroler memperoleh input dari Tombol

Keterangan Gambar : 1. Tekan tombol Open 2. Apabila pintu dalam kondisi tertutup maka mikrokontroler akan mengirimkan sinyal ( yaitu sinyal buka, kemudian system akan mengeksekusi dan pintu akan terbuka. Saat pintu terbuka pintu akan menekan limit switch maka program akan memanggil delay untuk menghentikan pintu selama 10 detik, kemudian pintu akan kembali tertutup.

26

3. Apabila pintu dalam kondisi terbuka secara otomatis pintu akan kembali pada kondisi tertutup. 4. Apabila pintu dalam keadaan antara terbuka dan tertutup dikarenakan karet lepas maka mikrokontroler akan mengirimkan sinyal & yaitu sinyal error, kemudian pintu secara otomatis akan kembali pada kondisi tertutup.

Setelah Perancangan hardware dan flowcart, perlu juga dirancang tampilan form pada komputer dengan menggunakan Software Delphi7. Untuk menghubungkan antara Delphi dan mikrokontroler di perlukan menu Comport dengan melakukan inisialisasi. Inisialisasi disini adalah pengecekan COM1. Berikut adalah procedure untuk inisialisasi : procedure TForm1.ComPort1RxChar(Sender: TObject; Count: Integer); var str:string; begin comport1.ReadStr(str,count); if (str ='(') then Edit2.Text:='TERBUKA'else if (str =')') then Edit2.Text:='TERTUTUP' else if (str ='&') then Edit2.Text:='ERROR' else edit1.Text:=edit1.Text + str end; Untuk dapat berkomunikasi secara serial maka dibutukan program aplikasi untuk menerima data. Unutk tampilan utama pada computer menggunakan Delphi 7 dan untuk perancangan data base menggunakan paradox7.

3.3.1 Perancangan Database Yang pertama kali dirangcang pada Borland Delphi adalah tabel tabel basis data, tabel-tabel ini dibuat dengan utili tas Database Desktop, software bawaan Borland Delphi. Tabel-tabel ini akan ditunjuk oleh alias pada BDE (Borland Database Engine) dan dengan BDE ini, program menampilkan table data yang dibuat. 3.3.2 Tabel Data Identitas Sebelum membuat tabel kita tentukan dulu nama tabel, jenis field, ukuran field dan field kunci yang diperlukan dalam pembuatannya. Pada

27

pembuatan database tabel data identitas ini hanya menggunakan satu tipe data yaitu tipe data alphanumeric (karakter gabungan huruf dan angka). Tampilan dari Database Desktop setelah field basis data dibuat adalah seperti berikut:

Gambar 3.11 Tabel identitas untuk data pegawai

Gambar 3.12 Tabel identitas untuk data barcode

Untuk menyimpan data barcode atau data masuk pegawai, data yang disimpan adalah identitas/nama, hari, tanggal kedatangan, jam kedatangan dan status. Pada pembuatan tabel data masuk ini menggunakan tipe data yaitu D adalah tipe data Date (tanggal), T adalah tipe data Time (waktu) dan tipe data A adalah alphanumeric (karakter gabungan huruf dan angka),

28

Form utama terdiri dari Tabel Utama, Tabel Hasil Pencarian dan beberapa tombol, yang terdiri dari tombol Cari, Tampil Semua, dan tombol BUKA seperti pada Gambar 3.13:

Gambar 3.13 Tampilan Form Utama

Untuk merancang Form utama dibutuhkan beberapa komponen yang terdiri dari komponen StaticText, DBGrid, Edit, GroupBox, DateTimePicker, Button, Panel, Timer, MainMenu, DataSource, Table, Query, ComPort. Didalam pembuatan pencarian pada tombol Cari dan Tampil Semua, menggunakan obyek TQuery untuk mengaitkan database yaitu field nama dan tanggal yang memanfaatkan variabel memori dalam string SQL. Selain form Utama masih ada 3 form, yaitu Form 2, Form 3 dan Form 4. Tampilan Form tersebut adalah sebagai berikut:

29

Gambar 3.14 Tampilan Form 2 Form2 terdiri dari komponen StaticText, Edit, Button. Form ini berfungsi untuk Data Pegawai yang meliputi Data baru untuk pengisian data pegawai baru, Edit Data untuk melakukan perubaan identitas atau data pegawai, Hapus Data jika ingin menghapus data pegawai. Selanjutnya adalah Form3, Form3 terdiri dari komponen Table, QuickRep, QRLabel, QRSysData, TitleBand, ColumnHeaderBand, PageHeaderBand,

QRDBText, DetailBand. Form3 merupakan laporan data seluruh karyawan yang telah memasuki ruangan jika ingin mencetaknya, seperti pada gambar 3.15 dibawah ini :

Gambar 3.15 Tampilan Form 3 Form4 terdiri dari komponen GroupBox, DateTimePicker dan Button. Form ini akan muncul jika dipilih tombol cetak pada form utama.Form ini berfungsi untuk menampilkan hasil laporan harian daftar pegawai yang masuk berdasarkan tanggal.

30

Gambar 3.16 Tampilan Form 4 Berikut adalah Procedure dari Form4 :


procedure TForm4.Button1Click(Sender: TObject); begin form3.Table1.Open; form3.Table1.IndexFieldNames='Tanggal'; form3.Table1.SetRange([DateTimePicker1.Date].[DateTimePicker1.Date]); form3.QuickRep1.Preview; form3.Table1.Close; end; procedure TForm4.Button3Click(Sender: TObject); begin form3.Table1.Open; form3.Table1.IndexFieldNames='Tanggal'; form3.Table1.SetRange([DateTimePicker2.Date].[DateTimePicker3.Date]); form3.QuickRep1.Preview; form3.Table1.Close; end; procedure TForm4.Button2Click(Sender: TObject); begin form3.Table1.Open; form3.Table1.IndexFieldNames='Tanggal'; form3.Table1.SetRange([DateTimePicker1.Date].[DateTimePicker1.Date]); form3.QuickRep1.Print; form3.Table1.Close; end; procedure TForm4.Button4Click(Sender: TObject); begin form3.Table1.Open; form3.Table1.IndexFieldNames='Tanggal'; form3.Table1.SetRange([DateTimePicker2.Date].[DateTimePicker3.Date]); form3.QuickRep1.Print; form3.Table1.Close; end;

31

BAB IV PENGUJIAN DAN ANALISA

4.1 Pengujian Setelah melakukan perancangan dan pembuatan alat maka langkah berikutnya adalah melakukan pengujian terhadap sistem yang telah dibuat. Pengujian dilakukan untuk mengetahui apakah sistem yang dibuat sudah dapat digunakan sesuai dengan perencanaan yang ada. Pengujian dan analisa yang dilakukan meliputi pengujian hardware, pengujian komunikasi serial, pengujian tombol otomatis dan pengujian software. Setelah dilakukan pengujian selanjutnya dilakukan analisa terhadap sistem yang telah dibuat.

4.2 Pengujian Hardware Dalam proses pengujian hardware, rangkaian yang akan diuji harus dirangkai sedemikian rupa sehingga layak dan bisa diuji secara baik., Rangkaian yang harus disiapkan adalah Unit Penggerak Motor DC dan Prototype Pintu, Unit Catu Daya, Minimum Sistem AT89S52, Komunikasi Serial dan komputer serta kabel serial sebagai pengujian hubungan antara Minimum Sistem dengan komputer.

4.2.1

Pengujian Unit Penggerak Motor DC dan Prototype Pintu

Pada pengujian gerak motor, ditampilkan pada motor DC sebagai penggerak untuk mengetahui apakah motor dapat berfungsi sesuai dengan yang diharapkan.Tujuan pengujian rangkaian ini adalah untuk mengetahui apakah driver motor DC sudah berjalan dengan baik. Persiapan yang harus dilakukan adalah menghubungkan catu daya

rangkaian dengan tegangan 12 Volt, motor DC dengan output rangkaian driver motor DC, dan memberikan input rangkaian dengan logika 0 dan 1 untuk menguji kondisi rangkaian dalam keadaan baik, menguji kerja dari motor DC

31

32

dengan cara memeriksa kondisi putaran dari motor DC kemudian mengukur tegangan dan arus yang mengalir pada motor DC. Hasil dan Analisanya adalah : Pengujian pada bagian ini dilakukan dengan memberikan bit logika 1 dan 0 pada rangkaian driver motor. Pada saat kondisi pintu tertutup kemudian mendapatkan input untuk membuka yang terjadi adalah rangkaian driver menerima perintah dari program mikrokontroler berupa set bit dan clear yang artinya adalah set bit adalah 1 dan clear adalah 0, untuk open mendapat logika 0 dan close mendapat logika 1 yang kemudian di not kan oleh IC 7404 sehingga menjadi logika 1 untuk open dan 0 untuk close maka motor dc akan berputar ke kanan, begitupun sebaliknya jika kondisi pintu terbuka. Saat motor dc bergerak maka roda-roda gigi juga akan ikut bergerak, roda roda gigi di letakkan pada bantalan rel yang ada pada prototype pintu, sehingga pintu juga akan ikut bergerak membuka dan menutup.

4.2.2

Unit Catu Daya

Hal pertama yang harus dilakukan dalam pengujian rangkaian ini adalah menghubungkan rangkaian catu daya dengan jala -jala PLN 220V, kemudian mengukur tegangan di lilitan sekunder. Setelah itu melakukan pengecekan

rangkaian yang sudah jadi dengan multimeter. Selanjutnya mengukur tegangan pada titik-titik pengukuran sebelum diberi beban dan yang terakhir adalah mengukur tegangan pada titik-titik pengukuran setelah diberi beban. Hasil dan Analisa rangkaian adalah : a. Catu daya dengan keluaran 5 volt Tegangan skunder trafo sebelum berbeban 12V, setelah terbeban tetap 12V Output catu daya sebelum terbeban 5V, setelah terbeban menjadi 4.7V b. Catu daya dengan keluaran 12 volt Tegangan skunder trafo sebelum berbeban 15V,setelah terbeban tetap 15V Output catu daya sebelum terbeban 12V, setelah terbeban menjadi 11.7V

33

4.3 Komunikasi Serial Pengujian komunikasi serial dilakukan dengan cara menggunakan fasilitas dari hyperterminal yang nantinya data dari mikrokontroller akan ditampilkan dalam hyperterminal, dimana pengujian ini diharapkan sebagai tanda bahwa komunikasi serial dapat digunakan. Tujuan dilakukan pengujian rangkaian ini adalah untuk mengetahui apakah komunikasi serial sudah bisa digunakan atau tidak. Persiapan yang harus dilakukan adalah : a. Membuat sistem minimum mikrokontroler b. Hubungkan mikrokontroler ke PC menggunakan kabel serial. Hasil dan Analisanya adalah : Untuk mengakses hiperterminal kita harus mengatur port settingnya seperti pada gambar di bawah ini:

Gambar 4.1 Port Setting

Gambar 4.2 Hyperterminal sesudah mikrokontroler mengirimkan data

34

Dari pengujian tersebut dapat diketahui bahwa komunikasi serial berhasil dijalankan, hal ini berarti perangkat keras yang dibuat tidak mengalami kerusakan atau kesalahan. Program assembly yang di download ke dalam mikrokontroler juga tidak mengalami kesalahan. Hal ini karena program memberi perintah pada mikrokontroler untuk mengirimkan kode barcode 0123456789 sehingga munculah 0123456789 pada hyperterminal. Pengiriman dari

mikrokontroler ke PC bisa dilakukan bila keduanya telah mengalami sinkronisasi, keduanya sudah sama piranti dan baudrate sehingga dapat berkomunikasi, seperti pada Gambar 4.3 di bawah ini :

Gambar 4.3 Hyperterminal sesudah mikrokontroler mengirimkan data barcode

4.4 Pengujian Tombol Otomatis Pada pengujian tombol yang ditempatkan didalam ruangan untuk mengetahui apakah tombol dapat difungsikan untuk membuka dan menutup sesuai yang diharapkan. Pengujian dilakukan dengan menghubungkan pin pada mikrokontroler yaitu pada pin P3.2 dan dengan ground yang sebelumnya program sudah diisikan pada IC mikrokontroler AT89S52, maka saat tombol di tekan pintu akan membuka dan menutup secara otomatis.

4.5 Pengujian Software Setelah pengujian hardware hal yang dilakukan selanjutnya adalah pengujian software, yaitu program delphi 7 yang menjadi tampilan utama pada computer. Pada saat mikrokontroler mengirimkan data maka secara otomatis akan

35

diterima oleh program delphi 7 melalui ComPort1. Hal pertama yang harus dilakukan adalah membuat atau mengisi data pegawai pada tampilan utama seperti pada Gambar 4.4 di bawah ini :

Gambar 4.4 Tampilan Form Utama untuk Data Pegawai

Setelah muncul tampilan form utama, klik data pegawai kemudian akan muncul beberapa pilihan diantaranya Data Baru, Edit Data, Hapus Data. Untuk membuat data pegawai yang harus dilakukan adalah pilih Data Baru, maka akan muncul tampilan seperti pada Gambar 4.5 di bawah ini :

Gambar 4.5 Tampilan untuk mengisi data baru

Kemudian isikan sesuai dengan kebutuhan, setelah selesai lalu klik tombol Ya, maka data tersebut akan tersimpan pada tabel pegawai seperti pada

36

Gambar 4.7, jika tidak maka klik tombol Tidak maka data tersebut tidak akan tersimpan dalam table pegawai.

Gambar 4.6 Pengisian data baru

Gambar 4.7 Data baru masuk pada tabel utama data pegawai

Jika menginginkan perubahan data pegawai dapat dilakukan dengan memilih Edit Data, kemudian setelah selesai klik tombol Ya, maka data pegawai dalam tabel data pegawai juga akan ikut berubah. Untuk melakukan hapus data dapat dilakukan dengan cara pilih nama pegawai yang ada dalam tabel data pegawai, kemudian pilih hapus data, maka data pegawai tersebut akan hilang dari tabel data pegawai, untuk hapus data pegawai hanya dapat dilakukan satu persatu.

37

Selanjutnya adalah Pilih tampilan tabel terdiri dari Data Pegawai dan Data Barcode, data barcode berisi tentang data pegawai yang telah memasuki ruangan. Seperti pada Gambar 4.8 :

Gambar 4.8 Tampilan pilih tampilan tabel

Gambar 4.9 Tabel utama merupakan tabel data barcode

38

Untuk mencetak hasil laporan data karyawan atau pegawai yang telah masuk dapat dilakukan dengan memilih Cetak pada main menu, seperti pada Gambar 4.10 :

Gambar 4.10 Tampilan jika ingin mencetak laporan pegawai yang masuk

Setelah klik cetak maka akan muncul form 4 yang berisi laporan harian berdasarkan tanggal, sehingga data pegawai yang masuk dapat di temukan secara rinci. Dalam form ini juga terdapat dua tombol yaitu PREVIEW dan CETAK, Seperti pada Gambar 4.11 :

Gambar 4.11 Tampilan form 4

39

Tombol Preview digunakan untuk menampilkan laporan data pegawai yang telah masuk ruangan, setelah memilih tanggal kemudian klik tombol PREVIEW maka akan muncul tampilan seperti pada Gambar 4.12 :

Gambar 4.12 Tampilan print preview laporan data masuk

Setelah melihat laporan data karyawan atau data pegawai yang masuk, untuk mencetak laporan tersebut dilakukan dengan cara klik tombol cetak, maka akan muncul tampilan seperti pada Gambar 4.13 , kemudian simpan terlebih dahulu file yang akan di cetak tersebut, denagn mengisikan file name kemudian Save.

Gambar 4.13 Tampilan untuk menyimpan data yang akan dicetak

40

Setelah tersimpan maka laporan tersebut siap untuk dicetak seperti pada Gambar 4.14 di bawah ini :

Gambar 4.14 Tampilan laporan siap untuk dicetak Untuk dapat memasuki ruangan setiap pegawai harus mempunyai kartu identitas yang terdapat barcode, dimana sebelumnya data barcode tersebut sudah disimpan dalam tabel data pegawai, sehingga setiap pegawai dapat mempunyai akses masuk ruangan jika data barcode terlebih dahulu terdaftar dalam tabel data pegawai, untuk code barcode yang di gunakan dalam tugas akhir ini adalah barcode code 39, sebelum memasuki ruangan pegawai atau karyawan terlebih dahulu mendekatkan kode barcode pada kartu identitas dengan barcode reader, sehingga kode barcode akan diterima oleh mikrokontroler AT89S52, kemudian akan diproses oleh PC melalui rangkaian RS232, maka pada tampilan utama Delphi setelah pegawai mendekatkan barcode dengan barcode reader, pada Barcode Input akan muncul data barcode sesuai dengan yang ada pada tabel data pegawai, saat pintu terbuka maka pada Kondisi Pintu juga akan muncul tulisan TERBUKA, kemudian saat pintu tertutup maka Kondisi Pintu akan muncul tulisan TERTUTUP seperti pada Gambar 4.15 :

41

Gambar 4.15 Tampilan jika ada pegawai yang masuk dengan barcode

Untuk mencari data seseorang yang telah mamasuki ruangan dapat dilakukan dengan mengisi nama pada Pencarian Data, setelah itu tentukan waktu yang di inginkan untuk mencari data orang tersebut, selanjutnya klik tombol cari maka pada tabel hasil pencarian akan muncul nama orang tersebut, seperti pada Gambar 4 .16 :

Gambar 4.16 Tampilan pencarian data nama pegawai yang masuk

42

Untuk menampilkan daftar seluruh pegawai yang telah memasuki ruangan, dapat dilihat dengan cara klik tombol Tampil Semua, maka pada tabel hasil pencarian akan muncul seluruh data pegawai yang telah masuk ruangan tersebut. Tampilan tersebut seperti pada Gambar 4.17 :

Gambar 4.17 Tampilan pencarian data tampil semua

Apabila ada kerusakan pada mekanik prototype ini salah satunya di karenakan karet pada motor dc terlepas atau putus sehingga mengakibatkan pintu dalam kondisi antara terbuka dan tertutup maka pada Kondisi Pintu akan memberikan indikasi ERROR ,seperti pada Gambar 4.18 :

Gambar 4.18 Tampilan Indikasi Kondisi Pintu jika terdapat error

43

Dalam tampilan utama juga terdapat tombol BUKA yang berfungsi untuk membuka dan menutup secara otomatis. Hal ini di lakukan untuk mengantisipasi jika ada kerusakan tombol buka pada hardware. Sehingga orang yang berada dalam ruangan tersebut masih dapat keluar ruangan dengan cara klik tombol BUKA.

BAB V PENUTUP

5.1 Kesimpulan Dari pengujian hardware dan software serta analisa yang telah dilakukan pada pembuatan sistem pemesanan pada restoran ini diperoleh kesimpulan yaitu : 1. Telah dibuat Prototype Pintu Otomatis Dengan Barcode berbasis mikrokontroler AT89S52. 2. Telah dibuat suatu sistem keamanan ruangan yang menggunakan pemrograman Delphi yang terhubung dengan pemrograman Assembler. 3. Kecepatan Motor DC tidak dapat diatur melalui software.

5.2 Saran Untuk penyempurnaan lebih lanjut maka beberapa saran perlu ditambahkan antara lain : 1. Karena masih merupakan prototype, di harapkan bisa di aplikasikan pada pintu yang sebenarnya, dan dalam perancangannya disesuaikan dengan jenis motor yang digunakan. 2. Untuk system keamanan yang lebih baik, dapat menggunakan sensor sidik jari.. 3. Untuk aplikasi pengaturan beberapa pintu dalam satu gedung diperlukan server untuk mengaturnya. 4. Bentuk pintu dapat di modifikasi menjadi dua pintu yang saling membuka dan menutup. 5. Diperlukan adanya rangkaian pengunci, untuk mengunci pintu.

44

DAFTAR PUSTAKA

Usman. 2008. Teknik Antarmuka dan Pemrograman Mikrokontroler AT89S52. Yogyakarta : C. V. Andi Offset (Penerbit Andi). Sugiri, A.Md.,S.Pd. & Moh. Supriyadi. 2006. Pemrograman Sistem Pengendali dengan Delphi. Yogyakarta : C. V. Andi Offset (Penerbit Andi). Atmel, 8-bit Microcontroller with 8K Bytes In System Programmable Flash. Madcoms. 2003. Pemrograman Borland Delphi 7. Yogyakarta : C. V. Andi Offset (Penerbit Andi). www.fportfolio.petra.ac.id/user_files/98-056/FuzzyDCMotor_ies99.pdf www.robotindonesia.com/article/dcdriver.pdf www.ittelkom.ac.id/library/index.php www.bengkelprogram.com/ (Aziz Abdullah, 2007)

;---------------------------------------------------------------; ; OTOMATISASI BUKA TUTUP PINTU ; ; MENGGUNAKAN BARCODE TERHUBUNG DENGAN KOMPUTER ; ; BERBASIS MIKROKONTROLLER AT 89 S 52 ; ;---------------------------------------------------------------; $MOD51 ;===============================================================; ;INISIALISASI PIN MIKROKONTROLLER DAN PENDEFINISIAN DATA ;===============================================================; KB_DATA KB_CLOCK EQU P1.7 EQU P1.5 ;PIN DATA BAROCDE ;PIN CLOCK BARCODE ;TAMPUNGAN ;DATA HASIL KONVERSI KE

DATA_KB EQU 50H SEMENTARA HASIL PEMBACAAN BARCODE HASIL_KB EQU 55H ASCII YG DIKIRIM KE KOMPUTER

OPEN EQU P3.7 CLOSE EQU P3.6 LIMIT_OPEN EQU P3.5 LIMIT_CLOSE EQU P3.4 ;===============================================================; ;VEKTOR INTERUPSI YANG DIGUNAKAN ;===============================================================; ORG 0000H JMP START ORG 0023H ;Vektor interupsi serial JMP SERIAL_INTERUPT ;Digunakan untuk merespon data yang diberikan komputer ;===============================================================; ;PROGRAM UTAMA ;===============================================================; ORG 0100H START: CALL DELAY ;Dibutuhkan waktu untuk antisipasi starup barcode dan yang lain CALL DELAY CALL DELAY CALL DELAY CALL DELAY CALL DELAY CALL DELAY CALL DELAY CALL DELAY CALL DELAY CALL DELAY SETB OPEN CALL INIT_SERIAL ;Pemanggilan Inisialisasi PORT SERIAL menggunakaan Baud rate 9600 CALL CEK_AWAL_PINTU ;Test Kondisi pintu (terbuka / tertutup / error) ;================================================================; ;LOOPING PROGRAM UTAMA

;===============================================================; LOOP: ;Loop program auto respon terhadap perubahan pintu SETB EA JNB p2.3,EKS_INTERUPT CALL CEK_PINTU_MIKRO CALL SCAN_KB ;Permintaan Data dari barcode MOV R3,DATA_KB CJNE R3,#0FOH,LALUI ;jika ada indikasi tombol lepas (F0) LALUI: JMP LOOP ;===============================================================; ;KIRIM KONDISI PINTU (INDIKASI PINTU SAAT PERTAMA DI HIDUPKAN) ;===============================================================; CEK_AWAL_PINTU: ;Routine cek kondisi pintu JB LIMIT_OPEN,CEK1 ;Ketika pintu terbuka MOV A,#'(' ;kirim data '(' ke komputer CALL KIRIM_SERIAL RET CEK1: JB LIMIT_CLOSE,CEK2 ;ketika pintu tertutup CALL KIRIM_SERIAL RET CEK2: MOV A,#'&' ;ketika pintu tidak bisa buka / tutup CALL KIRIM_SERIAL ;kirim data '&' ke komputer ;===============================================================; ;PROGRAM BUKA PINTU (MOTOR PUTAR KANAN) ;===============================================================; BUKA_PINTU: MOV R5,#40 ;R5 untuk delay lamanya moto open hidup (R5 x delay) LOOP_OP:CLR OPEN ;Logika motor untuk buka pintu SETB CLOSE ;Logika motor untuk buka pintu CALL DELAY JNB LIMIT_OPEN,PINTU_TERBUKA ;Apabila limit swith open belum sampai motor tetap nyala MOV A,#'&' CALL KIRIM_SERIAL ;limit tidak tertekan SETB OPEN ;kirim sinyal error ke komputer SETB CLOSE RET PINTU_TERBUKA: MOV A,#'(' ;limit switch open tertekan CALL KIRIM_SERIAL ;kirim sinyal pintu terbuka ke komputer SETB CLOSE RET ;===============================================================; ;PROGRAM TUTUP PINTU (MOTOR PUTAR KIRI) ;===============================================================; TUTUP_PINTU: MOV R5,#40 LOOP_C: CLR CLOSE

SETB CALL JNB DJNZ MOV CALL SETB SETB RET

OPEN DELAY LIMIT_CLOSE,PINTU_TERTUTUP R5,LOOP_C A,#'&' KIRIM_SERIAL OPEN CLOSE

PINTU_TERTUTUP: MOV A,#')' CALL KIRIM_SERIAL SETB OPEN SETB CLOSE RET ;===============================================================; ;PROGRAM CEK KONDISI PINTU DARI MIKRO ;===============================================================; CEK_PINTU_MIKRO: ;routine agar pintu selalu tertutup JB LIMIT_OPEN,CEK_TUTUP ;cek limit open terbuka RET ;jika tidak akhiri , jika iya dan limit open terbuka ada error RET ;jika tidak akhiri ADA_ERROR: ; Penanganan jika ada error CALL TUTUP_PINTU ;selalu berusaha untuk menutup pintu RET ;kembali ke loop ;===================================================================== ================; ;PROGRAM OPEN CLOSE PINTU DENGAN MENGGUNAKAN INTERUPSI EKSTERNAL 0 (TOMBOL DI RUANGAN) ;===================================================================== =================; EKS_INTERUPT: ;routine tombol buka di dalam ruangan JNB p3.2,S ;cek apakah tombol buka masih ditekan, kalau iya tunggu lepas JB LIMIT_CLOSE,CEK_BUKA1 ;cek apakah pintu tertutup MOV R6,#30 ;tunggu biar orang pada masuk LOP1: CALL DELAY DJNZ R6,LOOP1 ;selesai tunggu CALL TUTUP_PINTU ;tutup kembali tutup LJMP LOOP ;kembali ke loop CEK_BUKA1: JB LIMIT_OPEN,ADA_ERROR1 ada tidak ADA_ERROR1: CALL TUTUP_PINTU LJMP LOOP ;Apabila pintu terbuka ;cek limit open tertekan ;jika ada error ;usaha untuk tutup pintu ;kembali ke loop

SCAN_KB:

;Routine baca data barcode

CLR EA SETB KB_DATA SETB KB_CLOCK MOV RO, #50 clock berlogika rendah LOOP1: JNB KB_CLOCK,ADA_CLOCK DJNZ R0,LOOP1 ADA_CLOCK: untuk membaca data JNB KB_DATA,START_AMBIL start (low) DIAKHIRI: kembali loop SETB EA RET

;matikan interupsi

;untuk beberapa saat scan apakah barcode

;Apabila ada sinyal dari barcode maka mulai ;Pastikan sinyal data adalah sinyal ;Apabila tidak maka hidupkan interupsi dan

START_AMBIL: ;mulai baca data MOV R0,#8H ;Isi R0 dengan 8 (karena data yg diambil 8 bit) CLR A ;kosongkan A LOOP2: CALL PS2_AMBIL ;routine program untuk mengambil data barcode 8 bit DJNZ R0,LOOP2 MOV DATA_KB,A CLR A ;Jika sudah 8 CALL PS2_AMBIL ;buang bit stop dan pariti CALL PS2_AMBIL SETB EA RET PS2_AMBIL: ;Routine Program Pembacaan 1 bit dari barcode JB KB_CLOCK, $ ;tunggu clock berlogika 1 MOV C, KB_DATA ;ambil dari pin barcode data ke C RRC A ;masukkan ke Accu dengan memutar kekanan melalui carry RET ;=================================================================; ;KONVERSI DATA BARCODE KE ASCII DAN KIRIMKAN SEKALIAN KE KOMPUTER ;===============================================================; PROCCES: ;Proses Konversi data barcode ke ASCII CALL SCAN_KB ;setelah ada indikasi tombol lepas maka minta data barcode lagi MOV R3,DATA_KB CJNE R3,#0FO,BAGUS ;pastikan data bukan F0 (indikasi tombol lepas) JMP PROCCES ;jika iya minta lagi BAGUS: CJNE R3,#012H,BAGUS1 ;pastikan data bukan tombol shift (12H) LJMP LOOP ;untuk kerampingan program yang digunakan hanya huruf kapital dan angka BAGUS1: CJNE R3,#05AH,BAGUS2 ;pastikan bukan tombol enter (5AH)

LJMP LOOP BAGUS2: MOV R0,#0 maka MOV DPTR,#DATA_CODE_KB LOOP3: MOV A,R0 INC R0 INC R0 CCKAN: CJNE A,DATA_KB,LOOP3 kembali cari

;jika iya kembali loop aja ;jika persyaratan diatas terpenuhi

;Apabila tidak cocok

MOV A,R0 MOVC A,@A+DPTR CALL KIRIM_SERIAL CLR A LJMP LOOP ;================================================================; ;INISIALISASI PORT SERIAL DENGAN BAUDRATE 9600 ;===============================================================; INIT_SERIAL: ;Routine Program Inisialisasi Serial MOV TCON,#41H MOV TH1,#0FDH MOV PCON,#00H MOV SCON,#50H SETB TR1 JB RETI RI,TERIMA_SERIAL

TERIMA_SERIAL: MOV A,SBUF CLR RI CALL BUKA_PINTU MOV R6,#30 LOP2: CALL DELAY DJNZ R6,LOP2 CALL TUTUP_PINTU LIBAS: RETI ;================================================================; ;PROGRAM UNTUK MENGIRIM DATA SERIAL 1 BYTE (RS 232 KE PC) ;===============================================================; KIRIM_SERIAL: ;Routine program untuk mengirimkan data 1 byte ke komputer MOV SBUF,A JNB TI,$ CLR TI RET ;================================================================; ;PROGRAM TUNDA BEBERAPA SAAT (DELAY) ;===============================================================; DELAY: ;Routine tunda waktu MOV R1,#255 ULANG: MOV R2,#255 DJNZ R2,S DJNZ R1,ULANG

RET ;================================================================; ;TABLE LOOK UP UNTUK PROSES KONVERSI DATA KE ASCII ;===============================================================; DATA_CODE_KB: ;Look up table untuk pembacaan barcode (Koneversi ke ascii) DB 01Ch,'A' DB 032h,'B' DB 021h,'C' DB 023h,'D' DB 024h,'E' DB 02Bh,'F' DB 034h,'G' DB 034h,'H' DB 043h,'I' DB 03Bh,'J' DB 042h,'K' DB 04Bh,'L' DB 03Ah,'M' DB 031h,'N' DB 044h,'O' DB 04Dh,'P' DB 015h,'Q' DB 02Dh,'R' DB 01Bh,'S' DB 02Ch,'T' DB 03Ch,'U' DB 02Ah,'V' DB 01Dh,'W' DB 022h,'X' DB 037h,'Y' DB 01Ah,'Z' DB 016h,'1' DB 01Eh,'2' DB 026h,'3' DB 025h,'4' DB 02Eh,'5' DB 036h,'6' DB 03Dh,'7' DB 03Eh,'8' DB 046h,'9'

END

unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, DB, DBTables, ExtCtrls, Grids, DBGrids, Menus, StdCtrls, CPort, ComCtrls, Mask, DBCtrls; type TForm1 = class(TForm) MainMenu1: TMainMenu; utup1: TMenuItem; utupProgram1: TMenuItem; DataPegawai1: TMenuItem; DataBaru1: TMenuItem; EditData1: TMenuItem; HapusData1: TMenuItem; PilihTampilanTabel1: TMenuItem; DataPegawai2: TMenuItem; DataBarcode1: TMenuItem; Timer1: TTimer; DBGrid1: TDBGrid; Panel1: TPanel; Panel2: TPanel; Panel3: TPanel; DataSource1: TDataSource; Table1: TTable; Table2: TTable; Edit1: TEdit; ComPort1: TComPort; StaticText1: TStaticText; GroupBox1: TGroupBox; Button1: TButton; Button2: TButton; StaticText2: TStaticText; DateTimePicker1: TDateTimePicker; DateTimePicker2: TDateTimePicker; StaticText3: TStaticText; StaticText4: TStaticText; GroupBox2: TGroupBox; Edit2: TEdit; Button3: TButton; Timer2: TTimer; Edit3: TEdit; Cetak1: TMenuItem; Cetak2: TMenuItem; StaticText5: TStaticText; StaticText6: TStaticText; DataSource2: TDataSource; DBGrid2: TDBGrid; Query1: TQuery; procedure utupProgram1Click(Sender: TObject); procedure Timer1Timer(Sender: TObject); procedure DataPegawai2Click(Sender: TObject); procedure DataBarcode1Click(Sender: TObject); procedure DataBaru1Click(Sender: TObject); procedure HapusData1Click(Sender: TObject); procedure EditData1Click(Sender: TObject); procedure ComPort1RxChar(Sender: TObject; Count: Integer); procedure Button3Click(Sender: TObject); procedure Edit1Change(Sender: TObject); procedure Edit2Change(Sender: TObject); procedure Timer2Timer(Sender: TObject); procedure FormCreate(Sender: TObject); procedure CetakHarian1Click(Sender: TObject); procedure Cetak2Click(Sender: TObject); procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); private { Private declarations }

public { Public declarations } end; const NamaHari : array [1..7] of string = ('Minggu','Senin','Selasa','Rabu','Kamis','Jumat','Sabtu'); var Form1: TForm1; implementation uses Unit2, Unit3, Unit4; {$R *.dfm} procedure TForm1.utupProgram1Click(Sender: TObject); begin Close; end; procedure TForm1.Timer1Timer(Sender: TObject); begin Panel3.Caption:=TimeToStr(Now); Panel2.Caption:=FormatDateTime('dddd, dd/mm/yyyy',Now); end; procedure TForm1.DataPegawai2Click(Sender: TObject); begin DataSource1.DataSet:=Table1; end; procedure TForm1.DataBarcode1Click(Sender: TObject); begin DataSource1.DataSet:=Table2; end; procedure TForm1.DataBaru1Click(Sender: TObject); begin DataSource1.DataSet:=Table1 Form2 := TForm2.Create (Self); With Form2 do begin Edit1.Text := ''; Edit2.Text := ''; Edit3.Text := ''; Edit4.Text := ''; Caption := 'Data Baru'; ActiveControl := Edit2; end; procedure TForm1.HapusData1Click(Sender: TObject); var str : string; begin DataSource1.DataSet:=Table1; str := 'Anda Yakin Menghapus ' + Table1.Fields[1].AsString; If (Application.MessageBox(PChar(str), 'Peringatan', MB_YESNO or MB_ICONQUESTION) = IDYES) then Table1.Delete; end; procedure TForm1.EditData1Click(Sender: TObject); begin DataSource1.DataSet:=Table1; Form2 := TForm2.Create (Self); With Form2 do begin Edit1.Text := Table1.Fields[0].AsString; Edit2.Text := Table1.Fields[1].AsString;

Edit3.Text := Table1.Fields[2].AsString; Edit4.Text := Table1.Fields[3].AsString; Caption := 'Edit Data'; ActiveControl := Edit1; end; Form2.ShowModal; If (Form2.ModalResult = mrOk) then with Table1, Form2 do begin Edit; FieldByName ('BARCODE').AsString := Edit1.Text; FieldByName ('NAMA').AsString := Edit2.Text; FieldByName ('ALAMAT').AsString := Edit3.Text; FieldByName ('STATUS').AsString := Edit4.Text; Post; end; procedure TForm1.ComPort1RxChar(Sender: TObject; Count: Integer); var str:string; begin comport1.ReadStr(str,count); if (str ='(') then Edit2.Text:='TERBUKA'else if (str =')') then Edit2.Text:='TERTUTUP' else if (str ='&') then Edit2.Text:='ERROR' else edit1.Text:=edit1.Text + str end; procedure TForm1.Button3Click(Sender: TObject); begin Comport1.WriteStr('@') end; procedure TForm1.Edit1Change(Sender: TObject); begin If Table1.FindKey([edit1.Text]) then begin with Table2, Form2 do begin FieldByName ('NAMA').AsString := Table1.Fields[1]AsString; FieldByName ('HARI').AsString := FormatDateTime('dddd',Now);; FieldByName ('TANGGAL').AsString := FormatDateTime('dd/mm/yyyy',Now); FieldByName ('JAM').AsString := TimeToStr(Now) FieldByName ('STATUS').AsString := Table1.Fields[3].AsString; Post; end; Comport1.WriteStr('@'); end; end; procedure TForm1.Edit2Change(Sender: TObject); begin if (Edit2.Text = 'TERTUTUP') then Edit1.Text:=''; end; procedure TForm1.Timer2Timer(Sender: TObject); begin Edit1.Text := ''; end; procedure TForm1.FormCreate(Sender: TObject); var i : integer; c : string; begin for i := 1 to 7 do LongDayNames [i] := NamaHari [i]; Query1.SQL.Clear; Query1.SQL.Add('select * from daftarmasuk'); Query1.Open;

DateTimePicker1.Date:= Now; DateTimePicker2.Date:= Now; end; procedure TForm1.Cetak2Click(Sender: TObject); begin Form4.ShowModal; end; procedure TForm1.Button1Click(Sender: TObject); var PTgAwal, PTgAkhir : TDateTime; begin try PTgAwal:=DateTimePicker1.Date; PTgAkhir:=DateTimePicker2.Date; except ShowMessage('Format Tanggal : dd-mm-yyyy'); exit; end; try begin Query1.SQL.Add('select * from daftarmasuk'); if length(trim(edit3.Text))=0 then edit3.Text:='%'; Query1.SQL.Add('where Nama Like :Namanya'); Query1.SQL.Add('and Tanggal >= :PTgAwal'); Query1.SQL.Add('and Tanggal <= :PTgAkhir'); Query1.ParamByName('Namanya').AsString:=edit3.Text; Query1.ParamByName('PTgAwal').AsDate:= DateTimePicker1.Date; Query1.ParamByName('PTgAkhir').AsDate:= DateTimePicker2.Date; Query1.Prepare; Query1.Open; Query1.First; while not Query1.Eof do begin Query1.Next; end; Query1.First; end; except begin beep; end; ShowMessage('Pernyataan SQL tidak sah!'); end; end; //dari try procedure TForm1.Button2Click(Sender: TObject); begin Query1.SQL.Clear; Query1.SQL.Add('select * from daftarmasuk'); Query1.Open; end; end. uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm2 = Edit1: Edit2: Edit3: Edit4:

class(TForm) TEdit; TEdit; TEdit; TEdit;

StaticText1: TStaticText; StaticText2: TStaticText; StaticText3: TStaticText; StaticText4: TStaticText; Button1: TButton; Button2: TButton; private { Private declarations } public { Public declarations } end; var Form2: TForm2; implementation {$R *.dfm} end. interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, QuickRpt, DB, DBTables, QRCtrls; type TForm3 = class(TForm) QuickRep1: TQuickRep; Table1: TTable; DetailBand1: TQRBand; QRDBText1: TQRDBText; QRDBText2: TQRDBText; QRDBText3: TQRDBText; QRDBText4: TQRDBText; QRDBText5: TQRDBText; TitleBand1: TQRBand; ColumnHeaderBand1: TQRBand; PageHeaderBand1: TQRBand; QRLabel1: TQRLabel; QRLabel2: TQRLabel; QRLabel3: TQRLabel; QRLabel4: TQRLabel; QRLabel5: TQRLabel; QRLabel6: TQRLabel; QRSysData1: TQRSysData; private { Private declarations } public { Public declarations } end; var Form3: TForm3; implementation {$R *.dfm} end. interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ComCtrls, ExtCtrls, QuickRpt; type TForm4 = class(TForm) GroupBox1: TGroupBox;

GroupBox2: TGroupBox; DateTimePicker1: TDateTimePicker; DateTimePicker2: TDateTimePicker; DateTimePicker3: TDateTimePicker; Button1: TButton; Button2: TButton; Button3: TButton; Button4: TButton; procedure Button1Click(Sender: TObject); procedure Button3Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button4Click(Sender: TObject); procedure FormActivate(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form4: TForm4; implementation uses Unit2, Unit3; {$R *.dfm} procedure TForm4.Button1Click(Sender: TObject); begin form3.Table1.Open; form3.Table1.IndexFieldNames:='Tanggal'; form3.Table1.SetRange([DateTimePicker1.Date],[DateTimePicker1.Date]) ; form3.QuickRep1.Preview; form3.Table2.Close; end; procedure TForm4.Button3Click(Sender: TObject); begin form3.Table1.Open form3.Table1.IndexFieldNames:='Tanggal' form3.Table1.SetRange([DateTimePicker2.Date],[DateTimePicker3.Date]) ; form3.Table1.Close; end; procedure TForm4.Button2Click(Sender: TObject); begin form3.Table1.Open; form3.Table1.IndexFieldNames:=Tanggal; form3.Table1.SetRange([DateTimePicker1.Date],[DateTimePicker1.Date]) ; form3.QuickRep1.Print; form3.Table1.Close; end; procedure TForm4.Button3Click(Sender: TObject); begin form3.Table1.Open form3.Table1.IndexFieldNames:='Tanggal'; form3.Table1.SetRange([DateTimePicker2.Date],[DateTimePicker3.Date]) ; form3.QuickRep1.Print; form3.Table2.Open; end; procedure TForm4.FormActivate(Sender: TObject); begin DateTimePicker1.Date:= Now; DateTimePicker2.Date:= Now;

DateTimePicker3.Date:= Now; end;

end.

Anda mungkin juga menyukai