POMPA AIR OTOMATIS

by Juhadi Kulon Progo , at 22.25.00
POMPA AIR OTOMATIS - Hallo sahabatku, Elektronika Analog dan Digital, Kita jumpa lagi di hari ini, . Pada Artikel ini. saya akan coba bagikan sebuah artikel dengan judul POMPA AIR OTOMATIS, kami telah mempersiapkan artikel ini sepesial buat anda untuk sekedar berbagi saja ya.... siapa tau didalam isi artikel in bermanfaat buat anda. Kami berharap isi postingan Artikel Tutorial, yang kami tulis ini bisa anda pahami dengan mudah. Langsung aja yaa...kita mulai, Dan selamat membaca.

Baca juga


Prinsip kerja alat ini merupakan bakal melakukan proses pengaktifan dan penonaktifan keluaran pompa air yang berjumlah 3 titik. Prosesnya yaitu dengan petunjuk menyimpan waktu aktif dan waktu tak aktif masing – masing pompa air ke dalam RAM internal IC pewaktu RTC. IC pewaktu ini dipakai untuk menghasilkan perubahan waktu yang akurat, apabila ingin membikin sendiri sistem pewaktu menggunakan_dengan mikrokontroler sebetulnya bisa dilakukan. Bakal tetapi timer yang dihasilkan bakal berkurang akurasinya, itu dikarenakan sistem pewaktu mikrokontroler bakal terpengaruh oleh subrutin – subrutin bagai delay (waktu tunda) dan pemanggilan ke subrutin lainnya bagai menampilkan data ke LCD dan proses scanning tombol (push button) ataupun pada waktu pengaktifan pompa air. Oleh itu dikarenakan itu pada alat ini memerlukan IC pewaktu yang bakal bekerja sendiri sehabis kualitas waktu diatur melewati program, dan otomatis data waktunya bakal terperbaharui sesuai standar pewaktu.

Mikrokontroler AT89S52 dipakai untuk mengambil data pada RTC dengan petunjuk bagai mengakses memori eksternal, variable waktu jam, menit, dan yang lainnya telah otomatis tersimpan pada alamat RAM RTC DS12C887. Kualitas ini bisa sewaktu – waktu diambil oleh mikrokontroler, pasti saja mengambilnya dengan-cara bergantian pada setiap alamat RAM internal RTC dan pada alamat RAM berikutnya. Setiap 1 byte RAM internal RTC mewakili satu waktu, misal jam memerlukan 1 byte, menit 1 byte, dan detik 1 byte. 

Memori RTC yang dipakai untuk menyimpan waktu standar tak tidak sedikit yaitu 15 byte untuk sistem pewaktu dan kontrol register, namun kenyataannya sisanya yaitu 113 byte bisa dipakai dengan-cara bebas. Sisa ruang memori berikut yang dipakai untuk menyimpan data waktu aktif dan non aktif ke-tiga pompa air. 

Data waktu ini disimpan pada RTC supaya tak hilang meskipun catu daya dimatikan itu dikarenakan di dalam IC RTC ini tersedia baterai yang menurut datasheet baterai tersebut bisa bersi kukuh hinggajangka waktu 10 tahun. Apabila data waktu aktif dan non aktif pompa disimpan pada RAM internal mikrokontroler, maka pada waktu catu daya dimatikan isi kualitas RAM internal mikrokontroler bakal random jadi data waktunya tak akurat.
Mikrokontroler juga yang membaca pada waktu scanning 4 buah tombol masukan yang dibutuhkan pada waktu pengaturan jam kalender, dan pada pengaturan waktu aktif dan non aktif pompa air. 

Proses scanning tombol ini bakal dilakukan dengan-cara bergantian dari 4 buah tombol masukan, namun prosesnya scanning amatlah cepat sekali yaitu berkisar 1 – 2 µs pada tiap tombolnya jadi mikrokontroler bisa dengan cepat pula membedakan tombol mana yang lebih dahulu ditekan. Petunjuk membedakan tombol yang ditekan yaitu mendeteksi port tombol yang berlogika ‘0’, namun kenyataannya yang tak ditekan bakal berlogika ‘1’. Keluaran port mikrokontroler dipakai juga untuk mengaktifkan / menonaktifkan 3 buah pompa air, port yang dipakai berjumlah 3 buah. 

Port mikrokontroler ini tak bisa langsung mengendalikan relai yang memerlukan catu daya 12 volt dan arus berkisar 35 mA, jadi dipakai IC ULN2003 yang dihubungkan ke keluaran mikrokontroler. Menurut datasheet IC ULN2003 bisa bekerja maksimal hinggategangan 50 volt, namun kenyataannya penyerapan arus pada setiap keluarannya mencapai 500 mA. IC ini dikontrol melewati kaki masukannya, dan standar pengontrolannya yaitu 5 volt TTL jadi bisa langsung dihubungkan dengan port mikrokontroler yang juga berstandar TTL 5 volt. Namun kenyataannya untuk sistem penampil LCD menggunakan_dengan LCD tipe LMB162AFC yang mempunyai 2 baris dan setiap barisnya bisa menampilkan 16 karakter bisa juga tak jarang disebut LCD 2 x 16. Pengambilan data melewati port mikrokontroler menggunakan_dengan sistem data 8 bit, dan memerlukan 2 buah port tambahan untuk kontrol enable dan register select LCD jadi keseluruhan port untuk mengendalikan LCD merupakan 10 port.

Berikut ini merupakan hasil perancangan sistem Pewaktu Pompa Air Otomatis Berbasis Mikrokontroler AT89S52 yang bisa dilihat pada Foto 4.1.



Cara setting

Cara Setting pompa




Rangkaian Keseluruhan





Listing Program


;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; Program Timer Pompa
; RTC DS 12C887
; Mikrokontroler AT89S52
; LCD M1632
; Push Button = 4
; Output Relai = 3
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
K_next bit p3.1
K_menu bit p3.0
K_up bit p3.3
K_down bit p3.2

LCD_rs bit p1.1
LCD_cs bit p1.0

RTC_cs bit p3.5

Pompa_1 bit p2.0
Pompa_2 bit p2.1
Pompa_3 bit p2.2

jam_rtc equ 20h
menit_rtc equ 21h

Jam_pompa1_on equ 22h
menit_pompa1_on equ 23h
jam_pompa1_off equ 24h
menit_pompa1_off equ 25h

Jam_pompa2_on equ 26h
menit_pompa2_on equ 27h
jam_pompa2_off equ 28h
menit_pompa2_off equ 29h

Jam_pompa3_on equ 2ah
menit_pompa3_on equ 2bh
jam_pompa3_off equ 2ch
menit_pompa3_off equ 2dh

Del1 equ 60h
Del2 equ 61h
Tmp equ 63h
Dech equ 66h
DecL equ 67h
Almcount equ 68h
Tmp1 equ 6ch
Detik_lama equ 6dh
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; Memori RTC
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Secon equ 0
Minute equ 2
Hour equ 4
Day_week equ 6
Day_month equ 7
Month equ 8
Year equ 9
Reg_a equ 10
Reg_b equ 11

menit_pompa_1_on equ 20
jam_pompa_1_on equ 21
menit_pompa_1_off equ 22
jam_pompa_1_off equ 23

menit_pompa_2_on equ 24
jam_pompa_2_on equ 25
menit_pompa_2_off equ 26
jam_pompa_2_off equ 27

menit_pompa_3_on equ 28h
jam_pompa_3_on equ 29h
menit_pompa_3_off equ 2ah
jam_pompa_3_off equ 2bh

;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; Program utama
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
org 0h

Mulai:
mov p2,#00h
call inisialisasi_lcd
call inisialisasi_rtc

mov dptr,#judul
call tulis_lcd
call tunda_long
call tunda_long
call tunda_long
mov p2,#00h

Ulang:
mov detik_lama,a
call display
Dtk:
mov dptr,#secon
clr rtc_cs
movx a,@dptr
setb rtc_cs
cjne a,detik_lama,ulang

scan_1:
call scan_pompa_1_on
scan_2:
call scan_pompa_1_off
scan_3:
call scan_pompa_2_on
scan_4:
call scan_pompa_2_off
scan_5:
call scan_pompa_3_on
scan_6:
call scan_pompa_3_off

mov detik_lama,a
call display

jb k_menu,dtk
call setting_pilihan
jmp ulang
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; Tampilan utama LCD
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Display:
mov a,#80h
call write_inst
T_hari:
mov dptr,#day_week
clr rtc_cs
movx a,@dptr
setb rtc_cs
mov dptr,#hari
dec a
mov b,#6
mul ab
mov tmp,#6
mov tmp1,a
T_hari_2:
mov a,tmp1
movc a,@a+dptr
call write_data
inc dptr
djnz tmp,T_hari_2
mov a,#20h
call write_data
mov a,#088h
call write_inst
T_jam:
mov dptr,#hour
call ambil_data_rtc
mov a,#’:’
call write_data
T_menit:
mov dptr,#minute
call ambil_data_rtc
mov a,#’:’
call write_data
T_detik:
mov dptr,#secon
call ambil_data_rtc
T_tanggal:
mov a,#0c0h
call write_inst
mov dptr,#day_month
call ambil_data_rtc
mov a,#’ ‘
call write_data
T_bulan:
mov dptr,#month
clr rtc_cs
movx a,@dptr
setb rtc_cs
mov dptr,#bulan
dec a
mov b,#8
mul ab
mov tmp,#8
mov tmp1,a
T_bulan_2:
mov a,tmp1
movc a,@a+dptr
call write_data
inc dptr
djnz tmp,T_bulan_2
mov a,#20h
call write_data
mov a,#0ceh
call write_inst
T_tahun:
mov dptr,#year
call ambil_data_rtc
mov p0,#0ffh
exit0:
ret
disp_set:
mov a,#0cah
call write_inst
call ambil_data_rtc
ret
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; Scan waktu pompa
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
scan_pompa_1_on:
mov dptr,#hour
call ambil_rtc_desimal
mov jam_rtc,tmp
mov dptr,#minute
call ambil_rtc_desimal
mov menit_rtc,tmp
mov dptr,#jam_pompa_1_on
call ambil_rtc_desimal
mov jam_pompa1_on,tmp
mov dptr,#menit_pompa_1_on
call ambil_rtc_desimal
mov menit_pompa1_on,tmp

scan_jam_pompa1_on:
clr a
mov a,jam_rtc
cjne a,jam_pompa1_on,keluar_1a_on
call scan_menit_pompa1_on
keluar_1a_on:
ret
scan_menit_pompa1_on:
clr a
mov a,menit_rtc
cjne a,menit_pompa1_on,keluar_1b_on
setb pompa_1
ret
keluar_1b_on:
ret
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
scan_pompa_1_off:
mov dptr,#jam_pompa_1_off
call ambil_rtc_desimal
mov jam_pompa1_off,tmp
mov dptr,#menit_pompa_1_off
call ambil_rtc_desimal
mov menit_pompa1_off,tmp

scan_jam_pompa1_off:
clr a
mov a,jam_rtc
cjne a,jam_pompa1_off,keluar_1a_off
call scan_menit_pompa1_off
keluar_1a_off:
ret
scan_menit_pompa1_off:
clr a
mov a,menit_rtc
cjne a,menit_pompa1_off,keluar_2b_off
clr pompa_1
ret
keluar_2b_off:
ret
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
scan_pompa_2_on:
mov dptr,#jam_pompa_2_on
call ambil_rtc_desimal
mov jam_pompa2_on,tmp
mov dptr,#menit_pompa_2_on
call ambil_rtc_desimal
mov menit_pompa2_on,tmp

scan_jam_pompa2_on:
clr a
mov a,jam_rtc
cjne a,jam_pompa2_on,keluar_2a_on
call scan_menit_pompa2_on
keluar_2a_on:
ret
scan_menit_pompa2_on:
clr a
mov a,menit_rtc
cjne a,menit_pompa2_on,keluar_2b_on
setb pompa_2
ret
keluar_2b_on:
ret
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
scan_pompa_2_off:
mov dptr,#jam_pompa_2_off
call ambil_rtc_desimal
mov jam_pompa2_off,tmp
mov dptr,#menit_pompa_2_off
call ambil_rtc_desimal
mov menit_pompa2_off,tmp

scan_jam_pompa2_off:
clr a
mov a,jam_rtc
cjne a,jam_pompa2_off,keluar_2a_off
call scan_menit_pompa2_off
keluar_2a_off:
ret
scan_menit_pompa2_off:
clr a
mov a,menit_rtc
cjne a,menit_pompa2_off,keluar_2c_off
clr pompa_2
ret
keluar_2c_off:
ret
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
scan_pompa_3_on:
mov dptr,#jam_pompa_3_on
call ambil_rtc_desimal
mov jam_pompa3_on,tmp
mov dptr,#menit_pompa_3_on
call ambil_rtc_desimal
mov menit_pompa3_on,tmp

scan_jam_pompa3_on:
clr a
mov a,jam_rtc
cjne a,jam_pompa3_on,keluar_3a_on
call scan_menit_pompa3_on
keluar_3a_on:
ret
scan_menit_pompa3_on:
clr a
mov a,menit_rtc
cjne a,menit_pompa3_on,keluar_3b_on
setb pompa_3
ret
keluar_3b_on:
ret
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
scan_pompa_3_off:
mov dptr,#jam_pompa_3_off
call ambil_rtc_desimal
mov jam_pompa3_off,tmp
mov dptr,#menit_pompa_3_off
call ambil_rtc_desimal
mov menit_pompa3_off,tmp

scan_jam_pompa3_off:
clr a
mov a,jam_rtc
cjne a,jam_pompa3_off,keluar_3a_off
call scan_menit_pompa3_off
keluar_3a_off:
ret
scan_menit_pompa3_off:
clr a
mov a,menit_rtc
cjne a,menit_pompa3_off,keluar_3c_off
clr pompa_3
ret
keluar_3c_off:
ret
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; Settingan tombol pilihan
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Setting_pilihan:
mov dptr,#rtc0
call tulis_lcd
pilihan_set_jam:
mov tmp1,#50
jb k_up,pilihan_set_timer
bounce_p1a:
jnb k_up,$
djnz tmp1,bounce_p1a
call tunda_long
call setting_1
ret
pilihan_set_timer:
mov tmp1,#50
jb k_down,keluar_pilihan
bounce_p1b:
jnb k_down,$
djnz tmp1,bounce_p1b
call tunda_long
call setting_timer
ret
keluar_pilihan:
jb k_next,pilihan_set_jam
jmp setting_7
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; Settingan tombol timer
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
setting_timer:
mov almcount,#0
mov dptr,#pom1
call tulis_lcd
mov dptr,#jam_pompa_1_on
mov tmp1,#50
bounce_t1a:
jnb k_menu,$
djnz tmp1,bounce_t1a
Setting_t1a:
call disp_set
cekset_t1a:
jb k_next,cekset_t2a
inc almcount
jnb k_next,$
jmp setting_t2
cekset_t2a:
jb k_up,cekset_t3a
mov p0,#0ffh
call up_jam
jmp setting_t1a
cekset_t3a:
jb k_down,cekset_t4a
mov p0,#0ffh
call down_jam
jmp setting_t1a
cekset_t4a:
mov tmp1,#0
bounce_t1b:
jb k_next,setting_t1a
djnz tmp1,bounce_t1b
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Setting_t2:
jnb k_next,$
mov dptr,#pom2
call tulis_lcd
mov dptr,#menit_pompa_1_on
Setting_t2a:
call disp_set
cekset_t1b:
jb k_next,cekset_t2b
inc almcount
jnb k_next,$
jmp setting_t3
cekset_t2b:
jb k_up,cekset_t3b
mov p0,#0ffh
call up_menit
jmp setting_t2a
cekset_t3b:
jb k_down,setting_t2a
mov p0,#0ffh
call down_menit
jmp setting_t2a
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Setting_t3:
jnb k_next,$
mov dptr,#pom3
call tulis_lcd
mov dptr,#jam_pompa_1_off
Setting_t3a:
call disp_set
cekset_t1c:
jb k_next,cekset_t2c
inc almcount
jnb k_next,$
jmp setting_t4
cekset_t2c:
jb k_up,cekset_t3c
mov p0,#0ffh
call up_jam
jmp setting_t3a
cekset_t3c:
jb k_down,setting_t3a
mov p0,#0ffh
call down_jam
jmp setting_t3a
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Setting_t4:
jnb k_next,$
mov dptr,#pom4
call tulis_lcd
mov dptr,#menit_pompa_1_off
Setting_t4a:
call disp_set
cekset_t1d:
jb k_next,cekset_t2d
inc almcount
jnb k_next,$
jmp setting_t5
cekset_t2d:
jb k_up,cekset_t3d
mov p0,#0ffh
call up_menit
jmp setting_t4a
cekset_t3d:
jb k_down,setting_t4a
mov p0,#0ffh
call down_menit
jmp setting_t4a
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Setting_t5:
jnb k_next,$
mov dptr,#pom5
call tulis_lcd
mov dptr,#jam_pompa_2_on
Setting_t5a:
call disp_set
cekset_t1e:
jb k_next,cekset_t2e
inc almcount
jnb k_next,$
jmp setting_t6
cekset_t2e:
jb k_up,cekset_t3e
mov p0,#0ffh
call up_jam
jmp setting_t5a
cekset_t3e:
jb k_down,setting_t5a
mov p0,#0ffh
call down_jam
jmp setting_t5a
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Setting_t6:
jnb k_next,$
mov dptr,#pom6
call tulis_lcd
mov dptr,#menit_pompa_2_on
Setting_t6a:
call disp_set
cekset_t1f:
jb k_next,cekset_t2f
inc almcount
jnb k_next,$
jmp setting_t7
cekset_t2f:
jb k_up,cekset_t3f
mov p0,#0ffh
call up_menit
jmp setting_t6a
cekset_t3f:
jb k_down,setting_t6a
mov p0,#0ffh
call down_menit
jmp setting_t6a
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Setting_t7:
jnb k_next,$
mov dptr,#pom7
call tulis_lcd
mov dptr,#jam_pompa_2_off
Setting_t7a:
call disp_set
cekset_t1g:
jb k_next,cekset_t2g
inc almcount
jnb k_next,$
jmp setting_t8
cekset_t2g:
jb k_up,cekset_t3g
mov p0,#0ffh
call up_jam
jmp setting_t7a
cekset_t3g:
jb k_down,setting_t7a
mov p0,#0ffh
call down_jam
jmp setting_t7a
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Setting_t8:
jnb k_next,$
mov dptr,#pom8
call tulis_lcd
mov dptr,#menit_pompa_2_off
Setting_t8a:
call disp_set
cekset_t1h:
jb k_next,cekset_t2h
inc almcount
jnb k_next,$
jmp setting_t9
cekset_t2h:
jb k_up,cekset_t3h
mov p0,#0ffh
call up_menit
jmp setting_t8a
cekset_t3h:
jb k_down,setting_t8a
mov p0,#0ffh
call down_menit
jmp setting_t8a
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Setting_t9:
jnb k_next,$
mov dptr,#pom9
call tulis_lcd
mov dptr,#jam_pompa_3_on
Setting_t9a:
call disp_set
cekset_t1i:
jb k_next,cekset_t2i
inc almcount
jnb k_next,$
jmp setting_ta
cekset_t2i:
jb k_up,cekset_t3i
mov p0,#0ffh
call up_jam
jmp setting_t9a
cekset_t3i:
jb k_down,setting_t9a
mov p0,#0ffh
call down_jam
jmp setting_t9a
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Setting_ta:
jnb k_next,$
mov dptr,#poma
call tulis_lcd
mov dptr,#menit_pompa_3_on
Setting_taa:
call disp_set
cekset_t1j:
jb k_next,cekset_t2j
inc almcount
jnb k_next,$
jmp setting_tb
cekset_t2j:
jb k_up,cekset_t3j
mov p0,#0ffh
call up_menit
jmp setting_taa
cekset_t3j:
jb k_down,setting_taa
mov p0,#0ffh
call down_menit
jmp setting_taa
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Setting_tb:
jnb k_next,$
mov dptr,#pomb
call tulis_lcd
mov dptr,#jam_pompa_3_off
Setting_tba:
call disp_set
cekset_t1k:
jb k_next,cekset_t2k
inc almcount
jnb k_next,$
jmp setting_tc
cekset_t2k:
jb k_up,cekset_t3k
mov p0,#0ffh
call up_jam
jmp setting_tba
cekset_t3k:
jb k_down,setting_tba
mov p0,#0ffh
call down_jam
jmp setting_tba
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Setting_tc:
jnb k_next,$
mov dptr,#pomc
call tulis_lcd
mov dptr,#menit_pompa_3_off
Setting_tca:
call disp_set
cekset_t1l:
jb k_next,cekset_t2l
inc almcount
jnb k_next,$
jmp setting_7
cekset_t2l:
jb k_up,cekset_t3l
mov p0,#0ffh
call up_menit
jmp setting_tca
cekset_t3l:
jb k_down,setting_tca
mov p0,#0ffh
call down_menit
jmp setting_tca
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; Settingan tombol jam dan kalender
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Setting_1:
mov almcount,#0
mov dptr,#rtc1
call tulis_lcd
mov dptr,#hour
mov tmp1,#50
bounce_1a:
jnb k_menu,$
djnz tmp1,bounce_1a
Setting_1a:
call disp_set
cekset_1a:
jb k_next,cekset_2a
inc almcount
jnb k_next,$
jmp setting_2
cekset_2a:
jb k_up,cekset_3a
mov p0,#0ffh
call up_jam
jmp setting_1a
cekset_3a:
jb k_down,cekset_4a
mov p0,#0ffh
call down_jam
jmp setting_1a
cekset_4a:
mov tmp1,#0
bounce_1b:
jb k_next,setting_1a
djnz tmp1,bounce_1b
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Setting_2:
jnb k_next,$
mov dptr,#rtc2
call tulis_lcd
mov dptr,#minute
Setting_2a:
call disp_set
cekset_1b:
jb k_next,cekset_2b
inc almcount
jnb k_next,$
jmp setting_3
cekset_2b:
jb k_up,cekset_3b
mov p0,#0ffh
call up_menit
jmp setting_2a
cekset_3b:
jb k_down,setting_2a
mov p0,#0ffh
call down_menit
jmp setting_2a
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Setting_3:
jnb k_next,$
mov dptr,#rtc3
call tulis_lcd
setting_3a:
mov a,#0c8h
call write_inst
mov dptr,#day_week
clr rtc_cs
movx a,@dptr
setb rtc_cs
mov dptr,#hari
dec a
mov b,#6
mul ab
mov tmp,#6
mov tmp1,a
Setting_3b:
mov a,tmp1
movc a,@a+dptr
call write_data
inc dptr
djnz tmp,setting_3b
cekset_1c:
mov dptr,#day_week
jb k_next,cekset_2c
inc almcount
jnb k_next,$
jmp setting_4
cekset_2c:
jb k_up,cekset_3c
mov p0,#0ffh
call up_day
jmp setting_3a
cekset_3c:
jb k_down,cekset_1c
mov p0,#0ffh
call down_day
jmp setting_3a
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Setting_4:
jnb k_next,$
mov dptr,#rtc4
call tulis_lcd
mov dptr,#day_month
Setting_4a:
call disp_set
cekset_1d:
jb k_next,cekset_2d
inc almcount
jnb k_next,$
jmp setting_5
cekset_2d:
jb k_up,cekset_3d
mov p0,#0ffh
call up_day_month
jmp setting_4a
cekset_3d:
jb k_down,setting_4a
mov p0,#0ffh
call down_day_month
jmp setting_4a
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Setting_5:
jnb k_next,$
mov dptr,#rtc5
call tulis_lcd
setting_5a:
mov a,#0c7h
call write_inst
mov dptr,#month
clr rtc_cs
movx a,@dptr
setb rtc_cs
mov dptr,#bulan
dec a
mov b,#8
mul ab
mov tmp,#8
mov tmp1,a
Setting_5b:
mov a,tmp1
movc a,@a+dptr
call write_data
inc dptr
djnz tmp,setting_5b
cekset_1e:
mov dptr,#month
jb k_next,cekset_2e
inc almcount
jnb k_next,$
jmp setting_6
cekset_2e:
jb k_up,cekset_3e
mov p0,#0ffh
call up_month
jmp setting_5a
cekset_3e:
jb k_down,cekset_1e
mov p0,#0ffh
call down_month
jmp setting_5a
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Setting_6:
jnb k_next,$
mov dptr,#rtc6
call tulis_lcd
mov dptr,#year
Setting_6a:
mov a,#0cch
call write_inst
call ambil_data_rtc
cekset_1f:
jb k_next,cekset_2f
inc almcount
jnb k_next,$
jmp setting_7
cekset_2f:
jb k_up,cekset_3f
mov p0,#0ffh
call up_year
jmp setting_6a
cekset_3f:
jb k_down,setting_6a
mov p0,#0ffh
call down_year
jmp setting_6a
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Setting_7:
mov tmp1,#25
bounce_7a:
jnb k_next,$
djnz tmp1,bounce_7a
bounce_7b:
jnb k_menu,$
djnz tmp1,bounce_7b
mov dptr,#waktu
call tulis_lcd
ret
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; Baca rtc up rtc down dan tulis rtc
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Baca_rtc_up:
mov r7,#25
Bounce_up:
jb k_up,exit
djnz r7,bounce_up
baca_up:
clr rtc_cs
movx a,@dptr
setb rtc_cs
inc a
ret
Baca_rtc_down:
mov r7,#25
baca_down:
jb k_down,exit
djnz r7,baca_down
clr rtc_cs
movx a,@dptr
setb rtc_cs
dec a
ret
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Tulis_rtc:
clr rtc_cs
movx @dptr,a
setb rtc_cs
Tunggu_tombol_dilepas:
ca:
mov r7,#25
cc:
jnb k_up,ca
jnb k_down,ca
djnz r7,cc
exit:
ret
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; Rutin tambah & kurangi menit
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Up_menit:
call baca_rtc_up
cjne a,#59,cek_59
cek_59:
jc belum_59
clr a
belum_59:
jmp tulis_rtc

Down_menit:
call baca_rtc_down
cjne a,#0ffh,m_255
mov a,#59
m_255:
jmp tulis_rtc
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; Rutin tambah & kurangi jam
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Up_jam:
call baca_rtc_up
cjne a,#24,cek_24
cek_24:
jc belum_24
clr a
belum_24:
jmp tulis_rtc

Down_jam:
call baca_rtc_down
cjne a,#0ffh,j_255
mov a,#23
j_255:
jmp tulis_rtc
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; Rutin tambah & kurangi hari dlm seminggu
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Up_day:
call baca_rtc_up
cjne a,#8,cek_7
cek_7:
jc belum_7
clr a
inc a
belum_7:
jmp tulis_rtc

Down_day:
call baca_rtc_down
jnz bukan_0_day
mov a,#7
bukan_0_day:
jmp tulis_rtc
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; Rutin tambah & kurangi hari dlm sebulan
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Up_day_month:
call baca_rtc_up
cjne a,#32,cek_31
cek_31:
jc belum_31
clr a
inc a
belum_31:
jmp tulis_rtc

Down_day_month:
call baca_rtc_down
jnz bukan_0_daymonth
mov a,#31
bukan_0_daymonth:
jmp tulis_rtc
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; Rutin tambah & kurangi bulan
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Up_month:
call baca_rtc_up
cjne a,#13,cek_12
cek_12:
jc belum_12
clr a
inc a
belum_12:
jmp tulis_rtc

Down_month:
call baca_rtc_down
jnz bukan_0_month
mov a,#12
bukan_0_month:
jmp tulis_rtc
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; Rutin tambah & kurangi tahun
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Up_year:
call baca_rtc_up
cjne a,#100,cek_99
cek_99:
jc belum_99
clr a
belum_99:
jmp tulis_rtc

Down_year:
call baca_rtc_down
cjne a,#0ffh,y_255
mov a,#99
y_255:
jmp tulis_rtc
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; inisialisasi LCD
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Inisialisasi_LCD:
mov a,#03fh
call write_inst
call write_inst
mov a,#0dh
call write_inst
mov a,#06h
call write_inst
mov a,#01h
call write_inst
mov a,#0ch
call write_inst
ret
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; inisialisasi RTC
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Inisialisasi_rtc:
clr rtc_cs
; reg a = UIP DV2 DV1 DV0 RS3 RS2 RS1 RS0
; REG B = SET PIE AIE UIE SQWE DM 24/12 DSE
mov r0,#reg_a
mov a,#00101111b
movx @r0,a
inc r0
mov a,#00001110b
movx @r0,a
clr a
setb rtc_cs
ret
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; Ambil data rtc dan tulis ke lcd
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Ambil_data_rtc:
clr rtc_cs
movx a,@dptr
setb rtc_cs
mov decl,a
call hextodec
mov tmp,a
swap a
anl a,#0fh
orl a,#30h
call write_data
mov a,tmp
anl a,#0fh
orl a,#30h
call write_data
ret
Ambil_rtc_desimal:
clr rtc_cs
movx a,@dptr
setb rtc_cs
mov decl,a
call hextodec
mov tmp,a
ret
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; Rutin menulis instruksi ke lcd
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
write_inst:
clr lcd_rs
setb lcd_cs
mov p0,a
wrdt:
clr lcd_cs
setb lcd_cs
call delay
mov p0,#0ffh
ret
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; Rutin menulis data ke lcd
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
write_data:
setb lcd_rs
setb lcd_cs
trsa:
mov p0,a
jmp wrdt
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; tulis 16 char di baris lcd atas
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Tulis_lcd_atas:
mov a,#80h
tlcdb:
mov r3,#16
call write_inst
tulis1:
clr a
movc a,@a+dptr
call write_data
inc dptr
djnz r3,tulis1
ret
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; tulis 16 char di baris lcd bawah
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Tulis_lcd_bawah:
mov a,#0c0h
jmp tlcdb
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; tulis 32 char di baris lcd
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Tulis_lcd:
call tulis_lcd_atas
call tulis_lcd_bawah
ret
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; konversi heksa ke desimal
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
hextodec:
mov psw,#0
clr c
mov dech,#0
mov a,decl
swap a
anl a,#0fh ;00001111
mov tmp,a
jz sudah_ditambah
clr a
tambah_16:
add a,#16h ;22 d
da a
mov r2,a
clr a
addc a,dech
mov dech,a
mov a,r2
djnz tmp,tambah_16
sudah_ditambah:
mov tmp,a
mov a,decl
anl a,#0fh
da a
add a,tmp
da a
mov decl,a
; desimal hanya di bawah 100
ret
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; Rutin delay
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
delay:
mov del1,#5
delay1:
mov del2,#0
djnz del2,$
djnz del1,delay1
ret
ldelay:
mov del1,#0
call delay1
call delay1
ret
TUNDA_LONG:
MOV R5,#010H
JJz:
CALL TUNDAan
DJNZ R5,JJz
RET
TUNDAan:
MOV R7,#100
LD11:
DJNZ R6,$
DJNZ R7,LD11
RET
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; Data
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Judul:db ‘Timer Pompa Air ‘,’Seno.W 02510008 ‘
Waktu:db ‘ ‘,’ 20 ‘

Rtc0: db ‘Up ~ Set Waktu’,’Down ~ Set Pompa’
Rtc1: db ‘ Set 1 ‘,’Jam = [ ] ‘
Rtc2: db ‘ Set 2 ‘,’Menit = [ ] ‘
Rtc3: db ‘ Set 3 ‘,’Hari = [ ]’
Rtc4: db ‘ Set 4 ‘,’Tanggal= [ ] ‘
Rtc5: db ‘ Set 5 ‘,’Bulan=[ ]’
Rtc6: db ‘ Set 6 ‘,’Tahun = [20 ] ‘

Pom1: db ‘ Pompa 1 on ‘,’ Jam = [ ] ‘
Pom2: db ‘ Pompa 1 on ‘,’ Menit = [ ] ‘
Pom3: db ‘ Pompa 1 off ‘,’ Jam = [ ] ‘
Pom4: db ‘ Pompa 1 off ‘,’ Menit = [ ] ‘

Pom5: db ‘ Pompa 2 on ‘,’ Jam = [ ] ‘
Pom6: db ‘ Pompa 2 on ‘,’ Menit = [ ] ‘
Pom7: db ‘ Pompa 2 off ‘,’ Jam = [ ] ‘
Pom8: db ‘ Pompa 2 off ‘,’ Menit = [ ] ‘

Pom9: db ‘ Pompa 3 on ‘,’ Jam = [ ] ‘
Poma: db ‘ Pompa 3 on ‘,’ Menit = [ ] ‘
Pomb: db ‘ Pompa 3 off ‘,’ Jam = [ ] ‘
Pomc: db ‘ Pompa 3 off ‘,’ Menit = [ ] ‘

Hari: db ‘Minggu’
db ‘Senin ‘
db ‘Selasa’
db ‘Rabu ‘
db ‘Kamis ‘
db ‘Jumat ‘
db ‘Sabtu ‘

Bulan: db ‘Januari ‘
db ‘Februari’
db ‘Maret ‘
db ‘April ‘
db ‘Mei ‘
db ‘Juni ‘
db ‘Juli ‘
db ‘Agustus ‘
db ‘Sptember’
db ‘Oktober ‘
db ‘November’
db ‘Desember’
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
END


Untuk Beli Produk Silahkan Kunjungi WWW.BELJAMOTOMATIS.COM

Itulah tadi Artikel POMPA AIR OTOMATIS
Semoga artikel POMPA AIR OTOMATIS yang saya bagikan kali ini, mudah-mudahan bisa memberi manfaat buat anda semua. Oke, sampai disini dulu yaaaah....Lain kali jumpa di postingan artikel berikutnya.

Oh ya... , sebelum anda meninggalkan halaman ini mungkin beberapa artikel yang sengaja kami pilihkan pada halaman di bawah ini juga tertarik untuk membacanya. Jika anda tidak sedang terburu buru saya akan merasa sangat bahagia jika anda berkenan mampir dulu pada beberapa artikel yang telah saya pilih kan dibawah ini.

Terimakasih kami ucapkan karena atas kunjungan anda dihari ini pada artikel POMPA AIR OTOMATIS dan bila artikel ini bermanfaat menurut anda tolong ya dibagikan ke rekan sanak saudara anda agar mereka juga tahu tentang hal ini, bagikan artikel ini dengan alamat link http://tutorelektro.blogspot.com/2016/12/pompa-air-otomatis.html
Juhadi Kulon Progo
About
POMPA AIR OTOMATIS - written by Juhadi Kulon Progo , published at 22.25.00, categorized as Tutorial
Comment disabled
Theme designed by Damzaky - Published by Proyek-Template
Powered by Blogger
-->