BEL PINTU TANPA SENTUHAN DENGAN SENSOR INFRAMERAH DAN MIKROKONTROLER AT89S52
KELOMPOK C3 EK 2C
2. Khaerul Umam ( 3.32.20.2.12)
3. Muhammad Chevyzidanezra ( 3.32.20.2.16)
4. Nafisa (3.32.20.2.17)
Latar Belakang
Proyek ini dilatarbelakangi karena adanya pandemi yang sedang berlangsung saat ini. Untuk meminimalisir penularan dengan membatasi kontak fisik, Maka dibuatlah bel pintu tanpa sentuhan serta menginovasi bel pada umumnya.
Komponen Masukan dan Luaran
1 Sensor Inframerah
2. Bel
3. Penampil Kristal Cair 16 x 2
PRESENTASI (LINK PRESENTASI)
PROGRAM ASSEMBLY BEL PINTU TANPA SENTUHAN (LINK PROGRAM)
Nama :
1. Arlisa Wulandari
2. Khaerul Umam
3. Muhammad Chevyzidanezra
4. Nafisa
Tanggal membuat : 2 Januari 2022
SENSOR BIT p1.0 ;deklarasian pin
BUZZER BIT p3.0
RS BIT P2.5
RW BIT P2.6
EN BIT P2.7
LCD_DATA_PORT EQU P0 ; pengalamatan variabel pada port 0
;=====================================================
ORG 0H ; alamat memori awal 0h
;-----------------------------------------------------------------------------------------------
; SENSOR INFRAMERAH + BUZZER
;Program bel ini berjalan menggunakan program Sensor+Buzzer. Program ini berjalan
;ketika objek dibaca sensor. Sensor ini akan menginable buzzer untuk menggerakan bel tersabut
;-----------------------------------------------------------------------------------------------
restart:
; akan menginisiasi pin yang telah disediakan yaitu pin sensor dan buzzer
setb SENSOR ; set pin sensor sebagai input
clr BUZZER ; matikan buzzer terlebih dahulu
idle: jnb SENSOR, idle ;Idle ketika program dijalankan maka kondisi buzzer dan sensor dalam keadaan idle sensor dan buzzer belum membaca.
;Untuk menyalakan buzzer maka pin buzzer yaitu pin P3.0 akan teriset 1 jika sensor sudah membaca gerakan objek
object: setb BUZZER;mengeset pin buzzer sebagai input
jb SENSOR, ;selama masih detect objek menyalakan buzzer
object;Ketika sensor infrared mendeteksi objek dengan cara memantulkan sinyal maka sensor akan menerima sinyal tersebut.
;Lalu sensor akan membaca pantulan dan akan menginable pin pada buzzer
cpl BUZZER ;mengkomplemen isi akumulator
;-------------------------------------------------------------------------------
; PORT INTERFACING LCD DALAM MODE 8 BIT
;-------------------------------------------------------------------------------
LCD_INITIAL:
; Untuk mendikler komponen yang ada di ROM dan akan dipindahkan ke variable double r.
;Komponen ini ada dibagian paling bawah
MOV DPTR, #CMD ;untuk menampilkan tulisan yang kita simpan di ROM dengan file CMD
LOOP_INIT: ;untuk membaca komponen yang kita punya di "CMD"dari mulai inisiasi sampai mendisplay tampilan
MOVC A,@A+DPTR ; Pembacaan Karakter keluaran LCD
JZ NEXT ; jika sudah selesai semua tulisan pindah ke next
ACALL LCD_WRITE_CMD ;untuk membaca LCD di komponen CMD tadi
ACALL DELAY_LCD ;untuk memberi waktu delay pada LCD
CLR A ;clear akumulator agar variable A dapat digunakan Kembali
INC DPTR ;Untuk membaca komponen step by step yang akan diinisiasi
SJMP LOOP_INIT ; untuk memulai perulangan kabel loop
;-------------------------------------------------------------------------------
; MENGATUR KURSOR DAN MENULIS DATA KE LCD
;-------------------------------------------------------------------------------
; TEKS PERTAMA
NEXT:
CLR A ;melakukan clear dari akumulator agar tidak ada sisa nilai dari sebelumnya
MOV A,#80H ; untuk memindahkan cursor pada LCD
ACALL LCD_WRITE_CMD ;untuk membaca LCD di komponen CMD tadi
ACALL DELAY_LCD ;untuk memberi waktu delay LCD
CLR A ; untuk menampilkan jumlah detik pada LCD
MOV DPTR, #KEEP ;untuk menampilkan tulisan yang kita simpan di ROM dengan file keep
LOOP_NEXT:
MOVC A,@A+DPTR ; untuk meletakan data ROM ke akumulator
JZ NEXT2 ;kalau sudah selesai semua tulisan pindah ke next 2
ACALL LCD_WRITE_DATA ;membaca LCD di komponen write data
ACALL DELAY_LCD ;memberi waktu delay pada LCD
CLR A ;clear akumulator untuk karakter berikutnya
INC DPTR ;memasukan karakter selanjutnya
SJMP LOOP_NEXT ;loop sampai karakter selesai
; NOMOR
NEXT2:
CLR A ;clear akumulator untuk karakter berikutnya
MOV A,#0C2H ;instruksi comen pengaturan LCD untuk memindahkan kursor kepada baris ke 2
ACALL LCD_WRITE_CMD; membaca LCD di komponen CMD tadi
ACALL DELAY_LCD; memberi waktu delay LCD
CLR A ;menampilkan jumlah detik pada LCD
MOV DPTR, #NUM ; untuk menampilkan tulisan yang kita simpan di ROM dengan file NUM
MOV R1, #1 ;angka yang ingin ditampilkan 30,pertama tama disimpan di 2 register, yaitu R1 dan R0
MOV R0, #0 ;angka yang ingin ditampilkan 30,pertama tama disimpan di 2 register, yaitu R1 dan R0
PULUHAN:
MOV A, 1 ;mengecek R1 apakah memory R1 bernilai 0
JZ NEXT3 ;kalau sudah selesai,semua tulisan pindah ke next 3
MOV R0, #9 ;akan dilakukan pengurangan R0 mejadi 9 dan akan decrement pada R1
DEC R1 ;menunjukan pengurangan angka dari 30 menjadi 29 dan untuk puluhan - puluhan lainnya
SATUAN:
MOV A, R1 ;mengecek R1 apakah memori R1 bernilai 0
MOVC A, @A+DPTR ;meletakan data ROM ke akumulator
ACALL LCD_WRITE_DATA ; membaca LCD di komponen write data
ACALL DELAY_LCD ;memberi waktu delay pada LCD
MOV A, R0 ;mengecek R0 apakah memori R1 bernilai 0
MOVC A, @A+DPTR ;meletakan data ROM ke akumulator
ACALL LCD_WRITE_DATA ;membaca LCD di komponen write data
ACALL DELAY_LCD ;memberi waktu delay pada LCD
ACALL DELAY ;memberi delay
MOV A,#0C2H ; balikin ke tengah
ACALL LCD_WRITE_CMD;membaca LCD di komponen CMD tadi
ACALL DELAY_LCD;memberi waktu delay pada LCD
MOV A, 0 ; setiap R0 udah 0, puluhannya diganti
JZ PULUHAN;kalau sudah selesai,semua vtulisan pindah ke puluhan
DEC R0 ; akan ngecek R0 nya dulu sebelUm di decrement lagi
SJMP SATUAN ;kembali ke program awal satuan
; TEKS SELESAI
NEXT3:
MOV A,#01H ; akan menyelesaikan LCD dengan cara MOV A,#01H
ACALL LCD_WRITE_CMD ;membaca LCD di komponen CMD tadi
ACALL DELAY ;memberi waktu delay
MOV A,#80H ;SET TO TEXT TO MID
ACALL LCD_WRITE_CMD ;membaca LCD di komponen CMD tadi
ACALL DELAY_LCD; memberi waktu delay pada LCD
CLR A ;menampilkan jumlah detik pada LCD
MOV DPTR, #CAUTION ;menampilkan tulisan yang kita simpan di ROM dengan file caution
LOOP_NEXT3:
MOVC A,@A+DPTR ;meletakan data ROM ke akumulator
JZ NEXT4 ;jika sudah selesai,tulisan pindah ke next 4
ACALL LCD_WRITE_DATA ;membaca LCD di komponen CMD tadi
ACALL DELAY_LCD ;memberi waktu delay pada LCD
CLR A ;clear akumulator untuk karakter berikutnya
INC DPTR ; memasukan karakter berikutnya
SJMP LOOP_NEXT3 ; loop sampai karakter selesai
NEXT4:
acall DELAY ;memberi waktu delay LCD
acall DELAY ;memberi waktu delay LCD
mov A,#01H ;akan mengclearkan LCD dengan cara mov A,#01H
acall LCD_WRITE_CMD ;membaca LCD di komponen CMD tadi
acall DELAY ;memberi waktu delay
mov A,#08H ; turn off lcd; akan mengclearkan LCD dengan cara MOV A,#08H
acall LCD_WRITE_CMD ;membaca LCD di komponen CMD tadi
acall DELAY_LCD ;memberi waktu delay
ljmp restart ;secara tidak langsung kembali ke restart
;--------------------------------------------------------------------------------
; PERINTAH UNTUK MENGINISIALISASI LCD
;--------------------------------------------------------------------------------
LCD_WRITE_CMD:
MOV LCD_DATA_PORT,A; memindahkan data dari data port ke A
CLR RS;mereset RS
CLR RW;mereset RW
SETB EN; mengeset EN
ACALL DELAY_LCD;memberi delay pada LCD
CLR EN; mereset EN
RET;mengakhiri sub program
;--------------------------------------------------------------------------------
; PERINTAH UNTUK MENULIS DATA KE LCD
;--------------------------------------------------------------------------------
LCD_WRITE_DATA:
MOV LCD_DATA_PORT,A;memindahkan data dari data port ke A
SETB RS; mereset RS
CLR RW; ,mereset EN
SETB EN ;mengeset EN
ACALL DELAY_LCD; memberi delay pada LCD
CLR EN; mereset EN
RET; mengakhiri sub program
;-------------------------------------------------------------------------------
; PROGRAM TUNDA
;-------------------------------------------------------------------------------
DELAY:
MOV R5, #20H;memindahkan dengan segera 20H ke R5
MOV TMOD, #01h;memindahkan dengan segera 01h ke TMOD
LOOP: MOV TH0, #3CH ; 50000 counts on timer; memindahkan dengan segera 3CH ke THO
MOV TL0, #0B1H; memindahkan dengan segera 0B1H ke TLO
SETB TR0; mengeset TRO
HERE: JNB TF0, HERE ; mengeset TFO ketika data 0
CLR TR0;mereset TRO
CLR TF0; mereset TFO
DJNZ R5, LOOP ; mengurangi register sampai 0
RET ; mengakhiri sub program
;------------------------------------------------------------------------------
; TUNDA LCD
;------------------------------------------------------------------------------
DELAY_LCD:
MOV R7,#20 ;memindahkan dengan segera 20 ke R7
DJNZ R7, $
;mengurangi register sampai 0
RET;mengakhiri sub program
;=====================================================
ORG 300H ; melanjutkan alamat memori 300H
;DB adalah Directive yang dipakai untuk membentuk teks maupun tabel
CMD: DB 38H,0EH,06H,81H,0H ;
KEEP: DB 'SELAMAT DATANG!', 0h
NUM: DB '0123456789'
CAUTION: DB 'SILAHKAN TUNGGU',0H
END
VIDEO PROYEK (LINK VIDEO)
PENUTUP
Kesimpulan :
Untuk membuat bel pintu tanpa sentuhan
menggunakan output berupa LCD dan BEL dibutuhkan komponen utama yaitu sensor inframerah sebagai masukan dan
mikrokontroler.
Sensor inframerah terbukti sebagai sensor
tangkapan berupa bayangan sebagai pendeteksi kedatangan tamu, Ketika sensor
menangkap bayangan maka bel dan LCD akan aktif.
Komentar
Posting Komentar