Rancang Bangun Pintu Otomatis Menggunakan Password

(1)

TUGAS AKHIR

HERDA TANJUNG 052408081

PROGRAM STUDI FISIKA INSTRUMENTASI D3 DEPARTEMEN FISIKA

FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM UNIVERSITAS SUMATERA UTARA

MEDAN 2008


(2)

RANCANG BANGUN PINTU OTOMATIS MENGGUNAKAN PASSWORD

Diajukan untuk melengkapi tugas dan memenuhi syarat memperoleh Ahli Madya

HERDA TANJUNG 052408081

PROGRAM STUDI FISIKA INSTRUMENTASI D3 DEPARTEMEN FISIKA

FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM UNIVERSITAS SUMATERA UTARA

MEDAN 2008


(3)

PERSETUJUAN

Judul : RANCANG BANGUN PINTU OTOMATIS

MENGGUNAKAN PASSWORD

Kategori : TUGAS AKHIR

Nama : HERDA TANJUNG

Nomor Induk Mahasiswa : 052408081

Program Studi : DIPLOMA III FISIKA INSTRUMENTASI

Departemen : MATEMATIKA DAN ILMU

PENGETAHUAN ALAM (FMIPA) UNIVERSITAS SUMATRA UTARA

MEDAN

Diluluskan di

Medan juli 2008

Diketahui Oleh Pembimbing

Departemen Fisika FMIPA USU Ketua Jurusan Fisika Insturumentasi

Drs.syahrul Humaidi, M.Sc

NIP 132 050 870 NIP 131 604 405


(4)

PERNYATAAN

RANCANG BANGUN PINTU OTOMATIS MENGGUNAKAN PASSWORD

Saya mengakui bahwa tugas akhir ini adalah hasil kerja saya sendiri, kecuali beberapa kutipan dan ringkasan yang masing-masing disebutkan sumbernya.

Medan, juli 2008

HERDA TANJUNG 052408081


(5)

ABSTRAK

Kajian ini bertujuan untuk merancang bangun sebuah pintu otomatis dengan menggunakan password berbasis mikrokontroller AT89S51. Sistem ini dibangun dengan menggunakan perangkat lunak mikrokontroller AT89S51. Dimana mikrokontroller ini merupakan otak dari semua sistem yang ada pada rancang pintu otomatis ini, dimana didalam mikrokontroller ini terdapat perbedaan dengan sistem komputer, dimana komputer menangani berbagai macam program aplikasi sementara mikrokontroller hanya dapat digunakan untuk satu aplikasi tertentu saja. Perbedaan lainnya terdapat pada RAM dan ROMnya. Pada komputer program-program pengguna disimpan di RAM yang relatif besar kalau program kecil disimpan di ROM sedangkan mikrokontroller kebalikan dari komputer.


(6)

DAFTAR ISI

Halaman

Persetujuan ii

Pernyataan iii

Penghargaan iv

Abstrak vi

Daftar isi vii

Daftar Tabel x

Daftar Gambar xi

Bab 1 Pendahuluan 1

1.1 Latar Belakang Masalah 1

1.2 Rumusan Masalah 2

1.3 Tujuan Penulisan 3

1.4 Batasan Masalah 3

1.5 Sistematika Penulisan 4

Bab 2 Tnjauan Pustaka 6

2.1 Perangkat keras 6

2.1.1 Asitektur Mikrokontroler AT89S51 6

2.1.2 Kontruksi AT89S51 8

2.2 Perangkat Lunak 12 2.2.1 Bahasa Assembly MCS-51 12

2.2.2 Software 8051 Editor, Assembler, Simulator (IDE) 17

2.2.3 Software Downloader 18

Bab 3 Perancangan Alat dan Program 19 3.1 Rancang Bangun pintu Otomatis Menggunakan Password 19 3.2 Diagram Blok 19 3.3 Flowhcart rancang Bangun Pintu Otomatis 21 3.4 Rangkaian minimum mikrokontroller AT89S51 22

3.5 Rangkaian Password 23

3.6 Rangkaian Display Seven segmen 25 3.7 Rangkaian Sensor Buka Pintu dan Tutup Pintu 26

3.8 Rangkaian Driver Motor Stepper 27 3.9 Rangkaian Power Suplay (PSA) 28 3.10 Perancangan Rangkaian Alaram 29

Bab 4 Pengujian Rangkaian dan Program 31

4.1 Pengujian Rangkaian Power Suplay (PSA) 31 4.2 Pengujian Rangkaian Minimum Mikrokontroller AT89S51 32 4.3 Pengujian Rangkaian Penampil Nilai Password 34

4.4 Pengujian Rangkaian Password. 37 4.5 Pengujian Rangkaian Sensor Buka Pintu dan Tutup Pintu 42 4.6 Pengujian Rangkaian Driver Motor Stepper 44

4.7 Pengujian Alaram 48


(7)

Bab 5 Kesimpulan dan Saran 66

5.1 Kesimpulan 66

5.2 Saran 67

Daftar Pustaka 68 Lampiran 69


(8)

DAFTAR PUSTAKA

Agfianto, Belajar Mikrokontroler AT89C51/52/55 Teori dan Aplikasi, Edisi Kedua, Penerbit: Gava Media, Yogyakarta, 2004

Andi, Panduan Praktis Teknik Antarmuka dan Pemrograman Mikrokontroler AT89C51, Penerbit PT Elex Media Komputindo, Jakarta 2003

Brey B Barry, The Intel Microprocessors, Edisi Kelima, Penerbit: Erlangga & Prentice Hall, Inc., Jakarta, 2002

Malvino, Albert paul, Prinsip-prinsip Elektronika, Jilid 1 & 2, Edisi Pertama, Penerbit: Salemba Teknika, Jakarta, 2003.

M. G. Joshi, Transducers For Instrumentation, Penerbit: Laxmi Publications, New Delhi, 2002

Widodo, S.Si, Mkom, Interfacing Komputer dan Mikrokontroler, Penerbit: Elex Media Komputindo, Jakarta, 2004

Lampiran A : Rancang Bangun Pintu Otomatis Menggunakan Password Lampiran B : Gambar Rangkaian Keseluruhan


(9)

DAFTAR TABEL

Halaman


(10)

PENGHARGAAN

Puji dan syukur penulis panjatkan kehadirat Tuhan Yang Maha Esa yang telah melimpahkan rahmat dan karuniaNya, juga telah memberikan kesehatan, pengetahuan serta pengalaman pada penulis, sehingga penulis dapat menyelesaikan Tugas Akhir yang berjudul “ RANCANG BANGUN PINTU OTOMATIS MENGGUNAKAN PASSWORD “.

pdan Ilmu Pengetahuan Alam Universitas Sumatera Utara.

Dalam kesempatan ini penulis ingin mengucapkan terima kasih yang sebesarnya kepada :

1. Orang tua penulis yang telah memberikan dukungan baik moril maupun materil kepada penulis dalam menyelesaikan Tugas Akhir ini.

2. Bapak Dr. Eddy Marlianto, M. Sc, selaku Dekan FMIPA USU.

3. Bapak Drs. Syahrul Humaidi, M.Sc, selaku ketua jurusan Program study Fisika Instrumentasi.

4. Ibu Dra. Justinon, M.Si, selaku Sekretaris Jurusnan Program Study Fisika Instrumentasi.

5. Bapak Drs. Anwar sebagai Dosen Pembimbing yang telah banyak memberikan masukan dalam penyelesaian Tugas Akhir ini.

6. Abang Brian yang sudah banyak membantu penulis dalam mengerjakan Tugas Akhir yang dibuat oleh penulis.

7. Rekan-rekan Jurusan Fisika Instrumentasi stambuk 2005 yang telah banyak memberikan masukan dan dukungan kepada penulis dalam menyelesaikan Tugas Akhir ini.

Penulis menyadari bahwa dalam penyusunan Tugas Akhir ini masih terdapat kekurangan dan masih jauh dari kesempurnaan. Oleh karena itu, penulis sangat


(11)

mengharapkan masukan berupa saran maupun kritikan yang membangun dari pembaca. Penulis ucapkan terima kasih.

Medan, Juli 2008


(12)

DAFTAR GAMBAR

Halaman

Gambar 2.1.2 IC Mikrokontroller AT89S51 9

Gambar 2.2.2 8051 Editor, Assembler, Simulator(IDE) 17

Gambar 2.2.3 ISP-Flash Programmer 3a 18

Gambar 3.1 Rancang Bangun Pintu Otomatis Menggunakan Password 19

Gambar 3.2 Diagram Blok Rangkaian 19

Gambar 3.3 Rangkaian Minimum mikrokontroller AT89S51 22

Gambar 3.4 Rangkaian Password 24

Gambar 3.5 Rangkaian Display Seven Segmen 25

Gambar 3.6 Rangkaian Sensor Buka Tutup Pintu 26

Gambar 3.7 Rangkaian Driver Motor Stepper 27

Gambar 3.8 Rangkaian Power Supplay (PSA) 28

Gambar 3.9 Rangkaian Alarm 29


(13)

EKSPEDISI PERBAIKAN TUGAS AKHIR

NAMA

: HERDA TANJUNG

NIM

: 052408081

FAKULTAS

: MIPA

PROGRAM STUDI

: FISIKA INSTRUMENTASI

JUDUL TUGAS AKHIR

: RANCANG

BANGUN

PINTU

OTOMATIS MENGGUNAKAN

PASSWORD

NO

TANGGAL

NAMA DOSEN

TANDA

TANGAN

1.

Drs. Anwar

1.


(14)

EKSPEDISI PENYERAHAN TUGAS AKHIR

NAMA

: HERDA TANJUNG

NIM

: 052408081

FAKULTAS

: MIPA

PROGRAM STUDI

: FISIKA INSTRUMENTASI

JUDUL TUGAS AKHIR

: RANCANG BANGUN PINTU

OTOMATIS MENGGUNAKAN

PASSWORD

NO

TANGGAL

NAMA DOSEN

TANDA

TANGAN

1

Drs. Anwar

2

Drs. Nasir Saleh, M.Eng.Sc

3

Departemen Fisika


(15)

ABSTRAK

Kajian ini bertujuan untuk merancang bangun sebuah pintu otomatis dengan menggunakan password berbasis mikrokontroller AT89S51. Sistem ini dibangun dengan menggunakan perangkat lunak mikrokontroller AT89S51. Dimana mikrokontroller ini merupakan otak dari semua sistem yang ada pada rancang pintu otomatis ini, dimana didalam mikrokontroller ini terdapat perbedaan dengan sistem komputer, dimana komputer menangani berbagai macam program aplikasi sementara mikrokontroller hanya dapat digunakan untuk satu aplikasi tertentu saja. Perbedaan lainnya terdapat pada RAM dan ROMnya. Pada komputer program-program pengguna disimpan di RAM yang relatif besar kalau program kecil disimpan di ROM sedangkan mikrokontroller kebalikan dari komputer.


(16)

BAB I PENDAHULUAN

1.1. Latar Belakang Masalah

Setiap orang membutuhkan sebuah kamar/ruangan pribadi, dimana dalam kamar/ruangan tersebut disimpan peralatan-peralatan, benda-benda atau apapun yang pemilik tidak ingin orang lain melihat atau mengambilnya. Sehingga dengan demikian pemilik tidak menginginkan satu orangpun selain dia sendiri memasuki kamar/ruangan tersebut.

Untuk keperluan tersebut, pemilik harus mengunci kamar/ruangannya setiap kali dia hendak pergi ke tempat lain. Namun masalah terjadi jika pemilik lupa meletakkan kunci kamar/ruangannya, atau kunci tersebut tertinggal di tempat lain, yang jaraknya cukup jauh, atau lebih fatal lagi jika kunci tersebut diambil oleh orang lain kemudian digandakan atau kunci tersebut hilang. Kemungkinan-kemungkinan tersebut akan menjadi masalah besar.

Untuk mengatasinya dibutuhkan kunci yang tidak dapat tertinggal di tempat lain, tidak dapat hilang dan tidak dapat digandakan oleh orang lain. Jawaban dari masalah tersebut adalah menggantikan kunci tersebut dengan password. Jadi dengan menggunakan pintu yang otomatis terbuka jika password yang dimasukkan benar, masalah-masalah tersebut diatas akan teratasi.


(17)

Password dapat dicatat pada kertas kecil dan dimasukkan ke dalam tas atau dompet, sehingga jika pemilik lupa, ia dapat melihat catatan. Password tidak mungkin tertinggal di tempat lain, password tidak dapat digandakan oleh orang lain, dan password juga tidak bisa hilang, kecuali jika pemilik hilang ingatan, password juga dapat diganti setiap saat jika ada orang lain yang sudah mengetahui password tersebut.

Dengan kelebihan-kelebihan yang dimiliki oleh pintu otomatis yang menggunakan password, akan sangat efektip jika kamar/ruangan pribadi diamankan oleh pintu otomatis tersebut.

1.2Rumusan Masalah

Berdasarkan sebuah pintu otomatis yang dapat membuka sendiri secara otomatis jika password yang dimasukkan benar, dan akan menutup kembali secara otomatis beberapa menit sesudahnya.

Pada alat ini akan digunakan sebuah mikrokontroler AT89S51, sebuah motor, 13 tombol password. Mikrokontroler AT89S51 sebagai otak dari system yang berfungsi memeriksa 4 digit angka yang ditekan, jika angka yang ditekan benar,maka Mikrokontroler AT89S51 akan memerintahkan motor untuk berputar membuka pintu sehingga pintu akan terbuka secara otomatis, namun jika angka yang ditekan salah, maka Mikrokontroler AT89S51 tidak akan memerintahkan motor untuk berputar sehingg pintu akan tetap tertutup. Mikrokontroler AT89S51 juga berfungsi untuk menyimpan nilai password baru yang dimasukkan.


(18)

Pada alat ini akan digunakan 13 tombol, dimana 10 tombol untuk angka yaitu 0 s/d 9, 3 tombol yang lain masing-masing berfungsi untuk setting memasukkan nilai password, setting memasukkan nilai password baru dan tombol run untuk memerintahkan Mikrokontroler AT89S51 mengolah password.

1.3Tujuan Penulisan

Adapun tujuan penulisan tugas akhir ini adalah membuat sebuah pintu otomatis dengan menggunakan password yang dapat membuka sendiri secara otomatis jika password yang dimasukkan benar, dan passwordnya dapat diubah kapanpun sesuai dengan kehendak pengguna.

1.4Batasan Masalah

Penulisan tugas akhir ini dibatasi pada:

1. Studi cara kerja rangkaian yang meliputi diagram blok dan menguraikan secara umum fungsi dari masing-masing komponen utama dalam blok tersebut

2. Password yang digunakan hanya 4-digit.

3. Mikrokontroler yang digunakan yaitu AT89S51, jadi hanya mikrokontroler ini yang akan diuraikan cara kerjanya dan cara pemrogramannya.


(19)

1.5Sistematika Penulisan

Untuk mempermudah pembahasan dan pemahaman maka penulis membuat sistematika pembahasan bagaimana sebenarnya prinsip kerja dari pintu otomatis dengan menggunakan password yang dapat membuka sendiri secara otomatis jika password yang dimasukkan benar, maka penulis menulis laporan ini sebagai berikut:

BAB 1. PENDAHULUAN

Dalam bab ini berisikan mengenai latar belakang, tujuan penulisan, batasan masalah, serta sistematika penulisan.

BAB 2. LANDASAN TEORI

Landasan teori, dalam bab ini dijelaskan tentang teori pendukung yang digunakan untuk pembahasan dan cara kerja dari rangkaian Teori pendukung itu antara lain tentang mikrokontroler AT89S51 (hardware dan software), bahasa program yang digunakan, serta cara kerja dari rangkaian password dan pengendalian motor untuk membuka pintu

BAB 3. PERANCANGAN ALAT DAN BAHAN

Pada bagian ini akan dibahas perancangan alat, yaitu diagram blok dari rangkaian, skematik dari masing-masing rangkaian dan diagram alir dari program yang akan diisikan ke mikrokontroler AT89S51.


(20)

BAB 4. PENGUJIAN RANGKAIAN DAN PROGRAM

Analisa rangkaian dan sistem kerja, dalam bab ini dibahas tentang sistem kerja per-blok diagram dan sistem kerja keseluruhan.

BAB 5. KESIMPULAN DAN SARAN

Bab ini merupakan penutup yang meliputi tentang kesimpulan dari pembahasan yang dilakukan dari tugas akhir ini serta saran apakah rangkaian ini dapat dibuat lebih efisien dan dikembangkan perakitannya pada suatu metode lain yang mempunyai sistem kerja yang sama.


(21)

BAB 2

LANDASAN TEORI

2.1PERANGKAT KERAS

2.1.1 Arsitektur Mikrokontroler AT89S51

Mikrokontroler, sebagai suatu terobosan teknologi mikrokontoler dan mikrokomputer, hadir memenuhi kebutuhan pasar (market need) dan teknologi baru. Sebagai teknologi

baru, yaitu teknologi semikonduktor dengan kandungan transistor yang lebih banyak namun hanya membutuhkan ruang kecil serta dapat diproduksi secara massal (dalam jumlah yang banyak) sehingga harga menjadi lebih murah (dibandingkan mikroprosesor). Sebagai kebetuhan pasar, mikrokontelor hadir untuk memenuhi selera industri dan para konsumen akan kebutuhan dan keinginan alat-alat bantu dan mainan yang lebih canggih.

Ilustrasi yang mungkin bisa memberikan gambaran yang jelas dalam penggunaan mikrokontroler adalah aplikasi mesin tiket dalam arena permainan yang saat ini terkenal di Indonesia. Jika kita sudah selesai bermain, maka akan diberikan suatu nilai, nilai inilah yang menentukan berapa jumlah tiket yang bisa diperoleh dan jika dikumpulkan dapat ditukar dengan berbagai macam hadiah. Sistem tiket ini ditangani dengan mikrokontroler, karena tidak mungkin menggunakan computer PC yang harus dipasang disamping (atau di belakang) mesin permainan yang bersangkutan.


(22)

Selain system tiket, kita juga dapat menjumpai aplikasi mikrokontroler dalam bidang pengukuran jarak jauh atau yang dikenal dengan system telemetri. Misalnya : Pengukuran disuatu tempat yang membahayakan manusia, maka akan lebih nyaman jika dipasang suatu system pengukuran yang bisa mengirimkan data lewat pemancar dan diterima oleh stasiun pengamatan dari jarak yang cukup aman dari sumbernya. Sistem pengukuran jarak jauh ini jelas membutuhkan suatu system akuisisi data sekaligus system pengiriman data secara serial (melalui pemancar), yang semuanya itu bisa diperoleh dari mikrokontroler yang digunakan.

Tidak seperti system komputer, yang mampu menangani berbagai macam program aplikasi (misalnya pengolah kata, pengolah angka dan lain sebagainya), mikrokontroler hanya bisa digunakan untuk satu aplikasi tertentu saja. Perbedaan lainnya terletak pada perbandingan RAM-nya dan ROM. Pada system computer perbandingan RAM dan ROM-nya besar, artinya program-program pengguna disimpan dalam ruang RAM yang relative besar, sedangkan perangkat kerasnya disimpan dalam ruang ROM yang kecil. Sedangkan pada mikrokontroler, perbandingan ROM dan RAM-nya yang besar artinya program control disimpan dalam ROM (bisa Masked ROM atau Flash PEROM) yang ukurannya relatif lebih besar, sedangkan RAM digunakan sebagai tempat penyimpanan sementara, termasuk register-register yang digunakan pada mikrokontroler yang bersangkutan.


(23)

2.1.2 Kontruksi AT89S51

Mikrokontrol AT89S51 hanya memerlukan tambahan 3 kapasitor, 1 resistor dan 1 kristal serta catu daya 5 Volt. Kapasitor 10 mikro-Farad dan resistor 10 Kilo Ohm dipakai untuk membentuk rangkaian reset. Dengan adanya rangkaian reset ini AT89S51 otomatis direset begitu rangkaian menerima catu daya. Kristal dengan frekuensi maksimum 24 MHz dan kapasitor 30 piko-Farad dipakai untuk melengkapi rangkaian oscilator pembentuk clock yang menentukan kecepatan kerja

mikrokontroler.

Memori merupakan bagian yang sangat penting pada mikrokontroler. Mikrokontroler memiliki dua macam memori yang sifatnya berbeda.

Read Only Memory (ROM) yang isinya tidak berubah meskipun IC kehilangan

catu daya. Sesuai dangan keperluannya, dalam susunan MCS-51 memori penyimpanan progam ini dinamakan sebagai memori progam.

Random Access Memori (RAM) isinya akan sirna begitu IC kehilangan catu

daya, dipakai untuk menyimpan data pada saat progam bekerja. RAM yang dipakai untuk menyimpan data ini disebut sebagai memori data.

Ada berbagai jenis ROM. Untuk mikrokontroler dengan progam yang sudah baku dan diproduksi secara masal, progam diisikan ke dalam ROM pada saat IC mikrokontroler dicetak di pabrik IC. Untuk keperluan tertentu mikrokontroler mengunakan ROM yang dapat diisi ulang atau Programble-Eraseable ROM yang


(24)

Violet Eraseable Progamble ROM) yang kemudian dinilai mahal dan ditinggalkan

setelah ada flash PEROM yang harganya jauh lebih murah.

Jenis memori yang dipakai untuk Memori Program AT89S51 adalah Flash PEROM, program untuk mengendalikan mikrokontroler diisikan ke memori itu lewat bantuan alat yang dinamakan sebagai AT89S51 Flash PEROM Programmer.

Memori Data yang disediakan dalam chip AT89S51 sebesar 128 byte,

meskipun hanya kecil saja tapi untuk banyak keperluan memori kapasitas itu sudah cukup.

Sarana Input/Ouput yang disediakan cukup banyak dan berpariasi. AT89S51 mempunyai 32 jalur Input/Ouput. Jalur Input/Ouput paralel dikenal sebagai Port 1 (P1.0..P1.7) dan Port 3 (P3.0..P3.5 dan P3.7).


(25)

Deskripsi pin-pin pada mikrokontroler AT89S51 :

VCC (Pin 40)

Supply tegangan

GND (Pin 20)

Ground

Port 0 (Pin 39-Pin 32)

Port 0 dapat berfungsi sebagai I/O biasa, low order multiplex address/data ataupun

penerima kode byte pada saat flash progamming Pada fungsi sebagai I/O biasa port ini

dapat memberikan output sink ke delapan buah TTL input atau dapat diubah sebagai input dengan memberikan logika 1 pada port tersebut.

Pada fungsi sebagai low order multiplex address/data, port ini akan mempunyai internal pull up.

Pada saat flash progamming diperlukan eksternal pull up, terutama pada saat verifikasi program.

Port 2 (Pin 21 – pin 28)

Port 2 berfungsi sebagai I/O biasa atau high order address, pada saat mengakses

memori secara 16 bit. Pada saat mengakses memori 8 bit, port ini akan mengeluarkan isi dari P2 special function register. Port ini mempunyai internal pull up dan berfungsi

sebagai input dengan memberikan logika 1. Sebagai output, port ini dapat memberikan output sink keempat buah input TTL.


(26)

Port 3 (Pin 10 – pin 17)

Port 3 merupakan 8 bit port I/O dua arah dengan internal pullup. Port 3 juga

mempunyai fungsi pin masing-masing, yaitu sebagai berikut :

Nama pin Fungsi

P3.0 (pin 10) RXD (Port input serial) P3.1 (pin 11) TXD (Port output serial) P3.2 (pin 12) INTO (interrupt 0 eksternal) P3.3 (pin 13) INT1 (interrupt 1 eksternal) P3.4 (pin 14) T0 (input eksternal timer 0) P3.5 (pin 15) T1 (input eksternal timer 1)

P3.6 (pin 16) WR (menulis untuk eksternal data memori) P3.7 (pin 17) RD (untuk membaca eksternal data memori)

RST (pin 9)

Reset akan aktif dengan memberikan input high selama 2 cycle.

ALE/PROG (pin 30)

Address latch Enable adalah pulsa output untuk me-latch byte bawah dari alamat selama mengakses memori eksternal. Selain itu, sebagai pulsa input progam (PROG) selama memprogam Flash.

PSEN (pin 29)


(27)

EA (pin 31)

Pada kondisi low, pin ini akan berfungsi sebagai EA yaitu mikrokontroler akan menjalankan progam yang ada pada memori eksternal setelah sistem direset. Jika kondisi high, pin ini akan berfungsi untuk menjalankan progam yang ada pada memori internal. Pada saat flash progamming, pin ini akan mendapat tegangan 12 Volt.

XTAL1 (pin 19)

Input untuk clock internal.

XTAL2 (pin 18)

Output dari osilator.

2.2PERANGKAT LUNAK

2.2.1 Bahasa Assembly MCS-51

Bahasa yang digunakan untuk memprogram IC mikrokontroler AT89S51 adalah bahasa assembly untuk MCS-51. angka 51 merupakan jumlah instruksi pada bahasa ini hanya ada 51 instruksi. Dari 51 instruksi, yang sering digunakan orang hanya 10 instruksi. Instruksi –instruksi tersebut antara lain :


(28)

1. Instruksi MOV

Perintah ini merupakan perintah untuk mengisikan nilai ke alamat atau register tertentu. Pengisian nilai dapat secara langsung atau tidak langsung.

Contoh pengisian nilai secara langsung

MOV R0,#20h

Perintah di atas berarti : isikan nilai 20 Heksadesimal ke register 0 (R0). Tanda # sebelum bilangan menunjukkan bahwa bilangan tersebut adalah nilai. Contoh pengisian nilai secara tidak langsung

MOV 20h,#80h ...

... MOV R0,20h

Perintah di atas berarti : isikan nilai yang terdapat pada alamat 20 Heksadesimal ke register 0 (R0).

Tanpa tanda # sebelum bilangan menunjukkan bahwa bilangan tersebut adalah alamat.

2. Instruksi DJNZ

Decreament Jump If Not Zero (DJNZ) ini merupakan perintah untuk mengurangi nilai register tertentu dengan 1 dan lompat jika hasil pengurangannya belum nol. Contoh ,

MOV R0,#80h Loop: ...

...

DJNZ R0,Loop ...


(29)

R0 -1, jika belum 0 lompat ke loop, jika R0 = 0 maka program akan meneruskan ke perintah pada baris berikutnya.

3. Instruksi ACALL

Instruksi ini berfungsi untuk memanggil suatu rutin tertentu. Contoh :

...

ACALL TUNDA ...

TUNDA:

...

4. Instruksi RET

Instruksi RETURN (RET) ini merupakan perintah untuk kembali ke rutin

pemanggil setelah instruksi ACALL dilaksanakan. Contoh,

ACALL TUNDA ...

TUNDA:

... RET

5. Instruksi JMP (Jump)

Instruksi ini merupakan perintah untuk lompat ke alamat tertentu. Contoh,

Loop:

... ...


(30)

6. Instruksi JB (Jump if bit)

Instruksi ini merupakan perintah untuk lompat ke alamat tertentu, jika pin yang dimaksud berlogika high (1). Contoh,

Loop:

JB P1.0,Loop ...

7. Instruksi JNB (Jump if Not bit)

Instruksi ini merupakan perintah untuk lompat ke alamat tertentu, jika pin yang dimaksud berlogika Low (0). Contoh,

Loop:

JNB P1.0,Loop ...

8. Instruksi CJNZ (Compare Jump If Not Equal)

Instruksi ini berfungsi untuk membandingkan nilai dalam suatu register dengan suatu nilai tertentu. Contoh,

Loop:

...

CJNE R0,#20h,Loop ...

Jika nilai R0 tidak sama dengan 20h, maka program akan lompat ke rutin Loop. Jika nilai R0 sama dengan 20h,maka program akan melanjutkan instruksi selanjutnya..


(31)

9. Instruksi DEC (Decreament)

Instruksi ini merupakan perintah untuk mengurangi nilai register yang dimaksud dengan 1. Contoh,

MOV R0,#20h R0 = 20h

...

DEC R0 R0 = R0 – 1

...

10.Instruksi INC (Increament)

Instruksi ini merupakan perintah untuk menambahkan nilai register yang dimaksud dengan 1. Contoh,

MOV R0,#20h R0 = 20h

...

INC R0 R0 = R0 + 1

...


(32)

2.2.2 Software 8051 Editor, Assembler, Simulator (IDE)

Instruksi-instruksi yang merupakan bahasa assembly tersebut dituliskan pada sebuah editor, yaitu 8051 Editor, Assembler, Simulator (IDE). Tampilannya seperti di bawah ini.

Gambar 2.2.2 8051 Editor, Assembler, Simulator (IDE)

Setelah program selesai ditulis, kemudian di-save dan kemudian di-Assemble (di-compile). Pada saat di-assemble akan tampil pesan peringatan dan kesalahan. Jika masih ada kesalahan atau peringatan, itu berarti ada kesalahan dalam penulisan perintah atau ada nama subrutin yang sama, sehingga harus diperbaiki terlebih dahulu sampai tidak ada pesan kesalahan lagi.

Software 8051IDE ini berfungsi untuk merubah program yang kita tuliskan ke dalam bilangan heksadesimal, proses perubahan ini terjadi pada saat peng-compile-an. Bilangan heksadesimal inilah yang akan dikirimkan ke mikrokontroller.


(33)

2.2.3 Software Downloader

Untuk mengirimkan bilangan-bilangan heksadesimal ini ke mikrokontroller digunakan software ISP- Flash Programmer 3.0a yang dapat didownload dari internet. Tampilannya seperti gambar di bawah ini

Gambar 2.2.3 ISP- Flash Programmer 3.a

Cara menggunakannya adalah dengan meng-klik Open File untuk mengambil file heksadesimal dari hasil kompilasi 8051IDE, kemudian klik Write untuk mengisikan hasil kompilasi tersebut ke mikrokontroller.


(34)

M

ikr

okont

rol

er

A

T

89S

5

1

BAB 3

PERANCANGAN ALAT DAN PROGRAM

3.1 Rancang Bangun Pinti Otomatis Menggunakan Password

3.2 Diagram Blok

Secara garis besar, diagram blok rangkaian dari pintu otomatis dengan menggunakan password ditunjukkan pada gambar berikut ini :

P1 P3

P3.5 P0

P3.6

Gambar 3.2 Diagram Blok Rangkaian

Rangkaian Pengendali Motor

Stepper

Motor Stepper Tombol

Password

Sensor Buka pintu Sensor tutup

Pintu

Display seven segmen


(35)

Pada rangkaian ini digunakan sebuah mikrokontroler AT89S51 sebagai pusat kendali dari seluruh rangkaian. Rangkaian pendukung lainnya adalah 13 tombol, yaitu 10 tombol untuk password, dan tiga tombol sebagai tombol setting, sensor yang dapat mendeteksi ketika pintu terbuka/tertutup, empat digit seven segmen untuk menampilkan angka yang password, dan sebuah rangkaian pengendali motor.

Sensor buka pintu berfungsi untuk mengetahui batas maksimum terbukanya pintu, sehingga ketika pintu terbuka kemudian pintu menyentuh sensor ini, maka sensor akan mengirimkan sinyal ke mikrokontroler untuk menghentikan perputaran motor, sehingga motor berhenti (tidak membuka lebih lebar lagi).

Sensor ini terhubung ke P2.6 mikrokontroler AT89S51. Sensor tutup pintu berfungsi untuk mengetahui batas maksimum tertutupnya pintu, yang menandakan bahwa pintu telah tertutup rapat, sehingga ketika pintu tertutup kemudian pintu menyentuh sensor ini, maka sensor akan mengirimkan sinyal ke mikrokontroler untuk menghentikan perputaran motor, sehingga motor berhenti. Rangkaian Sensor ini terhubung ke P2.7 mikrokontroler AT89S51

Rangkaian pengendali motor stepper berfungsi untuk mengendalikan pergerakan motor stepper (menutup/membuka pintu). Rangkaian ini terhubung ke port 0, sehingga dengan memberikan program tertentu, pergerakan menutup/membuka pintu sudah dapat dikendalikan oleh program yang diberikan ke mikrokontroler AT89S51.


(36)

3.3 Flowchart Rancang Bangun Pintu Otomatis Menggunakan Password

Tidak

ya

Tidak Tidak

Ya Ya

Start

Tunggu penekanan setting password

Password benar ?

Terima 4-digit penakanan password

Tombol Run ?

Buka Pintu Tunggu penekanan Run

atau nilai password baru

Password Baru ?

Masukkan Nilai Password Baru

End Tunda 1 menit


(37)

3. 4 Rangkaian minimum mikrokontroller AT89S51

Rangkaian minimum mikrokontroller AT89S51 ditunjukkan pada gambar 3.4 berikut ini :

Gambar 3.4 Rangkaian minimum mikrokontroller AT89S51

Pin 29 merupakan PSEN (Program Store Enable) dan pin 30 sebagai Address Latch Enable (ALE)/PROG dihubungkan ke ground (diset low), sedangkan Pin 31 External Access Enable (EA) diset high (H). Ini dilakukan karena mikrokontroller AT89S51 tidak menggunakan memori eskternal. Pin 18 dan 19 dihubungkan ke XTAL 12 MHz dan capasitor 30 pF. XTAL ini akan mempengaruhi kecepatan mikrokontroller AT89S51 dalam mengeksekusi setiap perintah dalam program. Pin 9 merupakan masukan reset (aktif tinggi). Pulsa transisi dari rendah ke tinggi akan me-reset mikrokontroller ini. Pin 32 sampai 39 adalah Port 0 yang merupakan saluran/bus I/O 8 bit open collector dapat juga digunakan sebagai multipleks bus alamat rendah dan bus data selama adanya akses ke memori program eksternal. Karena fungsi tersebut maka Port 0 dihubungkan dengan resistor array. Jika mikrokontroller tidak menggunakan memori eksternal, maka penggunaan resistor array tidak begitu penting.


(38)

Pin 28 yang merupakan P2.7 dihubungkan dengan transistor dan sebuah LED. Ini dilakukan hanya untuk menguji apakan rangkaian minimum mikrokontroller AT89S51 sudah bekerja atau belum. Dengan memberikan program sederhana pada mikrokontroller tersebut, dapat diketahui apakah rangkaian minimum tersebut sudah bekerja dengan baik atau tidak. Jika LED yang terhubung ke Pin 28 sudah bekerja sesuai dengan perintah yang diberikan, maka rangkaian minimum tersebut telah siap digunakan. Namun setelah seluruh rangkaian disatukan, LED yang terhubung ke pin 28 ini tidak digunakan lagi. Pin 20 merupakan ground dihubungkan dengan ground pada power supplay. Pin 40 merupakan sumber tegangan positif dihubungkan dengan + 5 volt dari power supplay.

3.5 Rangkaian Password

Rangkaian password terdiri dari 13 tombol, dimana 10 tombol merupakan tombol angka, yaitu dari angka 0 sampai angka 9. Dan tiga tombol yang lainnya merupakan tombol setting, tombol run dan tombol untuk mengganti password.

Rangkaian password ini dihubungkan dengan port 1 dan port 2. Pada port 1 terdapat 8 tombol dan pada port 2 terdapat 5 tombol. Dalam kondisi biasa, port 1 dan port 2 mendapatkan logika high (1), saat terjadi penakanan salah satu tombol, maka pin yang terhubung ke tombol tersebut akan terhubung ke ground, sehingga mengirimkan sinyal low (0). Perubahan kondisi dari high (1), menjadi low (0) inilah yang merupakan tanda adanya penekanan pada salah satu tombol.


(39)

Seterusnya mikrokontroler akan menampilkan nilai dari tombol yang ditekan pada display seven segmen, kemudian membandingkannya dengan nilai password yang benar, jika benar maka pintu akan terbuka secara otomatis.

Gambar 3.5 Rangkaian Password

P1.7 (A T89S51)

P2.4 (A T89S51)

P2.3 (A T89S51)

P2.2 (A T89S51)

P2.1 (A T89S51)

P2.0 (A T89S51)

P1.0 (A T89S51)

P1.1 (A T89S51)

Tombol Setting

Tombol 1

Tombol 2

Tombol 3

Tombol 4

Tombol 5

Tombol 6

Tombol 7

P1.2 (A T89S51)

P1.3 (A T89S51)

P1.4 (A T89S51)

P1.5 (A T89S51)

P1.6 (A T89S51)

Tombol 8

Tombol 9

Tombol 0

Tombol Ganti


(40)

3. 6 Rangkaian Display Seven Segmen

Untuk menampilkan angka dari setiap penekanan tombol, maka dibutuhkan sebuah display untuk menampilkannya. Pada alat ini, display yang digunakan adalah display seven segmen, yang terdiri dari 4 buah seven segmen, sehingga display ini dapat menampilkan 4 digit bilangan.

Display seven segmen ini akan diaktipkan oleh IC 4094 yang merupakan IC serial to paralel (serial in paralel out). Jadi data dimasukkan ke dalam IC ini dengan mengirimkan data serial. Keluaran dari IC 4094 ini langsung dihubungkan ke seven segmen, sehingga data serial yang diterima oleh input IC ini akan ditampilkan nilainya pada seven segmen.

Rangkaian ini terhubung ke P3.0 dan P3.1, yang mempunyai fungsi khusus sebagai pengiriman data secara serial. Sehingga nilai yang akan tampil pada display seven segmen akan dapat dikendalikan oleh mikrokontroler AT89S51.

Gambar 3.6 Rangkaian display seven segmen

5V VCC

SEVEN_SEG_DISPLAY

A B C DE F G

In Cl o c k O ut

D6 D5 D4 D3 D2 D1 D0

4094 D7 2 3 10 14 13 12 11 7 6 5 4 SEVEN_SEG_DISPLAY

A B C DE F G

In Cl o c k O ut

D6 D5 D4 D3 D2 D1 D0

4094 D7 2 3 10 14 13 12 11 7 6 5 4 SEVEN_SEG_DISPLAY

A B C DE F G

In Cl o c k O ut

D6 D5 D4 D3 D2 D1 D0

4094 D7 2 3 10 14 13 12 11 7 6 5 4 SEVEN_SEG_DISPLAY

A B C DE F G

In Cl o c k O ut

D6 D5 D4 D3 D2 D1 D0

4094 D7 2 3 10 14 13 12 11 7 6 5 4

P3.0 AT89S51


(41)

3.7 Rangkaian Sensor Buka Pintu dan Tutup Pintu

Ketika password yang diisikan benar, maka pintu akan terbuka. Untuk mengetahui bahwa pintu telah terbuka secara penuh, maka dibutuhkan sebuah sensor untuk mengetahuinya. Sensor ini berfungsi untuk memastikan bahwa pintu telah terbuka secara penuh (terbuka lebar), jadi ketika passwordnya benar dan kemudian pengguna menekan tombol run, maka mikrokontroler akan memerintahkan motor stepper untuk berputar membuka pintu. Ketika pintu menyentuh sensor buka pintu, yang berarti pintu sudah terbuka lebar, maka sensor akan mengirimkan sinyal low ke mikrokontroler, yang merupakan perintah kepada mikrokontroler untuk menghentikan putaran motor stepper. Mikrokontroler yang menerima sinyal ini akan langsung memerintahkan motor stepper untuk berhenti berputar, dan pintu telah terbuka lebar.

Setelah beberapa saat ( ± 8 detik), maka mikrokontroler akan memerintahkan motor stepper untuk berputar menutup pintu Ketika pintu menyentuh sensor tutup pintu, yang berarti pintu sudah tertutup rapat, maka sensor akan mengirimkan sinyal low ke mikrokontroler, yang merupakan perintah kepada mikrokontroler untuk menghentikan putaran motor stepper. Mikrokontroler yang menerima sinyal ini akan langsung memerintahkan motor stepper untuk berhenti berputar, dan pintu telah tertutup rapat.


(42)

3.8 Rangkaian Driver Motor Stepper

Untuk mengendalikan perputaran motor stepper dibutuhkan sebuah driver. Driver ini berfungsi untuk memutar motor stepper searah dengan jarum jam atau berlawanan arah dengan jarum jam. Rangkaian ini dihubungkan ke port 0 dari mikrokontroler AT89S51. sehingga untuk memutar motor, harus diberikan logika high secara bergantian ke port 0. Sedangkan untuk memutar motor ke arah sebaliknya, maka logika high yang diberikan secara bergantian tersebut harus berlawanan arah dengan sebelumnya. Dengan demikian maka rangkaian ini sudah dapat dikendalikan oleh mikrokontroler AT89S51.

Gambar 3.8 Rangkaian Driver Motor Stepper

Tip 122 Tip 122

VCC 12V

MOTOR AT89S51 (P0.0)

AT89S51 (P0.2)

Stepper

VCC 12V

Tip 122 Tip 122

1.0k฀

1.0k฀ AT89S51 (P0.1)

1.0k฀

1.0k฀


(43)

3.9 Rangkaian power supplay ( PSA )

Rangkaian ini berfungsi untuk mensupplay tegangan ke seluruh rangkaian yang ada. Rangkaian PSA yang dibuat terdiri dari dua keluaran, yaitu 5 volt dan 12 volt, keluaran 5 volt digunakan untuk mensupplay tegangan ke seluruh rangkaian,. Rangkaian power supplay ditunjukkan pada gambar 3.8 berikut ini :

Gambar 3.9 Rangkaian Power Supplay (PSA)

Trafo CT merupakan trafo stepdown yang berfungsi untuk menurunkan tegangan dari 220 volt AC menjadi 12 volt AC. Kemudian 12 volt AC akan disearahkan dengan menggunakan dua buah dioda, selanjutnya 12 volt DC akan diratakan oleh kapasitor 2200 μF. Regulator tegangan 5 volt (LM7805CT) digunakan agar keluaran yang dihasilkan tetap 5 volt walaupun terjadi perubahan pada tegangan masukannya. LED hanya sebagai indikator apabila PSA dinyalakan. Transistor PNP TIP 32 disini berfungsi untuk mensupplay arus apabila terjadi kekurangan arus pada rangkaian, sehingga regulator tegangan (LM7805CT) tidak akan panas ketika rangkaian butuh arus yang cukup besar. Tegangan 12 volt DC langsung diambil dari keluaran 2 buah dioda penyearah


(44)

3.10 Perancangan Rangkaian Alarm

Rangkaian alarm ini berfungsi untuk memberikan peringatan berupa nada alarm apabila password yang tekan salah. Rangkaiannya seperti gambar di bawah ini:

Gambar 3.10. Rangkaian Alarm

Pada alat ini, alarm yang digunakan adalah alarm 5 volt. Alarm ini akan berbunyi jika positifnya dihubungkan ke sumber tegangan positif dan negatifnya dihubungkan ke ground.

Pada rangkaian di atas transistor berfungsi sebagai saklar elektronik yang dapat menghidupkan dan mematikan alarm. Dari gambar dapat dilihat bahwa negatif buzzer dihubungkan ke kolektor dari transistor NPN (2SC945), ini berarti jika transistor dalam keadaan aktip maka kolektor akan terhubung ke emitor dimana emitor langsung terhubung ke ground yang menyebabkan tegangan di kolektor menjadi 0 volt, keadaan ini akan mengakibatkan alarm berbunyi. Sebaliknya jika transistor tidak aktif, maka kolektor tidak terhubung ke emitor, sehingga tegangan pada kolektor menjadi 5 volt, keadaan ini menyebabkan alarm mati.


(45)

Transistor yang digunakan dalam rangkaian di atas adalah transistor jenis NPN, transistor jenis ini akan aktif apabila tegangan pada basis lebih besar dari 0,7 volt. Resistor 4,7 Kohm pada basis berguna untuk membatasi arus yang masuk pada basis agar transistor tidak rusak.


(46)

BAB 4

PENGUJIAN RANGKAIAN DAN PROGRAM

4.1 Pengujian Rangkaian Power Supplay (PSA)/ Catu Daya

Rangkaian Power Supply diuji dengan menghubungkan rangkaian Power Supply dengan sebuah multimeter. Adapun tujuannya adalah untuk mengukur tegangan keluarannya apakah sudah sesuai dengan yang diinginkan atau belum.

Pada rangkaian Power Supply tegangan yang masuk adalah tegangan sebesar 220 volt AC. Untuk menghidupkan rangkaian ini tidak diperlukan tegangan sebesar itu. Selain itu arus yang digunakan adalah arus searah, hal ini disebabkan karena apabila arus yang masuk adalah arus bolak-balik maka tegangan yang dihasilkan tidak stabil. Dan ini dapat menyebabkan kerusakan pada rangkaian.

Karena tegangan yang masuk kedalam rangkaian adalah tegangan sebesar 220 Volt AC, maka tegangan ini perlu dikecilkan dan disearahkan menjadi tegangan DC. Oleh karena itu pada rangkaian ini digunakan Trafo CT yang berfungsi untuk menurunkan tegangan dari 220 Volt menjadi 2 tegangan keluaran yaitu 12 Volt dan 5 Volt. Kemudian tegangan ini disearahkan dengan 2 buah dioda dan kemudian diratakan dengan kapasitor 2200 mikro farad.

Tegangan keluaran yang dihasilkan oleh rangkaian Power Supply ini adalah 12 Volt DC dan 5 Volt DC. Tegangan 5 Volt DC akan digunakan untuk menghidupkan


(47)

rangkaian mikrokontroller AT89S51 dan tegangan 12 Volt DC akan digunakan untuk menghidupkan semua relay yang ada pada rangkaian.

Apabila rangkaian kita hidupkan dan kita hubungkan ke multimeter dan keluarannya sesuai dengan yang diharapkan, maka rangkaian ini sudah bekerja dengan baik. Akan tetapi, bila tidak sesuai kemungkinan besar ada kerusakan di dalam rangkaian ini.

4.2 Pengujian Rangkaian Mikrokontroller AT89S51

Untuk mengetahui apakah rangkaian mikrokontroller AT89S51 telah bekerja dengan baik, maka dilakukan pengujian. Pengujian bagian ini dilakukan dengan memberikan program sederhana pada mikrokontroller AT89S51. Programnya adalah sebagai berikut:

Loop:

Setb P2.7 Acall tunda Clr P2.7 Acall tunda Sjmp Loop Tunda:


(48)

Tnd: Mov r6,#0ffh Djnz r6,$ Djnz r7,tnd Ret

Program di atas bertujuan untuk menghidupkan LED yang terhubung ke P2.7 selama ± 0,13 detik kemudian mematikannya selama ± 0,13 detik secara terus menerus. Perintah Setb P2.0 akan menjadikan P2.7 berlogika high yang menyebabkan transistor aktif, sehingga LED hidup. Acall tunda akan menyebabkan LED ini hidup Selama beberapa saat. Perintah Clr P2.7 akan menjadikan P2.7 berlogika low yang menyebabkan transistor tidak aktif sehingga LED akan mati. Perintah Acall tunda akan menyebabkan LED ini mati selama beberapa saat. Perintah Sjmp Loop akan menjadikan program tersebut berulang-ulang, sehingga akan tampak LED tersebut berkedip.

Jika program tersebut diisikan ke mikrokontroller AT89S51, kemudian mikrokontroller dapat berjalan sesuai dengan program yang diisikan, maka rangkaian minimum mikrokontroller AT89S51 telah bekerja dengan baik.


(49)

4.3 Pengujian Rangkaian Penampil Nilai Password

Pengujian pada rangkaian ini dapat dilakukan dengan menghubungkan rangkaian ini dengan rangkaian mikrokontroler, kemudian memberikan data tertentu pada port serial dari mikrokontroler. Seven segmen yang digunakan adalah common anoda, dimana segmen akan menyala jika diberi logika 0 dan sebaliknya segmen akan mati jika diberi logika 1.

Dari hasil pengujian diperoleh data yang harus dikirimkan ke port serial untuk menampilkan angka desimal adalah sebagai berikut:

Tabel 4.3 Data Yang Dikirim ke Port Serial

Angka Data yang dikirim

1 0ECH

2 18H

3 88H

4 0C4H

5 82H

6 02H

7 0E8H

8 0h

9 80H


(50)

Setiap penekanan pada tombol password, nilainya akan ditampilkan ke display dimana display tersebut menggunakan 4 buah seven segmen yang dihubungkan ke IC 4094 yang merupakan IC serial to paralel. IC ini akan merubah 8 bit data serial yang masuk menjadi keluaran 8 bit data paralel. Rangkaian ini dihubungkan dengan P3.0 dan P3.1 AT89S51. P3.0 merupakan fasilitas khusus pengiriman data serial yang disediakan oleh mikrokontroler AT89S51. Sedangkan P3.1 merupakan sinyal clock untuk pengiriman data serial.

Dengan menghubungkan P3.0 dengan IC serial to paralel (IC 4094), maka data serial yang dikirim akan diubah menjadi data paralel. Kemudian IC 4094 ini dihubungkan dengan seven segmen agar data tersebut dapat ditampilkan dalam bentuk angka. Seven segmen yang digunakan adalah aktip low, ini berarti seven segmen akan hidup jika diberi data low (0) dan seven segmen akan mati jika diberi data high (1). Untuk menampilkan angka pada seven segmen, maka data yang harus diberikan adalah sebagai berikut:

1. Untuk menampilkan angka nol, data yang harus dikirim adalah 20h 2.Untuk menampilkan angka satu, data yang harus dikirim adalah 0ech 3.Untuk menampilkan angka dua, data yang harus dikirim adalah 18h

4. Untuk menampilkan angka tiga, data yang harus dikirim adalah 88h

5. Untuk menampilkan angka empat, data yang harus dikirim adalah 0c4h

6. Untuk menampilkan angka lima, data yang harus dikirim adalah 82h

7. Untuk menampilkan angka enam, data yang harus dikirim adalah 02h

8. Untuk tampilan kosong (tidak ada nilai yang tampil), data yang harus


(51)

Program untuk menampilkan angka pada display seven segmen adalah sebagai berikut:

bil0 equ 20h bil1 equ 0ech bil2 equ 18h bil3 equ 88h bil4 equ 0c4h bil5 equ 82h bil6 equ 02h bilkosong equ 0ffh

mov 60h,#Bil1 mov 61h,#Bil2 mov 62h,#Bil3 mov 63h,#Bil4 Display:

mov sbuf,60h jnb ti,$ clr ti

mov sbuf,61h jnb ti,$ clr ti

mov sbuf,62h jnb ti,$ clr ti


(52)

mov sbuf,63h jnb ti,$ clr ti

ret

Program di atas akan menampilkan nilai 1234 pada display seven segmen. Dan nilai berapapun yang diisikan ke alamat 60h, 61h, 62h dan 63h akan ditampilkan pada display seven segmen.

4.4 Pengujian Rangkaian Password

Untuk membuka pintu, maka password yang diberikan harus benar sesuai dengan programnya supaya pintu dapat terbuka. Jika tidak benar, maka pintu tidak akan terbuka. Rangkaian password ini terdiri dari 13 tombol, dimana tombol 1 sampai dengan 9 untuk penekanan password yang dapat diganti jika pemilik merasa kurang tepat dengan password sebelumnya dengan mengganti nilai pada program. Angka yang lain untuk setting dan runnya yang ditekan setelah penekanan kode sehingga pintu dapat terbuka.

Rangkaian password ini terhubung ke Port 2 dan port 1, dimana P1.7 merupakan tombol setting, P2.4 merupakan tombol 1, P2.3 merupakan tombol 2, P2.2 merupakan tombol 3, P2.1 merupakan tombol 4, P2.0 merupakan tombol 5, P1.0 merupakan tombol 6, P1.1 merupakan tombol 7, P1.2 merupakan tombol 8, P1.3 merupakan tombol 9, P1.4 merupakan tombol 0, P1.5 merupakan tombol untuk mengganti password, P1.6 merupakan tombol Run. Jika tombol setting ditekan maka


(53)

P1.7 akan terhubung ke ground, menyebabkan P1.7 mendapatkan sinyal low. Sinyal low inilah yang merupakan indikasi bahwa ada penekanan pada tombol setting. Cara kerja yang sama juga berlaku pada ketiga belas tombol lainnya.

Program untuk mengetahui penekanan pada tombol password adalah sebagai berikut :

Tbl_Setting Bit P1.7 Tbl_1 Bit P2.4 Tbl_2 Bit P2.3 Tbl_3 Bit P2.2 Tbl_4 Bit P2.1 Tbl_5 Bit P2.0 Tbl_6 Bit P1.0 . . .

Tbl_Ganti Bit P1.5 Tbl_Run Bit P1.6

Di awal program dibuat inisialisasi tombol, dimana inisialisasi ini akan berguna untuk mempermudah mengingat hubungan tiap-tiap tombol dengan pin pada mikrokontroler.

Jb Tbl_Setting,$

Perintah di atas akan merupakan perintah untuk menunggu penekanan pada tombol setting dan akan terus menunggu sampai ada penekanan pada tombol setting.

mov 60h,#Bil0 mov 61h,#Bil0 mov 62h,#Bil0


(54)

mov 63h,#Bil0 Acall Display

Perintah-perintah di atas akan memasukkan nilai 0 ke alamat 60h yang merupakan alamat untuk mengisi nilai ribuan, memasukkan nilai 0 ke alamat 61h yang merupakan alamat untuk mengisi nilai ratusan, memasukkan nilai 0 ke alamat 62h yang merupakan alamat untuk mengisi nilai puluhan dan memasukkan nilai nol ke alamat 63h yang merupakan alamat untuk mengisi nilai satuan. Sehingga dengan demikian akan tampil pada display nilai 0000.

Cek_no11:

Jb Tbl_1,Cek_no21 mov 70h,#1

mov 60h,#bil1 Acall Display Jnb Tbl_1,$ Acall Tunda

Ljmp Cek_Password2

Cek_no21:

Jb Tbl_2,Cek_no31 mov 70h,#2

mov 60h,#bil2 Acall Display Jnb Tbl_2,$ Acall Tunda


(55)

Ljmp Cek_Password2 . . . .

. . . . . . . . Dst

Program di atas akan mengecek penekanan pertama dari masing-masing tombol password, yaitu penekanan pada tombol 1, tombol 2, tombol 3 s/d tombol 0. Jika tidak ada penekanan pada tombol 1, maka program akan mengecek tombol 2, jika tombol 2 juga tidak ditekan, maka program akan mengecek tombol 3, dan seterusnya. Jika terjadi penekanan pada tombol 1, maka program akan memasukkan nilai 1 ke alamat 70h. Nilai ini yang nantinya akan dibandingkan dengan nilai password yang benar untuk nilai password pertama. Kemudian program akan memasukkan nilai

bil1 ke alamat 60h agar tampil di display angka 1. Selanjutnya program akan melanjutkan untuk mengecek penekanan kedua dari tombol password

Namun jika tombol yang ditekan adalah tombol 2, maka program akan memasukkan nilai 2 ke alamat 70h. Nilai ini yang nantinya akan dibandingkan dengan nilai password yang benar untuk nilai password pertama. Kemudian program akan memasukkan nilai bil2 ke alamat 60h agar tampil di display angka 2. Selanjutnya program akan melanjutkan untuk mengecek penekanan kedua dari tombol password

Demikian juga halnya yang terjadi jika tombol yang ditekan adalah tombol 3, 4, 5 dan seterusnya.


(56)

Cek_Password2:

Jb Tbl_1,Cek_no22 mov 71h,#1

mov 61h,#bil1 Acall Display1 Jnb Tbl_1,$ Acall Tunda

Ljmp Cek_Password3

Cek_no22:

Jb Tbl_2,Cek_no32 mov 71h,#2

mov 61h,#bil2 Acall Display1 Jnb Tbl_2,$ Acall Tunda

Ljmp Cek_Password3

Program di atas akan mengecek penekanan password kedua dari masing-masing tombol password. Sama seperti sebelumnya, jika tidak ada penekanan pada tombol 1, maka program akan mengecek tombol 2, jika tombol 2 juga tidak ditekan, maka program akan mengecek tombol 3, dan seterusnya. Jika terjadi penekanan pada tombol 1, maka program akan memasukkan nilai 1 ke alamat 70h. Nilai ini yang nantinya akan dibandingkan dengan nilai password yang benar untuk nilai password kedua. Kemudian program akan memasukkan nilai bil1 ke alamat 60h agar tampil di


(57)

display angka 1. Selanjutnya program akan melanjutkan untuk mengecek penekanan ketiga dari tombol password

Namun jika tombol yang ditekan adalah tombol 2, maka program akan memasukkan nilai 2 ke alamat 70h. Nilai ini yang nantinya akan dibandingkan dengan nilai password yang benar untuk nilai password kedua. Kemudian program akan memasukkan nilai bil2 ke alamat 60h agar tampil di display angka 2. Selanjutnya program akan melanjutkan untuk mengecek penekanan ketiga dari tombol password

Demikian juga halnya yang terjadi jika tombol yang ditekan adalah tombol 3, 4, 5 dan seterusnya. Dan juga penekanan untuk penekanan ketiga dan keempat dari tombol password.

4.5 Pengujian Rangkaian Sensor Buka Pintu dan Tutup Pintu

Ketika mikrokontroler memerintahkan motor untuk membuka pintu, mikrokontroler tidak mengetahui apakah pintu sudah terbuka lebar atau belum. Hal yang sama juga terjadi ketika mikrokontroler memerintahkan motor untuk menutup pintu, mikrokontroler tidak mengetahui apakah pintu sudah tertutup rapat atau belum. Karena itu dibutuhkan sebuah sensor yang dapat mengetahui kedua keadaan tersebut.

Dalam hal ini digunakan sebuah sensor buka pintu (switch control), yang berfungsi untuk mengetahui apakah pintu sudah terbuka lebar atau belum, dan sebuah


(58)

sensor tutup pintu yang berfungsi untuk mengetahui apakah pintu sudah tertutup rapat atau belum. Rangkaian sensor buka pintu hanya terdiri dari sebuah saklar yang dihubungkan ke ground dan ke mikrokontroler AT89S51.

Ketika sensor dalam keadaan terbuka, kondisi P2.6 adalah high. Namun jika pintu menyentuh saklar, maka P2.6 akan terhubung ke ground, yang menyebabkan kondisi P2.6 akan berubah dari high (1), menjadi low (0). Perubahan kondisi pada P2.6 inilah yang dikenali oleh mikrokontroler sebagai tanda bahwa pintu telah terbuka lebar, maka mikrokontroler akan memerintahkan motor stepper untuk berhenti berputar, sehingga pintu tidak terbuka lebih lebar lagi.

Program untuk mendeteksi pengiriman sinyal dari sensor buka pintu ini adalah,

Buka_Pintu:

. . .

Jb P2.6,Buka_Pintu mov P0,#0h

Program di atas akan melihat kondisi P2.6 yang dihubungkan ke sensor buka pintu, dengan menggunakan perintah JB (jump if bit), jika kondisi P2.6 bit (high),

yang berarti pintu belum terbuka lebar, maka mikrokontroler akan tetap memerintahkan motor untuk berputar membuka pintu sampai mendapatkan sinyal low (0) dari sensor. Jika kondisi P2.6 notbit (low), maka mikrokontroler akan memerintahkan motor untuk berhenti membuka pintu, dengan menggunakan perintah


(59)

Hal yang sama juga terjadi pada sensor tutup pintu, perbedaanya hanya pada port mikrokontroler yang digunakan. Jika sensor buka pintu dihubungkan ke P2.6, maka sensor tutup pintu dihubungkan ke P2.7.

4.6Pengujian Rangkaian Driver Motor Stepper

Rangkaian driver motor stepper ini terdiri dari empat masukan dan empat keluaran, dimana masing-masing masukan dihubungkan dengan mikrokontroler AT89S51 dan keluarannya dihubungkan ke motor stepper. Rangkaian ini akan bekerja memutar motor stepper jika diberi sinyal high (1) secara bergantian pada ke-4 masukannya.

Rangkaian ini terdairi dari 4 buah transistor NPN TIP 122. Masing-masing transistor dihubungkan ke P0.0, P0.1, P0.2 dan P0.3 pada mikrokontroler AT89S51. Basis dari masing-masing transistor diberi tahanan 10 Kohm untuk membatasi arus yang masuk ke transistor. Kolektor dihubungkan dengan kumparan yang terdapat pada motor stepper, kemudian kumparan dihubungkan dengan sumber tegangan 12 volt.dan emitor dihubungkan ke ground.

Jika P0.0 diberi logika high (1), yang berarti basis pada transistor TIP 122 mendapat tegangan 5 volt, maka transistor akan aktip. Hal ini akan menyebabkan terhubungnya kolektor dengan emitor, sehingga kolektor mendapatkan tegangan 0 volt dari ground. Hal ini menyebabkan arus akan mengalir dari sumber tegangan 12 volt ke yang memiliki medan magnet tesebut. Medan magnet memutar motor sehingga mikrokontroler memerintahkan motor berputar membuka maupun menutup pintu,


(60)

Jika kemudian P0.0 di beri logika low (0), yang berarti transistor tidak aktip dan tidak ada arus yang mengalir pada kumparan, sehingga tidak ada medan magnet pada kumparan. Dan disisi lain P0.1 diberi logika high (1), sehingga kumparan yang terhubung ke P0.1 akan menghasilkan medan magnet. Maka motor akan beralih kearah kumparan yang terhubung ke P0.1 tersebut. Seterusnya jika logika high(1) diberikan secara bergantian pada input dari driver motor stepper, maka motor stepper akan berputar sesuai dengan arah logika high (1) yang diberikan pada inputnya.

Untuk memutar dengan arah yang berlawanan dengan arah yang sebelumnya, maka logika high (1) pada input driver motor stepper harus diberikan secara bergantian dengan arah yang berlawanan dengan sebelumnya.

Program yang diberikan pada driver motor stepper untuk memutar motor stepper adalah sebagai berikut :

mov a,#11h Buka_Pintu:

mov P0,a acall tunda Rl a

Jb Sensor_Buka,Buka_Pintu mov P0,#0h

Program diawali dengan memberikan nilai 11h pada pada accumulator (a), kemudian program akan memasuki rutin buka pintu. Nilai a diisikan ke port 0, sehingga sekarang nilai port 0 adalah 11h. ini berarti P0.0 dan P0.4 mendapatkan


(61)

logika high sedangkan yang lainnya mendapatkan logika low, seperti table di bawah ini,

P0.7 P0.6 P0.5 P0.4 P0.3 P0.2 P0.1 P0.0

P0 0 0 0 1 0 0 0 1

Program dilanjutkan dengan memanggil rutin tunda. Lamanya tunda akan mempengaruhi kecepatan perputaran motor. Semakin lama tunda, maka perputaran motor akan semakin lambat. Perintah berikutnya adalah Rl a,perintah ini akan memutar nilai yang ada pada accumulator (a), seperti tampak pada table di bawah ini,

a 0 0 0 1 0 0 0 1

Rl

a 0 0 1 0 0 0 1 0

Dst...

Nilai pada accumulator (a) yang awalnya 11h, setelah mendapat perintah Rl a,

maka nilai pada accumulator (a) akan merubah menjadi 22h. Kemudian program akan melihat apakah kondisi sensor buka pintu dalam keadaan high (1) atau low (0). Jika high (1),

Jika kondisi sensor buka pintu high (1), yang berarti pintu belum terbuka lebar, maka program akan kembali ke rutin buka pintu untuk terus membuka pintu. Nilai yang ada pada accumulator (a), akan kembali diisikan ke port 0, maka nilai di port 0 akan berubah menjadi 22h, ini berarti P0.1 dan P0.5 mendapatkan logika high sedangkan yang lainnya mendapatkan logika low, seperti table di bawah ini,

P0.7 P0.6 P0.5 P0.4 P0.3 P0.2 P0.1 P0.0

P0 0 0 1 0 0 0 1 0

Sebelumnya telah dibahas bahwa P0.0, P0.1, P0.2, dan P0.3 dihubungkan ke masukan driver motor stepper, dengan program di atas maka P0.0, P0.1, P0.2, dan P0.3 akan


(62)

mendapatkan nilai high (1) secara bergantian. Hal ini menyebabkan motor stepper akan berputar membuka pintu. Pintu akan terus dibuka sampai sensor buka pintu mengirimkan logika low (0). Jika kondisi sensor buka pintu low (0), yang berarti pintu telah terbuka lebar maka program akan melanjutkan ke baris berikutnya, yaitu mengisi port 0 dengan nilai 0h, yang merupakan perintah untuk menghentikan perputaran motor.

Hal yang sama juga berlaku ketika motor berputar untuk menutup pintu, perbedaannya hanya pada perintah rotate. Jika pada perintah buka pintu digunakan rotate left ( Rl ), maka pada perintah tutup pintu digunakan perintah rotate right ( Rr). Perputaran perintah Rr diperlihatkan pada table berikut,

a 1 0 0 0 1 0 0 0

R r

a 0 1 0 0 0 1 0 0


(63)

4.7Pengujian Alarm

Pengujian pada rangkaian alarm ini dapat dilakukan dengan memberikan tegangan 5 volt dan 0 volt pada basis transistor C945. Transistor C945 merupakan transistor jenis NPN, transistor jenis ini akan aktip jika pada basis diberi tegangan > 0,7 volt dan tidak aktipjika pada basis diberi tegangan < 0,7 volt. Aktifnya transistor akan membunyikan alarm.

Selanjutnya alarm dihubungkan dengan mikrokontroler dan mikrokontroler diberi program sederhana untuk megaktifkan alarm. Program yang diisikan ke mikrokontroler untuk mengaktifkan alarm adalah :

Setb P0.0 . . .

Perintah di atas akan memberikan logika high (1) atau tegangan 5 volt. pada P0.0, sehingga dengan demikian alarm akan berbunyi.


(64)

4.8 Program Lengkap

; = = = = initialisasi port = = = = ; Batas_Tutup bit P3.5

Batas_buka bit P3.6 Alarm bit p3.7

bil0 equ 20h bil1 equ 0ech bil2 equ 18h bil3 equ 88h bil4 equ 0c4h bil5 equ 82h bil6 equ 2h bil7 equ 0e8h bil8 equ 0h bil9 equ 80h Kosong equ 0ffh Utama: mov p0,#0 mov p1,#0 clr alarm mov 70h,#0 mov 71h,#0 mov 72h,#0 mov 73h,#0

mov 64h,#0 ;jumlah kesalahan acall delay mov sbuf,#Kosong jnb ti,$ clr ti mov sbuf,#Kosong jnb ti,$ clr ti mov sbuf,#Kosong jnb ti,$ clr ti mov sbuf,#Kosong jnb ti,$ clr ti


(65)

Bdg_Kode1: clr alarm mov 60h,#5 mov 61h,#4 mov 62h,#2

mov 63h,#0 ; password 1 mov 7ah,#bdg_kode1 sjmp Tbl_Satu tbl_Satu: mov P0,#7fh mov a,p0 cjne a,#77h,tbl_Dua mov 74h,#bil1 Mov 70h,#1 acall tampil Recek_tbl_Satu: mov a,p0 cjne a,#77h,Recek_tbl_Satu ljmp Tbl_Satu1 tbl_Dua: cjne a,#7bh,tbl_Tiga mov 74h,#bil2 Mov 70h,#2 acall tampil Recek_tbl_Dua: mov a,p0 cjne a,#7bh,Recek_tbl_Dua ljmp Tbl_Satu1 tbl_Tiga: cjne a,#7dh,Tbl_Empat mov 74h,#bil3 Mov 70h,#3 acall tampil Recek_tbl_Tiga: mov a,p0 cjne a,#7dh,Recek_tbl_Tiga ljmp Tbl_Satu1


(66)

Tbl_Empat: mov P0,#0bfh mov a,p0 cjne a,#0b7h,Tbl_Lima mov 74h,#bil4 Mov 70h,#4 acall tampil Recek_tbl_Empat: mov P0,#0bfh mov a,p0 cjne a,#0b7h,Recek_tbl_Empat Ljmp Tbl_Satu1 Tbl_Lima: cjne a,#0bbh,Tbl_Enam mov 74h,#bil5 Mov 70h,#5 acall tampil Recek_tbl_Lima: mov a,p0 cjne a,#0bbh,Recek_tbl_Lima ljmp Tbl_Satu1 Tbl_Enam: cjne a,#0bdh,Tbl_Tujuh mov 74h,#bil6 Mov 70h,#6 acall tampil Recek_tbl_Enam: mov a,p0 cjne a,#0bdh,Recek_tbl_Enam ljmp Tbl_Satu1 Tbl_Tujuh: mov P0,#0dfh mov a,P0 cjne a,#0d7h,Tbl_Delapan mov 74h,#bil7 Mov 70h,#7 acall tampil Recek_tbl_Tujuh: mov P0,#0dfh mov a,p0 cjne a,#0d7h,Recek_tbl_Tujuh ljmp Tbl_Satu1


(67)

Tbl_Delapan:

cjne a,#0dbh,Tbl_Sembilan mov 74h,#bil8

Mov 70h,#8 acall tampil

Recek_tbl_Delapan: mov a,p0

cjne a,#0dbh,Recek_tbl_Delapan ljmp Tbl_Satu1

Tbl_Sembilan:

cjne a,#0ddh,Tbl_nol mov 74h,#bil9 Mov 70h,#9 acall tampil

Recek_tbl_Sembilan: mov a,p0

cjne a,#0ddh,Recek_tbl_Sembilan ljmp Tbl_Satu1

Tbl_Nol:

mov P0,#0efh mov a,P0

cjne a,#0ebh,Balik_Tbl_Satu mov 74h,#bil0

Mov 70h,#0 acall tampil

Recek_tbl_Nol: mov P0,#0efh mov a,p0

cjne a,#0ebh,Recek_tbl_Nol Ljmp Tbl_Satu1

Balik_Tbl_Satu: Ljmp Tbl_Satu


(68)

tampil: mov sbuf,74h jnb ti,$ clr ti mov sbuf,#Kosong jnb ti,$ clr ti mov sbuf,#Kosong jnb ti,$ clr ti mov sbuf,#Kosong jnb ti,$ clr ti ret tbl_Satu1: acall delay mov P0,#7fh mov a,p0 cjne a,#77h,tbl_Dua1 mov 75h,#bil1 Mov 71h,#1 acall tampil1 Recek_tbl_Satu1: mov a,p0 cjne a,#77h,Recek_tbl_Satu1 ljmp Tbl_Satu2 tbl_Dua1: cjne a,#7bh,tbl_Tiga1 mov 75h,#bil2 Mov 71h,#2 acall tampil1 Recek_tbl_Dua1: mov a,p0 cjne a,#7bh,Recek_tbl_Dua1 ljmp Tbl_Satu2 tbl_Tiga1: cjne a,#7dh,Tbl_Empat1 mov 75h,#bil3 Mov 71h,#3 acall tampil1


(69)

Recek_tbl_Tiga1: mov a,p0 cjne a,#7dh,Recek_tbl_Tiga1 ljmp Tbl_Satu2 Tbl_Empat1: mov P0,#0bfh mov a,p0 cjne a,#0b7h,Tbl_Lima1 mov 75h,#bil4 Mov 71h,#4 acall tampil1 Recek_tbl_Empat1: mov P0,#0bfh mov a,p0 cjne a,#0b7h,Recek_tbl_Empat1 Ljmp Tbl_Satu2 Tbl_Lima1: cjne a,#0bbh,Tbl_Enam1 mov 75h,#bil5 Mov 71h,#5 acall tampil1 Recek_tbl_Lima1: mov a,p0 cjne a,#0bbh,Recek_tbl_Lima1 ljmp Tbl_Satu2 Tbl_Enam1: cjne a,#0bdh,Tbl_Tujuh1 mov 75h,#bil6 Mov 71h,#6 acall tampil1 Recek_tbl_Enam1: mov a,p0 cjne a,#0bdh,Recek_tbl_Enam1 ljmp Tbl_Satu2 Tbl_Tujuh1: mov P0,#0dfh mov a,P0 cjne a,#0d7h,Tbl_Delapan1 mov 75h,#bil7 Mov 71h,#7 acall tampil1


(70)

Recek_tbl_Tujuh1: mov P0,#0dfh mov a,p0 cjne a,#0d7h,Recek_tbl_Tujuh1 ljmp Tbl_Satu2 Tbl_Delapan1: cjne a,#0dbh,Tbl_Sembilan1 mov 75h,#bil8 Mov 71h,#8 acall tampil1 Recek_tbl_Delapan1: mov a,p0 cjne a,#0dbh,Recek_tbl_Delapan1 ljmp Tbl_Satu2 Tbl_Sembilan1: cjne a,#0ddh,Tbl_nol1 mov 75h,#bil9 Mov 71h,#9 acall tampil1 Recek_tbl_Sembilan1: mov a,p0 cjne a,#0ddh,Recek_tbl_Sembilan1 ljmp Tbl_Satu2 Tbl_Nol1: mov P0,#0efh mov a,P0 cjne a,#0ebh,Balik_Tbl_Satu1 mov 75h,#bil0 Mov 71h,#0 acall tampil1 Recek_tbl_Nol1: mov P0,#0efh mov a,p0 cjne a,#0ebh,Recek_tbl_Nol1 Ljmp Tbl_Satu2 Balik_Tbl_Satu1: Ljmp Tbl_Satu1


(71)

tampil1: mov sbuf,75h jnb ti,$ clr ti mov sbuf,74h jnb ti,$ clr ti mov sbuf,#Kosong jnb ti,$ clr ti mov sbuf,#Kosong jnb ti,$ clr ti ret Tbl_Satu2: acall delay mov P0,#7fh mov a,p0 cjne a,#77h,tbl_Dua2 mov 76h,#bil1 Mov 72h,#1 acall tampil2 Recek_tbl_Satu2: mov a,p0 cjne a,#77h,Recek_tbl_Satu2 ljmp Tbl_Satu3 tbl_Dua2: cjne a,#7bh,tbl_Tiga2 mov 76h,#bil2 Mov 72h,#2 acall tampil2 Recek_tbl_Dua2: mov a,p0 cjne a,#7bh,Recek_tbl_Dua2 ljmp Tbl_Satu3 tbl_Tiga2: cjne a,#7dh,Tbl_Empat2 mov 76h,#bil3 Mov 72h,#3 acall tampil2


(72)

Recek_tbl_Tiga2: mov a,p0 cjne a,#7dh,Recek_tbl_Tiga2 ljmp Tbl_Satu3 Tbl_Empat2: mov P0,#0bfh mov a,p0 cjne a,#0b7h,Tbl_Lima2 mov 76h,#bil4 Mov 72h,#4 acall tampil2 Recek_tbl_Empat2: mov P0,#0bfh mov a,p0 cjne a,#0b7h,Recek_tbl_Empat2 Ljmp Tbl_Satu3 Tbl_Lima2: cjne a,#0bbh,Tbl_Enam2 mov 76h,#bil5 Mov 72h,#5 acall tampil2 Recek_tbl_Lima2: mov a,p0 cjne a,#0bbh,Recek_tbl_Lima2 ljmp Tbl_Satu3 Tbl_Enam2: cjne a,#0bdh,Tbl_Tujuh2 mov 76h,#bil6 Mov 72h,#6 acall tampil2 Recek_tbl_Enam2: mov a,p0 cjne a,#0bdh,Recek_tbl_Enam2 ljmp Tbl_Satu3 Tbl_Tujuh2: mov P0,#0dfh mov a,P0 cjne a,#0d7h,Tbl_Delapan2 mov 76h,#bil7 Mov 72h,#7 acall tampil2


(73)

Recek_tbl_Tujuh2: mov P0,#0dfh mov a,p0 cjne a,#0d7h,Recek_tbl_Tujuh2 ljmp Tbl_Satu3 Tbl_Delapan2: cjne a,#0dbh,Tbl_Sembilan2 mov 76h,#bil8 Mov 72h,#8 acall tampil2 Recek_tbl_Delapan2: mov a,p0 cjne a,#0dbh,Recek_tbl_Delapan2 ljmp Tbl_Satu3 Tbl_Sembilan2: cjne a,#0ddh,Tbl_nol2 mov 76h,#bil9 Mov 72h,#9 acall tampil2 Recek_tbl_Sembilan2: mov a,p0 cjne a,#0ddh,Recek_tbl_Sembilan2 ljmp Tbl_Satu3 Tbl_Nol2: mov P0,#0efh mov a,P0 cjne a,#0ebh,Balik_Tbl_Satu2 mov 76h,#bil0 Mov 72h,#0 acall tampil2 Recek_tbl_Nol2: mov P0,#0efh mov a,p0 cjne a,#0ebh,Recek_tbl_Nol2 Ljmp Tbl_Satu3 Balik_Tbl_Satu2: Ljmp Tbl_Satu2


(74)

tampil2: mov sbuf,76h jnb ti,$ clr ti mov sbuf,75h jnb ti,$ clr ti mov sbuf,74h jnb ti,$ clr ti mov sbuf,#Kosong jnb ti,$ clr ti ret Tbl_Satu3: acall delay mov P0,#7fh mov a,p0 cjne a,#77h,tbl_Dua3 mov 77h,#bil1 Mov 73h,#1 acall tampil3 Recek_tbl_Satu3: mov a,p0 cjne a,#77h,Recek_tbl_Satu3 ljmp Tbl_Satu4 tbl_Dua3: cjne a,#7bh,tbl_Tiga3 mov 77h,#bil2 Mov 73h,#2 acall tampil3 Recek_tbl_Dua3: mov a,p0 cjne a,#7bh,Recek_tbl_Dua3 ljmp Tbl_Satu4 tbl_Tiga3: cjne a,#7dh,Tbl_Empat3 mov 77h,#bil3 Mov 73h,#3 acall tampil3


(75)

Recek_tbl_Tiga3: mov a,p0 cjne a,#7dh,Recek_tbl_Tiga3 ljmp Tbl_Satu4 Tbl_Empat3: mov P0,#0bfh mov a,p0 cjne a,#0b7h,Tbl_Lima3 mov 77h,#bil4 Mov 73h,#4 acall tampil3 Recek_tbl_Empat3: mov P0,#0bfh mov a,p0 cjne a,#0b7h,Recek_tbl_Empat3 Ljmp Tbl_Satu4 Tbl_Lima3: cjne a,#0bbh,Tbl_Enam3 mov 77h,#bil5 Mov 73h,#5 acall tampil3 Recek_tbl_Lima3: mov a,p0 cjne a,#0bbh,Recek_tbl_Lima3 ljmp Tbl_Satu4 Tbl_Enam3: cjne a,#0bdh,Tbl_Tujuh3 mov 77h,#bil6 Mov 73h,#6 acall tampil3 Recek_tbl_Enam3: mov a,p0 cjne a,#0bdh,Recek_tbl_Enam3 ljmp Tbl_Satu4


(76)

Tbl_Tujuh3: mov P0,#0dfh mov a,P0 cjne a,#0d7h,Tbl_Delapan3 mov 77h,#bil7 Mov 73h,#7 acall tampil3 Recek_tbl_Tujuh3: mov P0,#0dfh mov a,p0 cjne a,#0d7h,Recek_tbl_Tujuh3 ljmp Tbl_Satu4 Tbl_Delapan3: cjne a,#0dbh,Tbl_Sembilan3 mov 77h,#bil8 Mov 73h,#8 acall tampil3 Recek_tbl_Delapan3: mov a,p0 cjne a,#0dbh,Recek_tbl_Delapan3 ljmp Tbl_Satu4 Tbl_Sembilan3: cjne a,#0ddh,Tbl_nol3 mov 77h,#bil9 Mov 73h,#9 acall tampil3 Recek_tbl_Sembilan3: mov a,p0 cjne a,#0ddh,Recek_tbl_Sembilan3 ljmp Tbl_Satu4 Tbl_Nol3: mov P0,#0efh mov a,P0 cjne a,#0ebh,Balik_Tbl_Satu3 mov 77h,#bil0 Mov 73h,#0 acall tampil3


(77)

Recek_tbl_Nol3: mov P0,#0efh mov a,p0 cjne a,#0ebh,Recek_tbl_Nol3 Ljmp Tbl_Satu4 Balik_Tbl_Satu3: Ljmp Tbl_Satu3 tampil3: mov sbuf,77h jnb ti,$ clr ti mov sbuf,76h jnb ti,$ clr ti mov sbuf,75h jnb ti,$ clr ti mov sbuf,74h jnb ti,$ clr ti ret Tbl_Satu4: mov P0,#7fh mov a,P0

cjne a,#7eh,Tbl_Satu4 ; tombol A

Bandingkan: mov a,70h cjne a,60h,Password_Salah mov a,71h cjne a,61h,Password_Salah mov a,72h cjne a,62h,Password_Salah mov a,73h cjne a,63h,Password_Salah mov 64h,#0


(78)

buka: call kussunk mov a,#11h bk_pnt: mov p1,a acall tunda_stepper rr a Jnb Batas_Buka,Bk_pnt mov p1,#0h tunggu: acall tunda_sejenak tutup: mov p1,a acall tunda_stepper rl a jnb batas_tutup,tutup mov p1,#0h ljmp utama balik_Utama: ljmp Utama Password_Salah: setb alarm Acall tunda clr alarm Acall tunda inc 64h mov a,64h Cjne a,#3,balik_Tbl_Satu4 Alarm_Aktip: setb alarm Acall tunda clr alarm acall tunda mov P0,#0efh mov a,P0

cjne a,#0eeh,Alarm_Aktip ; tombol D mov 64h,#0 call tampilan_awal Balik_Tbl_Satu4: call kussunk Ljmp Tbl_Satu


(79)

tampilan_awal: Ljmp utama ret tunda_Stepper: mov r7,#100 tnd_Stepper: mov r6,#10 djnz r6,$ djnz r7,tnd_Stepper ret delay: mov r7,#5 dly: mov r6,#255 dl: mov r5,#255 djnz r5,$ djnz r6,dl djnz r7,dly ret tunda: mov r7,#5 tnd: mov r6,#150 td: mov r5,#255 djnz r5,$ djnz r6,td djnz r7,tnd ret tunda_Sejenak: mov r7,#10 tnd_Sejenak: mov r6,#255 td_Sejenak: mov r5,#255 djnz r5,$ djnz r6,td_Sejenak djnz r7,tnd_Sejenak ret


(80)

kussunk:

mov sbuf,#Kosong jnb ti,$

clr ti

mov sbuf,#Kosong jnb ti,$

clr ti

mov sbuf,#Kosong jnb ti,$

clr ti

mov sbuf,#Kosong jnb ti,$

clr ti ret end


(81)

BAB 5

KESIMPULAN DAN SARAN

5.1. Kesimpulan

Ketika mikrokontroler memerintahkan motor untuk membuka pintu, mikrokontroler tidak mengetahui apakah pintu sudah terbuka lebar atau belum. Hal yang sama juga terjadi ketika mikrokontroler memerintahkan motor untuk menutup pintu, mikrokontroler tidak mengetahui apakah pintu sudah tertutup rapat atau belum. Karena itu dibutuhkan sebuah sensor yang dapat mengetahui kedua keadaan tersebut.

Dalam hal ini digunakan sebuah sensor buka pintu atau switch control, yang berfungsi untuk mengetahui apakah pintu sudah terbuka lebar atau belum, dan sebuah sensor tutup pintu yang berfungsi untuk mengetahui apakah pintu sudah tertutup rapat atau belum. Rangkaian sensor buka pintu hanya terdiri dari sebuah saklar yang dihubungkan ke ground dan ke mikrokontroler AT89S51.

Ketika sensor dalam keadaan terbuka, kondisi P2.6 adalah high. Namun jika pintu menyentuh saklar, maka P2.6 akan terhubung ke ground, yang menyebabkan kondisi P2.6 akan berubah dari high (1), menjadi low (0). Perubahan kondisi pada P2.6 inilah yang dikenali oleh mikrokontroler sebagai tanda bahwa pintu telah terbuka lebar, maka mikrokontroler akan memerintahkan motor stepper untuk berhenti berputar, sehingga pintu tidak terbuka lebih lebar lagi.


(82)

5.2. Saran

Pintu otomatis bukan hanya proyek untuk mendapatkan gelar diploma III semata tetapi sangat tepat untuk menjaga keamanan bagi setiap penggunanya dimana dapat terhindar dari maling, kebakaran. karena bukan saja berfungsi sebagasi pintu tetapi lemari dan berangkas dimana dapat digunakan untuk menyimpan barang-barang berharga seperti surat-surat penting, uang dan yang lain yang sangat pribadi. Pintu otomatis ini tidak rumit untuk digunakan karena pengguna hanya menghapal/mengingat kode empat digit yang hanya pengguna yang mengetahuinya dan dapat diganti sesuai dengan keinginan penggunanya.


(83)

DAFTAR PUSTAKA

Agfianto, Belajar Mikrokontroler AT89C51/52/55 Teori dan Aplikasi, Edisi Kedua, Penerbit: Gava Media, Yogyakarta, 2004

Andi, Panduan Praktis Teknik Antarmuka dan Pemrograman Mikrokontroler AT89C51, Penerbit PT Elex Media Komputindo, Jakarta 2003

Brey B Barry, The Intel Microprocessors, Edisi Kelima, Penerbit: Erlangga & Prentice Hall, Inc., Jakarta, 2002

Malvino, Albert paul, Prinsip-prinsip Elektronika, Jilid 1 & 2, Edisi Pertama, Penerbit: Salemba Teknika, Jakarta, 2003.

M. G. Joshi, Transducers For Instrumentation, Penerbit: Laxmi Publications, New Delhi, 2002

Widodo, S.Si, Mkom, Interfacing Komputer dan Mikrokontroler, Penerbit: Elex Media Komputindo, Jakarta, 2004

Lampiran A : Rancang Bangun Pintu Otomatis Menggunakan Password Lampiran B : Gambar Rangkaian Keseluruhan


(1)

buka: call kussunk mov a,#11h bk_pnt: mov p1,a acall tunda_stepper rr a Jnb Batas_Buka,Bk_pnt mov p1,#0h tunggu: acall tunda_sejenak tutup: mov p1,a acall tunda_stepper rl a jnb batas_tutup,tutup mov p1,#0h ljmp utama balik_Utama: ljmp Utama Password_Salah: setb alarm Acall tunda clr alarm Acall tunda inc 64h mov a,64h Cjne a,#3,balik_Tbl_Satu4 Alarm_Aktip: setb alarm Acall tunda clr alarm acall tunda mov P0,#0efh mov a,P0

cjne a,#0eeh,Alarm_Aktip ; tombol D mov 64h,#0 call tampilan_awal Balik_Tbl_Satu4: call kussunk Ljmp Tbl_Satu


(2)

tampilan_awal: Ljmp utama ret tunda_Stepper: mov r7,#100 tnd_Stepper: mov r6,#10 djnz r6,$ djnz r7,tnd_Stepper ret delay: mov r7,#5 dly: mov r6,#255 dl: mov r5,#255 djnz r5,$ djnz r6,dl djnz r7,dly ret tunda: mov r7,#5 tnd: mov r6,#150 td: mov r5,#255 djnz r5,$ djnz r6,td djnz r7,tnd ret tunda_Sejenak: mov r7,#10 tnd_Sejenak: mov r6,#255 td_Sejenak: mov r5,#255 djnz r5,$ djnz r6,td_Sejenak djnz r7,tnd_Sejenak ret


(3)

kussunk:

mov sbuf,#Kosong jnb ti,$

clr ti

mov sbuf,#Kosong jnb ti,$

clr ti

mov sbuf,#Kosong jnb ti,$

clr ti

mov sbuf,#Kosong jnb ti,$

clr ti ret end


(4)

BAB 5

KESIMPULAN DAN SARAN

5.1. Kesimpulan

Ketika mikrokontroler memerintahkan motor untuk membuka pintu, mikrokontroler tidak mengetahui apakah pintu sudah terbuka lebar atau belum. Hal yang sama juga terjadi ketika mikrokontroler memerintahkan motor untuk menutup pintu, mikrokontroler tidak mengetahui apakah pintu sudah tertutup rapat atau belum. Karena itu dibutuhkan sebuah sensor yang dapat mengetahui kedua keadaan tersebut.

Dalam hal ini digunakan sebuah sensor buka pintu atau switch control, yang berfungsi untuk mengetahui apakah pintu sudah terbuka lebar atau belum, dan sebuah sensor tutup pintu yang berfungsi untuk mengetahui apakah pintu sudah tertutup rapat atau belum. Rangkaian sensor buka pintu hanya terdiri dari sebuah saklar yang dihubungkan ke ground dan ke mikrokontroler AT89S51.

Ketika sensor dalam keadaan terbuka, kondisi P2.6 adalah high. Namun jika pintu menyentuh saklar, maka P2.6 akan terhubung ke ground, yang menyebabkan kondisi P2.6 akan berubah dari high (1), menjadi low (0). Perubahan kondisi pada P2.6 inilah yang dikenali oleh mikrokontroler sebagai tanda bahwa pintu telah terbuka lebar, maka mikrokontroler akan memerintahkan motor stepper untuk berhenti berputar, sehingga pintu tidak terbuka lebih lebar lagi.


(5)

5.2. Saran

Pintu otomatis bukan hanya proyek untuk mendapatkan gelar diploma III semata tetapi sangat tepat untuk menjaga keamanan bagi setiap penggunanya dimana dapat terhindar dari maling, kebakaran. karena bukan saja berfungsi sebagasi pintu tetapi lemari dan berangkas dimana dapat digunakan untuk menyimpan barang-barang berharga seperti surat-surat penting, uang dan yang lain yang sangat pribadi. Pintu otomatis ini tidak rumit untuk digunakan karena pengguna hanya menghapal/mengingat kode empat digit yang hanya pengguna yang mengetahuinya dan dapat diganti sesuai dengan keinginan penggunanya.


(6)

DAFTAR PUSTAKA

Agfianto, Belajar Mikrokontroler AT89C51/52/55 Teori dan Aplikasi, Edisi Kedua, Penerbit: Gava Media, Yogyakarta, 2004

Andi, Panduan Praktis Teknik Antarmuka dan Pemrograman Mikrokontroler AT89C51, Penerbit PT Elex Media Komputindo, Jakarta 2003

Brey B Barry, The Intel Microprocessors, Edisi Kelima, Penerbit: Erlangga & Prentice Hall, Inc., Jakarta, 2002

Malvino, Albert paul, Prinsip-prinsip Elektronika, Jilid 1 & 2, Edisi Pertama, Penerbit: Salemba Teknika, Jakarta, 2003.

M. G. Joshi, Transducers For Instrumentation, Penerbit: Laxmi Publications, New Delhi, 2002

Widodo, S.Si, Mkom, Interfacing Komputer dan Mikrokontroler, Penerbit: Elex Media Komputindo, Jakarta, 2004

Lampiran A : Rancang Bangun Pintu Otomatis Menggunakan Password Lampiran B : Gambar Rangkaian Keseluruhan

Lampiran C : Gambar PCB