You are on page 1of 84

i

PENGGUNAAN PROGRAMMABLE TIMER SEBAGAI


SAKLAR OTOMATIS
TUGAS AKHIR
Diajukan dalam rangka penyelesaian studi Diploma III
untuk mencapai gelar Ahli Madya
Disusun oleh :
Nama : Joko Pitoyo
NIM : 5352303506
Program Studi : D3 Teknik Elektro
Jurusan : Teknik Elektro
FAKULTAS TEKNIK
UNIVERSITAS NEGERI SEMARANG
2007
ii

HALAMAN PENGESAHAN
Laporan Tugas Akhir ini telah dipertahankan di hadapan sidang penguji Tugas
Akhir Fakultas Teknik Universitas Negeri Semarang
Pada hari : Rabu
Tanggal : 15 Agustus 2007
Pembimbing,
Drs. Y. Primadiyono, M.T
NIP. 131 687 182
Penguji I, Penguji II,
Drs.Y. Primadiyono, M.T Drs. Sugeng Purbawanto, M.T
NIP. 131 687 182 NIP. 131 404 315
Ketua Jurusan Teknik Elektro, Kaprodi D3 Teknik Elektro,
Drs. Djoko Adi Widodo, M.T Drs. Agus Murnomo, M.T
NIP. 131 570 064 NIP. 131 616 610
Dekan Fakultas Teknik,
Prof. Dr. Soesanto

NIP.130 875 753
iii
ABSTRAK
Joko Pitoyo. 2007. Penggunaan Programmable Timer Sebagai Saklar
Otomatis. Tugas Akhir. D3 Teknik Elektro. Teknik Elektro. Fakultas Teknik.
Universitas Negeri Semarang.
Banyak peralatan elektronik yang pengoperasiannya berasal dari sumber
energi listrik PLN. Sebagian dari peralatan listrik tersebut menggunakan cara
manual untuk mematikannya yaitu dengan mencabut koneksi peralatan listrik dari
sumber tegangannya. Hal ini tentunya akan menyita waktu orang yang
mempergunakan peralatan listrik tersebut karena harus menunggu alat selesai
bekerja dan setelah itu mematikannya. Selain itu resiko kemungkinan terjadinya
kerusakan peralatan listrik tersebut akibat kelalaian pemakai dapat mengakibatkan
kerugian.
Tugas akhir ini meliputi perancangan dan realisasi sebuah alat pewaktu
digital (Programmable Timer) yang digunakan untuk menghidupkan dan
mematikan piranti elektronik yang terhubung dengan alat pewaktu digital tersebut.
Alat pewaktu digital terprogram ini (Programmable Timer) menggunakan
mikrokontroler AT89S51, keypad matrix 4X3, LCD 2X16 karakter seri M1632
dan beberapa komponen pendukung lainnya. Perancangan dan realisasi
Programmable Timer tersebut berasal dari hasil eksperimen, sedangkan
pendukung penulisan tugas akhir ini diperoleh dari beberapa sumber antara lain
buku, internet, dan literatur. Programmable Timer ini menggunakan relay yang
dikendalikan oleh mikrokontroler AT89S51 sebagai saklar elektroniknya.
Sehingga pemilihan jenis relay yang sesuai dengan beban harus diperhatikan atau
penggunaan relay dapat diganti dengan TRIAC jika diperlukan. Berdasarkan hasil
percobaan yang dilakukan, Programmable Timer ini bekerja dengan cukup baik
yaitu kontinuitas waktu cacahan dibandingkan dengan jam acuan selalu tetap.
Cacahan waktu maksimal alat ini adalah 99 jam 99 menit 99 detik sehingga pada
beberapa aplikasinya, alat cukup dapat diandalkan kerjanya. Karena
Programmable Timer yang dibuat masih jauh dari kesempurnaan, diharapkan
perancangan Programmable Timer ini dapat dikembangkan lebih lanjut dan dapat
dimanfaatkan untuk keperluan tertentu.
iv

MOTTO DAN PERSEMBAHAN
MOTTO

Pain make us stronger
[ Max Cavalera ]

Face this life with opened-mind, although this life is so painful for you
PERSEMBAHAN :
This is dedicated to :

The AlMighty God for my hardship.

My Parents and families at home.

For those loving me.
v

KATA PENGANTAR
Alhamdulillah, puji syukur kepada Alloh SWT atas segala rahmat dan
karunia-Nya sehingga penulis dapat menyelesaikan laporan Tugas Akhir yang
berjudul PENGGUNAAN PROGRAMMABLE TIMER SEBAGAI SAKLAR
OTOMATIS . Sebelumnya, penulis mengucapkan terima kasih yang tak ternilai
kepada :
1. Bpk. Drs. Y. Primadiyono, M.T selaku Dosen pembimbing Tugas Akhir.
2. Bpk. Drs. Agus Murnomo, M.T, Kaprodi D3 Teknik Elektro UNNES.
3. Bpk. Drs. Djoko Adi Widodo, M.T, Ketua Jurusan Teknik Elektro UNNES.
4. Bpk. Prof. Dr. Soesanto, Dekan Fakultas Teknik UNNES.
5. Bpk. Ir. Yudiansyah Lubis ( Staf Engineer PT. LEN Industri Bandung )
atas perkenalan dan ilmunya.
6. My Parents and families at home for prayer, money, and everything
Forgive me for my wrong forgive me with much remorseI just want
to hold my pain.!! .
7. Rekan rekan di mailist DELTA Electronic dan Moderatornya Pak Paulus
Andi Nalwan, S.T ( DELTA Electronic Surabaya ) untuk tanya jawabnya.
8. Rekan rekan di mailist Mikrokontroler Atmel Indonesia beserta
moderatornya Pak Widodo Budiharto atas bimbingannya.
9. Mr. Wichit Sirichote ( Applied Physics Department, Faculty of Science
King Mongkuts Institute of Technology Ladkrabang, Thailand ) for your
greatest projects.
vi

10. All the lads of D3 TE Instrumentasi Kendali UNNES Akt. 2003, Thanks
for everything you gave me sincerely and I want to say thanks for all of
our jokes, smiles, helps, and all your abuse on me I will miss you all
guysmy regards for you all .
11. For my best partner ever, he is Untung Gunawan, A.Md Thanks for
everything and I will never forget your sincerity on me see you next
time and I think you are my best partner ever who understand me and
someday later I will need your helps again my best friend keep
spiritmy best regard for you !!.
12. All of WISMA SANTAI camp society. I like our crazy friendship and I
will miss everything weve done together .
13. The big family of IMBARA ( Ikatan Mahasiswa Banjarnegara ) wherever
you stand up. Pokoke ngapak terus bae lah yaaamake it real
guys, thanks for our friendship and keep it exist .
14. Semarang extreme metal music communities and all around the world.
Keep on enjoy our fucking music to control our pain and keep in touch
guyskill your suffer with it !! .
15. Thanks a lot for my big Boss ( Mr. Subhan of D.O.T Production
Semarang ) with their clans for our friendship.
16. Wina Zaetun. This is someone who asked me to write her name here!!
17. For all of beautiful chicks in my heart. You make me sick!!
18. For everyone who gave me supports, helps, and everything sincerely.
19. All of my past that so painful for me. I dont want you comes to me
again you make me sick!!
vii

Dalam penulisan laporan tugas akhir ini penulis menyadari masih banyak
kekurangan, oleh karena itu maka kritik dan saran yang bersifat membangun
sangat penulis harapkan. Semoga laporan laporan tugas akhir ini dapat bermanfaat
bagi pihak yang memerlukannya.
Semarang, 10 September 2007
Penulis
viii
DAFTAR ISI
Halaman
HALAMAN JUDUL ..i
LEMBAR PENGESAHAN ii
ABSTRAK...iii
MOTTO DAN PERSEMBAHAN ..iv
KATA PENGANTAR.v
DAFTAR ISI vii
DAFTAR GAMBAR.viii
DAFTAR TABEL ..ix
DAFTAR LAMPIRAN x
BAB I. PENDAHULUAN .1
A. Latar Belakang Masalah 1
B. Permasalahan ..2
C. Pembatasan Masalah ...2
D. Tujuan 2
E. Manfaat 3
F. Sumber Data ...3
G. Sistematika Laporan Tugas Akhir 3
BAB II. LANDASAN TEORI ...5
A. Mikrokontroler AT89S51 ..5
1. Arsitektur Mikrokontroler AT89S51 ..5
1.1. Organisasi Mikrokontroler AT89S51 ..7
1.1.1. Memori Data AT89S51 7
ix

1.1.2. Memori Program AT89S51 ...8
1.2. Hardware Mikrokontroler AT89S51 ..9
2. Assembler MCS-51.10
B. Keypad Matrix 4X3 Non Common 11
1. Keypad Matrix 4X3 Non Common ..11
2. Penggunaan Keypad Matrix 4X3 Non Common 12
C. Modul LCD ( Liquid Crystal Display ) M1632 13
1. Hardware LCD M1632 .13
2. Teori LCD M1632 14
3. Penggunaan LCD Karakter M1632....16
D. Komponen Pendukung ..17
1. Resistor ..17
2. Kapasitor ..17
3. Dioda 18
4. Transistor ..19
5. Relay .20
BAB III. PERANCANGAN DAN REALISASI ALAT ..21
A. Perancangan Alat 21
1. Perancangan Hardware .22
1.1. Hardware Input ..22
1.2. Hardware Output ..24
1.3. Catu Daya ..26
2. Perancangan Software 29
2.1. Program Utama ..29
x

2.2. Program Layanan Interupsi .40
B. Hasil dan Pembahasan 47
BAB IV. PENUTUP .48
A. Kesimpulan 48
B. Saran ...48
DAFTAR PUSTAKA 50
LAMPIRAN
xi

DAFTAR GAMBAR
Halaman
Gambar 1. Konfigurasi Kaki Mikrokontroler AT89S51 6
Gambar 2. Peta Memori Data AT89S51 7
Gambar 3. Peta Memori Program AT89S51 8
Gambar 4. Keypad Matrix 4X3 Non Common 11
Gambar 5. Skema Keypad Matrix 4X3 Non Common 12
Gambar 6. LCD ( Liquid Crystal Display ) Karakter M1632 14
Gambar 7. Hubungan HD44780 Dengan Layar LCD M1632 14
Gambar 8. Diagram Internal Controller HD44780 15
Gambar 9. Simbol Resistor 17
Gambar 10. Simbol Kapasitor 18
Gambar 11. Simbol Dioda 19
Gambar 12. Simbol Transistor 19
Gambar 13. Simbol Relay 20
Gambar 14. Diagram Blok Sistem Programmable Timer 21
Gambar 15. Skema Keypad Dengan AT89S51 23
Gambar 16. Skema LCD M1632 Dengan AT89S51 24
Gambar 17. Skema Saklar Relay dan Buzzer Pada AT89S51 25
Gambar 18. Skema Catu daya Programmable Timer 26
Gambar 19. Skema Lengkap Programmable Timer 28
Gambar 20. Diagram pembagian software Programmable Timer 29
Gambar 21. Flowchart Programmable Timer 30
Gambar 22. Flowchart program utama pengaktifan timer 0 31
Gambar 23. Flowchart timer saat selesai menghitung 38
xii

Gambar 24. Flowchart layanan interupsi timer 0 41
Gambar 25. Gambar Programmable Timer yang dikemas 46
xiii
DAFTAR TABEL
Halaman
Tabel 1. Tabel Fungsi Pin LCD M1632 16
Tabel 2. Koneksi Keypad Dengan AT89S51 23
Tabel 3. Daftar Komponen Programmable Timer 27
Tabel 4. Tabel Pengujian Programmable Timer 47
xiv

DAFTAR LAMPIRAN
Lampiran 1. Listing Program Lengkap Programmable Timer
Lampiran 2. Datasheet Mikrokontroler AT89S51
1

BAB I
PENDAHULUAN
A. Latar Belakang Masalah
Di dalam kehidupan sehari-hari banyak ditemui piranti-piranti elektronik
yang digunakan oleh manusia. Sebagian piranti-piranti tersebut masih
menggunakan aliran listrik PLN untuk menghidupkannya dan juga memiliki
rangkaian pewaktu terintegrasi (integrated timer) yang berfungsi untuk
mematikan piranti itu sendiri setelah dipergunakan untuk beberapa waktu.
Misalkan televisi, microwave, rice cooker dan lain sebagainya. Pada
kenyataannya tidak semua piranti-piranti elektronik yang sering kita jumpai
memiliki pewaktu yang terintegrasi didalamnya, sehingga untuk
mematikannya setelah digunakan harus dengan mencabut aliran listrik melalui
steker maupun saklar. Sebenarnya banyak rangkaian pewaktu (timer) yang
dijual dipasaran tetapi pada umumnya memiliki batas pewaktuan yang kurang
fleksibel yaitu hanya beberapa jam saja. Begitu juga akurasi waktu umumnya
hingga dalam ukuran menit. Dalam perancangan Programmable Timer ini
akan dibuat alat pewaktu dengan akurasi hingga dalam jangkah detik sehingga
lebih akurat. Selain itu Programmable Timer ini dapat diseting dengan mudah
melalui keypad matrix. Dari latar belakang yang dikemukakan diatas maka
dipilih judul Penggunaan Programmable Timer Sebagai Saklar
Otomatis.
2

B. Permasalahan
Berdasarkan latar belakang diatas maka permasalahannya adalah :
1. Bagaimana perancangan Programmable Timer agar dapat
digunakan sebagai saklar elektronik ?
2. Bagaimana unjuk kerja Programmable Timer pada penerapannya ?
C. Pembatasan Masalah
Alat pewaktu terprogram (Programmable Timer) ini memiliki beberapa
keterbatasan yaitu :
1. Pewaktu ini mencacah mundur berdasarkan pengaturan data waktu
melalui keypad dengan batas nilai waktu maksimum 99 jam, 99
menit, dan 99 detik.
2. Programmable timer ini menggunakan catu daya yang diambil dari
jaringan listrik PLN. Tetapi tidak menutup kemungkinan
digunakannya Aki ( Accumulator ) sebagai sumber arus dengan
mengubah rangkaian catu daya Programmable Timer.
D. Tujuan
Tujuan dari perancangan alat pewaktu (Programmable Timer) ini adalah
membuat alat pewaktu yang dapat dimanfaatkan sebagai saklar elektronik.
3

E. Manfaat
Berdasarkan tujuan penulisan laporan tugas akhir diatas maka
didapatkan beberapa manfaat dari perancangan alat pewaktu (Programmable
Timer) ini yaitu :
1. Mencegah hal hal yang tidak diinginkan sebagai akibat kelalaian
penggunaan peralatan elektronik..
2. Mengurangi pemborosan energi listrik sebagai akibat penggunaan
peralatan elektronik yang berlebihan.
F. Sumber Data
Pengumpulan data untuk penulisan laporan tugas akhir ini diambil dari
literatur, buku, eksperimen dan internet.
G. Sistematika Laporan Tugas Akhir
Sistematika penyusunan laporan tugas akhir ini adalah sebagai berikut :
1. Bab I. Pendahuluan terdiri dari latar belakang masalah,
permasalahan, pembatasan masalah, tujuan, manfaat, sumber data
dan sistematika penulisan laporan tugas akhir.
2. Bab II. Tinjauan pustaka berisi penguraian landasan teori dan
peralatan atau komponen yang digunakan.
3. Bab III. Perancangan alat berisi cara kerja alat pewaktu yang akan
dibuat, pembuatan alat, hasil dan pembahasannya.
4

4. Bab IV. Penutup berisi kesimpulan dan saran.
Daftar pustaka berisi tentang daftar pustaka yang diambil sebagai
rujukan dalam penyusunan laporan tugas akhir. Lampiran berisi
data yang berhubungan dengan pembuatan tugas akhir.
5

BAB II
LANDASAN TEORI
A. Mikrokontroler AT89S51
1. Arsitektur Mikrokontroler AT89S51
Mikrokontroler merupakan sebuah IC processor skala kecil
(microprocessor) yang populer saat ini sebagai sebuah IC keping tunggal
yang mampu bekerja layaknya komputer mini. Mikrokontroler hanya
dapat dijalankan jika diisi program dengan menggunakan bahasa
pemrograman tertentu. Pada penulisan dan perancangan laporan tugas
akhir ini digunakan mikrokontroler AT89S51 buatan ATMEL Corp.
Mikrokontroler ini memiliki kapasitas memori untuk menyimpan program
sebesar 4 Kbyte Flash PEROM (Programmable and Erasable Read Only
Memory) yang dapat diisi dan dihapus berkali-kali. Memori ini digunakan
oleh mikrokontroler AT89S51 untuk menyimpan perintah (instruction set)
sehingga memungkinkan mikrokontroler ini bekerja dengan mode keping
tunggal (single chip) maupun mode memori tambahan (external memory)
hingga 64 Kbyte. Selain mempunyai memori untuk menyimpan program
kerja, mikrokontroler AT89S51 juga memiliki RAM internal sebesar 128
byte untuk menyimpan data sementara. Jika RAM internal kurang
mencukupi maka mikrokontroler AT89S51 dapat menggunakan RAM
eksternal hingga 64 Kbyte. Berikut ini adalah keunggulan mikrokontroler
AT89S51 yang digunakan pada tugas akhir ini:
6

1. Memory Program Internal 4 Kbyte Flash PEROM.
2. Dual Data Pointer (Dual DPTR)
3. Watchdog Timer
4. Frekuensi operasi 0 33 MHz.
5. RAM internal 128 byte
6. 32 pin I/O (Input Output)
7. 2 buah timer/counter 16 bit
8. 6 sumber interupsi
9. Serial UART untuk komunikasi serial
10. Dapat diprogram secara serial ISP (In-System Programming)
Gambar 1. Konfigurasi kaki mikrokontroler AT89S51
( Sumber: Datasheet AT89S51, www.atmel.com

)
7

1.1 Organisasi Mikrokontroler AT89S51
AT89S51 mempunyai struktur ruang memori yang terdiri atas
RAM Internal sebesar 128 byte untuk menyimpan data atau variabel
yang bersifat sementara, Register Fungsi Khusus (SFR) yang berisi
register-register yang mempunyai fungsi khusus, dan flash PEROM
4 Kbytes untuk menyimpan program utama.
1.1.1 Memori Data AT89S51
Memori data RAM (Random Acces Memory) pada AT89S51
sebesar 128 byte yang dapat diakses secara langsung maupun tidak
dan digunakan untuk menyimpan data sementara. Diatas lokasi
RAM terdapat register fungsi khusus (SFR) sebesar 128 byte yang
hanya dapat diakses secara langsung.
Gambar 2. Peta memori data AT89S51
( Sumber: 8051 Memory Organization, www.atmel.com

)
8

Pada gambar 2 diatas terdapat 2 jenis memori data yang dapat
diakses oleh mikrokontroler AT89S51, yaitu memori data internal
sebesar 128 byte yang terletak di dalam chip mikrokontroler dan
memori data external. Jangkauan maksimal akses memori data
sebesar 64 Kbyte untuk memori data internal dan external. Memori
data internal AT89S51 terletak pada alamat awal 00h hingga 7Fh
(Gambar 2) sedangkan alamat diatasnya yaitu 80h sampai FFh
adalah register fungsi khusus (SFR).
1.1.2 Memori Program AT89S51
Memori program internal pada mikrokontroler AT89S51
sebesar 4 Kbyte yang terletak pada alamat 0000h hingga 0FFFh.
Berikut adalah peta memori program mikrokontroler AT89S51.
Gambar 3. Peta memori program AT89S51
( Sumber: 8051 Memory Organization, www.atmel.com

)
9

Pada gambar peta memori program AT89S51 diatas, memori
program pada AT89S51 terdiri dari 2 jenis. Pertama adalah memori
program internal dengan alamat 0000h hingga 0FFFh dan kedua
adalah memori program eksternal dengan kapasitas maksimal
memori sebesar 64 Kbyte.
1.2 Hardware Mikrokontroler AT89S51
Mikrokontroler seri AT89S51 buatan ATMEL Corp. ini
memiliki kaki pin I/O sebanyak 32 pin dari jumlah keseluruhan kaki
pin yaitu 40 kaki untuk kemasan PDIP (Plastic Dual In-Line
Package). Dari 32 I/O (Input-Output) tersebut terbagi menjadi 4 port
yaitu Port 0 (P0), Port 1 (P1), Port 2 (P2), dan Port 3 (P3). Keempat
port tersebut semuanya bersifat dua arah (bidirectional) yaitu dapat
berfungsi sebagai masukan maupun keluaran. Selain itu
mikrokontroler AT89S51 memiliki 2 buah timer/counter 16 bit, 6
sumber interupsi internal maupun eksternal, full duplex serial
UART, Dual DPTR, Watchdog Timer, dan banyak fitur fitur
lainnya. Salah satu fitur yang paling menarik dari mikrokontroler
AT89S51 adalah kemampuan In-System Programming (ISP) yaitu
sistem pemrograman secara serial sehingga memungkinkan
mikrokontroler untuk diprogram di dalam sistem target tanpa perlu
mencabut chip AT89S51 dari sistem tersebut.
10

2 Assembler MCS-51
Seperti layaknya komputer yang memerlukan perangkat lunak untuk
dapat menggunakannya, mikrokontroler juga memerlukan perangkat lunak
(software) agar dapat digunakan. Pada mikrokontroler AT89S51 yang
akan digunakan pada perancanangan Programmable Timer ini dapat
diprogram dengan menggunakan bahasa pemrograman tertentu, misalnya
bahasa assembler MCS-51, bahasa C, dan bahasa basic. Dari ketiga
bahasa yang umum digunakan dalam pemrograman mikrokontroler
AT89S51 tersebut, bahasa C dan bahasa basic merupakan bahasa
pemrograman tingkat tinggi. Sedangkan bahasa assembler MCS-51
merupakan bahasa tingkat bawah dibandingkan dengan kedua bahasa
pemrograman diatas. Meskipun assembler merupakan bahasa tingkat
bawah tetapi kode kode mesin yang dihasilkan memiliki waktu eksekusi
lebih cepat dibandingkan dengan bahasa lainnya. Selain itu kapasitas kode
program memori yang dihasilkan juga relatif lebih sedikit dibandingkan
dengan bahasa pemrograman lainnya. Instruksi set mikrokontroler
AT89S51 bersumber dari perusahaan prosesor Intel Corp. karena
mikrokontroler AT89S51 buatan ATMEL merupakan keturunan dari
mikroprosesor 8 bit seri 8051 yang pada awalnya dibuat oleh Intel Corp.
dan hingga saat ini sudah ribuan varian dari mikroprosesor 8051 Intel yang
diproduksi oleh beberapa perusahaan semikonduktor dengan berbagai fitur
tambahan.
11

B. Keypad Matrix 4X3 No Common
1. Keypad Matrix 4X3 No Common
Keypad matrix 4X3 non common sering digunakan sebagai media
untuk memasukan data. Pada tugas akhir ini media keypad digunakan
untuk memasukan data pengaturan waktu untuk Programmable Timer.
Setelah data waktu yang diinginkan dimasukan melalui keypad maka data
tersebut akan diolah oleh mikrokontroler AT89S51. Pengolahan data
waktu yaitu berupa pencacahan mundur untuk setiap detik. Keypad matrix
4X3 yang akan digunakan memiliki 4 baris dan 3 kolom tanpa common
sehingga pengambilan data dilakukan dengan teknik scanning. Berikut
adalah gambar keypad matrix 4X3 non common yang digunakan dalam
tugas akhir ini.
Gambar 4. Keypad matrix 4X3 non common
( Sumber: AN Teknik Scanning Keypad 4X3 non common,
www.delta-electronic.com

)
12

2. Penggunaan Keypad Matrix 4X3 Non Common
Metode scanning untuk pengambilan data pada keypad ini dilakukan
dengan memberikan logika 0 secara bergantian pada bagian kolom
(column scanning). Sesuai pada gambar 5, jika tombol 1 ditekan maka
pada saat proses scanning mengirimkan logika 0 pada kolom 1, baris 1
(B1) yang juga terhubung pada kolom satu akibat penekanan tombol 1
juga akan berlogika 0.
Gambar 5. Skema keypad matrix 4X3 non common
( Sumber: AN Teknik Scanning Keypad 4X3 Non Common.
www.delta-electronic.com

)
Proses pengambilan data diawali dengan mengirimkan logika 0 pada
kolom 1 dan mengambil kondisi baris. Bila kondisi baris tidak ada yang
berlogika 0, maka proses dilanjutkan dengan mengirimkan logika 0 pada
kolom 2 serta kembali memeriksa kondisi baris. Bila masih belum
ditemukan logika 0 pada baris, maka proses berlanjut ke kolom 3.
13

Demikian seterusnya hingga ditemukan salah satu kondisi baris berlogika
0 yang menandakan adanya penekanan keypad. Setelah kondisi baris dan
kolom saat penekanan tombol ditemukan maka program akan
mengkonversi kondisi-kondisi tersebut ke dalam bentuk ASCII sesuai
dengan tombol yang ditekan sehingga data tersebut dapat dikirim ke LCD.
C. Modul LCD ( Liquid Crystal Display ) M1632
1. Hardware LCD M1632
LCD (Liquid Crystal Display) M1632 adalah LCD karakter 16
kolom dan 2 baris yang dilengkapi dengan internal controller sehingga
proses scanning LCD dilakukan oleh internal controller tersebut. Didalam
LCD M1632 terdapat 3 buah memori utama yaitu CGROM (Character
Generator Read Only Memory), CGRAM (Character Generator Random
Access Memory), dan DDRAM (Display Data Random Access Memory).
DDRAM merupakan memori tempat karakter yang akan ditampilkan.
CGRAM merupakan memori untuk menggambarkan pola sebuah karakter
dimana bentuk dari karakter dapat diubah ubah sesuai dengan keinginan.
Tetapi jika aliran arus atau catu daya LCD hilang maka pola karakter di
dalam memori CGRAM juga hilang. Sedangkan memori CGROM
berfungsi untuk menggambarkan pola - pola karakter dimana pola tersebut
adalah pola pola permanen yang tidak dapat diubah lagi atau bersifat
tetap.
14

Gambar 6. LCD ( Liquid Crystal Display ) Karakter M1632
( Sumber : LCD Character M1632 Tutorial, www.mytutorialcafe.com

)
2. Teori LCD M1632
M1632 merupakan modul LCD matrix dengan konfigurasi 16
karakter dan 2 baris dengan setiap karakternya dibentuk oleh 8 baris pixel
dan 5 kolom pixel (1 baris pixel terakhir adalah kursor). Gambar 7
menunjukan hubungan antara layar LCD M1632 dengan internal
controller chip ( HD44780U ).
Gambar 7. Hubungan HD44780 dengan layar LCD M1632
( Sumber: Datasheet HD44780, www.hitachi.com

)
15

Pada gambar 7 tersebut tampak karakter A terbentuk oleh COM1
(pixel baris 1) hingga COM8 (pixel baris 8) dan SEG1 (pixel kolom 1)
hingga SEG5 (pixel kolom 5). LCD matrix M1632 memiliki internal
controller chip HD44780 yaitu sebuah chip yang mengatur proses
scanning pada layar LCD yang disusun oleh 16 COM dan 40 SEG
sehingga mikrokontroler yang mengakses LCD ini tidak perlu lagi
mengatur proses scanning. Mikrokontroler hanya perlu untuk
mengirimkan data-data yang merupakan karakter yang akan ditampilkan
pada layar LCD maupun perintah-perintah pengaturan tampilan LCD.
Diagran internal controller LCD matrix M1632 adalah sebagai berikut:
Gambar 8. Diagram internal controller HD44780
( Sumber : Datasheet HD44780, www.hitachi.com

)
16

3. Penggunaan LCD Karakter M1632
LCD karakter M1632 memiliki 16 kaki dengan fungsi masing
masing. Berikut ini adalah tabel fungsi dari masing masing kaki LCD
M1632.
Tabel 1. Tabel fungsi pin LCD M1632
No Nama Pin

Keterangan
1 Gnd 0 Volt
2 Vcc + 5 Volt
3 Vee Tegangan masukan LCD untuk mengatur kontras tampilan ( 0 - 5 Volt )
4 RS Register Select, jika 0 = Register Perintah atau 1 = Register Data
5 R/W Read/Write (Baca/Tulis), jika logika 0 = Write atau Logika 1 = Read
6 E Enable LCD Clock, di-set 1 untuk pengiriman atau pembacaan data
7 D0 Data Bus 0
8 D1 Data Bus 1
9 D2 Data Bus 2
10 D3 Data Bus 3
11 D4 Data Bus 4
12 D5 Data Bus 5
13 D6 Data Bus 6
14 D7 Data Bus 7
15 Anoda Tegangan positif 4,5 Volt untuk M1632 yg dilengkapi backlight
16 Katoda Ground backlight

( Sumber: LCD Character M1632 Tutorial, www.mytutorialcafe.com

)
LCD M1632 mempunyai dua buah register yang aksesnya diatur
dengan menggunakan kaki RS. Pada saat RS berlogika 0, maka register
yang diakses adalah register perintah dan pada saat RS berlogika 1, maka
register yang diakses adalah register data. Register perintah merupakan
register di mana perintah-perintah dari mikrokontroler ke M1632 pada saat
proses penulisan data atau status dari M1632 dapat dibaca saat pembacaan
data. Mode pembacaan LCD M1632 dilakukan melalui pin R/W dimana
jika logika 1 diberikan pada pin ini maka LCD sedang dalam mode
17

pembacaan kondisi atau status LCD. Jika logika 0 diberikan pada pin R/W
berarti LCD dalam mode pembacaan. Jika aplikasi tidak memerlukan
akses pembacaan kondisi atau status dari LCD maka pin R/W pada LCD
M1632 dapat dihubungkan ke ground. Akses ke atau dari M1632 dapat
dilakukan dengan antarmuka 4 bit maupun 8 bit dan ditentukan pada saat
inisialisasi LCD. Proses inisialisasi LCD M1632 dilakukan oleh
mikrokontroler AT89S51.
D. Komponen Pendukung
1. Resistor
Resistor adalah salah satu komponen elektronik yang berfungsi
untuk menghambat aliran arus listrik. Resistor pada umumnya terdiri dari
2 jenis yaitu resistor dengan nilai hambatan (resistance) yang tetap, dan
resistor dengan nilai hambatan yang dapat berubah (variable resistor).
Resistor memiliki satuan Ohm ( ? ).
(a) (b)
Resistor tetap Resistor variabel
Gambar 9. Simbol resistor
2. Kapasitor
Kapasitor secara umum berfungsi untuk menyimpan muatan
muatan listrik. Kapasitor terdiri dari 2 jenis yaitu kapasitor berkutub (polar
capasitor) dan kapasitor tanpa kutub (nonpolar capasitor). Pada kapasitor
18

tanpa kutub dapat dibagi lagi menjadi 2 jenis yaitu kapasitor tetap (fixed
capasitor) dan kapasitor tidak tetap (variable capasitor). Pemasangan
kapasitor berkutub tidak boleh terbalik kakinya, sedangkan untuk
kapasitor tanpa kutub pemasangannya dapat dibolak balik. Kapasitor
tersusun dari 2 buah plat logam yang dipisahkan oleh penyekat dielektrik
tertentu. Satuan dari kapasitas kapasitor diukur dalam satuan Farad.
(a) (b) (c)
Kapasitor polar Kapasitor non polar Kapasitor variabel
Gambar 10. Simbol kapasitor
3. Dioda
Dioda adalah komponen elektronik yang terbuat dari bahan
semikonduktor. Dioda merupakan komponen yang secara umum berfungsi
sebagai penyearah arus bolak balik sehingga sering dimanfaatkan
sebagai rangkaian penyearah arus AC pada rangkaian catu daya. Dioda
hanya dapat menghantarkan arus listrik DC pada satu arah. Pada
kenyataannya banyak jenis dioda yang sesuai dengan fungsinya antara lain
dioda penyearah, dioda zener yang digunakan untuk menstabilkan
tegangan, dioda varactor pada rangkaian osilator frekuensi, dan dioda
sinyal yang bisa ditemui pada rangkaian pengolahan sinyal. Berikut adalah
beberapa simbol dioda yang banyak digunakan dalam rangkaian
elektronika.
19

(a) (b) (c)
Dioda tunnel Dioda zener Dioda penyearah
Gambar 11. Simbol dioda
4. Transistor
Transistor merupakan komponen elektronik yang paling banyak
digunakan sebagai penguat (amplifier). Transistor ada 2 jenis yaitu
transistor bipolar dan transistor FET. Penggunaan transistor cukup luas
pada setiap rangkaian elektronika, misalkan sebagai penguat sinyal AC,
penguat arus DC, penguat audio, rangkaian switching, dan masih banyak
yang lainnya. Transistor adalah komponen aktif dengan arus, tegangan,
atau daya keluaran yang dikendalikan oleh masukannya (Thomas Sri
Widodo 2002: 46).
(a) (b)
Bipolar NPN Bipolar PNP
(c) (d)
FET kanal N FET kanal P
Gambar 12. Simbol transistor
20

Pada Programmable Timer komponen transistor yang digunakan
pada rangkaian saklar relay digital adalah jenis bipolar NPN. Transistor
tersebut berfungsi sebagai penguat arus bagi relay.
5. Relay
Relay merupakan saklar elektro-mekanik yang bekerja karena
pengaruh elektromagnetik pada lilitannya. Ketika lilitan atau kumparan
relay dialiri arus listrik DC maka kumparan tersebut menimbulkan medan
magnet. Kemudian medan magnet tersebut digunakan untuk menarik
logam yang telah tersusun sedemikian rupa yang membentuk saklar
mekanik.
Gambar 13. Simbol relay
Pada gambar 13, jika arus mengalir melewati kumparan dari Vcc
menuju ground maka kumparan akan menimbulkan medan magnet dan
menarik saklar A ke bawah sehingga tersambung dengan B
A
B
Vcc
Relay
21

BAB III
PERANCANGAN DAN REALISASI ALAT
A. Perancangan Alat
Programmable Timer ini secara umum terdiri dari 6 bagian, antara lain
bagian keypad matrix 4X3 sebagai masukan data, bagian sistem
mikrokontroler AT89S51 sebagai pengendali utama, bagian LCD M1632
sebagai media penampil waktu cacahan, bagian relay aktuator sebagai
saklar elektronik, bagian buzzer sebagai indikator bunyi, dan terakhir
adalah bagian catu daya sebagai sumber energi listrik bagi sistem secara
keseluruhan. Berikut adalah diagram blok dari sistem Programmable
Timer yang akan dirancang.
Gambar 14. Diagram blok sistem Programmable Timer
KEYPAD
MATRIX
4X3

MIKROKONTROLER
AT89S51

LCD KARAKTER
M1632
RELAY
AKTUATOR
BUZZER
CATU DAYA

22

1. Perancangan Hardware
Perancangan perangkat keras Programmable Timer diawali
dengan menentukan prinsip kerja alat. Pengguna memasukan data
waktu melalui keypad matrix 4X3 sebagai nilai penentu lama
pencacahan (counting down). Nilai ini menentukan waktu yang
diperlukan pencacah (down counter) untuk mencacah sampai nilai nol.
Setelah seluruh data masuk ke memori data mikrokontroler, maka
pencacahan secara otomatis berjalan dan nilai data waktu yang telah
dimasukan berkurang setiap detik hingga bernilai nol dan dapat dilihat
pada layar LCD M1632. Setelah cacahan mencapai nol maka
Programmable Timer akan menonaktifkan keluarannya. Proses
penghitungan waktu timer diatas merupakan proses yang berjalan
tahap demi tahap yang dilakukan oleh mikrokontroler. Pada aplikasi
atau kenyataannya setiap proses tentunya terdiri dari sekumpulan sub-
proses yang berjalan secara bertahap.
1.1 Hardware Input
Hardware input merupakan hadware yang digunakan
sebagai masukan data. Dalam Programmable Timer hardware
input berupa keypad matrix 4X3. Selanjutnya akan ditentukan
bagaimana pemasangan keypad matrix 4X3. Pemasangan keypad
matrix hanya membutuhkan 7 pin pada salah satu port
mikrokontroler AT89S51, karena keypad matrix 4X3 non
23

common hanya memiliki 7 kaki. Ketujuh keluaran keypad akan
dihubungkan ke port 1 (P1) mikrokontroler AT89S51.
Gambar 15. Skema keypad dengan AT89S51
( Sumber : AN Teknik Scanning Keypad 4X3 Non Common.
www.delta-electronic.com

)
Bentuk fisik keypad matrix yang digunakan seperti pada
gambar 4. Pada gambar tersebut keluaran keypad terdiri dari C1,
C2, dan C3 yang merupakan jalur column (kolom) dan R1, R2,
R3 dan R4 yang merupakan jalur row (baris). Koneksi kaki
keypad matrix ke port 1 mikrokontroler dapat dilihat pada tabel 2
berikut.
Tabel 2. Koneksi keypad dengan AT89S51
Output Keypad Input Port 1
R2 P1.0
R3 P1.1
C3 P1.2
R4 P1.3
C1 P1.4
C2 P1.6

C1
R1
KEYPAD MATRIX 4X3
R2
R3
C3
AT89C51
9
18
19
29
30
31
1
2
3
4
5
6
7
8
21
22
23
24
25
26
27
28
10
11
12
13
14
15
16
17
39
38
37
36
35
34
33
32
RST
XTAL2
XTAL1
PSEN
ALE/PROG
EA/VPP
P1.0
P1.1
P1.2
P1.3
P1.4
P1.5
P1.6
P1.7
P2.0/A8
P2.1/A9
P2.2/A10
P2.3/A11
P2.4/A12
P2.5/A13
P2.6/A14
P2.7/A15
P3.0/RXD
P3.1/TXD
P3.2/INT0
P3.3/INT1
P3.4/T0
P3.5/T1
P3.6/WR
P3.7/RD
P0.0/AD0
P0.1/AD1
P0.2/AD2
P0.3/AD3
P0.4/AD4
P0.5/AD5
P0.6/AD6
P0.7/AD7
C2
R4
24

1.2 Hardware Output
Hardware output terdiri dari LCD M1632 dan rangkaian
saklar relay digital. Modul LCD M1632 terdiri dari 16 pin kaki
dan 7 pin diantaranya terhubung ke port 0 (P0) mikrokontroler
AT89S51 dimana 4 pin digunakan sebagai antarmuka data 4 bit
dan 3 pin untuk kontrol. Kaki nomor 3 dari M1632 digunakan
sebagai pengatur kontras atau kecerahan tampilan karakter pada
LCD dan dihubungkan dengan trimpot untuk pengaturan kontras.
Gambar 16. Skema LCD M1632 dengan AT89S51.
( Sumber : Antarmuka Modul SC-51 ISP dengan LCD M1632,
www.delta-electronic.com

)
Rangkaian saklar relay digital terdiri dari relay, sebuah
transistor bipolar NPN sebagai penguat arus yang terhubung
pada port 3.2 AT89S51, dan logic inverter ( IC 74LS04 ). Saklar
relay ini digunakan sebagai saklar otomatis yang keaktifannya
dikendalikan oleh mikrokontroler AT89S51.
11
D4
E
VR1
TRIMPOT 10K
D5
D5
D4
D7
14
RS
2
R/W
D6
RW
4
LCD M1632
6
3 5
AT89S51
9
18
19
29
30
31
1
2
3
4
5
6
7
8
21
22
23
24
25
26
27
28
10
11
12
13
14
15
16
17
39
38
37
36
35
34
33
32
RST
XTAL2
XTAL1
PSEN
ALE/PROG
EA/VPP
P1.0
P1.1
P1.2
P1.3
P1.4
P1.5
P1.6
P1.7
P2.0/A8
P2.1/A9
P2.2/A10
P2.3/A11
P2.4/A12
P2.5/A13
P2.6/A14
P2.7/A15
P3.0/RXD
P3.1/TXD
P3.2/INT0
P3.3/INT1
P3.4/T0
P3.5/T1
P3.6/WR
P3.7/RD
P0.0/AD0
P0.1/AD1
P0.2/AD2
P0.3/AD3
P0.4/AD4
P0.5/AD5
P0.6/AD6
P0.7/AD7
1
E
D6
13
D7
RS
Vcc 5V
12
25

Gambar 17. Skema saklar relay dan buzzer pada AT89S51
( Sumber : Programmable Timer Menggunakan Modul DST-51,
www.delta-electronic.com

)
Transistor akan aktif jika kaki basis sebagai masukannya
memperoleh tegangan high (TTL Level) dari keluaran logic
inverter 74LS04 sehingga basis dan emitor mendapat bias maju
dan mengalirkan arus dari emitor menuju kolektor dan arus
tersebut juga akan melintasi relay menuju ground. Hal ini
mengakibatkan relay akan aktif (On) dan menghubungkan
kontak saklar pada relay. Jika masukan logic inverter mendapat
tegangan tinggi (TTL Level) dari port 3.2 mikrokontroler maka
keluaran IC logic inverter 74LS04 menjadi rendah sehingga
transistor tidak mendapatkan bias maju dan relay tidak bekerja.
Dioda D5 digunakan untuk melindungi transistor dari tegangan
balik induksi relay. Speaker (SP) merupakan buzzer sebagai
indikator suara jika waktu pencacahan Programmable Timer
telah selesai.
R1
SP
BUZZER 5 V
Vcc 12 V
Q2
1N4002
10K
1/6 IC3A
IC3 74LS04
1 2 BD400
Vcc 5V
IC2 AT89S51
9
18
19
29
30
31
1
2
3
4
5
6
7
8
21
22
23
24
25
26
27
28
10
11
12
13
14
15
16
17
39
38
37
36
35
34
33
32
RST
XTAL2
XTAL1
PSEN
ALE/PROG
EA/VPP
P1.0
P1.1
P1.2
P1.3
P1.4
P1.5
P1.6
P1.7
P2.0/A8
P2.1/A9
P2.2/A10
P2.3/A11
P2.4/A12
P2.5/A13
P2.6/A14
P2.7/A15
P3.0/RXD
P3.1/TXD
P3.2/INT0
P3.3/INT1
P3.4/T0
P3.5/T1
P3.6/WR
P3.7/RD
P0.0/AD0
P0.1/AD1
P0.2/AD2
P0.3/AD3
P0.4/AD4
P0.5/AD5
P0.6/AD6
P0.7/AD7
RELAY 12 V
3
5
4
1
2
D3
26

1.3 Catu Daya
Catu daya yang digunakan pada rangkaian programmable
timer ini memerlukan catu daya yang stabil serta harus mampu
mengalirkan arus yang cukup untuk rangkaian. Untuk itu
digunakan IC stabilizer LM7805 yang menghasilkan tegangan
DC sebesar 5 Volt yang telah teregulasi dengan baik. Agar
keluaran IC LM7805 tersebut mampu mengalirkan arus yang
cukup untuk rangkaian programmable timer maka ditambahkan
sebuah transistor daya tipe 2N3055. Gunakan pendingin yang
cukup untuk transistor daya tersebut.
Gambar 18. Skema catu daya Programmable Timer
( Sumber : RONICA Electronics )
T1
TRAFO 2 Amp
1 5
6
4 8
D2 1N4002
D1 1N4002
CT
LM7805
IC1
Vcc 12 Volt
2200uF/25V 100uF/25V
C4
100uF/25V 100nF
+
C1
VI
G
N
D
VO
+ C3
12 Volt
+ C2
Vcc 5 Volt
220 Volt
12 Volt
Q1
2N3055
27

Komponen-komponen elektronik utama yang diperlukan
untuk Programmbale Timer beserta catu dayanya adalah sebagai
berikut :
Tabel 3. Daftar komponen Programmable Timer
No

Nama Komponen Nilai Tipe
1 Resistor R1 10K Standar
2 Resistor R2 10K Standar
3 Kapasitor elektrolit C1 2200 F/25V Standar
4 Kapasitor elektrolit C2 100 F/25V Standar
5 Kapasitor elektrolit C3 100 F/25V Standar
6 Kapasitor keramik C4 100 nF Standar
7 Kapasitor elektrolit C5 10 F/25V Standar
8 Kapasitor keramik C6 30 pF Standar
9 Kapasitor keramik C7 30 pF Standar
10 Dioda D1, D2, D3 1N4002 Standar
11 Trimpot VR1 10K Preset
12 Transistor Q1 2N3055 TO-3
13 Transistor Q2 C945 TO-92
14 IC1 LM7805 5 Volt TO-220
15 IC2 AT89S51 - P-DIP
16 IC3 74LS04 - P-DIP
17 Relay 12 Volt Standar
18 Kristal 11,0592 MHz Standar
19 Buzzer 5 Volt Standar
20 Keypad matrix 4 X 3 No-common
21 LCD Karakter 2 X 16 Karakter M1632
22 Transformator T1 2 Ampere Standar
23 Saklar SW1 Push-On Standar
24 Pendingin/Heatsink Q1 Standar TO-3
25 PCB - Polos

28

Gambar 19. Skema lengkap Programmable Timer
( Drawned Manually using ORCAD Software Release 9.1 )
D6
X-TAL
D3
X-TAL = 11,059 MHz
Vcc 5 Volt
VR 10K
+ C5
0
10K
R4
RS
D4
2
11
0
10K R2
R3
R/W
3
R2
E
0
1N4002
JOKO PITOYO 1
PROGRAMMABLE TIMER
A
1 1 Sunday , May 27, 2007
Title
Size Document Number Rev
Date: Sheet of
4
Q2
BD400
13
0 1/6 IC3
C1
Vcc 12 V
R/W
SW1
RST SWITCH
5
14
0
C7
D4
6
Vcc 5 Volt
C1
6
0
C3
7
R3
5
KEYPAD MATRIX 4X3 NON
COMMON
RS
IC3 74LS04
1 2
8
C6
4
R1
D5
9
R1
LCD M1632
R4
D7
0
30pF
Vcc 5 V
R2
R1
*
D6
C2
D7
D5
C2
2
Vcc 5 Volt
C3
E
SP 1
BUZZER
1
#
IC 2
AT89S51
9
18
19
29
30
31
1
2
3
4
5
6
7
8
21
22
23
24
25
26
27
28
10
11
12
13
14
15
16
17
39
38
37
36
35
34
33
32
RST
XTAL2
XTAL1
PSEN
ALE/PROG
EA/VPP
P1.0
P1.1
P1.2
P1.3
P1.4
P1.5
P1.6
P1.7
P2.0/A8
P2.1/A9
P2.2/A10
P2.3/A11
P2.4/A12
P2.5/A13
P2.6/A14
P2.7/A15
P3.0/RXD
P3.1/TXD
P3.2/INT0
P3.3/INT1
P3.4/T0
P3.5/T1
P3.6/WR
P3.7/RD
P0.0/AD0
P0.1/AD1
P0.2/AD2
P0.3/AD3
P0.4/AD4
P0.5/AD5
P0.6/AD6
P0.7/AD7
30pF
RELAY SPDT 12V
3
5
4
1
2
12
3
0
10uF
1
29

2 Perancangan Software
Pada bagian perangkat lunak Programmable Timer secara garis
besar terdiri dari 2 bagian yaitu program utama dan program
layanan interupsi.
2.1 Program Utama
Program utama terdiri dari dua bagian yaitu untuk
mengaktifkan timer dan bagian yang bekerja saat timer selesai
menghitung.
Gambar 20. Diagram pembagian software Programmable Timer
Sedangkan flowchart Programmable Timer secara
keseluruhan dapat dilihat pada gambar 21.
Program Utama Program Interupsi
Software
Programmable Timer
Program Utama Pengaktif Timer
Program Utama Saat Timer
Selesai Menghitung
30

tidak
ya
tidak
ya
tidak
ya
Gambar 21. Flowchart Programmable Timer
START
T

Subrutin Inisialisasi
LCD dan
Mikrokontroler

Subrutin Reset
Timer 0
Subrutin start
Timer 0
Subrutin Reset
Nilai Timer
Interupsi
Timer 0

?

Subrutin Kurangi
Waktu
Kembali
dari Interupsi
Subrutin
Pesan TIME OUT
Subrutin Inisialisasi
LCD
Matikan Relay
Dan Buzzer
Waktu
Habis ?

Hardware
Reset

?

31

Pada bagian flowchart program utama untuk mengaktifkan
timer, proses dimulai dengan inisialisasi LCD dan reset nilai
timer di mana pada bagian reset nilai timer, nilai-nilai waktu
tersebut akan dimasukkan melalui keypad matrix. Setelah nilai
timer terisi melalui keypad sesuai dengan keinginan pengguna,
maka timer akan aktif sehingga proses penghitungan waktu
terjadi. Proses penghitungan waktu waktu dilakukan dengan
menggunakan layanan interupsi timer 0. Layanan interupsi
berjalan terpisah (independent) sehingga program utama dapat
berhenti pada suatu lokasi tertentu atau menjalankan fungsi
lainnya selama fungsi tersebut tidak menggunakan timer 0.
Dibawah ini adalah alur program utama (flowchart) bagian
pengaktifan timer.
tidak
ya
Gambar 22. Flowchart program utama pengaktifan timer 0
Inisialisasi
LCD
Reset Nilai
Timer
Start Timer 0
Interupsi
Timer 0 ?
Layanan
Interupsi Timer 0
32

Berikut adalah potongan listing program utama yang berisi
sub-program inisialisasi LCD, sub-program pengisian (reset)
nilai timer melalui keypad, dan pengaktifan timer 0.
DSEG
ORG 60H
NilaiTimer: Ds 6
StackTimer: Ds 1
Digit1: Ds 1
Digit2: Ds 1
CSEG
ORG 00H
RS Bit P2.1
EClock Bit P2.7
RW Bit P2.6
Start:
Lcall Init_LCD ; panggil subprogram inisialisasi LCD
Acall ResetNilaiTimer ; panggil subprogram pengisian timer
Acall StartTimer0 ; aktifkan timer 0
Ajmp $
;====subprogram inisialisasi LCD M1632====
Init_LCD:
Setb RS
Clr EClock
Lcall Delay_5mS ;tunda selama 20mSekon
Lcall Delay_5mS ;untuk memastikan tegangan
Lcall Delay_5mS ;catu daya telah mencapai
Lcall Delay_5mS ;4,5 Volt agar LCD siap
Mov A,#30H
Acall Kirim_Perintah
Lcall Delay_5mS
Mov A,#30H
Acall Kirim_Perintah
Push B
Mov B,#100
Djnz B,$
Pop B
Mov A,#30H
Acall Kirim_Perintah
Mov A,#20H ; masuk ke pengaturan mode & fungsi
Acall Kirim_Perintah ; kirim isi Acc ke register perintah LCD
33

;***********pengaturan fungsi dan mode LCD********
Mov A,#28H ; font 5x8, 2 baris, antarmuka 4 bit
Acall Kirim_Perintah ; kirim isi Acc ke register perintah
Mov A,#08H ; matikan display
Acall Kirim_Perintah ; kirim isi Acc ke register perintah
Mov A,#01H ; hapus DDRAM LCD
Acall Kirim_Perintah ; kirim isi Acc ke register perintah
Mov A,#0EH ; aktifkan layar LCD
Acall Kirim_Perintah ; kirim isi Acc ke register perintah
Mov A,#06H ; mode increment address
Acall Kirim_Perintah ; kirim isi Acc ke register perintah
Ret
;==========subprogram reset nilai timer===========
ResetNilaiTimer:
Mov R0,#NilaiTimer+3
Acall Ambil2digitKeypad ; panggil subrutin ambil keypad
Mov @R0,A
Dec R0
Mov A,#':'
Lcall Kirim_Karakter
Acall Ambil2digitKeypad ; panggil subrutin ambil keypad
Mov @R0,A
Dec R0
Mov A,#':'
Lcall Kirim_Karakter
Acall Ambil2digitKeypad ; panggil subrutin ambil keypad
Mov @R0,A
Dec R0
Mov @R0,#00
Ret
;======subprogram pengambilan 2 digit dari keypad=======
Ambil2DigitKeypad:
Acall KeypadPolling
Acall KeypadHex
Push Acc
Add A,#30H
Mov Digit1,A
Lcall Kirim_Karakter
Acall KeypadLepas
Pop Acc
Mov B,#10
Mul AB
Push Acc
Acall KeypadPolling
Acall KeypadHex
Push Acc
34

Add A,#30H
Mov Digit2,A
Lcall Kirim_Karakter
Acall KeypadLepas
Pop Acc
Pop B
Add A,B
Ret
KeypadPolling:
Acall Ambil_Keypad
Jc KeypadPolling
Ret
Ambil_Keypad:
Mov A,#10111111b
Push Acc
Mov P1,A
Mov R7,A
Mov A,P1
Anl A,#10101011b
Mov R6,A
Cjne A,#10101011b,Ditekan
Pop Acc
Mov A,#11101111b
Push Acc
Mov P1,A
Mov R7,A
Mov A,P1
Anl A,#10101011b
Mov R6,A
Cjne A,#10101011b,Ditekan
Pop Acc
Mov A,#11111011b
Push Acc
Mov P1,A
Mov R7,A
Mov A,P1
Anl A,#10101011b
Mov R6,A
Cjne A,#10101011b,Ditekan
Pop Acc
Setb C
Ret
35

Ditekan:
Pop Acc
Clr C
Ret
KeypadLepas:
Push Acc
LoopKeypadLepas:
Mov A,P1
Anl A,#10101011b
Cjne A,#10101011b,LoopKeypadLepas
Pop Acc
Clr C
Ret
KeypadHex:
Cjne R7,#0EFH,BukanKolomHex1
;*******************
; '1', '4', '7', '*'
;*******************
Cjne R6,#8BH,BukanTombolHex1
Mov A,#1
Ajmp KeypadBenar
BukanTombolHex1:
Cjne R6,#0AAH,BukanTombolHex4
Mov A,#4
Ajmp KeypadBenar
BukanTombolHex4:
Cjne R6,#0A9H,BukanTombolHex7
Mov A,#7
Ajmp KeypadBenar
BukanTombolHex7:
Cjne R6,#0A3H,SalahTekan
Mov A,#0BH
Ajmp KeypadBenar
BukanKolomHex1:
Cjne R7,#0BFH,BukanKolomHex2
;*******************
; '2', '5', '8', '0'
;*******************
Cjne R6,#8BH,BukanTombolHex2
Mov A,#2
Ajmp KeypadBenar
36

BukanTombolHex2:
Cjne R6,#0AAH,BukanTombolHex5
Mov A,#5
Ajmp KeypadBenar
BukanTombolHex5:
Cjne R6,#0A9H,BukanTombolHex8
Mov A,#8
Ajmp KeypadBenar
BukanTombolHex8:
Cjne R6,#0A3H,SalahTekan
Mov A,#0
Ajmp KeypadBenar
BukanKolomHex2:
Cjne R7,#0FBH,SalahTekan
;*******************
; '3', '6', '9', '#'
;*******************
Cjne R6,#8BH,BukanTombolHex3
Mov A,#3
Ajmp KeypadBenar
BukanTombolHex3:
Cjne R6,#0AAH,BukanTombolHex6
Mov A,#6
Ajmp KeypadBenar
BukanTombolHex6:
Cjne R6,#0A9H,BukanTombolHex9
Mov A,#9
Ajmp KeypadBenar
BukanTombolHex9:
Cjne R6,#0A3H,SalahTekan
Mov A,#0CH
Ajmp KeypadBenar
KeypadBenar:
Clr C
Ret
SalahTekan:
Setb C
Ret
37

;=======subprogram pengaktifan timer 0========
StartTimer0:
Mov StackTimer,SP
Mov A,TMOD
Anl A,#0F0H
Orl A,#01H
Mov TMOD,A
Acall ResetTimer0
Setb EA
Setb ET0
Setb TR0
Ret
ResetTimer0:
Mov TH0,#0DCH
Mov TL0,#00H
Ret
Subprogram diatas diawali dengan inisialisasi LCD M1632
termasuk menampilkan tulisan-tulisan atau karakter antarmuka
pengguna. Proses inisialisasi dilakukan untuk mempersiapkan
LCD dan mengatur mode LCD. Mode yang ditentukan pada
LCD Programmable Timer ini adalah :
1. Panjang data (8 bit atau 4 bit).
2. Jumlah baris LCD yang aktif (1 baris atau 2 baris).
3. Ukuran font (5x8 atau 5x10).
Subprogram selanjutnya adalah ResetNilaiTimer yang
digunakan untuk mengambil data keypad dan menyimpannya di
dalam variabel NilaiTimer. Variabel NilaiTimer berisi 6 byte
register untuk menyimpan 3 data waktu yaitu jam, menit, dan
detik yang masing-masing sebesar 2 byte. Keypad yang
digunakan pada Programmable Timer ini adalah keypad matrix
non-common sehingga pengambilan data keypad dilakukan
38

melalui teknik scanning. Subprogram ketiga adalah subprogram
StartTimer0 yang digunakan untuk menjalankan timer 0. Timer
tersebut diatur agar interupsi terjadi setiap 10 milidetik.
Pengaturan interupsi tersebut dilakukan pada subprogram
ResetTimer0 yaitu dengan mengisi timer 0 low (TL0) sebesar
#00H dan timer 0 high (TH0) sebesar #0DCH. Program utama
yang kedua adalah subprogram TimerSelesai yang digunakan
saat timer selesai menghitung nilai reset timer yang sebelumnya
dimasukan melalui keypad. Program ini akan menampilkan pesan
TIME OUT pada layar LCD, menonaktifkan relay sebagai
indikasi waktu telah selesai dan membunyikan buzzer. Program
akan berhenti terus (infinite-loop) setelah menon-aktifkan relay
dan mengaktifkan buzzer hingga terjadi reset hardware. Berikut
ini adalah flowchart program utama yang digunakan saat timer
selesai menghitung.
Gambar 23. Flowchart timer saat selesai menghitung
Posisi awal LCD

Tampilkan Pesan
TIME OUT
Non Aktifkan

Relay

Aktifkan Buzzer

Program Berhenti

39

Listing program timer saat selesai menghitung adalah
sebagai berikut.
TimerSelesai:
Lcall PosisiAwal_LCD
Mov DPTR,#PesanTimeOut
Lcall KirimPesan_LCD
Setb P3.2 ; matikan saklar relay
Clr P3.3 ; aktifkan buzzer
Ajmp $ ; berhenti (infinite loop)
;================
PosisiAwal_LCD:
Mov A,#02h
Lcall Kirim_Perintah
Ret
;===========================
KirimPesan_LCD:
LoopKirimPesan_LCD:
Mov A,#00H
Movc A,@A+Dptr
Cjne A,#0FH,Kirim_LCD
Ret
Kirim_LCD:
Acall Kirim_Karakter
Inc Dptr
Ajmp LoopKirimPesan_LCD
Kirim_Karakter:
Clr RW
Setb RS
Acall Kirim_DataLCD
Swap A
Acall Kirim_DataLCD
Acall PeriksaBusy
Ret
Kirim_DataLCD:
Setb EClock
Mov P0,A
Clr EClock
Ret
PesanTimeOut:
DB ' TIME OUT ',0FH
40

2.2 Program Layanan Interupsi
Flowchart program bagian kedua adalah flowchart program
layanan interupsi yang berisi program penghitungan mundur dari
nilai awal yang sebelumnya telah dimasukan melalui keypad.
Proses penghitungan waktu dilakukan dengan menggunakan
layanan interupsi timer0. Layanan interupsi berjalan secara
terpisah (independent) sehingga program utama dapat berhenti
saja pada suatu lokasi tertentu. Selama penghitungan waktu
belum selesai, maka program akan kembali dari interupsi yang
artinya kembali ke lokasi dimana proses interupsi terjadi dan
melanjutkan jalannya program disana sampai interupsi
berikutnya terjadi. Jika timer telah selesai menghitung, maka
program akan masuk ke bagian program utama saat timer selesai
menghitung untuk menampilkan pesan TIME OUT pada layar
LCD, membunyikan buzzer dan menonaktifkan saklar relay. Jika
ingin menyeting waktu kembali, maka dilakukan dengan reset
hardware mikrokontroler AT89S51 melalui saklar reset.
Hardware reset akan menyebabkan sistem mikrokontroler
kembali ke keadaan seperti pada saat pertama kali diberi catu
daya.
41

Ya
Tidak
Gambar 24. Flowchart layanan interupsi timer 0
Berikut adalah program layanan interupsi timer 0 yang
berfungsi untuk mengurangi nilai timer setiap 10 milidetik yang
berada pada variabel nilai timer hingga bernilai nol.
Timer0_Interrupt:
Acall ResetTimer0 ; panggil subprogram reset timer 0
Acall KurangiWaktu ; panggil subprogram kurangi waktu
Setb ET0 ; aktifkan interupsi timer 0
Reti ; kembali dari interupsi
ResetTimer0:
Mov TH0,#0DCH ; isi ulang register timer0 agar
Mov TL0,#00H ; terjadi interupsi tiap 10 milidetik
Ret
KurangiWaktu:
Mov R0,#NilaiTimer
Dec @R0
Mov A,@R0
Cjne A,#-1,TidakReset
Mov @R0,#99
Acall DisplayTimer
Reset Timer 0
Kurangi Waktu
Kembali dari
Interupsi
Waktu
Habis ?
Lompat ke bagian
program utama saat
timer berhenti
42

Inc R0
Dec @R0
Mov A,@R0
Cjne A,#-1,TidakReset
Mov @R0,#59
Inc R0
Dec @R0
Mov A,@R0
Cjne A,#-1,TidakReset
Mov @R0,#59
Inc R0
Dec @R0
Mov A,@R0
Cjne A,#-1,TidakReset
Clr TR0
Mov RTemp+5,DPH
Mov RTemp+4,DPL
Mov RTemp+3,00
Mov RTemp+2,A
Mov RTemp+1,B
Mov RTemp,PSW
Mov B,StackTimer
Mov A,SP
Clr C
Subb A,B
LoopRecover:
Pop 00H
Djnz ACC,LoopRecover
Pop 00H
Pop 00H
Mov DPTR,#TimerSelesai
Push DPL
Push DPH
Mov PSW,RTemp
Mov B,RTemp+1
Mov A,RTemp+2
Mov 00H,RTemp+3
Mov DPL,RTemp+4
Mov DPH,RTemp+5
TidakReset:
Ret
43

DisplayTimer:
Push ACC
Lcall PosisiAwal_LCD
Mov DPTR,#Geser_Kanan
Lcall KirimPesan_LCD
Push 0H
Push 7H
Mov R0,#NilaiTimer+3
Mov R7,#3
LoopdisplayTimer:
Mov A,@R0
Acall Konversi1bDesimal
Mov A,TabelDesimal+1
Add A,#30H
Lcall Kirim_Karakter
Mov A,TabelDesimal
Add A,#30H
Lcall Kirim_Karakter
Dec R0
Djnz R7,TampilkanTerus
Pop 07H
Pop 0H
Pop ACC
Ret
TampilkanTerus:
Mov A,#':'
Lcall Kirim_Karakter
Ajmp LoopDisplayTimer
Konversi1BDesimal:
Push 00H
Push Acc
Push B
Mov R0,#TabelDesimal
Mov @R0,#00H
Inc R0
Mov @R0,#00H
Dec R0
Mov R6,#00H
Jz TidakKonversi
LoopKonversi:
Mov B,#10
Push Acc
Clr C
Subb A,B
44

Pop Acc
Inc R6
Jc KonversiSelesai
Div AB
Mov @R0,B
Inc R0
Ajmp LoopKonversi
TidakKonversi:
Inc R6
KonversiSelesai:
Mov @R0,A
Pop B
Pop ACC
Pop 00H
Ret
Subrutin Timer0_Interupt diawali dengan melakukan reset
nilai timer 0 melalui subrutin ResetTimer0 dengan memberi nilai
pre-scaler. Nilai pre-scaler ini akan menentukan lama waktu
terjadinya interupsi timer 0 yaitu 10 milidetik. Nilai yang
dimasukan diperoleh dengan persamaan berikut :
Jumlah siklus = 10 mS x
= 10 mS x
= 9216 (desimal)
Hal ini berarti timer harus dipantau cacahannya hingga
mencapai nilai 9216 cacahan. Karena timer 0 diset pada mode 16
bit maka nilai maksimal cacahan timer dalam desimal yaitu
65535. Maka timer 0 harus di inisialisasi dengan nilai selisih
antara 65535 dengan 9216 yaitu sebesar 56319. Sehingga
register timer 0 low (TL0) diset dengan nilai 00H dan register
12
) (Hz ristal FrekuensiK
12
11059200Hz
45

timer 0 high (TH0) diset dengan nilai selisih (56319) dibagi
dengan nilai maksimum register timer 0 high (256) yaitu
219,996 220 (desimal) yang setara dengan DC (heksadesimal).
Subrutin pengurangan waktu pada prinsipnya digunakan untuk
mengurangi variabel timer setiap 10 milidetik yang telah
dimasukan melalui keypad.
Subrutin Konversi1Bdesimal digunakan untuk
mengkonversi 1 byte bilangan hexadesimal ke dalam bentuk
desimal. Bilangan hexadesimal yang akan diubah disimpan
terlebih dahulu di dalam akumulator dan kemudian hasil
konversi disimpan di dalam tabel desimal. Potongan-potongan
listing program diatas adalah sebagian dari keseluruhan program
yang digunakan dalam Programmable Timer. Program lengkap
dapat dilihat pada bagian lampiran halaman akhir laporan tugas
akhir ini. Program lengkap tersebut di assembly menggunakan
software 8051 Cross-Assembler ASM-51.
46

Gambar 25 adalah gambar bentuk dari perancangan dan
realisasi Programmable Timer pada tugas akhir ini yang telah
dikemas.
Gambar 25. Gambar Programmable Timer yang dikemas.
47

B. Hasil dan Pembahasan
Pengujian Programmable Timer dilakukan dengan percobaan yaitu
membandingkan dengan rangkaian pewaktu lain yang dinilai lebih akurat.
Pengujian tersebut menggunakan sebuah lampu pijar 5 Watt yang
dipasangkan pada keluaran Programmable Timer. Setiap percobaan
dilakukan dengan menyalakan lampu pijar 5 Watt tersebut untuk tiap-tiap
waktu yang telah ditentukan sebelumnya menggunakan Programmable
Timer (protimer) dan lama cacahan waktu yang ditampilkan pada LCD
Programmable Timer dibandingkan dengan timer acuan yang digunakan.
Berikut adalah tabel waktu sampel pengujian alat dengan timer acuan.
Timer acuan yang digunakan adalah software Timeleft yang dijalankan di
komputer. Perbandingan waktu berdasarkan pada tampilan software
Timeleft dengan tampilan LCD Programmable Timer.
Tabel 4. Tabel pengujian Programmable Timer
No Seting protimer Seting Timer Acuan Selisih Waktu
1 10 detik 10 detik 0 detik
2 1 menit 1 menit 0 detik
3 5 menit 5 menit 0 detik
4 30 menit 30 menit 0 detik
5 45 menit 45 menit 0 detik
6 1 jam 1 jam 0 detik
7 1 jam, 30 menit 1 jam, 30 menit 0 detik
8 2 jam 2 jam 0 detik
9 4 jam 4 jam 0 detik
10 10 jam 10 jam 0 detik

Berdasarkan tabel pengujian, selisih antara tampilan waktu timer pada
software Timeleft dengan tampilan waktu timer pada LCD Programmable
Timer adalah 0 (nol) detik.
48

BAB IV
PENUTUP
A. Kesimpulan
Berdasarkan uraian diatas dapat diambil beberapa kesimpulan penting
sebagai berikut :
1. Berdasarkan tabel pengujian diatas, Programmable Timer dapat
bekerja dengan baik.
2. Selisih waktu antara tampilan LCD Programmable Timer dengan
tampilan timer acuan (software Timeleft) adalah 0 (nol) detik
sehingga cukup akurat.
B. Saran
1. Programmable Timer ini menggunakan relay sebagai saklar
elektronik untuk meng-on/off-kan piranti listrik luar yang
terhubung dengannya. Hal ini dapat menimbulkan medan
elektromagnetik yang dapat mengganggu sistem kerja alat
(mikrokontroler). Sebaiknya penggunaan saklar dengan relay
diganti menggunakan TRIAC (Triode Alternating Current) untuk
mengatasi hal tersebut.
2. Jika beban piranti luar cukup besar maka pemilihan jenis relay
yang tepat harus diperhatikan. Gunakan relay dengan kontak yang
mampu mengalirkan arus AC (Alternating Current) besar.
49

3. Pada listing program assembler, pemasukan karakter bintang (*)
dan pagar (#) tetap diterjemahkan sebagai suatu bentuk data.
Listing program hendaknya dikembangkan lebih lanjut untuk
memperbaiki kekurangan tersebut yaitu agar karakter bintang (*)
dan pagar (#) tidak dikenali oleh sistem sehingga tidak dianggap
sebagai sebuah masukan data waktu.
1

LAMPIRAN 1
Listing program lengkap
$MOD51
DSEG
ORG 60H
NilaiTimer: Ds 6
StackTimer: Ds 1
RTemp: Ds 6
Digit1: Ds 1
Digit2: Ds 1
TabelDesimal: Ds 3
Counter_5mS: Ds 1
CSEG
ORG 00H
RS Bit P2.1
EClock Bit P2.7
RW Bit P2.6
BarisDua EQU 0C0H
Ajmp Start
ORG 0BH
Ajmp Timer0_Interrupt
Start:
Lcall Delay_1detik
Lcall Init_LCD
Mov DPTR,#Pesan_1
Lcall KirimPesan_LCD
Lcall Baris2_LCD
Mov DPTR,#Pesan_2
Lcall KirimPesan_LCD
Lcall Delay_1detik
Lcall Delay_1detik
Lcall Init_LCD
Mov DPTR,#Geser_Kanan
Lcall KirimPesan_LCD
Acall ResetNilaiTimer
Acall StartTimer0
Ajmp $
2

;**********************************
;SUBRUTIN INISIALISASI LCD M1632
;**********************************
Init_LCD:
Setb RS
Clr EClock
Lcall Delay_5mS
Lcall Delay_5mS
Lcall Delay_5mS
Lcall Delay_5mS
Mov A,#30H
Acall Kirim_Perintah
Lcall Delay_5mS
Mov A,#30H
Acall Kirim_Perintah
Push B
Mov B,#100
Djnz B,$
Pop B
Mov A,#30H
Acall Kirim_Perintah
Mov A,#20H
Acall Kirim_Perintah
Mov A,#28H
Acall Kirim_Perintah
Mov A,#08H
Acall Kirim_Perintah
Mov A,#01H
Acall Kirim_Perintah
Mov A,#0EH
Acall Kirim_Perintah
Mov A,#06H
Acall Kirim_Perintah
Ret
3

;*************************************
;SUBRUTIN FUNGSI-FUNGSI LCD M1632
;*************************************
Kirim_Perintah:
Clr RS
Clr RW
Acall Kirim_DataLCD
Swap A
Acall Kirim_DataLCD
Acall PeriksaBusy
Ret
Kirim_DataLCD:
Setb EClock
Mov P0,A
Clr EClock
ret
Kirim_Karakter:
Clr RW
Setb RS
Acall Kirim_DataLCD
Swap A
Acall Kirim_DataLCD
Acall PeriksaBusy
Ret
BacaRegister:
Mov P0,#0FFH
Setb RW
Clr RS
Setb EClock
Mov A,P0
Anl A,#0F0H
Clr EClock
Push ACC
Setb EClock
Mov A,P0
Anl A,#0F0H
Clr EClock
Swap A
Pop B
Add A,B
Clr RW
Ret
4

PeriksaBusy:
Acall BacaRegister
Jb ACC.7,PeriksaBusy
Ret
PosisiAwal_LCD:
Mov A,#02H
Lcall Kirim_Perintah
Ret
KirimPesan_LCD:
LoopKirimPesan_LCD:
Mov A,#00H
Movc A,@A+Dptr
Cjne A,#0FH,Kirim_LCD
Ret
Kirim_LCD:
Acall Kirim_Karakter
Inc Dptr
Ajmp LoopKirimPesan_LCD
Baris2_LCD:
Mov A,#BarisDua
Acall Kirim_Perintah
Ret
;*****************************************************************
; RUTIN ISI NILAI AWAL TIMER DENGAN KEYPAD DAN TAMPILKAN DI M1632 LCD
;*****************************************************************
ResetNilaiTimer:
Mov R0,#NilaiTimer+3
Acall Ambil2digitKeypad
Mov @R0,A
Dec R0
Mov A,#':'
Lcall Kirim_Karakter
Acall Ambil2digitKeypad
Mov @R0,A
Dec R0
Mov A,#':'
Lcall Kirim_Karakter
Acall Ambil2digitKeypad
Mov @R0,A
Dec R0
Mov @R0,#00
Clr P3.2
Ret
5

;**************************************************************
;======= subrutin pengambilan data dari keypad sebanyak 2 digit========
;**************************************************************
Ambil2DigitKeypad:
Acall KeypadPolling
Acall KeypadHex
Push Acc
Add A,#30H
Mov Digit1,A
Lcall Kirim_Karakter
Acall KeypadLepas
Pop Acc
Mov B,#10
Mul AB
Push Acc
Acall KeypadPolling
Acall KeypadHex
Push Acc
Add A,#30H
Mov Digit2,A
Lcall Kirim_Karakter
Acall KeypadLepas
Pop Acc
Pop B
Add A,B
Ret
KeypadPolling:
Acall Ambil_Keypad
Jc KeypadPolling
Ret
Ambil_Keypad:
Mov A,#10111111b
Push Acc
Mov P1,A
Mov R7,A
Mov A,P1
Anl A,#10101011b
Mov R6,A
Cjne A,#10101011b,Ditekan
Pop Acc
Mov A,#11101111b
Push Acc
Mov P1,A
Mov R7,A
Mov A,P1
Anl A,#10101011b
6

Mov R6,A
Cjne A,#10101011b,Ditekan
Pop Acc
Mov A,#11111011b
Push Acc
Mov P1,A
Mov R7,A
Mov A,P1
Anl A,#10101011b
Mov R6,A
Cjne A,#10101011b,Ditekan
Pop Acc
Setb C
Ret
Ditekan:
Pop Acc
Clr C
Ret
KeypadLepas:
Push Acc
LoopKeypadLepas:
Mov A,P1
Anl A,#10101011b
Cjne A,#10101011b,LoopKeypadLepas
Pop Acc
Clr C
Ret
;************************************
KeypadHex:
Cjne R7,#0EFH,BukanKolomHex1
;*******************
; '1', '4', '7', '*'
;*******************
Cjne R6,#8BH,BukanTombolHex1
Mov A,#1
Ajmp KeypadBenar
BukanTombolHex1:
Cjne R6,#0AAH,BukanTombolHex4
Mov A,#4
Ajmp KeypadBenar
7

BukanTombolHex4:
Cjne R6,#0A9H,BukanTombolHex7
Mov A,#7
Ajmp KeypadBenar
BukanTombolHex7:
Cjne R6,#0A3H,SalahTekan
Mov A,#0BH
Ajmp KeypadBenar
BukanKolomHex1:
Cjne R7,#0BFH,BukanKolomHex2
;*******************
; '2', '5', '8', '0'
;*******************
Cjne R6,#8BH,BukanTombolHex2
Mov A,#2
Ajmp KeypadBenar
BukanTombolHex2:
Cjne R6,#0AAH,BukanTombolHex5
Mov A,#5
Ajmp KeypadBenar
BukanTombolHex5:
Cjne R6,#0A9H,BukanTombolHex8
Mov A,#8
Ajmp KeypadBenar
BukanTombolHex8:
Cjne R6,#0A3H,SalahTekan
Mov A,#0
Ajmp KeypadBenar
BukanKolomHex2:
Cjne R7,#0FBH,SalahTekan
;*******************
; '3', '6', '9', '#'
;*******************
Cjne R6,#8BH,BukanTombolHex3
Mov A,#3
Ajmp KeypadBenar
BukanTombolHex3:
Cjne R6,#0AAH,BukanTombolHex6
Mov A,#6
Ajmp KeypadBenar
8

BukanTombolHex6:
Cjne R6,#0A9H,BukanTombolHex9
Mov A,#9
Ajmp KeypadBenar
BukanTombolHex9:
Cjne R6,#0A3H,SalahTekan
Mov A,#0CH
Ajmp KeypadBenar
KeypadBenar:
Clr C
Ret
SalahTekan:
Setb C
Ret
;*****************************************
; SUBRUTIN UNTUK MENGAKTIFKAN TIMER
;*****************************************
StartTimer0:
Mov StackTimer,SP
Mov A,TMOD
Anl A,#0F0H
Orl A,#01H
Mov TMOD,A
Acall ResetTimer0
Setb EA
Setb ET0
Setb TR0
Ret
;**********************************************************
; HARGA AWAL TIMER 0
; - Rutin memberi harga awal nilai timer 0 yang berfungsi sebagai pre scaler
; dari timer
; - Jumlah siklus x 12/Frekwensi crystal = 10 mS
; Jumlah siklus = 10 mS x Frekwensi crystal / 12
; Jumlah siklus = 9216 => 2400H
; - Nilai Timer = -jumlah siklus = -2400H = DC00H
;**********************************************************
ResetTimer0:
Mov TH0,#0DCH
Mov TL0,#00H
Ret
9

;***************************************
;SUBRUTIN LAYANAN INTERUPSI TIMER0
;***************************************
Timer0_Interrupt:
Acall ResetTimer0
Acall KurangiWaktu
Setb ET0
Reti
KurangiWaktu:
Mov R0,#NilaiTimer
Dec @R0
Mov A,@R0
Cjne A,#-1,TidakReset
Mov @R0,#99
Acall DisplayTimer
Inc R0
Dec @R0
Mov A,@R0
Cjne A,#-1,TidakReset
Mov @R0,#59
Inc R0
Dec @R0
Mov A,@R0
Cjne A,#-1,TidakReset
Mov @R0,#59
Inc R0
Dec @R0
Mov A,@R0
Cjne A,#-1,TidakReset
Clr TR0
Mov RTemp+5,DPH
Mov RTemp+4,DPL
Mov RTemp+3,00
Mov RTemp+2,A
Mov RTemp+1,B
Mov RTemp,PSW
Mov B,StackTimer
Mov A,SP
Clr C
Subb A,B
10

LoopRecover:
Pop 00H
Djnz ACC,LoopRecover
Pop 00H
Pop 00H
Mov DPTR,#TimerSelesai
Push DPL
Push DPH
Mov PSW,RTemp
Mov B,RTemp+1
Mov A,RTemp+2
Mov 00H,RTemp+3
Mov DPL,RTemp+4
Mov DPH,RTemp+5
TidakReset:
Ret
TimerSelesai:
Lcall PosisiAwal_LCD
Mov DPTR,#PesanTimeOut
Lcall KirimPesan_LCD
Setb P3.2
Clr P3.3
Ajmp $
;****************************************
; TAMPILKAN NILAI TIMER KE M1632 LCD
; - Nilai timer tersimpan dalam tabel desimal
; - Formasi tabel desimal adalah:
; milidetik, detik, menit, jam
;****************************************
DisplayTimer:
Push ACC
Lcall PosisiAwal_LCD
Mov DPTR,#Geser_Kanan
Lcall KirimPesan_LCD
Push 0H
Push 7H
Mov R0,#NilaiTimer+3
Mov R7,#3
LoopdisplayTimer:
Mov A,@R0
Acall Konversi1bdesimal
Mov A,TabelDesimal+1
Add A,#30H
Lcall Kirim_Karakter
11

Mov A,TabelDesimal
Add A,#30H
Lcall Kirim_Karakter
Dec R0
Djnz R7,TampilkanTerus
Pop 07H
Pop 0H
Pop ACC
Ret
TampilkanTerus:
Mov A,#':'
Lcall Kirim_Karakter
Ajmp LoopDisplayTimer
;==========================================================
Konversi1BDesimal:
Push 00H
Push Acc
Push B
Mov R0,#TabelDesimal
Mov @R0,#00H
Inc R0
Mov @R0,#00H
Dec R0
Mov R6,#00H
Jz TidakKonversi
LoopKonversi:
Mov B,#10
Push Acc
Clr C
Subb A,B
Pop Acc
Inc R6
Jc KonversiSelesai
Div AB
Mov @R0,B
Inc R0
Ajmp LoopKonversi
TidakKonversi:
Inc R6
12

KonversiSelesai:
Mov @R0,A
Pop B
Pop ACC
Pop 00H
Ret
;**************************
;KARAKTER TAMPILAN LCD
;**************************
PesanTimeOut:
DB ' TIME OUT ',0FH
Geser_Kanan:
DB ' ',0Fh
Pesan_1:
DB ' PROGRAMMABLE ',0FH
Pesan_2:
DB ' TIMER ',0FH
;******************
;SUBRUTIN TUNDA
;******************
Delay_5mS:
Push TMOD
Mov TMOD,#21H
Mov TH0,#0EDH
Mov TL0,#0FFH
Setb TR0
Tunggu_5mS:
Jbc TF0,Sudah_5mS
Ajmp Tunggu_5mS
Sudah_5mS:
Clr TR0
Pop TMOD
Ret
Delay_1detik:
Mov Counter_5mS,#0200
Tunggu_1detik:
Acall Delay_5mS
Djnz Counter_5mS,Tunggu_1detik
Ret
END
PRESENTASI TUGAS AKHIR
PENGGUNAAN PROGRAMMABLE TIMER
SEBAGAI SAKLAR OTOMATIS
Oleh :
Nama : JOKO PITOYO
NIM : 5352303506
Prodi : D3 TEKNIK ELEKTRO
D3 TEKNIK ELEKTRO
UNIVERSITAS NEGERI SEMARANG
2007
JUDUL

PENGGUNAAN PROGRAMMABLE TIMER
SEBAGAI SAKLAR OTOMATIS
PENDAHULUAN

A. Latar Belakang
1. Tidak adanya rangkaian pewaktu internal pada sebagian
piranti elektronik yang digunakan untuk mematikannya secara
otomatis.
2. Akurasi beberapa rangkaian pewaktu yang dijual dipasaran
umumnya hingga jangkah waktu menit.
B. Harapan
Memudahkan pemakai dalam menggunakan piranti elektronik
yang tidak dilengkapi rangkaian pewaktu internal untuk
mengaktifkan dan menonaktifkan piranti secara otomatis.
C. Realita Umum
Untuk mematikan sebagian piranti elektronik umumnya masih
dilakukan secara manual yaitu mencabut saluran listrik piranti
elektronik tersebut dari sumbernya.
D. Kebutuhan
Alat pewaktu terprogram yang digunakan untuk menyalakan dan
sekaligus mematikan piranti elektronik sesuai dengan waktu yang
diinginkan secara otomatis.
E. Solusi
Menggunakan programmable timer sebagai saklar elektronik
otomatis.
F. Permasalahan
Bagaimana perancangan programmable timer agar dapat
digunakan sebagai saklar otomatis ?
G. Pembatasan Masalah
1. Programmable Timer ini memiliki batas waktu pencacahan
mundur maksimal sebesar 99 jam 99 menit 99 detik.
2. Catu daya programmable timer menggunakan sumber listrik
PLN (220 Volt).
H. Tujuan
Tujuan dari perancangan programmable timer ini adalah membuat
alat pewaktu yang dapat dimanfaatkan sebagai saklar elektronik
otomatis.
I. Manfaat
1. Menghindari hal-hal yang merugikan sebagai akibat kelalaian
mematikan peralatan elektronik.
2. Menghemat energi listrik karena keaktifan piranti elektronik
dapat dikendalikan sesuai dengan waktu yang telah diseting
sebelumnya.
Diagram Blok Sistem Programmable Timer
PERENCANAAN

1. Blok Diagram Sistem
KEYPAD
MATRIX
4X3

MIKROKONTROLER
AT89S51

LCD KARAKTER
M1632
RELAY
AKTUATOR
BUZZER
CATU DAYA
2. Flowchart Program
tidak
ya
tidak
ya
tidak
ya
START
Subrutin Inisialisasi
LCD dan
Mikrokontroler

Subrutin Reset
Timer 0
Subrutin start
Timer 0
Subrutin Reset
Nilai Timer
Interupsi
Timer 0 ?

Subrutin Kurangi
Waktu
Kembali
dari Interupsi
Subrutin
Pesan TIME OUT
Subrutin Inisialisasi
LCD
Matikan Relay
Dan Buzzer
Waktu
Habis ?

Hardware
Reset ?

Berikut adalah tabel percobaan pembandingan waktu cacahan
programmable timer dengan software timeleft yang dijalankan pada
komputer.
No Seting protimer Seting Timer Acuan Selisih Waktu Akhir
1 10 detik 10 detik 0 detik
2 1 menit 1 menit 0 detik
3 5 menit 5 menit 0 detik
4 30 menit 30 menit 0 detik
5 45 menit 45 menit 0 detik
6 1 jam 1 jam 0 detik
7 1 jam, 30 menit 1 jam, 30 menit 0 detik
8 2 jam 2 jam 0 detik
9 4 jam 4 jam 0 detik
10 10 jam 10 jam 0 detik

Pembandingan diatas dilihat berdasarkan tampilan cacahan software
timeleft pada monitor PC dengan tampilan cacahan LCD M1632 yang
terdapat pada programmable timer.
KESIMPULAN

1. Berdasarkan tabel pengujian diatas programmable timer bekerja
dengan baik.
2. Saklar relay pada programmable timer akan aktif ketika digit
terakhir masuk melalui keypad dan relay kembali non-aktif setelah
waktu seting cacahan mencapai 0 (nol).
3. Buzzer berbunyi setelah cacahan mencapai 0 (nol) sebagai tanda
bahwa alat yang dikendalikan telah mati (off-state).
SARAN

1. Penggunaan relay sebagai saklar dapat menyebabkan interferensi
elektromagnet akibat bunga api pada kontak relay dan dapat
menimbulkan gangguan pada sistem mikrokontroler. Sebagai
gantinya dapat menggunakan TRIAC (Triode Alternating Current)
sebagai saklar elektroniknya.
2. Jika arus beban peralatan elektronik yang dikendalikan cukup besar,
maka pemilihan relay harus diperhatikan. Gunakan relay dengan
kontak yang dapat mengalirkan arus beban yang besar.
3. Listing program assembly harus dikembangkan karena pemasukan
karakter bintang (*) dan pagar (#) melalui keypad diterjemahkan dan
dimasukan sebagai sebuah data oleh sistem.

You might also like