Anda di halaman 1dari 25

LED Matriks Untuk Supervisory Monitoring Lift

Lift atau elevator digunakan pada semua gedung pencakar langit. Pada sebuah Lift pastinya
Sobat sering melihat tampilan yang menunjukkan posisi lantai. Jadi saat menunggu atau
sedang menggunakannya kita bisa mengetahuinya.
Namun aku tidak bermaksud membahas soal tampilan yang ada di dalam kabin atau lantai
gedung. Atau membahas soal Lift itu sendiri. Yang akan kita bahas adalah sistem monitoring
Lift yang umumnya hanya ada pada ruang kendali.
Apa saja yang pada umumnya ditampilkan pada monitoring Lift di ruang kendali Yang
utama! sebuah perangkat monitoring adalah menampilkan posisi lantai dari keberadaan Lift
tersebut. "etika Lift sedang bergerak! monitoring harus pula menampilkan arah naik atau
turun. Pada ruang kendali juga harus mengetahui status dari lift yang meliputi kondisi
Normal! Service atau #rouble. Semua sinyal yang diperlukan biasanya dikeluarkan oleh
perangkat kendali Lift. Namun pada Lift jenis lama sinyal tersebut biasanya berbentuk
tegangan sebesar $% volt..
Nah! aku pernah membuat sebuah peraga yang menampilkan monitoring Lift dan akan
dibahas pada tulisan kali ini.
Aku membagi sinyal ke dalam $ grup yaitu sinyal status dan sinyal penunjuk lantai. Ada & bit
sinyal status yaitu 'p (naik)! *o+n (turun)! Normal! Service dan #rouble. *an setidaknya
ada ,- bit sinyal posisi lantai meliputi .asement , (.,)! Lantai ,! /e0anine (/)! $! 1! 1A! &!
2! 3! -! 4! ,5! ,,! ,$! ,1! ,%! ,&! ,2! ,3. #otal masukan adalah $% bit.
Sebelum membuat program aplikasi di samping kita mengetahui jumlah dan jenis masukan
yang akan diolah! kita juga +ajib mengetahui karakteristik dari setiap masukan tersebut.
#egangan sinyal yang akan diolah adalah $% volt (namun setelah diaplikasikan ternyata hanya
& volt saja dan kesalahan seperti ini harusnya bisa menjadi pelajaran karena terpaksa aku
harus membuang semua dioda 0ener yang ada yang masing6masing bernilai ,- volt).
'ntuk masukan status Normal! Service dan #rouble bersifat tetap. Salah satu dari dari
masukan itu selalu ada. Jadi pada aplikasi tidak ada perlakuan khusus karena kita hanya perlu
menampilkan salah satu sinyal tersebut pada peraga.
'ntuk masukan status 'p dan *o+n sedikit berbeda. Sinyal 'p muncul saat lift akan atau
sedang bergerak naik dan sinyal *o+n untuk turun. Ada masa ketika lift dalam keadaan diam
biasanya saat parkir kedua sinyal tersebut sama sekali tidak ada. Namun untuk sinyal status!
kembali tidak ada perlakukan khusus dan kita hanya perlu menampilkan sinyal tersebut apa
adanya.
Pada masukan posisi lantai hampir sama dengan status 'p dan *o+n. Pada saat lift bergerak
dan pada posisi antara $ lantai maka terjadi kekosongan sinyal. Aplikasi harus diberikan
perlakuan khusus yaitu mengingat posisi lantai terakhir sebelum terjadi kekosongan tersebut.
Setelah kita mengetahui jumlah! jenis dan karakteristik setiap masukan maka selanjutnya
adalah membuat diagram kerja dari rangkaian yang akan dibuat. Adapun diagram yang
dimaksud seperti diperlihatkan pada gambar berikut ini.
Ada $ bagian diperlukan untuk membuat panel monitoring! yaitu enkoder paralel ke serial
dan dekoder peraga matriks. 7nkoder paralel ke serial berfungsi memproses masukan yang
terdiri dari $1 bit. 7nkoder ini mengolah masukan yang terdiri dari 1 fungsi bagian yaitu
status lift! posisi naik dan turun serta posisi lantai. 8asil dari pengolahan kemudian akan
diumpankan ke dekoder melalui saluran serial 9S$1$. Selanjutnya dekoder akan memproses
masukan menjadi tampilan yang dapat dilihat.
7nkoder Paralel "e Serial
9angkaian enkoder dibangun menggunakan mikrokontroler A#-4:&,. 'ntuk menerima
masukan digunakan 1 gerbang meliputi P
5
! P
,
dan P
$
. Sementara untuk fasilitas komunikasi
serialnya adalah P
15
(9;*) dan P
1,
(#;*). 9angkaian lengkapnya seperti berikut ini.
*alam prosesnya! rangkaian enkoder akan memberikan keluaran pada pin ,, (#;*) atau P
1,
yang digunakan untuk memberikan data informasi secara serial ke rangkaian dekoder peraga
matriks. Pin gerbang P
1$
digunakan untuk indikator L7* yang menunjukkan proses
pengiriman data. Sementara gerbang lainnya dari P
1
yaitu P
11
sampai P
13
digunakan untuk
seting alamat. Pada aplikasi yang ditulis! dimanfaatkan untuk menentukan mode kerja dari
mikrokontroler sebagai enkoder atau dekoder.
Sementara itu gerbang6gerbang lainnya! yaitu P
,
! P
5
dan P
$
digunakan sebagai jalur masukan.
"husus untuk gerbang P
5
! perlu kita tambahkan resistor pull6up pada setiap bit gerbang
tersebut. /asukan ke61 gerbang ini! masing6masing dihubungkan ke transistor array
'LN$-51 sebagai buffer tegangan membalik terhadap jalur sinyal yang masuk.
*ekoder Peraga /atriks.
'ntuk peraga Lift Supervisory digunakan $ buah komponen L7* matriks -<- sehingga
menghasilkan ,2<-. 9angkaian lengkapnya seperti di ba+ah ini.
/asukan baris dari kedua L7* matriks terhubung langsung ke gerbang P5 dan P$ dari
A#-4:&,. Penulis memang tidak menggunakan penahan resistor karena secara internal!
setiap gerbang memiliki pembatas arus sebesar $5mA.
/asing6masing kolom dari kedua L7* matriks dihubung secara paralel ke Led *river yang
dibangun menggunakan transistor :45,$.
*A#A =N digunakan untuk menerima data informasi yang akan ditampilkan pada peraga.
>ormat *an .entuk #ampilan Pada L7* /atriks
Sebelum kita melangkah pada pembahasan program aplikasi yang harus dibuat untuk diisikan
pada mikrokontroler A#-4:&,! kita rancang terlebih dahulu mengenai bentuk dari informasi
yang akan ditampilkan pada L7* matriks. Sebagai dasar pijakan adalah ukuran dari L7*
matriks yaitu ,2<-. =ni menunjukkan bah+a data tampilan tidak boleh melebihi ,2 kolom dan
- baris! bahkan penulis menetapkan jumlah data baris hanya 3 bit saja.
"ita mulai dengan bentuk karakter untuk penampilan dari ,4 lantai. Jumlah data yang
dibutuhkan untuk setiap karakter lantai adalah 4 byte.
Selanjutnya adalah bentuk informasi berbentuk penunjuk yang mengindikasikan posisi arah
lift naik dan turun. 'ntuk indikasi naik dan turun memerlukan setidaknya & byte yang akan
ditempatkan pada bagian akhir dari data peraga L7* matriks terakhir. #ampilan status naik
dan turun juga akan dibuat secara animasi.
Nah! sebagai contoh jika posisi lantai pada .asement , dan arah lift akan naik! maka
tampilan a+alnya akan seperti berikut ini.
'ntuk status N?9/AL! S79@=:7 dan #9?'.L7 tidak dimasukkan dalam L7* matriks
tapi menggunakan L7* yang terpisah di mana untuk Normal menggunakan L7* ber+arna
hijau! Service dengan L7* kuning dan #rouble menggunakan merah.
*ari tulisan di atas sudah kita ulas mengenai gambar rangkaian dan format tampilan karakter.
Pada kesempatan artikel kali ini! sengaja penulis lampirkan bentuk P:. (printed circuit
board) dari rangkaian Supervisory Lift /onitoring.
"ita mulai dengan rancangan P:. untuk rangkaian enkoder paralel ke serial. Aambar
sebelah atas adalah layout P:. bagian yang disolder. Sementara di ba+ahnya adalah tata
letak komponennya.
Pada rancangan di atas yaitu pada bagian masikannya dapat dilihat penggunaan dioda 0ener
yang berfungsi mengurangi tegangan masuk sebesar $% volt. #api jika tegangan masuknya
adalah & volt maka dioda6dioda 0eder di atas dapat diganti dengan ka+al jumper.
.erikut adalah P:. untuk rangkaian dekodernya.
Aambar P:. terakhir berikut adalah untuk rangkaian penampil L7* matriks.
Pada tulisan di atas sudah kita bahas mengenai rancangan rangkaian! format tampilan dan
P:. dari Supervisory /onitoring Lift yang dibuat. Setelah semua rangkaian di atas dibuat
dan jadi! maka selanjutnya diperlukan program aplikasi untuk dijalankan oleh mikrokontroler
A#-4:&,.
Penulis! +aktu itu membuat rancangan tersebut untuk memonitor sebanyak 3 lift. 8asil
rancangan yang sudah jadi dan digunakan seperti berikut ini.
Jangan ditanya! berapa kabel yang harus penulis rakit karena cukup banyak. .ayangkan saja
untuk sebuah lift saja memerlukan $% kabel belum termasuk grounding sebanyak $ buah. Jadi
total ada sekitar ,-$ kabel. Ya! ini sekedar curhat saja.
'ntuk memonitor kondisi lift sesuai rancangan kita terdahulu! setidaknya memerlukan $ buah
mikrokontroler A#-4:&, masing6masing untuk rangkaian enkoder dan lainnya untuk
dekoder. #api dalam rancangan aplikasi! penulis hanya membuat sebuah saja. Penulis sengaja
membuat aplikasi enkoder dan dekoder menjadi satu kesatuan agar mempermudah
pemasangan komponen mikrokontroler. Jadi mikrokontroler yang dipasang pada enkoder
dapat saling bertukar tempat dengan rangkaian dekoder. 'ntuk membedakan proses kerjanya
maka pada pin gerbang P11 akan diperiksa. Jika terhubung ke ground atau berlogika 5 maka
program akan menjalankan aplikasi enkoder paralel ke serial. Sementara jika diambangkan
atau dihubungkan ke catu & volt sehingga berlogika , maka program akan menjalankan
aplikasi dekoder. Sederhana dan praktis bukan dalam hal pemasangan dan terlebih untuk
pera+atannya.
Penulis membuat aplikasi dengan membagi ke dalam % bagian file penulisan yaitu
L=>#SP@.AS/! 7N"?*79.#;#! *7"?*79.#;# dan *=SPLAY.#;#. >ile bernama
Liftspv.AS/ adalah aplikasi utama yang nantinya akan dikompilasi.
"ita mulai dengan melihat aplikasi Liftspv.asm berikut ini.
$mod51
EncLED bit p3.2
EncMode bit p3.3
RegData data 08h
RegUpDown data 18h
RegUnitNo data 19h
Reg!oo" data 1ah
Reg#tat$% data 1bh
Mat"i&%1 data p2
Mat"i&%2 data p0
#canne" data p1
!ag data 21h
EncDi"'it bit !ag.0
En#tat'it bit !ag.1
'itUpDn bit !ag.2
#tac&(ointe" e)$ 2*h
Pada penulisan konfigurasi di atas kita tetapkan pin6pin gerbang yang digunakan. 'ntuk
enkoder kita perlu mengkonfigurasikan P1$ (7ncL7*) untuk indikator Serial dan P11
(7nc/ode) untuk seting mode enkoder. "ita juga perlu mengkonfigurasi register bit (>lag)
untuk bit6bit status 7nc*ir.it! 7nStat.it dan .it'p*n.
'ntuk dekoder! konfigurasi diperlukan untuk gerbang P5! P, dan P
$
serta beberapa register
yang diperlukan.
o"g 0
mo+ %p, -#tac&(ointe"
mo+ %con, -50h
mo+ tmod, -20h
mo+ t!1, -0.dh
mo+ th1, -0.dh
%etb t"1
mo+ pcon, -0
mo+ ie, -90h
mo+ RegData, -0
/nb EncMode, 0ppEnc
a/mp 0ppD%p
Pada a+al program di atas dimulai pada alamat 55558! hal pertama yang akan dijalankan
oleh mikrokontroler adalah inisialisasi mode serial. "ecepatan baudrate ditetapkan pada 4255
bps. 'sai inisialisasi! akhirnya program akan memeriksa status pin P11 atau 7nd/ode di
mana jika bernilai 5 akan bercabang ke App7nc! sedangkan jika bernilai , akan dicabangkan
ke App*sp.
Subrutin berikut adalah program interupsi serial yang dijalankan baik oleh rangkaian enkoder
maupun dekoder. Pada mode dekoder! program akan dicabangkan ke *spSer! sementara pada
mode enkoder maka subrutin akan menjalankan pemeriksaan register akumulator dengan
membandingkannya dengan isi dari lokasi data 9eg'nitNo.
Sebagai informasi saja bah+a penulis merancang rangkaian enkoder untuk dapat
dihubungkan ke perangkat P:. #ujuannya tidak lain adalah jika ada keinginan untuk
menghubungkan keaplikasi Supervisory /onitoring pada P: maka perangkat dapat
melakukan hal tersebut. Jika ini terjadi maka tidak perlu lagi adanya rangkaian dekoder.
o"g 23h
p$%h acc
p$%h b
p$%h 01h
p$%h 0*h
/nb "i, $
c!" "i
c!" ti
/b EncMode, D%p#e"
mo+ a, %b$.
mo+ b, RegUnitNo
2"! a, b
/n3 End#e"
c!" EncLED
mo+ a, Reg!oo"
aca!! #end4(
mo+ a, Reg#tat$%
aca!! #end4(
%etb EncLED
a/mp End#e"
#end4(5
c!" ea
mo+ %b$., a
/nb ti, $
c!" ti
%etb ea
"et
=nterupsi komunikasi serial untuk dekoder dijalankan pada subrutin berikut ini. *ata yang
masuk pada buffer serial setelah dipindahkan ke register akumulator selanjutnya diperiksa
status bit ke63 yaitu A::.3 untuk menentukan status proses yang akan dijalankan. Jika
A::.3 berisi 5 maka program akan menjalankan subrutin App*ec dengan menyalin data
akumulator ke register 9
$
! sebaliknya jika , maka subrutin AppSta yang akan dijalankan
setelah menyalin data akumulatorke register 9
1
.
D%p#e"5
mo+ a, %b$.
/b acc.*, #e"Di"
mo+ "2, a
aca!! 0ppDec
a/mp End#e"
#e"Di"5
mo+ "3, a
aca!! 0pp#ta
End#e"5
pop 0*h
pop 01h
pop b
pop acc
"eti
>ile program aplikasi yang dibutuhkan untuk menjalankan rangkaian enkoder atau dekoder
diset pada baris perintah berikut.
$inc!$de 6758te%a%m8Encode".t2t9
$inc!$de 6758te%a%m8Decode".t2t9
$inc!$de 6758te%a%m8Di%p!a:.t2t9
*ata tampilan berupa karakter ditetapkan pada P9?/ ditunjukkan seperti di ba+ah ini. *ata
meliputi animasi status naik dan turun serta tampilan penunjuk lantai. :hr'p, B :hr'p%
adalah data untuk tampilan bergerak lift menuju ke atas atau naik. :hr*n, B :hr*n% untuk
tampilan bergerak status turun. :hr. B :hr,3 untuk tampilan posisi lantai. :hrStop untuk
tampilan kosong dari tampilan status naik atau turun pada L7* matriks. :hr.lank untuk
menampilkan CBBC pada lantai saat status CserviceD.
7h"Up15 db 221, 18*, 119, 18*, 221
7h"Up25 db 18*, 119, 239, 119, 18*
7h"Up35 db 119, 239, 221, 239, 119
7h"Up;5 db 239, 221, 18*, 221, 239
7h"Dn15 db 119, 18*, 221, 18*, 119
7h"Dn25 db 18*, 221, 239, 221, 18*
7h"Dn35 db 221, 239, 119, 239, 221
7h"Dn;5 db 239, 119, 18*, 119, 239
7h"#top5 db 255, 255, 255, 255, 255
7h"'5 db 1, 109, 109, 109, 1;*, 255, 255, 255, 255
7h"15 db 255, 189, 1, 253, 255, 255, 255, 255, 255
7h"M5 db 1, 191, 199, 191, 1, 255, 255, 255, 255
7h"25 db 189, 121, 11*, 109, 15*, 255, 255, 255, 255
7h"35 db 18*, 125, 109, 109, 1;*, 255, 255, 255, 255
7h"305 db 18*, 109, 109, 1;*, 255, 129, 119, 119, 129
7h"55 db 2*, 93, 93, 93, 99, 255, 255, 255, 255
7h"15 db 131, 109, 109, 109, 1*9, 255, 255, 255, 255
7h"*5 db 12*, 12*, 9*, 95, 13, 255, 255, 255, 255
7h"85 db 1;*, 109, 109, 109, 1;*, 255, 255, 255, 255
7h"95 db 155, 109, 109, 109, 131, 255, 255, 255, 255
7h"105 db 189, 1, 253, 255, 131, 125, 125, 125, 131
7h"115 db 189, 1, 253, 255, 255, 255, 189, 1, 253
7h"125 db 189, 1, 253, 255, 189, 121, 11*, 109, 15*
7h"135 db 189, 1, 253, 255, 18*, 125, 109, 109, 1;*
7h"1;5 db 189, 1, 253, 255, 2;*, 231, 215, 183, 1
7h"155 db 189, 1, 253, 255, 2*, 93, 93, 93, 99
7h"115 db 189, 1, 253, 255, 131, 109, 109, 109, 1*9
7h"1*5 db 189, 1, 253, 255, 12*, 12*, 9*, 95, 13
7h"'!an&5 db 239, 239, 239, 255, 255, 239, 239, 239, 255
end
Aplikasi program enkoder yang terdapat pada file 7N"?*79.#;# dia+ali dengan rutin
App7nc. Pada rutin ini! pertama kali adalah mengambil informasi alamat yang terdapat pada
gerbang P
1
pada nible /S. (most significant bit) yaitu P
13
sampai P
1%
yang merupakan data
alamat fisik. =nformasi alamat tersebut kemudian dipindah ke nible LS. sebelum dimasukkan
ke register 9eg'nitNo. Jika perangkat enkoder terhubung pada P: maka nilai 9eg'nitNo
tidak boleh kosong. 'nit harus ditetapkan pada alamat , sampai ,&.
0ppEnc5
mo+ a, p3
cp! a
an! a, -0.0h
/n3 (7Lin&
c!" ea
a/mp !oo"0
(7Lin&5
%wap a
mo+ RegUnitNo, a
9utin selanjutnya adalah memeriksa masukan pada gerbang6gerbang P
,
! P
5
dan P
$
untuk
memeriksa posisi lantau dan status. 9utin >loorA digunakan untuk memeriksa gerbang P,
yang berisi informasi lantai .asement (.,) sampai Lantai 2. =nformasi ini disimpan pada
register 9
&
dan jika kosong maka program akan bercabang ke gerbang berikut pada rutin
>oor.. Jika informasi menunjukkan bah+a posisi lift pad lantai sesuai gerbang P
,
maka data
akan dibandingkan dengan register 9
5
yang berisi data sebelumnya. Jika ada perubahan
karena lift sudah berpindah lantai maka informasi akan diproses.
!oo"05
c!" c
mo+ a, p1
cp! a
mo+ "5, a
/3 !oo"'
2"! a, "0
/3 EncDi"
aca!! !oo"<
mo+ "0, a
mo+ "5, -0
a/mp !oo"E
9utin >loor. hampir sama dengan di atas! hanya saja gerbang masukan yang diperiksa adalah
P
5
untuk informasi Lantai 3 sampai ,% dan data sebelumnya disimpan pada register 9
,
.
!oo"'5
mo+ a, p0
cp! a
mo+ "5, a
/3 !oo"7
2"! a, "1
/3 EncDi"
aca!! !oo"<
mo+ "1, a
mo+ "5, -8
a/mp !oo"E
Pada rutin >loor: gerbang P
$
untuk 1 lantai terakhir yaitu Lantai ,& sampai ,3 yang terdapat
pada P
$3
sampai P
$&
sehingga diperlukan perintah logika AN* dengan data ,,,55555b. *isini
pembanding informasi masukan terdahulu terdapat pada register 9
$
.
!oo"75
mo+ a, p2
cp! a
an! a, -0e0h
mo+ "5, a
/3 EncDi"
2"! a, "2
/3 EncDi"
aca!! !oo"<
mo+ "2, a
mo+ "5, -11
9utin >loor* digunakan untuk menentukan posisi lantai sebenarnya. 9egister 9
&
berisi
informasi lantai sebelumnya yaitu Lantai ,% dengan data ,2 atau ,58. Penggunaan perintah
9L: dikarenakan pada P
$
urutan data lantai dia+ali dari /S.. 8asil dari rutin ini adalah
penunjukkan informasi antara ,,8 sampai ,18.
!oo"D5
inc "5
"!c a
/nc !oo"D
a/mp !oo"
Sementara! rutin >loor7 digunakan untuk memperoleh informasi sebenarnya lantai. *i sini
digunakan perintah 99: karena urutan lantai dimulai dari LS.. Pada rutin >loorA
sebelumnya nilai register 9
&
adalah 5 sehingga hasil yang mungkin pada register 9
&
adalah
nilai 5,8 sampai 5-8. Sementara jika rutin ini berasal dari rutin >loor. dengan nilai register
9
&
a+al 5-8 maka hasil yang mungkin adalah 548 sampai ,58.
!oo"E5
inc "5
""c a
/nc !oo"E
8asil dari rutin >loor* dan >loor7 kemudian disimpan pada 9eg>loor. Program selanjutnya
memeriksa 9eg'nitNo di mana jika 5 maka informasi akan langsung dikirim melalui gerbang
serial.
!oo"5
mo+ Reg!oo", "5
mo+ a, RegUnitNo
/n3 EncDi"
aca!! #e"=2D
a/mp EncDi"
!oo"<5
mo+ "0, -0
mo+ "1, -0
mo+ "2, -0
mo+ a, "5
"et
9utin 7nc*ir adalah rutin untuk memeriksa status. 9utin ini akan menetapkan bit A::.3
berlogika , untuk bit penunjuk dari 9egStatus. Status yang pertama diperiksa adalah
informasi bit P
$%
dan P
$1
atau status naik atau turun. Jika status naik6turun ada maka bit
7nc*ir.it akan diset ,. Pemeriksaan status dilanjutkan pada rutin 7nStat untuk status normal!
service dan trouble dari P
$$
sampai P
$5
. Jika informasi tidak kosong maka bit 7nStat.it diset
,. Logikanya! seharusnya 7ncStat.it akan selalu , kecuali ada kabel untuk salah satu status
tersebut terputus.
EncDi"5
mo+ a, p2
cp! a
an! a, -1.h
o"! a, -80h
mo+ Reg#tat$%, a
mo+ "5, a
an! a, -18h
/3 En#tat
%etb EncDi"'it
En#tat5
mo+ a, "5
an! a, -0*h
/3 EncEnd
%etb En#tat'it
EncEnd5
/nb EncDi"'it, Enc=m"
/nb En#tat'it, Enc=m"
mo+ a, "5
2"! a, "3
/3 EncR%t
mo+ a, "5
mo+ "3, a
a/mp Enc>&e
Enc=m"5
d/n3 "*, EncD!:
mo+ "*, -255
d/n3 "1, EncD!:
"emudian nilai 9eg'nitNo kembali diperiksa untuk menentukan apakah data langsung
dikirim atau tidak.
Enc>&e5
mo+ a, RegUnitNo
/n3 EncD!:
aca!! #e"=2D
EncR%t5
mo+ "1, -255
mo+ "*, -255
EncD!:5
mo+ !ag, -0
a/mp !oo"0
#e"=2D5
c!" EncLED
mo+ %b$., "5
/nb ti, $
c!" ti
%etb EncLED
"et
'ntuk aplikasi dekoder yang terdapat pada file *7"?*79.#;# berisi beberapa subrutin.
*ia+ali dengan subrutin App*ec di mana mula6mula register *P#9 ditetapkan berisi alamat
:hr.lank kemudian akan diproses jika nilai register 9$ kosong. Jika register 9$ tidak kosong
maka register *P#9 diisi alamat a+al dari karakter tampilan lantai yaitu :hr.. Selanjutnya
dengan rutin Lup*ec! posisi alamat karakter lantai yang sesuai akan dicari menggunakan
rutin N<t*ec dan N<tAdd. Setelah alamat ditentukan maka selanjutnya adalah melakukan
pengesetan peraga menggunakan subrutin Set*sp.
0ppDec5
p$%h 02h
mo+ dpt", -7h"'!an&
mo+ a, "2
/3 #etL+!
mo+ dpt", -7h"'
a/mp L$pDec
N2tDec5
mo+ ";, -9
N2t0dd5
inc dpt"
d/n3 ";, N2t0dd
L$pDec5
d/n3 "2, N2tDec
#etL+!5
aca!! #etD%p
pop 02h
"et
Subrutin AppSta digunakan untuk memeriksa informasi status. Yang pertama diperiksa adalah
bit A::.$ atau status normal dengan indikator pada P1&. Jika bit status normal 5 maka
pemeriksaan dilanjutkan pada bit lainnya yaitu A::., untuk status service dan indikator P12
dan seterusnya untuk A::.5 untuk status trouble dengan indikator P13.
0pp#ta5
mo+ a, "3
/nb acc.2, #t#e"+
mo+ p3, -11011111b
"et
#t#e"+5
/nb acc.1, #t="b!
mo+ p3, -10111111b
"et
#t="b!5
/nb acc.0, #t'!n&
mo+ p3, -01111111b
"et
#t'!n&5
mo+ p3, -255
"et
Subrutin Set*sp digunakan untuk mengisi buffer 9eg*ata sesuai alamat yang ditunjuk
register *P#9. Selama pemutakhiran data sebanyak 4 byte berdasarkan register 93! register
558 diamankan agar tidak mengganggu rutin utama. Pemutakhiran dilakukan menggunakan
subrutin 9dE9?/. Selanjutnya subrutin Set*sp diakhiri dengan mengisi byte ke ,5
(9eg*ataF4) dan ,, (9eg*ataF,5) dengan $&& sehingga pada kolom yang sesuai dari
penampil L7* matriks akan padam.
#etD%p5
mo+ "*, -9
p$%h 0h
mo+ "0, -RegData
aca!! Rd?R>M
pop 0h
mo+ RegData@9, -255
mo+ RegData@10, -255
"et
>ungsi subrutin Set*ir sama dengan di atas tapi untuk tampilan arah naik atau turun yang
dimulai pada byte ke6,$ atau 9eg*ataF,, sebanyak & byte.
#etDi"5
mo+ "*, -5
p$%h 0h
mo+ "0, -RegData@11
aca!! Rd?R>M
pop 0h
"et
Subrutin 9dE9?/ berguna untuk memindahkan data sesuai alamat P9?/ yang ditunjuk
oleh register *P#9 ke register yang ditunjuk oleh 9
5
sebanyak nilai register 9
3
.
Rd?R>M5
c!" a
mo+c a, Aa@dpt"
mo+ A"0, a
inc dpt"
inc "0
d/n3 "*, Rd?R>M
"et
Subrutin 9dE*sp berguna untuk menetapkan keluaran gerbang /atriks, dengan register 95
dan gerbang /atriks$ dengan 9,. Sebelum proses pengisian tersebut gerbang Scanner
ditetapkan ke $&& untuk mematikan keluarannya. Nilai6nilai register 92 dan 93 adalah untuk
menentukan lamanya tundaan dari pergeseran byte yang ditampilkan selama kurang lebih $!$
ms. 'ntuk - kolom maka diperoleh perioda mendekati ,- ms sehingga frekuensi kedipan
L7* sebesar &&!2 80.
Rd?D%p5
d/n3 "*, $
mo+ "*, -255
d/n3 "1, Rd?D%p
mo+ "1, -;
mo+ #canne", -255
mo+ a, A"0
inc "0
mo+ Mat"i&%1, a
mo+ a, A"1
inc "1
mo+ Mat"i&%2, a
"et
Aplikasi display pada *=SPLAY.#;# adalah merupakan aplukasi utama dari mode dekoder.
Program App*sp dan seterusnya akan menampilkan isi dari buffer 9eg*ata ke penampil
L7* matriks. Saat pertama kali dijalankan! program akan mengosongkan penampil.
0ppD%p5
mo+ "0, -RegData
mo+ "*, -11
7!"D%p5
mo+ A"0, -255
inc "0
d/n3 "*, 7!"D%p
mo+ "*, -1
mo+ "1, -1
L$pD%p5
mo+ "5, -;0
Pada rutin Lup*sp! isi register 9& adalah %5! ini berhubungan dengan rutin berikut yaitu
*isply yang berfungsi menampilkan isi 9eg*ata pada L7* matriks. Nilai tersebut
menetapkan pergerakan animasi penunjuk naik dan turun sekitar 5!3 ms.
Di%p!:5
mo+ "0, -RegData
mo+ "1, -RegData@8
aca!! Rd?D%p
mo+ #canne", -25;
aca!! Rd?D%p
mo+ #canne", -253
aca!! Rd?D%p
mo+ #canne", -251
aca!! Rd?D%p
mo+ #canne", -2;*
aca!! Rd?D%p
mo+ #canne", -239
aca!! Rd?D%p
mo+ #canne", -223
aca!! Rd?D%p
mo+ #canne", -191
aca!! Rd?D%p
mo+ #canne", -12*
d/n3 "5, Di%p!:
Sampai disini setelah perintah looping untuk scaning selesai! perintah dilanjutkan dengan
pemeriksaan informasi status yang disimpan pada register 9
1
. Status yang diperiksa adalah
posisi naik (bit %) atau turun (bit 1). Jika salah satu bit tersebut tinggi maka program akan
bercabang ke rutin yang sesuai. #api jika tidak ada maka program akan menjalankan perintah
untuk mengosongkan peraga.
mo+ a, "3
/b acc.;, D%p?Up
/b acc.3, D%p?Dn
mo+ dpt", -7h"#top
mo+ RegUpDown, -1
a/mp D%pDi"
9utin *spE'p adalah program yang dijalankan untuk memperagakan secara animasi arah lift
naik. 'ntuk menentukan prosedur a+al animasi digunakan .it'p*n di mana untuk arah naik
harus bernilai ,! sementara untuk menentukan informasi pergerakan dengan data tampilan
yang sesuai digunakan register 9eg'p*n. 9egister *P#9 dapat berisi alamat P9?/
:hr'p,! :hr'p$! :hr'p1 dan :hr'p%.
D%p?Up5
/b 'itUpDn, #et?Up
%etb 'itUpDn
mo+ RegUpDown, -1 B#ta"t anima%i
#et?Up5
mo+ a, RegUpDown
c/ne a, -1, D%pUp1
mo+ dpt", -7h"Up1 BDi%p!a: -1
a/mp D%pDi"
D%pUp15
c/ne a, -2, D%pUp2
mo+ dpt", -7h"Up2 BDi%p!a: -2
a/mp D%pDi"
D%pUp25
c/ne a, -3, D%pUp3
mo+ dpt", -7h"Up3 BDi%p!a: -3
a/mp D%pDi"
D%pUp35 mo+ RegUpDown, -0
mo+ dpt", -7h"Up; BDi%p!a: -;
a/mp D%pDi"
9utin *spE*n berfungsi sama dengan rutin di atas hanya saja .it'p*n dibuat bernilai 5
untuk animasi turun dan register *P#9 bisa berisi :hr*n,! :hr*n$! :hr*n1 ddan :hr*n%.
D%p?Dn5
/nb 'itUpDn, #et?Dn
c!" 'itUpDn
mo+ RegUpDown, -1
#et?Dn5
mo+ a, RegUpDown
c/ne a, -1, D%pDn1
mo+ dpt", -7h"Dn1
a/mp D%pDi"
D%pDn15
c/ne a, -2, D%pDn2
mo+ dpt", -7h"Dn2
a/mp D%pDi"
D%pDn25
c/ne a, -3, D%pDn3
mo+ dpt", -7h"Dn3
a/mp D%pDi"
D%pDn35
mo+ RegUpDown, -0
mo+ dpt", -7h"Dn;
D%pDi"5
aca!! #etDi"
inc RegUpDown
a/mp L$pD%p
Pada program 7nkoder.t<t! ada sedikit tambahan fasilitas yang penulis berikan yaitu
komunikasi ke P:. =mplementasinya! menurut penulis! bisa diaplikasikan untuk penampilan
menggunakan layar monitor pada P: sebagai dekoder peraganya. 'ntuk keperluan
komunikasi dengan P: tentu memerlukan aplikasi yang dijalankan! maka dibuatkan sebuah
aplikasi simulasi menggunakan pemrograman @isual .asic. Aplikasi simulasi yang dibuat
ternyata ada juga manfaatnya! yaitu untuk menguji perangkat enkoder dan dekoder.
Nah! tampilan dari aplikasi simulasi seperti berikut ini.
Persiapan yang perlu dilakukan untuk menghasilkan tampilan aplikasi di atas adalah
membuat sebuah proyek yang diberi nama pjk*isplay. "emudian membuat sebuah form
frm*isplay dengan caption kita isi CSerial 9S$1$ 7ncoderG*ecoder *isplay SimulationD.
"emudian setidaknya ada % frame yaitu fraLevel dengan caption C>loor LevelD! fra'p*o+n
dengan caption C'p*o+nD! fraStatus dengan caption CStatusD dan fra/ode dengan caption
CSimulationD.
Pada fraLevel! kita isi dengan sebuah label bernama lblLevel dengan ukuran font Arial
berukuran 12. Pada fra'p*o+n! kita isi dengan $ buah ?ption.utton! masing6masing opt'p
dengan caption C'pD dan opt*o+n dengan caption C*o+nD. "emudian pada fraStatus diisi
dengan 1 buah ?ption.utton masing6masing adalah optNormal! optService dan opt#rouble
dengan caption sesuai fungsinya. #erakhir adalah fra/ode berisi sebuah label bernama
lbl/ode dengan font standar /S Sans Serif berukuran ,-.
'ntuk melihat proses komunikasi yang sedang berlangsung! ditambahkanlah sebuah #e<t.o<
bernama t<tProses. "emudian dilengkapi pula dengan $ buah :ommand.utton! masing6
masing cmdStart dengan caption a+al C*7:?*79D dan cmd"eluar dengan caption C7 ; =
#D.
/elengkapi aplikasi juga ditambahkan sebuah #imer dengan nama tmr7nkoder karena hanya
berlaku untuk aplikasi simulasi enkoder saja. "emudian dengan menambahkan komponen
pada tab Aeneral yaitu C/icrosoft :omm :ontrol 2.5D kita bisa menambahkan sebuah
/S:omm, untuk keperluan komunikasi melalui port serial 9S$1$.
Jika persiapan di atas sudah selesai selanjutnya tinggal menuliskan beberapa perintah berikut
yang akan dilaksanakan.
Setelah ?ption 7<plicit kita perlu mendeklarasikan 1 buah variable yang akan digunakan
dalam proses yaitu Level dengan format integer dan variabel teks yaitu >loor dan Serial.
>ption E2p!icit
Dim Le+e!C, !oo"$, #e"ia!$
("i+ate #$b cmdDe!$a"?7!ic&69
End
End #$b
Subrutin untuk cmd"eluar digunakan untuk keluar dari aplikasi.
Selanjutnya cmdStart digunakan untuk memilih mode simulasi yang akan dijalankan yaitu
enkoder atau dekoder. =si dari kotak perintah ini berla+anan dengan mode aplikasi yang
dijalankan. Pada mode enkoder! aplikasi berfungsi seperti sebuah enkoder yang akan
menghasilkan keluaran serial dengan data informasi lanatai atau status. Pada mode dekoder!
aplikasi berfungsi seperti dekoder yang akan menampilkan posisi lantai dan status sesuai data
serial yang diterima.
Jika cmdStart adalah C7N:?*79D! maka aplikasi akan berfungsi dalam mode dekoder
dengan mematikan fungsi tmr7nkoder dan lbl/ode berisi C*7:?*79 /?*7D. Sebaliknya
jika cmdStart adalah C*7:?*79D maka aplikasi berfungsi dalam mode enkoder dengan
mengaktifkan tmr7nkoder dan lbl/ode berisi C7N:?*79 /?*7D.
("i+ate #$b cmd#ta"t?7!ic&69
t2t("o%e%.=e2t E FF
4. cmd#ta"t.7aption E FEN7>DERF =hen
cmd#ta"t.7aption E FDE7>DERF5 tm"En&ode".Enab!ed E
="$e5 !b!Mode.7aption E FEN7>DER M>DEF
E!%e
cmd#ta"t.7aption E FEN7>DERF5 tm"En&ode".Enab!ed E
a!%e5 !b!Le+e!.7aption E FG GF
!b!Mode.7aption E FDE7>DER M>DEF
End 4.
End #$b
Saat pertama kali aplikasi dijalankan kita perlu melakukan sedikut persiapan. Pertama kita
mengatur nilai Level menjadi C,D. "emudian kita perlu mengaktifkan gerbang serial. Label
lblLevel diisi dengan caption CB BC dan lbl/ode dengan C7N:?*79 /?*7D.
("i+ate #$b o"m?Load69
Le+e! E 15 4. M#7omm1.(o"t>pen E a!%e =hen
M#7omm1.(o"t>pen E ="$e
!b!Le+e!.7aption E FG GF5 !b!Mode.7aption E FEN7>DER M>DEF
t2t("o%e%.=e2t E F#e"ia! Encode"HDecode"F
End #$b
"ita menggunakan fasilitas komunikasi serial! maka P: setiap kali menerima sebuah data
masuk akan memanggil subrutin berikut. Subrutin ini hanya berlaku pada mode dekoder.
Pada mode dekoder maka data serial yang masukan akan disimpan pada variabel Serial dan
nilainya akan ditampilkan pada t<tProses dalam format heksadesimal.
("i+ate #$b M#7omm1?>n7omm69
>n E""o" Re%$me Ne2t
4. cmd#ta"t.7aption E FDE7>DERF =hen E2it #$b
#e"ia! E M#7omm1.4np$t5 t2t("o%e%.=e2t E FRecei+ing 5 F I
Je260%c6#e"ia!99 I FJF
*ata serial yang diterima masih berbentuk AS:== sehingga agar dapat diproses akan
dikonversikan ke dalam bentuk integer pada variabel Level.
o" Le+e! E 0 =o 255
4. 7h"6Le+e!9 E #e"ia! =hen E2it o"
Ne2t Le+e!
8asil konversi kemudian diperiksa. Jika nilai Level lebih rendah dari ,$- maka itu berarti
menunjukkan data yang masuk adalah posisi lantai. Jika lebih tinggi dari ,$- adalah data
status. Ada & bit dari status yang akan diperiksa yaitu bit 5 sampai bit %. Sebagai contoh jika
nilai biner data adalah ,55,5,55 berarti bit 3 tinggi sehingga nilai pasti lebih tinggi dari ,$-!
bit % tinggi yang berartu posisi lift naik dan bit $ tinggi menunjukkan status normal. Nilai
biner ini setara dengan ,%-.
4. Le+e! K 128 =hen Lo=o Lantai
#e!ect 7a%e Le+e!
7a%e 1295 opt="o$b!e.Ma!$e E ="$e
7a%e 1305 opt#e"+ice.Ma!$e E ="$e
7a%e 1325 optNo"ma!.Ma!$e E ="$e
7a%e 1315 optDown.Ma!$e E ="$e
7a%e 13*5 optDown.Ma!$e E ="$e5 opt="o$b!e.Ma!$e E
="$e
7a%e 1385 optDown.Ma!$e E ="$e5 opt#e"+ice.Ma!$e E
="$e
7a%e 1;05 optDown.Ma!$e E ="$e5 optNo"ma!.Ma!$e E ="$e
7a%e 1;;5 optUp.Ma!$e E ="$e
7a%e 1;55 optUp.Ma!$e E ="$e5 opt="o$b!e.Ma!$e E ="$e
7a%e 1;15 optUp.Ma!$e E ="$e5 opt#e"+ice.Ma!$e E ="$e
7a%e 1;85 optUp.Ma!$e E ="$e5 optNo"ma!.Ma!$e E ="$e
End #e!ect
E2it #$b
'ntuk nilai Level diba+ah ,$- adalah penunjukan informasi lantai yang bernilai , sampai.
Nilai tersebut kemudian digunakan untuk mendefinisikan informasi posisi lantai yang
ditempatkan pada variabel >loor yang kemudian ditampilkan pada label lblLevel.

Lantai5
#e!ect 7a%e Le+e!
7a%e 15 !oo" E F'1F
7a%e 25 !oo" E F1F
7a%e 35 !oo" E FMF
7a%e ;5 !oo" E F2F
7a%e 55 !oo" E F3F
7a%e 15 !oo" E F30F
7a%e *5 !oo" E F5F
7a%e 85 !oo" E F1F
7a%e 95 !oo" E F*F
7a%e 105 !oo" E F8F
7a%e 115 !oo" E F9F
7a%e 125 !oo" E F10F
7a%e 135 !oo" E F11F
7a%e 1;5 !oo" E F12F
7a%e 155 !oo" E F13F
7a%e 115 !oo" E F1;F
7a%e 1*5 !oo" E F15F
7a%e 185 !oo" E F11F
7a%e 195 !oo" E F1*F
End #e!ect
!b!Le+e!.7aption E !oo"
End #$b
Pada fraStatus terdapat 1 buah ?ption.utton yaitu optNormal! optService dan opt#rouble.
"ita dapat memilih salah satunya dan pada mode enkoder. Pilihan kita akan segera diproses
dengan mengirimkan informasi pada gerbang serial dengan nilai Serial bersesuaian dengan
bit 5 sampai dengan bit $. Pemilihan optNormal akan memeriksa status opt'p pada saat
pengiriman informasi status. Sementara pada pilihan optService dan opt#rouble maka status
naik6turun dikosongkan.
("i+ate #$b optNo"ma!?7!ic&69
4. cmd#ta"t.7aption E FEN7>DERF =hen E2it #$b
4. optUp.Ma!$e E ="$e =hen #e"ia! E 7h"61;89 E!%e #e"ia! E
7h"61;09
M#7omm1.>$tp$t E #e"ia!5 t2t("o%e%.=e2t E F#ending #tat$%5
F I Je260%c6#e"ia!99 I FJF
tm"En&ode".Enab!ed E ="$e
End #$b
("i+ate #$b opt#e"+ice?7!ic&69
4. cmd#ta"t.7aption E FEN7>DERF =hen E2it #$b
!b!Le+e!.7aption E FGGF5 tm"En&ode".Enab!ed E a!%e
#e"ia! E 7h"613095 M#7omm1.>$tp$t E #e"ia!5 t2t("o%e%.=e2t
E F#ending #tat$%5 F I Je260%c6#e"ia!99 I FJF
End #$b
("i+ate #$b opt="o$b!e?7!ic&69
4. cmd#ta"t.7aption E FEN7>DERF =hen E2it #$b
!b!Le+e!.7aption E !oo"5 tm"En&ode".Enab!ed E a!%e
#e"ia! E 7h"612995 M#7omm1.>$tp$t E #e"ia!5 t2t("o%e%.=e2t
E F#ending #tat$%5 F I Je260%c6#e"ia!99 I FJF
End #$b
Pada fra'p*o+n terdapat $ ?ption.utton yang dapat dipilih untuk penunjukan status naik6
turun. Jika salah satu dipilih maka aplikasi akan mengirimkan status naik atau turun.
Pemilihan salah satu tombol ini akan menyebabkan status pada kondisi normal dengan
mengaktifkan optNormal.
("i+ate #$b optUp?7!ic&69
#e"ia! E 7h"61;895 M#7omm1.>$tp$t E #e"ia!5 t2t("o%e%.=e2t
E F#ending #tat$%5 F I Je260%c6#e"ia!99 I FJF
optNo"ma!.Ma!$e E ="$e
End #$b
("i+ate #$b optDown?7!ic&69
#e"ia! E 7h"61;095 M#7omm1.>$tp$t E #e"ia!5 t2t("o%e%.=e2t
E F#ending #tat$%5 F I Je260%c6#e"ia!99 I FJF
optNo"ma!.Ma!$e E ="$e
End #$b
#erakhir adalah subrutin timer yaitu tmr7nkoder yang hanya aktif atau dijalankan pada mode
enkoder. @ariabel yang diproses adalah Level untuk menunjukkan posisi lantai. Posisi
tertinggi dari variabel ini yaitu ,4 akan mengaktifkan opt*o+n! sebaliknya posisi terendah
yaitu , akan mengaktifkan opt'p. Secara otomatis nilai Level akan bertambah atau
berkurang untuk menunjukkan simulasi bah+a lift sedang bergerak naik atau turun. Setiap
perubahan posisi lantai maka aplikasi akan mengirimkan data secara serial.
("i+ate #$b tm"En&ode"?=ime"69
4. optUp.Ma!$e E ="$e =hen
4. Le+e! E 19 =hen
optUp.Ma!$e E a!%e5 optDown.Ma!$e E ="$e5 E2it #$b
E!%e
Le+e! E Le+e! @ 1
End 4.
E!%e4. Le+e! E 1 =hen
optUp.Ma!$e E ="$e5 optDown.Ma!$e E a!%e5 E2it #$b
E!%e
Le+e! E Le+e! G 1
End 4.

#e!ect 7a%e Le+e!
7a%e 15 !oo" E F'1F
7a%e 25 !oo" E F1F
7a%e 35 !oo" E FMF
7a%e ;5 !oo" E F2F
7a%e 55 !oo" E F3F
7a%e 15 !oo" E F30F
7a%e *5 !oo" E F5F
7a%e 85 !oo" E F1F
7a%e 95 !oo" E F*F
7a%e 105 !oo" E F8F
7a%e 115 !oo" E F9F
7a%e 125 !oo" E F10F
7a%e 135 !oo" E F11F
7a%e 1;5 !oo" E F12F
7a%e 155 !oo" E F13F
7a%e 115 !oo" E F1;F
7a%e 1*5 !oo" E F15F
7a%e 185 !oo" E F11F
7a%e 195 !oo" E F1*F
End #e!ect
#e"ia! E 7h"6Le+e!9
!b!Le+e!.7aption E !oo"5 M#7omm1.>$tp$t E #e"ia!
t2t("o%e%.=e2t E F#ending !oo"5 F I Je260%c6#e"ia!99 I
FJF
End #$b
*emikian perangkat Sipervisory /onitoring Lift yang penulis buat dengan tampilan L7*
matriks. =ni sekedar contoh implementasi yang mungkin dapat dikembangkan lagi untuk
fungsi dan kegunaan lainnya.
Sudah ya! terima kasih sudah membaca artikel ini. Semoga apa yang penulis sampaikan
bermanfaat dan bisa diterapkan oleh sobat semua.
Salam....

Anda mungkin juga menyukai