elektro-saklar otomats

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

Transcript of elektro-saklar otomats

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 remorse…I 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 Mongkut’s Institute of Technology Ladkrabang, Thailand ) for your

greatest projects.

vi

10. All the lads of D3 TE Instrumentasi Kendali UNNES Akt. 2003, “ Thank’s

for everything you gave me sincerely and I want to say thank’s for all of

our jokes, smiles, helps, and all your abuse on me…… I will miss you all

guys…my regards for you all … ”.

11. For my best partner ever, he is Untung Gunawan, A.Md “ Thank’s 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

spirit…my best regard for you …!!. “

12. All of WISMA SANTAI camp society. “ I like our crazy friendship and I

will miss everything we’ve done together “.

13. The big family of IMBARA ( Ikatan Mahasiswa Banjarnegara ) wherever

you stand up. “Pokoke’ ngapak terus bae’ lah yaaa…………make it real

guys, thank’s 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

guys…kill your suffer with it …!! ”.

15. Thank’s 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 don’t 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

C1R1

KEYPAD MATRIX 4X3

R2R3C3

AT89C51

9

1819

2930

31

12345678

2122232425262728

1011121314151617

3938373635343332

RST

XTAL2XTAL1

PSENALE/PROG

EA/VPP

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

P2.0/A8P2.1/A9

P2.2/A10P2.3/A11P2.4/A12P2.5/A13P2.6/A14P2.7/A15

P3.0/RXDP3.1/TXD

P3.2/INT0P3.3/INT1

P3.4/T0P3.5/T1

P3.6/WRP3.7/RD

P0.0/AD0P0.1/AD1P0.2/AD2P0.3/AD3P0.4/AD4P0.5/AD5P0.6/AD6P0.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.

11D4

E

VR1

TRIMPOT 10K

D5

D5D4

D714

RS

2

R/W

D6

RW

4

LCD M1632

635

AT89S51

9

1819

2930

31

12345678

2122232425262728

1011121314151617

3938373635343332

RST

XTAL2XTAL1

PSENALE/PROG

EA/VPP

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

P2.0/A8P2.1/A9

P2.2/A10P2.3/A11P2.4/A12P2.5/A13P2.6/A14P2.7/A15

P3.0/RXDP3.1/TXD

P3.2/INT0P3.3/INT1

P3.4/T0P3.5/T1

P3.6/WRP3.7/RD

P0.0/AD0P0.1/AD1P0.2/AD2P0.3/AD3P0.4/AD4P0.5/AD5P0.6/AD6P0.7/AD7

1

ED6

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

1819

2930

31

12345678

2122232425262728

1011121314151617

3938373635343332

RST

XTAL2XTAL1

PSENALE/PROG

EA/VPP

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

P2.0/A8P2.1/A9

P2.2/A10P2.3/A11P2.4/A12P2.5/A13P2.6/A14P2.7/A15

P3.0/RXDP3.1/TXD

P3.2/INT0P3.3/INT1

P3.4/T0P3.5/T1

P3.6/WRP3.7/RD

P0.0/AD0P0.1/AD1P0.2/AD2P0.3/AD3P0.4/AD4P0.5/AD5P0.6/AD6P0.7/AD7 RELAY 12 V

35

412

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

LM7805IC1

Vcc 12 Volt

2200uF/25V 100uF/25V

C4

100uF/25V 100nF

+C1

VI

GN

D

VO

+ C3

12 Volt

+ C2

Vcc 5 Volt

220 Volt

12 Volt

Q12N3055

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

RSD4

2

11

0

10KR2

R3R/W

3

R2

E

0

1N4002

JOKO PITOYO 1

PROGRAMMABLE TIMER

A

1 1Sunday , 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 NONCOMMON

RS

IC3 74LS04

1 2

8

C6

4

R1

D5

9R1

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

1819

2930

31

12345678

2122232425262728

1011121314151617

3938373635343332

RST

XTAL2XTAL1

PSENALE/PROG

EA/VPP

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

P2.0/A8P2.1/A9

P2.2/A10P2.3/A11P2.4/A12P2.5/A13P2.6/A14P2.7/A15

P3.0/RXDP3.1/TXD

P3.2/INT0P3.3/INT1

P3.4/T0P3.5/T1

P3.6/WRP3.7/RD

P0.0/AD0P0.1/AD1P0.2/AD2P0.3/AD3P0.4/AD4P0.5/AD5P0.6/AD6P0.7/AD7

30pF

RELAY SPDT 12V

35

412

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

STARTT

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

)(HzristalFrekuensiK

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.