TA : Perancangan dan Pembuatan Kalender Digital Berdasarkan 4 Sistem Penanggalan Berbasis Microcontroller.

(1)

MICROCONTROLLER

Oleh :

Nama : HARRY SETYO WICAKSONO

NIM : 01.41020.0054 Program : S1 (Strata Satu) Jurusan : Sistem Komputer

SEKOLAH TINGGI

MANAJEMEN INFORMATIKA & TEKNIK KOMPUTER SURABAYA


(2)

ABSTRAKSI ... vi

KATA PENGANTAR ... vii

DAFTAR ISI ... ix

DAFTAR TABEL ... xiii

DAFTAR GAMBAR ... xiv

DAFTAR ISTILAH DAN SINGKATAN ... xvi

DAFTAR LAMPIRAN ... xix

BAB I PENDAHULUAN ... 1

1.1. Latar Belakang Masalah ... 1

1.2. Perumusan Masalah ... 2

1.3. Pembatasan Masalah ... 2

1.4. Tujuan ... 3

1.5. Kontribusi ... 3

1.6. Sistematika Penulisan ... 4

1.6.1. Bab I Pendahuluan ... 4

1.6.2. Bab II Landasan Teori ... 4

1.6.3. Bab III Metode Penelitian ... 5

1.6.4. Bab IV Pengujian dan Evaluasi Sistem ... 5

1.6.5. Bab V Penutup ... 5

BAB II LANDASAN TEORI ... 6

2.1. Kalender ……… .. 6


(3)

2.1.1. Kalender Masehi ... 8

2.1.2. Kalender Hijriyah ... 11

A. Metode Penelitian Awal Bulan dalam Kalender Hijriyah ... 12

A.1. Rukhyatul Hilal ... 12

A.2. Hisab ... 12

A.2.1. Hisab Urfi ... 13

A.2.2. Hisab Haqiqi ... 14

2.1.3. Kalender Jawa ... 15

2.1.4. Kalender China... 17

2.2. Mikrokontroler MCS 51 ... 18

2.2.1. Keterangan pin-pin AT89S52 ... 19

2.2.2. Clock generator dan Timer ... 22

2.2.3. Struktur Memori ... 24

A. RAM Internal ... 24

B. SFR (Special Function Register) ... 25

C. Flash PEROM ... 26

D. EEPROM ... 26

2.3. Komunikasi Serial RS232 ... 27

2.4. Serial RTC (Real Time Clock) DS1307 ... 29

2.4.1. Komunikasi Serial I2C (Inter Integrated Circiut) .... 30

2.5. 8-Bit Shift Register ... 32

2.6. Transistor ... 34


(4)

2.7. Octal Data Latch ... 36

2.8. LED dot matrix ... 38

BAB III METODE PENELITIAN ... 41

3.1. Perancangan Perangkat Keras ... 42

3.1.1. Rangkaian Minimum Sistem AT89S52 ... 42

A. Rangkaian Programmer ... 44

3.1.2. Rangkaian Komunikasi Serial RS232 ... 45

3.1.3. Serial RTC DS1307 ... 47

3.1.4. Rangkaian Driver Basis (TIP42) ... 47

3.1.5. Rangkaian Shift Register 74LS164 ... 49

3.1.6. Rangkaian Display Dot Matrix ... 50

3.2. Perancangan Perangkat Lunak ... 51

3.2.1. Perangkat Lunak pada Komputer ... 51

A. Proses Penentuan Hari ... 52

B. Proses Konversi Kalender ... 53

3.2.2. Perangkat Lunak pada Mikrokontroler ... 55

A. Proses Scanning Baris ... 56

B. Proses Update Waktu ... 59

C. Proses Serial Interrupt ... 60

BAB IV PENGUJIAN DAN EVALUASI SISTEM ... 62

4.1. Pengujian Perangkat Lunak... 62

4.1.1. Pengujian Penentuan Hari ... 62

A. Tujuan... 62


(5)

B. Perangkat yang dibutuhkan ... 62

C. Prosedur Pengujian ... 63

D. Hasil Pengujian ... 63

4.1.2. Pengujian Konversi Kalender ... 64

A. Tujuan ... 64

B. Perangkat yang dibutuhkan ... 64

C. Prosedur Pengujian ... 64

D. Hasil Pengujian ... 65

4.2. Pengujian Perangkat Keras ... 65

4.2.1. Pengujian Pengiriman Data ... 66

A. Tujuan ... 66

B. Alat yang digunakan ... 66

C. Prosedur Pengujian ... 66

D. Hasil Pengujian ... 66

BAB V PENUTUP ... 69

5.1. Kesimpulan ... 69

5.2. Saran ... 69

DAFTAR PUSTAKA ... 70

LAMPIRAN ... 74


(6)

BAB I PENDAHULUAN

1.1 Latar Belakang Masalah

Hampir semua aktivitas manusia dalam kehidupan sehari-hari tidak pernah terlepas dari lingkaran waktu. Setiap aktivitas individu dengan individu yang lain dalam merencanakan dan menyelesaikan suatu pekerjaan baik secara informal maupun formal akan selalu diukur dengan satuan waktu tertentu. Masing-masing memiliki pengaturan dan jadwal berbeda-beda serta tujuan maupun alasan tertentu. Perbedaan ini tentu dapat menjadi kendala seandainya dibutuhkan suatu interaksi atau kerjasama antara individu satu dengan lainnya atau antar instansi yang memiliki pedoman waktu yang berlainan. Untuk meminimalkan kesalahpahaman dan menyelaraskan perbedaan penunjuk waktu yang ada, dibutuhkan sebuah pedoman yang digunakan oleh masyarakat umum.

Salah satu permasalahan yang membutuhkan pedoman diantaranya adalah sistem penanggalan. Seperti diketahui, sistem penanggalan atau seringkali disebut dengan kalender yang digunakan di masyarakat acapkali menggunakan pedoman yang berlainan antara satu dengan lainnya. Seperti misal, masyarakat Arab berpedoman pada kalender Hijriah, masyarakat Eropa umumnya menggunakan kalender Masehi dan masyarakat Cina menggunakan kalender Cina dalam melakukan aktivitasnya. Untuk mengatasi semua perbedaan ini tentu diperlukan kesamaan persepsi maupun kesepakatan yang disetujui bersama, sehingga tidak menyebabkan kesalahpahaman.


(7)

Guna menghindari dan meminimalkan kesalahan diperlukan perhitungan berdasarkan parameter dari masing-masing sistem penanggalan yang memiliki acuan berbeda-beda. Namun tentunya tidak semua orang mengetahui cara perhitungan kalender ini, dan juga sedikitnya kalender yang beredar di masyarakat memuat berbagai macam sistem penanggalan.

Dalam tugas akhir ini memunculkan suatu ide pembuatan kalender digital berbasis microcontroller dengan menggunakan display dot matrix yang dapat menampilkan keseluruhan sistem penanggalan. Dengan adanya Tugas akhir ini diharapkan dapat membantu masyarakat luas dalam memberikan informasi kalender yang diinginkan secara lengkap.

1.2 Perumusan Masalah

Berkaitan dengan latar belakang diatas maka dibuat rumusan masalah seperti berikut :

1. Perancangan dan pembuatan kalender digital berdasarkan 4 sistem penanggalan dengan menggunakan mikrokontroler.

2. Penggunaan algoritma yang tepat dalam penentuan hari, tanggal, bulan dan tahun.

3. Perhitungan untuk konversi kalender.

1.3 Pembatasan Masalah

Perlu diberikan beberapa batasan masalah dengan tujuan agar pembahasan tidak meluas dan menyimpang dari tujuan, adapun batasan masalah dari sistem yang akan dibuat antara lain :


(8)

2. Kalender menyediakan 4 macam sistem penanggalan, yaitu : Arab, Cina, Masehi dan Jawa.

3. Sistem penanggalan yang dijadikan dasar acuan adalah kalender Masehi 4. Kalender Arab, Jawa, dan Cina pada display dot matriks berupa running text. 5. Perhitungan tahun kabisat hanya digunakan pada kalender Masehi, Kalender

Jawa, dan kalender Hijriyah.

1.4 Tujuan

Sistem yang akan dibuat dalam tugas akhir ini bertujuan untuk : 1. Menerapkan algoritma yang tepat dalam perhitungan kalender.

2. Membuat kalender digital berdasarkan 4 sistem penanggalan dengan menggunakan mikrokontroler.

3. Membuat kalender yang memiliki perhitungan konversi berbagai macam kalender seperti Hijriah, Masehi, Cina, Jawa.

1.5 Kontribusi

Sepanjang sejarah manusia senantiasa bersinggungan dengan hitung-hitungan waktu. Bahkan dalam sejarah pemikiran filsafat, konsep waktu menjadi pembahasan penting pada manusia. Hitungan hari ke minggu, bulan ke tahun, widu ke dasawarsa, hingga ke abad adalah hitungan matematis, akurat dan sistematis. Dan diantara sistem waktu tersebut adalah sistem kalender.

Sistem kalender atau penanggalan, telah lama dikenal dalam sejarah. Kalender merupakan sebuah sistem untuk memberi nama pada sebuah periode waktu tertentu (misalnya hari). Nama-nama yang tertera kemudian, biasa disebut sebagai tanggal. Tanggal ini kadang berdasarkan gerakan-gerakan benda angkasa


(9)

seperti matahari dan bulan. Kalender digunakan sebagai panduan ketika hendak menyelenggarakan acara-acara tertentu ataupun aktivitas keseharian biasa. Kebiasaan ini berlangsung sejak jaman Mesir kuno, Mesopotamia kuno, jaman Romawi hingga kini ( http://www.Akmaliah.com, 2008 )

Dalam penelitian ini, kalender yang dicantumkan memiliki 4 sistem penanggalan yaitu sistem penanggalan Masehi, Jawa, Cina dan Hijriyah. Kalender digital dengan display dot matrix ini dapat menampilkan kalender dengan 4 sistem penanggalan waktu sekarang maupun dalam rentang waktu 100 tahun mendatang dengan perhitungan hari secara otomatis sesuai kalender Masehi yang di-input -kan.

1.6 Sistematika Penulisan

Secara garis besar penulisan tugas akhir ini terbagi dalam lima bab dan didalamnya terdapat beberapa sub bab. Adapun sistematika dari penyusunan laporan tugas akhir ini adalah sebagai berikut:

BAB I : Pendahuluan

Bab ini menguraikan mengenai latar belakang masalah, perumusan masalah, batasan masalah, tujuan, kontribusi serta sistematika penulisan laporan Tugas Akhir ini.

BAB II : Landasan Teori

Dalam bab ini, dijelaskan teori-teori yang digunakan sebagai dasar analisis permasalahan. Diawali dengan penjelasan mengenai algoritma-algoritma yang digunakan untuk membangun software aplikasi. Kemudian penjelasan tentang


(10)

komponen-komponen yang digunakan untuk membangun hardware (bagian elektronik).

BAB III : Metode Penelitian

Pada bab ini dibahas proses mengenai perancangan perangkat keras (hardware), perangkat lunak (software) yang nantinya digunakan sebagai acuan dalam pembuatan perangkat keras dan perangkat lunak. Perancangan perangkat keras akan ditampilkan berupa blok diagram sedangkan untuk perancangan perangkat lunaknya akan ditampilkan berupa flowchart dan state program yang diaplikasikan pada seluruh sistem. Pembuatan perangkat keras diantaranya meliputi perancangan modul minimum system microcontroller, Dot Matriks, rangkaian Transistor, dan rangkaian Shift Register. Untuk menjelaskan tentang perangkat keras tersebut secara rinci, setiap blok rangkaian akan disertai dengan gambar rangkaian elektronik.

BAB IV : Pengujian dan Evaluasi Sistem

Dalam bab ini, membahas mengenai pengujian terhadap bagian-bagin sistem yang dibangun (bagian software dan hardware). Pembahasan akan dilanjutkan dengan pengujian terhadap keseluruhan sistem yang dibangun. Selanjutnya dijelaskan tentang data hasil pengujian sistem secara keseluruhan.

BAB V : Penutup

Pada bab kesimpulan dan saran ini merupakan kesimpulan hasil pengujian sistem secara keseluruhan dan saran-saran yang diharapkan dapat membantu pengembangan dari tugas akhir ini.


(11)

BAB II

LANDASAN TEORI

2.1. Kalender

Kalender pada awalnya dibuat untuk menandai pergantian iklim yang terjadi selama satu tahun. Pergantian iklim perlu diketahui karena terkait erat dengan banyak aktivitas kita, seperti waktu bercocok tanam. Bermacam-macam kalender pun diciptakan. Pada awalnya kalender sangat sederhana. Bangsa Arab dan Mesir kuno, misalnya, menggunakan siklus terbit bintang Sirius sebagai kalender, yang menjadi penanda musim tanam atau musim panen. Bangsa-bangsa Eropa yang tinggal di belahan bumi utara menggunakan perubahan azimuth matahari saat terbit sebagai penanda pergantian musim. Karena adanya kebutuhan terhadap kalender yang lebih informatif, maka dibuat kalender yang lebih kompleks ( TEMPO, 2008 ).

Berdasarkan jenisnya, kalender yang terdapat dan biasa digunakan di masyarakat dibedakan menjadi 3 macam, yaitu :

1. Kalender Solar

Kalender ini berdasarkan matahari. Satu tahun terdiri dari 365 hari 5 jam 48 menit 46 detik atau 365,2422 hari atau lamanya waktu yang diperlukan bumi untuk mengelilingi matahari. Kalender masehi yang kita gunakan sehari-hari adalah contoh kalender solar. Kelebihan kalender ini adalah kesesuaiannya dengan musim. Karenanya, kalender ini digunakan sebagai pedoman beraktivitas sehari-hari (http://id. Wiki.detik.com/, 2008).


(12)

2. Kalender Lunar

Kalender bulan memanfaatkan perubahan fase bulan sebagai dasar perhitungan waktu. Dalam perjalanannya mengelilingi bumi, fase bulan akan berubah dari bulan mati ke bulan sabit, bulan separuh, bulan lebih separuh, purnama, bulan separuh, bulan sabit, dan kembali ke bulan mati. Satu periode dari bulan mati ke bulan mati, lamanya 29 hari 12 jam 44 menit 3 detik (29.5306 hari). Periode ini disebut dengan satu bulan. Panjang tahun dalam kalender bulan adalah 12 bulan (12 x 29.5306 hari), yakni 354 hari 8 jam 48 menit 34 detik (354.3672 hari). Sebagai misal, kalender yang berdasarkan bulan adalah kalender Hijriyah dan kalender Jawa (http://Media.isnet.org., 2008).

3. Kalender Lunisolar

Merupakan kalender lunar yang disesuaikan dengan matahari. Oleh karena kalender lunar dalam setahun 11 hari lebih cepat dari kalender solar, maka kalender lunisolar memiliki bulan interkalasi (bulan tambahan atau bulan ke-13) setiap 3 tahun, agar kembali sesuai dengan perjalanan matahari. Adapun contoh kalender lunisolar adalah kalender Imlek atau Cina, Saka, dan Buddha (http://ikhwan-interaktif.com., 2008)

Semua kalender tidak ada yang sempurna, sebab jumlah hari dalam setahun tidak bulat. Untuk memperkecil kesalahan, ada tahun-tahun tertentu menurut kesepakatan yang dibuat sehari lebih panjang atau terdapat bulan tambahan dalam kalender Cina pada tahun kabisat (http://ikhwan-interaktif.com., 2008).

Pada kalender solar, pergantian hari berlangsung tengah malam dan awal setiap bulan (tanggal 1) tidak tergantung pada posisi bulan. Adapun pada kalender lunar dan lunisolar pergantian hari terjadi ketika matahari terbenam dan awal


(13)

setiap bulan adalah saat konjungsi (Imlek, Saka, dan Buddha) atau saat munculnya hilal (Hijriyah dan Jawa) (http://Yulian.Firdaus.or.id., 2008).

2.1.1. Kalender Masehi

Sistem penanggalan Gregorian atau lebih sering dikenal sebagai sistem penanggalan Masehi merupakan sistem penanggalan internasional yang digunakan secara luas sekarang ini. Sistem penanggalan Masehi merupakan sistem penanggalan yang berdasarkan pada siklus pergerakan semu Matahari melewati titik vernal equinok dua kali berturut-turut, yang lamanya rata-rata adalah 365,242199 hari. Titik vernal equinok adalah titik semu pada lintasan ekliptika tempat Matahari melewati atau tepat berada pada garis ekuator langit (perpanjangan garis ekuator Bumi), yang terjadi sekitar tanggal 21 Maret. Berdasarkan penyesuaian dengan pergerakan semu Matahari inilah, satu tahun dalam kalender Gregorian lamanya 365 hari ( http://langitselatan.com., 2008 )

Menurut sejarahnya, kalender Masehi berasal dari kalender yang digunakan oleh bangsa Romawi kuno dan bukan berdasarkan pada siklus Matahari (kalender solar) seperti sekarang ini. Pada awalnya kalender ini memiliki jumlah hari dalam setahun sebanyak 304 hari. Kemudian dilakukan perubahan sehingga menjadi kalender yang terdiri dari 12 bulan dengan jumlah hari tiap bulannya masih menyesuaikan dengan siklus peredaran Bulan mengitari Bumi, yang rata-rata adalah 29,5 hari.

Jumlah 354 hari dalam setahun tidak sesuai dengan periode Bumi mengelilingi Matahari yang telah diketahui waktu itu, yaitu 365,242199 hari. Akibat perubahan ini, setiap akhir tahun kalender tersebut tidak sesuai sekitar 11


(14)

hari dengan pergantian musim, dan setelah 3 tahun perbedaan dengan musim ini menjadi sekitar 1 bulan.

Pada 46 SM, Julius Caesar merubah kalender dengan memerintahkan bahwa panjang 1 tahun haruslah 365 hari dan terdiri dari 12 bulan berdasarkan pertimbangan dari seorang ahli astronomi bernama Sosigenes. Hal ini mengakibatkan beberapa hari harus ditambahkan pada beberapa bulan agar panjang tahun yang semula 354 hari dapat menjadi 365 hari. Terdapat juga penetapan bahwa bulan-bulan yang berada pada urutan ganjil memiliki 31 hari dan bulan yang berada pada urutan genap memiliki 30 hari, dengan bulan Februari berjumlah 29 hari.

Penetapan Julius Caesar diatas mengakibatkan dalam beberapa bulan tak lagi bersesuaian dengan siklus Bulan mengelilingi Bumi yang lamanya rata-rata 29,5 hari. Sehingga kalender Julian ini tak lagi bersifat lunar calendar.

Berdasarkan kalender Julian, masih ada perbedaan sekitar seperempat hari dengan panjang tahun sebenarnya (pergerakan semu Matahari sepanjang tahun). Jika dibiarkan dalam kurun waktu 4 tahun kalender Julian akan mengalami akumulasi perbedaan sebesar 1 hari. Dalam waktu beberapa puluh tahun, akan mengalami akumulasi perbedaan dengan musim lebih besar lagi. Sehingga kalender Julian tidak sesuai dengan pergantian musim, padahal tujuan utama adalah penyesuaian dengan musim. Untuk mengatasi perbedaan musim tersebut, terdapat pertimbangan dari Sosigenes, setiap 4 tahun sekali akan ditambahkan 1 hari pada bulan Februari (tahun kabisat). Dengan begitu panjang rata-rata setiap


(15)

tahunnya adalah 365,25 hari dan menjadi cukup dekat dengan tahun sebenarnya yang panjang rata-ratanya 365,242199 hari.

Setelah didapatkan panjang tahun yang mendekati tahun sebenarnya dengan solusi tahun kabisat. Pada tahun 1582 kalender Julian telah memiliki ketaksesuaian dengan musim sebesar 10 hari. Untuk mengatasi, Paus Gregorius XIII mengambil dua langkah. Pertama, memutuskan bahwa tanggal 4 Oktober tahun 1582 akan langsung diikuti dengan tanggal 15 Oktober 1582, bukan tanggal 5 Oktober. Kedua, untuk mencegah ketidaksesuaian dengan musim kembali terjadi, menetapkan bahwa tiga dari empat tahun abad (kelipatan 100) bukan tahun kabisat. Bila pada kalender Julian tahun kabisat adalah tahun yang angka tahunnya habis dibagi 4. Dengan peraturan Paus Gregorius ini maka tahun abad yang tidak habis dibagi 400 tidak akan menjadi tahun kabisat. Sebagai contoh, tahun 1700,1800,1900 bukan tahun kabisat, sedangkan tahun 2000, yang habis dibagi 400, merupakan tahun kabisat. Sehingga terjadi pengurangan jumlah tahun kabisat sebanyak 3 buah tahun kabisat dalam 400 tahun dan panjang satu tahun Matahari dalam sistem penanggalan ini menjadi 365,2425 hari. (http://langitselatan.com, 2008).

Pada kalender Masehi terdapat 12 bulan, antara lain Januari, Februari, Maret, April, Mei, Juni, Juli, Agustus, September, Oktober, November, dan Desember, dimana masing-masing bulan memiliki jumlah hari yang bervariasi. Untuk lebih jelasnya dapat dilihat pada tabel 2.1.


(16)

Tabel 2.1 Nama Bulan dan Jumlah hari kalender Masehi

Bulan ke-

Nama Bulan Jumlah Hari

1. Januari 31 hari

2. Februari 28/29 hari

3. Maret 31 hari

4. April 30 hari

5. Mei 31 hari

6. Juni 30 hari

7. Juli 31 hari

8. Agustus 31 hari

9. September 30 hari

10. Oktober 31 hari

11. November 30 hari 12. Desember 31 hari

2.1.2. Kalender Hijriyah

Sistem penanggalan Hijriah, yang di Indonesia digunakan oleh komunitas Muslim sebagai kalender ibadah, dibangun berdasarkan rata-rata siklus sinodik Bulan. Dengan siklus sinodik Bulan ini, bilangan hari dalam satu tahunnya (yaitu 12 x 29,53059 hari = 354,36708 hari) lebih pendek 10 hari 21 jam daripada siklus tropis Matahari yang digunakan dalam kalender Masehi. Perbedaan jumlah hari inilah yang menjelaskan pergeseran sekitar 11 hari suatu tanggal dalam kalender Hijriyah terhadap kalender Masehi setiap tahunnya ( http:/ achoyob.com., 2008 ).

Jumlah hari dalam satu bulan dalam kalender Hijriyah bergantung pada posisi Bulan, Bumi, dan Matahari. Usia bulan yang mencapai 30 hari bersesuaian dengan terjadinya Bulan baru (new moon) di titik apogee, yaitu di jarak terjauh antara Bulan dan Bumi, dan pada saat yang hampir bersamaan Bumi berada di jarak terdekatnya dengan Matahari (perihelion). Sementara itu, satu bulan yang


(17)

berlangsung 29 hari bertepatan dengan saat terjadinya Bulan baru di perigee (jarak terdekat Bulan – Bumi) dengan Bumi berada di jarak terjauhnya dari Matahari (aphelion). Dari sini terlihat bahwa usia bulan tidaklah tetap, melainkan berubah-ubah (29/30 hari) sesuai dengan kedudukan ketiga benda langit tersebut (http://Wapedia.mobile/id., 2008).

A. Metode Penentuan Awal Bulan dalam Kalender Hijriyah : A.1. Rukyatul Hilal

Rukyatul Hilal adalah kegiatan melakukan pengamatan secara visual baik menggunakan mata langsung maupun dengan bantuan alat terhadap kemunculan hilal. Awal tiap bulan ditentukan dengan mengamati kehadiran Bulan sabit pertama kali (hilal) di ufuk barat segera setelah Bulan baru ketika Matahari terbenam. Kegiatan observasi hilal ini lazimnya dilakukan setiap tanggal 29 dari bulan Hijriyah yang sedang berjalan. Pergantian hari dalam kalender Hijriyah terjadi saat Matahari terbenam. Bila hilal terlihat, malam itu telah memasuki tanggal 1 di bulan berikutnya yang berarti bahwa usia bulan yang baru saja dilalui adalah 29 hari. Sementara bila hilal tidak terlihat, malam itu masih tanggal 30 bulan Hijriyah. Karena usia bulan dalam kalender Hijriyah tidak mungkin 31 hari, ketika Matahari terbenam pada tanggal 30 menjadi tanda masuknya tanggal 1 di bulan yang baru (http://id.Wikipedia.org., 2008).

A.2. Hisab

Hisab atau perhitungan astronomis yang berkembang awalnya hanya


(18)

dikenal adanya 2 sistem hisab dalam penyusunan kalendar qamariyah, yakni Hisab Urfi dan Hisab Haqiqi (Abdurrahman, 2008).

A.2.1. Hisab Urfi

Dalam sistem Hisab Urfi, kalender qamariyah disusun berdasarkan masa peredaran rata-rata Bulan mengelilingi Bumi, yakni 29 hari 12 jam 44 menit 3 detik (satu bulan Sinodis). Berdasarkan perhitungan ini, maka 1 tahun (12 bulan) dihitung sama dengan 354 hari 8 jam 48 menit 36 detik (354 11/30 hari).

Karena terdapat angka pecahan sebesar 11/30 hari, maka untuk menghilangkannya sistem ini membuat siklus 30 tahunan dalam kalender qamariyah yang terdiri dari 19 tahun Basitah (354 hari) dan 11 tahun Kabisat (355 hari). Tahun Kabisat dalam siklus 30 tahun tersebut jatuh pada urutan ke 2, 5, 7, 10, 13, 16, 18, 21, 24, 26, 29. Umur bulan dalam metode hisab urfi dibuat tetap, yakni 30 hari untuk bulan urutan ganjil dan 29 hari untuk bulan urutan genap (bulan 12 pada tahun Kabisat berumur 30 hari) (http://mathemtics.its.ac.id., 2008).

Penggunaan metode ini menyebabkan awal bulan qamaryiah disegenap belahan Bumi akan selalu jatuh pada hari yang sama. Penulis menggunakan metode hisab urfi untuk pembuatan kalender digital dalam Tugas Akhir ini. Berdasarkan uraian diatas dapat ditampilkan dalam bentuk tabel 2.2.


(19)

Tabel 2.2 Nama Bulan dan Jumlah hari kalender Hijriyah berdasarkan hisab urfi.

Bulan ke-

Nama Bulan Jumlah Hari

1. Muharram 30 hari

2. Shafar 29 hari

3. Rabiul Awwal 30 hari 4. Rabiul Akhir 29 hari 5. Jumadil Awwal 30 hari 6. Jumadil Akhir 29 hari

7. Rajab 30 hari

8. Shaban 29 hari

9. Ramadhan 30 hari

10. Syawal 29 hari

11. Dzulka’idah 30 hari 12. Dzulhijjah 29/30 hari

A.2.2. Hisab Haqiqi

Hisab haqiqi menggunakan kaidah astronomis dan matematika dengan

menggunakan rumus-rumus serta dilengkapi dengan data-data astronomis terbaru sehingga memiliki tingkat ketelitian yang tinggi. Kalender qamariyah disusun berdasarkan masa peredaran Bulan yang sebenarnya (hakiki). Karena itu, 1 bulan sinodis tidak selalu sama setiap bulan. Kadang hanya 29 hari lebih 6 jam dan beberapa menit, dan kadang sampai 29 hari lebih 19 jam dan beberapa menit. Berkaitan dengan ini, maka umur bulan yang selalu tetap seperti dalam hisab Urfi tidak dikenal dalam sistem ini. Boleh jadi 29 hari atau 30 hari berturut-turut. Dalam praktiknya, sistem ini menyusun kalender dengan perhitungan posisi Bulan. (http://www.mathematics.its.ac.id, 2008).


(20)

2.1.3. Kalender Jawa

Masyarakat Jawa menggunakan sistem penanggalan berdasarkan pergerakan matahari sebelum tahun 1633 M. Penanggalan matahari tersebut dikenal sebagai Saka Hindu Jawa. Tahun Saka Hindu 1555, bertepatan dengan tahun 1633 M, Raja Mataram Sri Sultan Agung Prabu Hanyokrokusumo mengganti konsep dasar sistem penanggalan matahari (Syamsiyah) menjadi sistem Bulan (Qamariyah). Perubahan penanggalan berlaku untuk seluruh pulau Jawa dan Madura kecuali Banten, karena tidak termasuk daerah Mataram.

Perubahan sistem penanggalan dilaksanakan hari Jumat Legi, saat pergantian tahun baru Saka 1555 yang ketika itu bertepatan dengan tahun baru Hijriyah tanggal 1 Muharam 1043 H dan 8 Juli 1633 M. Pergantian sistem penanggalan tidak mengganti hitungan Saka 1555 yang sedang berjalan menjadi tahun 1, melainkan meneruskannya. Perhitungan tahun tersebut berlangsung hingga sekarang (http://albarokah.or.id., 2008).

Selain mengubah sistem penanggalan, terdapat penyesuaian seperti nama bulan dan hari menjadi mirip bahasa Arab. Hal ini menunjukkan kuatnya pengaruh budaya dan penanggalan Islam dalam penanggalan Jawa. Secara astronomis, kalender Jawa tergolong mathematical calendar, dimana perhitungan didasarkan secara matematika dari peristiwa astronomi, sehingga didapatkan jumlah hari seperti yang tertera pada tabel 2.3.


(21)

Tabel 2.3 Nama Bulan dan Jumlah hari kalender Jawa

Bulan ke-

Nama Bulan Jumlah Hari

1. Suro 30 hari

2. Sapar 29 hari

3. Mulud 30 hari

4. Rabiulakir 29 hari 5. Jumadilawal 30 hari 6. Jumadilakir 29 hari

7. Rajab 30 hari

8. Ruwah 29 hari

9. Puasa 30 hari

10. Sawal 29 hari

11. Hapir 30 hari

12. Besar 29/30 hari

Meskipun kalender Hijriyah dan kalender Jawa dasar penanggalannya sama yaitu penampakan bulan, kalender Jawa bukanlah kalender Hijriyah. Meski mengadopsi konsep dasar penanggalan Hijriyah, kalender Jawa tidak mengikuti aturan penanggalannya. Kalender Jawa lebih tepat disebut sebagai penggabungan unsur- unsur Jawa dengan penanggalan Hijriyah.

Konsep hari pasaran yang terdiri dari 5 hari (Kliwon, Legi, Pahing, Pon, Wage) dan Wuku (Pawukon) merupakan wujud unsur-unsur Jawa yang tidak ditemui dalam penanggalan Hijriyah dan Masehi. Siklus 8 tahun yang disebut Windu juga merupakan konsep penanggalan khas Jawa. Nama tahun dalam penanggalan Jawa mengikuti siklus Windu, terdiri dari Alip, Ehe, Jimawal, Je, Dal, Be, Wawu, dan Jimakir (http://www.babadbali.com, 2008). Dari siklus 8 tahun, didapatkan tahun tertentu yang merupakan tahun kabisat. Untuk lebih jelasnya tahun yang termasuk tahun kabisat dapat dilihat pada tabel 2.4.


(22)

Tabel 2.4 Nama Tahun dalam siklus Windu

No. Nama Tahun Umur (hari)

1 Alip 354

2 Ehe 355

3 Jimawal 354

4 Je 355

5 Dal 354

6 Be 354

7 Wawu 354

8 Jimakir 355

Jumlah 2835

2.1.4. Kalender Cina

Berbeda dengan kalender Masehi dan Hijriyah yang semata-mata menggunakan Matahari atau Bulan sebagai acuan, pada kalender Cina menggunakan Matahari dan Bulan sekaligus. Artinya, untuk menentukan panjang tahun kalender ini menggunakan pergerakan Matahari, sementara untuk menentukan usia bulan (month) memanfaatkan siklus sinodik, yaitu selang waktu dua fase Bulan (moon) yang sama berurutan. Misalnya dari purnama ke purnama berikutnya, yang rata-rata berdurasi 29,53059 hari. Karena menggunakan Matahari dan Bulan sekaligus, kalender Cina disebut juga luni-solar calendar (http://rukyatuhilal.org.,2008) .

Satu tahun dalam sistem penanggalan Cina juga terdiri atas 12 bulan, yang setara dengan 12 lunasi Bulan (12 kali siklus sinodik). Dengan demikian, dalam 12 bulan terdapat 354,36708 hari. Padahal “tahun” di dalam penanggalan Cina didefinisikan sebagai siklus Matahari berada di titik musim dingin (winter

solstice) dua kali berurutan yang lamanya 365,24274 hari, sehingga terdapat


(23)

kalender Cina selalu bergerak maju 11 hari tiap tahunnya (jatuh dalam rentang 21 Januari hingga 19 Februari). Namun, dengan disyaratkannya titik musim dingin selalu jatuh di bulan ke-11, perayaan tahun baru akan mundur kembali setiap 3 tahun.

Dalam kalender Cina juga dikenal tahun basit dan tahun kabisat. Bila pada kalender Masehi tahun kabisat ditandai dengan adanya penambahan sebesar satu hari dalam tahun berjalan, dalam penanggalan Cina penambahannya mencapai 30 hari atau satu bulan. Tahun basit terdiri atas 12 bulan, sementara pada tahun kabisat berjumlah 13 bulan (http://rukyatuhilal.org., 2008).

Secara astronomis, kalender Jawa dan kalender Masehi tergolong

mathematical calendar, sedangkan kalender Hijriyah astronomical calendar.

Mathematical atau aritmatical calendar merupakan sistem penanggalan yang aturannya didasarkan pada perhitungan matematika dari peristiwa-peristiwa alam. Adapun astronomical calendar merupakan kalender berdasarkan fenomena alam seperti kalender Hijriyah dan kalender Cina.

2.2. Mikrokontroler MCS-51

Mikrokontroler AT89S52 merupakan satu contoh dari keluarga mikrokontroler MCS-51. Integrated Circuit (IC) ini dapat digunakan untuk proses perhitungan matematis, komunikasi, dan banyak lainnya. Mikrokontroler AT89S52 adalah mikrokontroler produksi Atmel.dengan 8K Bytes Flash PEROM

(Programmable and Erasable Read Only Memory), 2K Bytes EEPROM


(24)

Mikrokontroler AT89S52 memiliki memori dengan teknologi nonvolatile memory, isi memori tersebut dapat diisi atau dihapus berkali-kali.

Memori ini biasa digunakan untuk menyimpan instruksi (perintah) berstandar MCS-51, sehingga memungkinkan mikrokontroler AT89S52 bekerja tanpa memerlukan external memory untuk menyimpan source code jika kapasitasnya tidak melebihi yang sudah ditentukan.

Mikrokontroler AT89S52 mempunyai 40 kaki, 32 kaki di antaranya untuk keperluan port paralel. Tiap port paralel terdiri dari 8 kaki, dengan demikian 32 kaki tersebut membentuk 4 buah port paralel, yang dikenal sebagai Port 0, Port 1, Port 2 dan Port 3. Nomor dari masing-masing jalur (kaki) dari port paralel mulai dari 0 sampai 7, jalur (kaki) pertama Port 0 disebut sebagai P0.0 dan jalur terakhir untuk Port 3 adalah P3.7. untuk lebih jelasnya perhatikan pada Gambar 2.1

Gambar 2.1 Diagram Pin AT89S52 (Datasheet, Atmel Corporation)

2.2.1. Keterangan pin-pin AT89S52

a. RST

Berfungsi sebagai input untuk melakukan reset. Jika RST bernilai high dalam waktu 2 siklus mesin, mikrokontroler akan di-reset.


(25)

b. Address Latch Enable(ALE)/PROG

Mempunyai fungsi memberikan sinyal ke IC latch agar menyimpan address yang akan menuju memori eksternal. ALE aktif pada saat mengakses memori eksternal.

c. Program Store Enable (PSEN)

Pin ini berfungsi sebagai pulsa pengaktif untuk membaca memori eksternal. d. XTAL 1

Merupakan pin input untuk kristal Osilator. e. XTAL 2

Output Osilator f. EA

EA (External Access) harus dihubungkan dengan ground jika menggunakan program memori eksternal. Jika menggunakan program memori internal maka EA harus dihubungkan dengan VCC atau dalam kondisi high.

g. Port 0

Merupakan salah satu port yang berfungsi sebagai general purpose I/O (dapat digunakan sebagai masukan dan juga keluaran) dengan lebar 8 bit. Fungsi lainnya adalah sebagai multiplexed address/data bus (pada saat mengakses memori eksternal).

h. Port 1

Merupakan salah satu port yang berfungsi sebagai general purpose I/O dengan lebar 8 bit. Pada pin–pin Port 1 memiliki beberapa fungsi tambahan. P1.0 dan P1.1 dapat dikonfigurasi menjadi masukan pencacah ekternal ke Timer/Counter 2 (P1.0/T2) dan Timer/Counter 2 reload trigger dan kendali


(26)

arah (P1.1/T2EX). Selanjutnya P1.4, P1.5, P1.6 dan P1.7 dapat dikonfigurasi menjadi Serial Peripheral Interface (SPI) untuk dijadikan port slave, untuk lebih jelasnya keterangan pin–pin Port 1 terdapat pada tabel 2.5.

Tabel 2.5 Keterangan pin–pin pada Port 1(Datasheet, Atmel Corporation).

i. Port 2

Port 2 adalah 8 bit I/O port dua arah dengan dilengkapi internal pull up dan berfungsi sebagai input dengan memberikan logika 1. Fungsi lain Port 2 sebagai Byte alamat tinggi (A8 s/d A15) pada saat menjalankan program eksternal dan mengakses data pada memori data eksternal dengan menggunakan pengalamatan 16 bit (instruksi MOVX @DPTR) sedangkan jika menggunakan 8 bit (instruksi MOVX @RI) maka Port 2 berisi Special Function Register (SFR) P2.

j. Port 3

Port 3 adalah 8 bit I/O port dua arah dengan dilengkapi internal pull up, sama seperti Port 1 dan Port 2 jika sebagai port. Sedangkan sebagai fungsi spesial, port–port ini mempunyai keterangan pada tabel 2.6.


(27)

Tabel 2.6 Keterangan pin–pin pada Port 3 (Datasheet, Atmel Corporation).

k. GND Ground l. VCC

Power Supply. Berfungsi sebagai sumber tegangan +5V.

2.2.2. Clock generator dan Timer

Mikrokontroler AT89S52 memiliki clock generator internal (on-chip) yang digunakan untuk mengeksekusi instruksi yang ada pada memori program.

Gambar 2.2. Hubungan ke Kristal

Untuk menggunakan osilator internal diperlukan sebuah kristal atau keramik resonator yang dipasangkan antara pin XTAL1 dan pin XTAL2 dan 2 buah kapasitor ke GND seperti tampak pada gambar 2.2. Penggunaan frekuensi kristal keramik resonator disesuaikan dengan kecepatan yang diinginkan oleh

P3.0 RXD Port Serial Input

P3.1 TXD Port Serial Output

P3.2 INT 0 Port External Interupt 0

P3.3 INT 1 Port External Interupt 1

P3.4 T0 Port External Timer 0

P3.5 T1 Port External Timer 1

P3.6 WR External Data Memory Write Strobe


(28)

pengguna minimum sistem dengan ketentuan frekuensi maksimal 24 MHz dan menggunakan kapasitor 5 pF.

Bila menggunakan clock eksternal, maka pin XTAL1 berfungsi sebagai

input clock osilator dan XTAL2 tidak disambungkan atau no connect (NC),

seperti pada gambar 2.3.

Gambar 2.3 Konfigurasi Clock Eksternal Dari kristal didapatkan perhitungan timer dibawah ini : T = (65536 – TH0TL0) x 1µs

T / 1µs = (65536 – TH0TL0)

Jika T dimisalkan sama dengan 1 ms maka persamaannya adalah : 1 ms / 1µs = (65536 – TH0TL0)

s adalah sama dengan 0,001 ms

TH0TL0 = 65536 – (1 ms / 1µs)

= 64536 (dec) = FC18H


(29)

2.2.3. Struktur Memori

Struktur memori yang terdapat pada AT89S52 terdiri dari :

A. Random Access Memory (RAM) Internal, memori sebesar 256 Byte yang

biasanya digunakan untuk menyimpan variabel atau data yang bersifat sementara.

B. Special Function Register (SFR), memori yang berisi register–register yang mempunyai fungsi khusus seperti timer, serial dan lain sebagainya.

C. Flash PEROM, memori yang digunakan untuk menyimpan instruksi–

instruksi MCS-51.

D. EEPROM, memori sebesar 2K Byte yang biasanya digunakan untuk menyimpan data yang bersifat nonvolatile.

A. RAM Internal

1. Register Banks

AT89S52 mempunyai 8 buah register yang terdiri dari R0 hingga R7. Delapan buah register tersebut terletak pada alamat 00H hingga 07H pada setiap kali reset.

2. Bit Addressable RAM

Alamat 20H hingga 2FH pada RAM dapat diakses secara pengalamatan bit. 3. RAM Keperluan Umum


(30)

B. SFR ( Special Function Register )

AT89S52 mempunyai beberapa SFR. Adapun register–register tersebut adalah :

1. Accumulator

Digunakan sebagai register utama dalam proses aritmatika dan penyimpan data sementara.

2. Port

AT89S52 mempunyai empat buah port yaitu Port 0, Port 1, Port 2, dan Port 3, yang terletak pada alamat 80H, 90H, A0H, dan B0H.

3. ProgramStatus Word

PSW terletak pada alamat memori D0H. Special function register ini digunakan untuk menyimpan bit-bit yang penting yang akan di-set maupun di-clear oleh instruksi MCS-51.

4. Register B

Register ini juga digunakan bersama Accumulator untuk proses aritmatik dan logika.

5. Stack Pointer

Register Stack Pointer merupakan sebuah register 8 bit yang terletak di alamat 81H.

6. Data Pointer

Data Pointer atau DPTR adalah register 16 bit yang terletak pada alamat 82H–83H untuk DPL dan 84H–85H untuk DPH. DPTR biasanya digunakan sebagai pengakses source code ataupun data di memori eksternal dan EEPROM internal.


(31)

7. RegisterTimer

Register ini mempunyai 16 bit Timer/Counter, yang terbagi menjadi Timer 0, Timer 1 dan Timer 2. Masing–masing register tersebut berada pada alamat 8AH, 8BH dan 0CCH.

8. RegisterPort Serial

Register ini digunakan untuk dapat melakukan komunikasi serial. Buffer untuk proses pengiriman dan penerimaan data serial terletak pada register SBUF, pada alamat 99H. Sedangkan untuk mengatur mode serial dapat dilakukan dengan mengubah isi dari register SCON yang terletak pada alamat 98H. 9. Register Interupsi

Untuk pengaturan interupsi, terdapat beberapa register penting yang perlu diperhatikan, yaitu register Interrupt Enable (IE), dan register Interrupt Priority (IP), masing–masing register tersebut terdapat pada alamat A8H dan B8H.

C. Flash PEROM

Untuk AT89S52 mempunyai 8K Byte Flash PEROM, ROM yang dapat ditulis dan dihapus secara berulang–ulang hingga 10.000 kali.

D. EEPROM

Menurut Atmel Corporation pada mikrokontroler AT89S52 mempunyai 2K Byte EEPROM, memori data yang dapat ditulis dan dihapus secara berulang– ulang hingga 100.000 kali. (Atmel Corporation,8-bit microcontroller with 8K Bytes In-System Programmable Flash AT89S52)


(32)

2.3. Komunikasi Serial RS232

Dikenal 2 macam cara dalam mentransmisikan data secara serial, yaitu secara Synchronous dan Asynchronous.. Kedua cara tersebut dibedakan oleh sinyal denyut (clock) yang dipakai untuk men-‘dorong’ data seri. Transmisi secara

Synchronous yaitu pengiriman data serial bersamaan dengan sinyal clock,

sedangkan Asynchronous yaitu pengiriman data serial tidak bersamaan dengan sinyal clock sehingga receiver harus membangkitkan sinyal clock sendiri (tidak perlu sinkronisasi) (Nalwan, 2007).

Port seri MCS51 bisa dipakai dalam 4 mode kerja yang berbeda. Dari 4 mode tersebut, 1 mode diantaranya bekerja secara sinkron dan 3 lainnya bekerja secara asinkron. Secara ringkas ke-empat mode kerja tersebut bisa dibedakan sebagai berikut:

1. Mode 0

Mode ini bekerja secara sinkron, data seri dikirim dan diterima melalui kaki P3.0 (RxD), dan kaki P3.1 (TxD) dipakai untuk menyalurkan clock pendorong data seri yang dibangkitkan MCS51.

Data dikirim atau diterima 8 bit sekaligus, dimulai dari bit yang bobotnya paling kecil (bit 0) dan diakhiri dengan bit yang bobotnya paling besar (bit 7). Kecepatan pengiriman data (baud rate) adalah 1/12 frekuensi osilator kristal.


(33)

2. Mode 1

Mode ini dan mode-mode berikutnya bekerja secara asinkron, data dikirim melalui kaki P3.1 (TxD) dan diterima melalui kaki P3.0 (RxD). Pada Mode 1 data dikirim/diterima 10 bit sekaligus, diawali dengan 1 bit start, disusul dengan 8 bit data yang dimulai dari bit yang bobotnya paling kecil (bit 0), diakhiri dengan 1 bit stop. Pada MCS51 yang berfungsi sebagai penerima bit stop ditampung pada RB8 dalam register SCON. Kecepatan pengiriman data (baudrate) bisa diatur sesuai dengan keperluan. Mode inilah yang umum dikenal sebagai UART (Universal Asynchronous Receiver/Transmitter)

3. Mode 2

Data dikirim/diterima 11 bit sekaligus, diawali dengan 1 bit start, disusul 8 bit data yang dimulai dari bit yang bobotnya paling kecil (bit 0), kemudian bit ke 9 yang bisa diatur lebih lanjut, diakhiri dengan 1 bit stop. Pada MCS51 yang berfungsi sebagai pengirim, bit 9 tersebut berasal dari bit TB8 dalam register SCON. Pada MCS52 yang berfungsi sebagai penerima, bit 9 ditampung pada bit RB8 dalam register SCON, sedangkan bit stop diabaikan tidak ditampung. Kecepatan pengiriman data (baudrate) bisa dipilih antara 1/32 atau 1/64 frekuensi osilator kristal.

4. Mode 3

Mode ini sama dengan Mode 2, hanya saja kecepatan pengiriman data (baudrate) bisa diatur sesuai dengan keperluan, seperti halnya Mode 1.(Putra, 2002).


(34)

2.4. Serial RTC (Real Time Clock) DS1307

Real Time Clock pada dasarnya adalah sebuah jam digital. RTC serial

DS1307 memberikan informasi berupa jam, menit, detik, hari, bulan, dan tahun pada mikrokontroler. Mode komunikasi data yang digunakan oleh DS1307 adalah mode synchronous serial dimana tiap bit data ditransfer antara DS1307 dan mikrokontroler dengan metoda sinkronisasi dengan pewaktuan (clock) yang dikendalikan oleh mikrokontroler. Sinyal clock pada RTC dibangkitkan oleh kristal sebesar 32,768 Khz. Kristal terhubung pada pin X1 dan X2. Diagram pin pada RTC DS1307 dapat dilihat pada Gambar 2.4.

Gambar 2.4 Pin DS1307 (DALLAS Semiconductor, www.maxim-ic.com)

Pada aplikasi ini DS1307 bekerja dengan dua mode, yaitu: 1. Mode Slave Penerima (Master Menulis Pada Slave):

Setiap menerima byte data DS1307 akan merespon dengan membangkitkan bit acknowledge. Untuk mengawali proses pengiriman data diawali dengan kondisi START dan diakhiri dengan kondisi STOP. Byte alamat slave adalah byte pertama yang diterima slave setelah master membangkitkan kondisi START. Byte alamat terdiri dari 7 bit data, dan diikuti oleh bit arah (R/W), yang mana untuk penulisan data ke slave adalah 0. Setelah menerima dan menganalisa byte alamat, DS1307 membangkitkan acknowledge pada jalur SDA.


(35)

Master akan mengirimkan sebuah data word alamat pada DS1307 untuk mengeset registerpointer. Register pointer bertambah nilainya setiap terjadi penulisan data. Untuk mengakhiri pengiriman data, master membangkitkan kondisi STOP.

2. Mode Slave Pengirim (Master Membaca Dari Slave):

DS1307 mengirimkan data serial pada SDA ketika menerima sinyal clock pada SCL. Proses pengiriman data diawali dengan kondisi START dan diakhiri dengan kondisi STOP. Byte yang berisi data alamat diterima setelah master membangkitkan kondis START. Byte alamat DS1307 terdiri dari 7-bit alamat yaitu 1101000 dan 1 bit arah (R/W) adalah 0 untuk read. Setelah menerima dan mengolah data alamat, DS1307 akan membalas dengan membangkitkan bit acknowledge pada SDA. Nilai registerpointer bertambah setiap pembacaan 1 byte data. Untuk mengakhiri pengiriman data, master mengirimkan tanda “not acknowledge” kepada slave.

Datapada DS1307 disimpan dalam format BCD. Pada format ini, setiap 4 bit data merepresentasikan satu digit desimal. Misalkan angka 12 dalam desimal disimpan sebagai 0001 0010 dalam BCD. Device address untuk DS1307 adalah 0xD0. Data pada register Timekeeper DS1307 dapat dilihat pada tabel 2.7.

Tabel 2.7 Tabel Timekeeper Register DS1307 (DALLAS Semiconductor,


(36)

2.4.1 Komunikasi Serial I2C (Inter Integrated Circuit)

Komunikasi serial I2C bus adalah antarmuka synchronous serial yang dikembangkan oleh Philip Semiconductors. I2C ini merupakan protokol transfer data serial. Jalur komunikasi data pada I2C ada 2 buah, yaitu serial data (SDA) dan serial clock (SCL). Tiap perangkat yang dihubungkan ke jalur I2C harus memiliki alamat khusus dan dapat beroperasi sebagai pengirim maupun penerima tergantung pada fungsinya masing-masing. Perangkat yang mengirim data disebut transmitter, sedangkan perangkat yang menerimanya disebut receiver. Perangkat yang terhubung pada I2C digolongkan menjadi master dan slave. Master adalah perangkat yang memulai operasi transfer data dan akses pada I2C bus dengan membentuk sinyal START, mengakhiri transfer data dengan membentuk sinyal STOP, dan membangkitkan sinyal clock melalui pin SCL. Slave adalah perangkat yang dikendalikan atau dialamati oleh master. Dalam pembuatan kalender digital ini, DS1307 adalah Real Time Clock yang berperan sebagai slave pada komunikasi serial ini, sedangkan yang bertindak sebagai master adalah mikrokontroler. Sinyal START merupakan sinyal untuk memulai semua perintah sedangkan sinyal STOP merupakan sinyal untuk mengakhiri semua perintah. Kondisi sinyal STARTdan sinyal STOP seperti tampak pada Gambar 2.5.


(37)

Sinyal dasar yang lain dalam I2C Bus adalah sinyal acknowledge yang disimbolkan dengan ACK. Setelah transfer data oleh master berhasil diterima slave, slave akan menjawabnya dengan mengirim sinyal acknowledge,. Kondisi sinyal acknowledge seperti tampak pada Gambar 2.6.

Gambar 2.6 Kondisi Sinyal Acknowledge (www.new.indorenesas.com)

Dalam melakukan transfer data pada I2C bus, terdapat aturan yang telah ditetapkan yaitu :

a. Transfer data hanya dapat dilakukan ketika bus tidak dalam keadaan sibuk. b. Selama proses transfer data, keadaan data pada SDA harus stabil selama SCL

dalam kondisi high. Perubahan pada SDA hanya dapat dilakukan selama SCL dalam keadaan low. Jika terjadi perubahan keadaan SDA pada saat SCL dalam keadaan tinggi, maka perubahan itu dianggap sebagai sinyal START atau sinyal STOP.

2.5 8-Bit Shift Register

Dalam sistem digital, register dibutuhkan untuk menyimpan atau memindahkan sekumpulan bit dalam format tertentu. Shift register memberikan fasilitas perpindahan data dalam format serial atau paralel dan menyimpan data tersebut ( Sigit, 2007).


(38)

8-Bit Shift Register terbagi menjadi dua bagian yaitu : shift register SIPO (Serial Input/Paralel Output) dan PISO (Paralel Input/Serial Output). Contoh komponen yang mempunyai karakteristik SIPO adalah IC 74LS164 sedangkan IC 74LS165 merupakan komponen yang mempunyai karakteristik PISO. Shift Register adalah sebuah komponen yang memiliki 2 serial input(A dan B), 8 bit paralel output(QA-QH), Clear dan Clock. Shift Register berfungsi untuk mengubah sebuah input data seri menjadi 8 buah output data paralel, sehingga dapat menambah port output.

Karakteristik dari IC 74LS164 : a. Jalur (enable/disable) input serial.

b. Memiliki bufferclock dan serial input secara lengkap.

c. Asynchronous.

d. Frekuensi clock 36 MHz. e. Powerdissipation 80 mW.

Susunan pin input dan outputshift register untuk lebih jelasnya dapat dilihat pada gambar 2.7.

Gambar 2.7 Pin IC Shift Register 74LS164 (Datasheet, National Semiconductor)

Cara kerja Shift Register adalah dengan menggeser data pada output QA-QH saat ada sinyal dari ‘0’ ke ‘1’ pada kaki clock, sedangkan output pertama


(39)

(QA) akan mengikuti input A dan B. Kaki Clear (aktif low) akan me’reset’ semua output (QA-QH) bila diberi sinyal low, jadi kaki clear harus selalu diberi high bila tidak ingin me’resetShift Register. Cara kerja secara lengkap dari Shift Register ditunjukkan pada tabel 2.8.

Tabel 2.8 Tabel kebenaran IC Shift Register(Datasheet, National Semiconductor)

Shift Register menggunakan beberapa buah Flip-flop yang digunakan

sebagai penyimpan informasi digital. Flip-flop tersebut dihubungkan sedemikian rupa sehingga output Flip-flop yang satu terhubung pada input Flip-flop berikutnya. Semua Flip-flop mendapat Clock Pulse yang sama, sehingga data dapat digeser ke kiri atau ke kanan.

2.6 Transistor

Transistor TIP terdiri dari 2 jenis yaitu tipe pnp dan npn. Perbedaan dari tipe npn dan pnp adalah pada arah aliran arus yang mengalir. Untuk tipe npn arah aliran elektron mengalir ke dalam emitter dan ke luar ke basis dan collector, arus konvensional emitter mengalir ke luar dari emitter, arus konvensional basis dan collector mengalir ke dalam transistor npn. Untuk transistor pnp disebut


(40)

pengimbang (complement) dari transistor npn. Perkataan pengimbang menentukan bahwa semua tegangan dan arus berlawanan dengan pada transistor npn. Arah arus emitter mengalir ke atas dan tegangan collector negatif. Kita dapat mendefinisikan arah positif dari tegangan dan arus sebagai transistor npn yang dibias forward. Karena itu tegangan dan arus dalam sebuah transistor pnp yang dibias forward adalah negatif terhadap arah npn.

Dengan demikian transistor tipe pnp lebih banyak digunakan sebagai driver pada LED, sedangkan transistor tipe npn lebih banyak digunakan sebagai driver motor DC. Kedua jenis TIP tersebut mempunyai karakteristik pin out yang sama dimana terdiri dari basis, emitter dan collector seperti terlihat pada Gambar 2.8.

Gambar 2.8 Pinout transistor TIP42

Karakteristik kerja dari transistor TIP42 yang digunakan dapat dilihat pada Gambar 2.9.


(41)

Gambar 2.9 Karakteristik transistor TIP42

2.7 Octal Data Latch

Octal Data Latch merupakan komponen yang digunakan untuk menahan 8

bit data dalam waktu singkat dengan kecepatan tinggi, dan juga dapat digunakan untuk memisahkan antara data dan alamat yang dikirimkan dari mikrokontroler. IC 74HC573 dan IC 74HC373 mempunyai hasil keluaran yang sama persis, perbedaan dari kedua IC adalah letak pin masukan dan keluaran. IC 74HC373 mempunyai letak pin masukan dan keluaran yang tidak berurutan, sehingga agak sulit untuk menentukan antara pin masukan dan pin keluaran. Berbeda dengan IC 74HC573, susunan IC ini lebih terurut antara pin masukan dan keluarannya. Untuk mengetahui konfigurasi pin IC 74HC573 dapat dilihat pada Gambar 2.10.


(42)

Gambar 2.10 Pinout 74HC573 (Datasheet, Philips Semiconductor)

Blok diagram dari IC 74HC573 disusun dari delapan buah komponen D-flipflop. Susunan dari D-flipflop yang membentuk 74HC573 terlihat pada Gambar 2.11.

Gambar 2.11 Blok diagram IC 74HC573 (Datasheet, Philips Semiconductor)

Prinsip kerja yang digunakan adalah jika Latch Enable (LE) pada pin no 11 mempunyai nilai logika 1, maka data yang dikeluarkan melalui jalur keluaran (O0 sampai O7) akan sama persis dengan data yang masuk pada jalur masukan (D0 sampai dengan D7), namun jika nilai logika LE diubah menjadi 0, maka data yang dikeluarkan melalui jalur keluaran adalah data keluaran sebelumnya.

Saat mikrokontoler mengirimkan alamat, maka sinyal ALE akan menahan proses tersebut dengan memberikan sinyal clock. Jadi Port 0 berupa jalur alamat


(43)

jika ALE bernilai 1 atau Port 0 berupa jalur data jika ALE bernilai 0. Hal ini sesuai dengan Tabel 2.9.

Tabel 2.9 Tabel kebenaran 74HC573 (Datasheet, Philips Semiconductor)

Octal data latch sangat sering digunakan, rangkaian ini memanfaatkan impedansi dari 74HC573, jadi tegangan keluaran yang dikeluarkan oleh mikrokontroler dapat terjaga dengan konstan. IC ini digunakan untuk menahan data, karena terdapat jumlah yang tidak seimbang antara jumlah input dengan jumlah output yang akan ditampilkan.

2.8 LED dot matrix

LED dot matrix sebenarnya adalah susunan dari beberapa jumlah LED

yang digabungkan menjadi satu dalam bentuk matrix. Jumlah LED dot matrix tersedia berbagai macam ukuran dari 5x5, 5x7, 8x8, dan sebagainya. LED dot

matrix juga mempunyai bermacam warna yang dapat menyala seperti 1 warna, 2

warna dan RGB. Dalam LED dot matrix juga terdapat beberapa pin yang digunakan untuk baris dan kolom matrix tersebut. Pada dot matrix dengan 3 warna sebenarnya adalah sebuah dot matrix yang terdiri dari 2 warna dan 1 warna adalah kombinasi dari 2 warna yang ada, terdapat beberapa jenis warna antara lain


(44)

warna merah, hijau dan warna kombinasi oranye. Warna merah, biru dan dari kombinasi kedua warna merah dan biru dan beberapa jenis display dot matrix 2 warna yang lainnya. Display dot matrix 2 warna mempunyai beberapa karakteristik yang sama tergantung pada ukuran dari dot matrix itu sendiri, jumlah common positif pada dot matrix 2 warna menunjukkan banyak baris sedangkan common negatif dot matrix 2 warna mempunyai 2 pin setiap satu titik display dot matrix yang merupakan sebagai pemilih warna (UNI, 2:2000).

Pin-pin pada kaki dot matrix berfungsi untuk mengendalikan tiap led dot matrix. Terdapat pin yang berguna untuk koneksi ke baris maupun kolom. Untuk lebih jelas koneksi pin mana yang terhubung ke baris atau kolom dapat dilihat pada Gambar 2.12 dan Gambar 2.13 .

Gambar 2.12. Circuit pada led dot matrix 2 warna (Datasheet A-5880EG, Paralight Electronics)


(45)

Gambar 2.13 Pin untuk led dot matrix 2 warna (Datasheet A-5880EG, Paralight Electronics)


(46)

BAB III

METODE PENELITIAN

Metode penelitian yang digunakan dalam penelitian tugas akhir ini adalah studi kepustakaan dan melakukan percobaan. Dengan ini penulis berusaha untuk mengumpulkan data, informasi serta materi–materi dasar yang bersifat teoritis yang sesuai dengan permasalahan. Hal tersebut diperoleh dari buku, materi kuliah, literatur melalui browsing di internet dan melakukan berbagai percobaan. Dari data-data yang diperoleh penulis berusaha menerapkannya untuk menyelesaikan permasalahan yang ada dalam penelitian ini.

Pada sub bab ini akan membahas tentang perancangan sistem secara keseluruhan dari penelitian ini, yaitu tentang perancangan perangkat keras dan perangkat lunak. Keseluruhan sistem pada penelitian ini sesuai dengan blok diagram pada Gambar 3.1.

Gambar 3.1 Blok Diagram rangkaian keseluruhan. KOMPUTER

MAX 232 Converter

Mikrokontroler

Display DOT MATRIK Driver Baris

Driver Kolom Serial RTC


(47)

3.1 Perancangan Perangkat Keras

Langkah selanjutnya dalam perancangan perangkat keras pada sistem kalender digital menggunakan dot matrix ini adalah merealisasikan rangkaian pada diagram diatas. Rangkaian-rangkaian yang akan direalisasikan adalah:

1. Rangkaian Minimum Sistem AT89S52. 2. Rangkaian Komunikasi Serial RS232. 3. Rangkaian Serial RTC DS1307. 4. Rangkaian Driver Baris (TIP42). 5. Rangkaian Shift Register 74LS164. 6. Rangkaian Display Dot Matrix.

Dalam perancangan perangkat lunak terdapat proses-proses sebagai berikut: program utama, program interrupt serial, program konversi kalender .

3.1.1 Rangkaian Minimum Sistem AT89S52

Rangkaian mikrokontroler berfungsi sebagai pusat pengontrol dari rangkaian Kalender Digital ini. Pada Tugas Akhir ini digunakan mikrokontroler keluaran ATMEL yaitu Mikrokontroler AT89S52. Mikrokontroler ini mempunyai 40 pin dengan 4 jalur port yaitu Port 0, Port 1, Port 2, dan Port 3. Untuk mengetahui lebih lanjut konfigurasi mikrokontroler sebagai pengendali sistem, skematik rangkaian terlihat pada Gambar 3.2.


(48)

A10 A9 D0 5v Baris6 XTAL1 D4 Baris1 A11 XTAL2 Y 1

CRY STAL 11.0592Mhz 30pF SCL 30pF Baris7 XTAL1 U2 AT89S52 11 12 13 14 15 16 17 18 19 2 0 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 1 2 3 4 5 6 7 8 9 10 P3.1/TXD P3.2/INT0 P3.3/INT1 P3.4/T0 P3.5/T1 P3.6/WR P3.7/RD XTAL2 XTAL1 GN D P2.0/A8 P2.1/A9 P2.2/A10 P2.3/A11 P2.4/A12 P2.5/A13 P2.6/A14 P2.7/A15 PSEN ALE/PROG EA/VPP P0.7/AD7 P0.6/AD6 P0.5/AD5 P0.4/AD4 P0.3/AD3 P0.2/AD2 P0.1/AD1 P0.0/AD0 VCC P1.0/T2 P1.1/T2EX P1.2 P1.3 P1.4/SS P1.5/MOSI P1.6/MISO P1.7/SCK RST P3.0/RXD D3 D7 CLOCK Baris2 DATA SDA Baris8 RN2 R-PACK 1 2 3 4 5 6 7 8 9 RN2 R-PACK 2 3 4 5 6 7 8 9 P3.0 Rx D6 Baris4 WE Baris3 D2 P3.1 Tx XTAL2 D5 A8 Baris5 OE D1 VCC

Gambar 3.2 Minimum sistem Mikrokontroler AT89S52

Pada skematik yang tecantum pada gambar 3.2 terdapat beberapa port yang berhubungan dengan komponen yang lainnya. Port 0 dihubungkan dengan komponen 74HC573 yang berfungsi sebagai penyangga data yang diterima dari mikrokontroler. Port 1 terhubung dengan rangkaian driver baris. Pada port 1 ini digunakan untuk melakukan scanning 8 baris. Port 3 (P3.4 dan P3.5) masing-masing berfungsi sebagai input data dan input clock pada shift register. Pin RxD dan TxD berfungsi sebagai penerima dan pengirim data serial ke komputer, terhubung melalui MAX 232 sebagai konverter.

Pada rangkaian mikrokontroler ini, digunakan komponen XTAL 11,0592 Mhz yang terhubung pada pin XTAL1 dan XTAL2.


(49)

Penulis menggunakan rangkaian programmer yang terdiri dari sebuah IC 74LS244 yang berguna sebagai buffer dan kabel downloader dengan interface DB25 yang terhubung pada port LPT1 pada komputer dalam melakukan proses

download program dalam format .HEX dari komputer ke mikrokontroler.

Sedangkan software yang digunakan adalah Atmel Microcontroller ISP Software. Skematik kabel downloader yang digunakan untuk mendownload program ke mikrokontroler seperti pada Gambar 3.3.

P2 CONNECTOR DB25 13 25 12 24 11 23 10 22 9 21 8 20 7 19 6 18 5 17 4 16 3 15 2 14 1 U11 74LS244 A1 2 A2 4 A3 6 A4 8 1OE 1

Y 1 18 Y 2 16 Y 3 14 Y 4 12

VC C 2 0 GN D 1 0 A5 11 A6 13 A7 15 A8 17

Y 5 9 Y 6 7 Y 7 5 Y 8 3

2OE 19 J1 HEADER 6 1 2 3 4 5 6

Gambar 3.3 Rangkaian kabel downloader pada port LPT

Setelah kabel downloader terhubung ke Port paralel pada PC melalui DB25 dan terhubung ke mikrokontroler melalui konektor 6 pin. Tahap selanjutnya adalah melakukan download program ke mikro. Penulis menggunakan software Atmel Microcontroller. Antarmuka software dapat dilihat pada Gambar 3.4.


(50)

Gambar 3.4 Atmel Microcontroller ISP Software

Konektor 6 pin pada Gambar 3.3 dihubungkan terlebih dahulu pada Mikrokontroler AT89S52 jika akan melakukan proses download program. Konektor yang terhubung ke mikro seperti pada Gambar 3.5.

TR

J2

downloader

1 2 3 4 5 6

MOSI

SCK MISO

RESET

Gambar 3.5 Konektor downloader pada Mikrokontroler

3.1.2 Rangkaian Komunikasi Serial RS232

Data yang diterima dari komputer melalui serial port adalah berupa tegangan dengan standar RS-232, yaitu antara -3 sampai -25 Volt untuk kondisi high dan +3 sampai +25 Volt untuk kondisi low. Sedangkan mikrokontroler bekerja dalam level tegangan TTL, yaitu +5 Volt untuk kondisi high dan 0 Volt


(51)

untuk kondisi low. MAX232 akan mengubah level tegangan RS-232 menjadi level tegangan TTL agar dapat diolah oleh mikrokontroler. Demikian pula sebaliknya, data yang dikirim mikrokontroler akan diubah ke level tegangan RS-232 agar dapat diolah oleh komputer. Pengiriman data dari program visual di PC ke mikrokontroler menggunakan komunikasi serial RS232. Diagram skematik dari rangkaian serial terlihat pada Gambar 3.6.

Gambar 3.6 Rangkaian skematik RS232

Penulis menggunakan komunikasi serial mode 1 dengan baudrate sebesar 9600 bps. Sehingga pengaturan register SCON dan register PCON adalah seperti pada tabel 3.1 dan tabel 3.2.

Tabel 3.1 Susunan bit dalam register SCON

SM0 SM1 SM2 REN TB8 RB8 TI RI

0 1 0 1 0 0 0 0

Dari tabel 3.1 maka SCON bernilai 0x50 dimana SM0 = 0 dan SM1 = 1 berarti menggunakan mode 1, sedangkan REN = 1 berarti mengaktifkan port serial untuk menerima data.

VCC U1 MAX232 C1+ 1 C1-3 C2+ 4 C2-5 VCC 16 GND 15 V+ 2 V-6 R1OUT 12 R2OUT 9 T1IN 11 T2IN 10 R1IN 13 R2IN 8 T1OUT 14 T2OUT 7 P1 DB9 5 9 4 8 3 7 2 6 1 + C1 10u + C2 10u + C3 10u + C4 10u P3.0 Rx P3.1 Tx


(52)

Tabel 3.2 Susunan bit dalam register PCON

SMOD - - - GF1 GF0 PD IDL

0 0 0 0 0 0 0 0

Dari tabel 3.2 maka PCON bernilai 0 x 00,

3.1.3 Rangkaian Serial RTC DS1307

Real Time Clock DS1307 digunakan untuk merancang jam digital. RTC

ini berkomunikasi secara serial dengan mikrokontroler melalui kaki SDA (serial data) dan SCL (serial clock). Pada rangkaian ini DS1307 beroperasi sebagai slave dengan mengirimkan data waktu ke mikrontroler yang berfungsi sebagai master. Konfigurasi dari pin RTC DS1307 yang digunakan dalam Tugas Akhir ini dapat dilihat pada Gambar 3.7.

SDA

SCL

U45

DS1307

GN

D

4

SQW/OUT 7 SDA 5 X1

1

X2

2

SCL

6

VBAT

3

VCC

8

GND Y 3 32.768kHz

C1

100nF

BT2 CR2032 3V VCC

Gambar 3.7 Rangkaian Real Time Clock DS1307

3.1.4 Rangkaian Driver Baris (TIP42)

Pada rangkaian kontroler memiliki 8 pasang transistor yang berfungsi sebagai driver baris. Dimana setiap pasang terdiri dari transistor 9013 dan TIP42. Rangkaian driver baris terhubung ke Port 1 mikrokontroler dan ke baris dot matrix. Agar lebih jelas mengenai uraian diatas, dapat dilihat skematik driver baris seperti Gambar 3.8.


(53)

VCC Q3 Q5A C9013 3 1 2 VCC Q11A C9013 3 1 2 R93 BRS 4 R93 Q6A C9013 3 1 2 Q3 R93 BARIS4 BARIS2 BRS 7 Q3 B1 Q11A C9013 3 1 2 VCC BRS 5 BRS 6 VCC Q3 BARIS3 R93 BARIS1 Q11A C9013 3 1 2 BARIS7 VCC Q3 BRS 2 R93 VCC BARIS5 BRS 1 Q11A C9013 3 1 2 BARIS8 R93 BARIS6 R93 VCC BRS 3 VCC Q11A C9013 3 1 2 Q4A C9013 3 1 2 B1 R93 Q3 B1 BRS 8 Q3 Q3

Gambar 3.8 Rangkaian driver baris transistor TIP42

Output dari mikrokontroler tidak cukup kuat untuk menyalakan satu baris led dot matrix yang terdiri atas 288 led. Dibutuhkan transistor yang berdaya besar untuk memperkuat arus dari mikrokontroler agar dapat menyalakan atau mematikan tiap baris led dot matrix.

Penulis menggunakan 2 buah transistor PNP tipe TIP42 dan 9013 yang dirangkai seperti pada gambar 3.8. Transistor berfungsi sebagai saklar untuk menyalakan atau mematikan tiap baris dari led dot matrix. Display dot matrix terdiri dari 8 baris led sehingga digunakan 8 pasang rangkaian dengan setiap pasang transistor terhubung ke Port P1.0 sampai Port 1.7.

Pin basis pada TIP42 terhubung ke mikrokontroler, pin collector sebagai output yang terhubung ke pin baris pada led dot matrix, sedangkan pin emitter terhubung pada tegangan 5V. Rangkaian driver ini mempunyai karakteristik akan aktif jika mendapat input low. Saat output dari mikrokontroler high, maka


(54)

transistor 9013 akan ON, tegangan di kolektor akan menjadi 0 V dan transistor TIP42 akan OFF, sehingga baris led akan mati. Sebaliknya jika output mikrokontroler low, maka transistor 9013 akan OFF, tegangan di kolektor 9013 akan menjadi 12 V dan transistor TIP42 akan ON sehingga baris led akan hidup.

3.1.5 Rangkaian Shift Register 74LS164

Rangkaian shift register digunakan sebagai driver kolom pada display dot matrix. Input pada IC shift register berupa data, clock dan clear dimana masing-masing terhubung ke Port P3.4, Port P3.5 dan VCC dari mikrokontroler. Output shift register terhubung pada kolom display dot matrix. Agar lebih jelas tentang konfigurasi pin dari IC 74LS164, dapat dilihat skematik rangkaian pada Gambar 3.9. H5 H7 H8 H21 H23 H24 H17 H18 H19 H22 H20 H13 H15 H16 H9 H10 H11 H12 H14 H29 H31 H32 H33 H25 H26 H27 H28 H30 U16 74LS164 A 1 B 2 CLK 8 CLR 9 QA 3 QB 4 QC 5 QD 6 QE 10 QF 11 QG 12 QH 13 VC C 1 4 GN D 7 H24 C6 DATA H16 H8 CLK VCC CLK VCC CLK VCC R28 R25 R26 R27 R32 R29 R30 R31 DATA CLK VCC U16 74LS164 A 1 B 2 CLK 8 CLR 9 QA 3 QB 4 QC 5 QD 6 QE 10 QF 11 QG 12 QH 13 VC C 1 4 GN D 7 C6 R4 R1 R2 R3 R8 R5 R6 R7 U16 74LS164 A 1 B 2 CLK 8 CLR 9 QA 3 QB 4 QC 5 QD 6 QE 10 QF 11 QG 12 QH 13 VC C 1 4 GN D 7 C6 R12 R9 R10 R11 R16 R13 R14 R15 VCC CLK U16 74LS164 A 1 B 2 CLK 8 CLR 9 QA 3 QB 4 QC 5 QD 6 QE 10 QF 11 QG 12 QH 13 VC C 1 4 GN D 7 C6 R20 R17 R18 R19 R24 R21 R22 R23 H3 H2 H4 H1 H6

Gambar 3.9 Rangkaian ShiftRegister 74LS164

Pada rangkaian display dot matrix terdiri dari 288 kolom sehingga masing-masing kolom tidak dapat terhubung langsung ke port mikrokontroler. Shift


(55)

Register digunakan untuk mengatasi masalah ini, dimana cukup dipakai 3 output dari mikrokontroler untuk mengatur seluruh 288 kolom led.

Shift Register mempunyai 2 input A dan B yang terhubung oleh gerbang

and’, kedua input ini dihubungkan jadi satu dan dihubungkan ke Port P3.5 dari mikrokontroler. Output dan Shift Register hanya ada 8 (QA-QH) jadi dipakai 36

buah Shift Register untuk mengatur 288 kolom LED. Output terakhir dari Shift Register (QH) dihubungkan ke input Shift Register yang berikutnya agar semua

data dapat digeser oleh Shift Register. Semua kaki Clock dari Shift Register terhubung ke Port P3.4 dan semua kaki Clear terhubung ke VCC agar semua Shift Register berjalan secara sinkron.Rangkaian ini menggunakan sistem SIPO (Serial Input Parallel Output).

3.1.6 Rangkaian Display Dot Matrix

Dalam perancangan kalender digital dengan dotmatrix ini, ukuran display yang digunakan 48x48, dimana mikrokontroler mempunyai display ukuran 8x288. Pola display tidak memanjang tetapi berbentuk persegi, karena dot matrix yang disusun ke bawah secara rapat sehingga membentuk suatu display dot matrix ukuran 48x48. Maksud dari rangkaian display dot matrix diperjelas melalui skematik seperti pada gambar 3.10.


(56)

H30 J2 DOT MATRIX 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 J3 DOT MATRIX 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 J4 DOT MATRIX 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 J5 DOT MATRIX 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 H1 H2 BRS1 BRS3 H3 BRS2 BRS4 H4 H29 BRS5 BRS7 H31 BRS6 BRS8 H32 BRS1 H9 H11 BRS2 H10 H12 BRS3 BRS4 H13 H14 BRS5 BRS7 H15 BRS6 BRS8 H16 BRS5 H5 H7 BRS6 H6 H8 BRS7 BRS8 H25 BRS1 H27 BRS2 H26 H28 BRS3 BRS4 H17 BRS1 H19 BRS2 H18 H20 BRS3 BRS4 H21 BRS5 H23 BRS6 H22 H24 BRS7 BRS8

Gambar 3.10. Rangkaian display dot matrix

3.1 Perancangan Perangkat Lunak

Dalam perancangan perangkat lunak dibagi atas 2 jenis : perancangan perangkat lunak pada komputer dan perancangan perangkat lunak pada mikrokontroler.

3.2.1 Perangkat Lunak pada Komputer

Perancangan perangkat lunak pada komputer berfungsi sebagai interface dan digunakan dalam proses konversi kalender yang selanjutnya digunakan untuk mengirimkan data pada mikrokontroler. Proses-proses utama pada perangkat lunak komputer antara lain proses konversi kalender dan proses menentukan hari dari kalender yang di-input-kan.

Pada perancangan perangkat lunak, penulis menggunakan software Borland Delphi 5.0. Software ini berfungsi untuk melakukan konversi sistem penanggalan yang di-input-kan. Kalender Masehi yang akan ditampilkan ke


(57)

display dot matrix dilakukan proses konversi terlebih dahulu menjadi beberapa macam kalender serta menampilkan hari.

A. Proses Penentuan Hari

Proses penentuan hari bertujuan untuk mengetahui hari dari kalender yang telah di-input-kan. Hal ini dikarenakan terkadang kita tidak mengetahui hari pada kalender di masa lalu ataupun di masa mendatang. Kalender Masehi yang dijadikan input memiliki rentang waktu dari tahun 2000 sampai tahun 2099. Berikut ini algoritma untuk mencari hari dalam kalender :

a =

12 14−month

(3.2) y = year – a

m = month + 12a – 2

Untuk kalender Masehi:

d = (day + y + 4 y

- 100

y +

400 y

+ 12

m 31

) mod 7

Dari perhitungan d akan didapatkan nilai sisa pembagian yang memiliki arti :

0 = Hari Minggu 1 = Hari Senin 2 = Hari Selasa. 3 = Hari Rabu 4 = Hari Kamis 5 = Hari Jumat 6 = Hari Sabtu


(58)

Listing program proses penentuan hari seperti berikut:

begin

Dum1 := (14 - Month) DIV 12; Dum2 := Year - Dum1;

Dum3 := Month + (12 * Dum1) - 2;

Day := (Date + Dum2 + (Dum2 DIV 4) - (Dum2 DIV 100) + (Dum2 DIV 400) + (31*Dum3) DIV 12);

Day := Day MOD 7; Case Day of

0 : Label21.Caption := 'Senin'; 1 : Label21.Caption := 'Selasa'; 2 : Label21.Caption := 'Rabu'; 3 : Label21.Caption := 'Kamis'; 4 : Label21.Caption := 'Jumat'; 5 : Label21.Caption := 'Sabtu'; 6 : Label21.Caption := 'Minggu'; end;

end;

B. Proses Konversi Kalender

Proses konversi kalender ini meliputi konversi dari kalender Masehi ke kalender Hijriyah, kalender Cina, kalender Jawa. Proses konversi kalender tercantum dalam listing program berikut:

// Konversi kalender Masehi ke Hijriyah Begin

if ((y2>1582) OR((y2=1582) AND (m2>10))OR((y2=1582) AND (m2=10) AND (d2>14))) then

jd := intPart((1461*(y2+4800+intPart((m2-14)/12)))/4)+ intPart((367*(m2-2-12*(intPart((m2-14)/12))))/12)- intPart((3*(intPart(

(y2+4900+intPart((m2-14)/12))/100)))/4)+d2-32075 else

jd := 367*y2-intPart((7*(y2+5001+intPart((m2-9)/7)))/4)+ intPart((275*m2)/9)+d2+1729777;

L := jd-1948440+10632; N := intPart((L-1)/10631); L := L-10631*n+354;

J := (intPart((10985-L)/5316))*(intPart((50*L)/17719))+ (intPart(L/5670))*(intPart((43*l)/15238));

L := L-(intPart((30-j)/15))*(intPart((17719*j)/50))- (intPart(j/16))*(intPart((15238*j)/43))+29; Rm := intPart((24*L)/709);

Rd := l-intPart((709*Rm)/24); Ry := 30*n+j-30;

// Konversi kalender Masehi ke Cina


(59)

Var

IDayLeave: Integer;

WYear, wMonth, wDay: WORD; I, j: integer;

WBigSmallDist, wLeap, wCount, wLeapShift: WORD; Label OK;

Begin

Result := 0;

IDayLeave := Trunc (dtGreg) - cstDateOrg;

DecodeDate (IncMonth (dtGreg, -1), wYear, wMonth, wDay); If (iDayLeave <0) or (iDayLeave> 22295) then Exit; For i:= Low (cstCNTable) to High (cstCNTable) do begin WBigSmallDist := cstCNTabel [i];

WLeap := wBigSmallDist shr 12; If wLeap> 12 then begin WLeap := wLeap and 7; WLeapShift := 1; End else

WLeapShift := 0; For j:= 1 to 12 do begin

WCount := (wBigSmallDist and 1) + 29;

If j = wLeap then wCount := wCount - wLeapShift; If iDayLeave <wCount then begin

Result := (i shl 9) + (j shl 5) + iDayLeave + 1; Exit;

End;

IDayLeave := iDayLeave - wCount; If j = wLeap then begin

WCount := 29 + wLeapShift; If iDayLeave <wCount then begin

Result := (i shl 9) + (j shl 5) + iDayLeave + 1 + (1 shl 21); Exit;

End;

IDayLeave := iDayLeave - wCount; End;

WBigSmallDist := wBigSmallDist shr 1; End;

End; End;

Function TForm1.isCNLeap(cnDate: TCNDate): boolean; Begin

Result := (cnDate and $200000) <> 0; End;

Function GetGregDateFromCN (cnYear, cnMonth, cnDay: word; bLeap: Boolean = False): TDateTime;

Var

I, j: integer; DayCount: integer;


(60)

Begin

DayCount := 0;

If (cnYear <1990) or (cnYear> 2050) then begin Result := 0;

Exit; End;

For i := cstCNYearOrg to cnYear-1 do begin WBigSmallDist := cstCNTabel [i];

If (wBIgSmallDist and $F000) <> 0 then DayCount := DayCount + 29; DayCount := DayCount + 12 * 29;

For j := 1 to 12 do begin

DayCount := DayCount + wBigSmallDist and 1; WBigSmallDist := wBigSmallDist shr 1; End;

End;

WBigSmallDist := cstCNTabel [cnYear]; WLeap := wBigSmallDist shr 12; If wLeap > 12 then begin WLeap := wLeap and 7;

WLeapShift := 1; // Tai, in Runru. End else

WLeapShift := 0;

For j := 1 to cnMonth-1 do begin

DayCount := DayCount + (wBigSmallDist and 1) + 29; If j = wLeap then DayCount := DayCount + 29; WBigSmallDist := wBigSmallDist shr 1;

End;

If bLeap and (cnMonth = wLeap) then begin DayCount := DayCount + 30 - wLeapShift; Result := DayCount + cstDateOrg + cnDay - 1; End;

3.2.2 Perangkat Lunak pada Mikrokontroler

Perancangan perangkat lunak pada mikrokontroler berfungsi sebagai pengendali sistem dan digunakan dalam proses pengujian display dot matrix yang selanjutnya digunakan untuk mengirimkan data. Perangkat lunak yang digunakan adalah bahasa assembly dengan software MIDE. Proses-proses utama pada perangkat lunak mikrokontroler antara lain proses scanning baris, proses update waktu dan proses serial interrupt.


(61)

A. Proses Scanning Baris

Untuk menghasilkan tampilan display dot matrix yang tidak berkedip, maka frekuensi dari scanning baris harus melebihi frekuensi penglihatan mata manusia dalam keadaan normal (60 Hz).

Sehingga mikrokontroler harus dapat melakukan proses scanning delapan baris dengan frekuensi diatas 60 Hz. Perhitungannya adalah sebagai berikut:

T = f 1

(3.1)

= Hz 60

1

≅ 0.0167 s = 16,7 ms

Sehingga masing-masing baris membutuhkan waktu maksimal sebesar:

8

7 , 16

= 2.09 ms

Karena dalam satu baris terdapat 288 kolom titik dot matrix, maka untuk menyalakan masing-masing led dalam dot matrix diberikan waktu sebesar:

led ms 288

09 . 2

= 0.007 ms/led.

Dalam perangkat tugas akhir ini penulis menentukan waktu scanning tiap baris sebesar 2.09ms. Dengan waktu tersebut mikrokontroler dapat menghasilkan frekuensi sebesar 61,27 Hz. perhitungannya adalah sebagai berikut:

2.09 x 8 baris = 16.32 ms

F =

ms 32 , 16

1


(62)

Proses scanning baris pada modul mikrokontroler dapat ditunjukkan oleh diagram alir pada Gambar 3.11.

Start

Matikan semua transistor

baris

Baris = Baris +1

Baris = 9

Baris =1

Baca data baris

Output ke Shift register 74LS164

Aktifkan transistor baris

Y

T

Gambar 3.11. Diagram alir proses scanning baris

Berikut listring program scanning pada baris :

Program EQU 0000h

TH0Val_C EQU 0F8h ; nilai timer untuk scanning

TL0Val_C EQU 000h; : (65536 - TH0:TL0) * (12 MHz / 11.0592 MHz)


(63)

DispBuffAddr_C EQU 0h

;--- ; PORTS

;---

Clk_P BIT p3.4 Data_P BIT p3.5

Row_P EQU p1

;--- Timer_0

;---

MOV th0,#TH0Val_C MOV tl0,#TL0Val_C

PUSH a

PUSH psw

PUSH dph

PUSH dpl

PUSH 7

; off all transistor

MOV Row_P,#0

MOV dptr,#DispBuffAddr_C MOV r7,#JCol_C

T0J3

MOVX a,@dptr ; 2 cycles (24 osc.periods) CLR Data_P ; 1 cycle (12 osc.periods) ANL a,BitMask_M ; 1 cycle (12 osc.periods) JZ T0J4 ; 2 cycles (24 osc.periods) SETB Data_P ; 1 cycle (12 osc.periods) T0J4

SETB Clk_P ; 1 cycle (12 osc.periods) CLR Clk_P ; 1 cycle (12 osc.periods) INC dptr ; 2 cycles (24 osc.periods) DJNZ r7,T0J3

MOV Row_P,RowMask_M

MOV a,BitMask_M

RR a

MOV BitMask_M,a MOV a,RowMask_M

RL a

MOV RowMask_M,a CLR LastRow_F INC ScanCtr_M MOV a,ScanCtr_M CJNE a,#8,T0J1 SETB LastRow_F MOV ScanCtr_M,#0

MOV RowMask_M,#00000001b

T0J1

POP 7

POP dpl

POP dph

POP psw

POP a


(64)

B. Proses Update Waktu

Proses set dan update waktu pada modul mikrokontroler dapat ditunjukkan oleh diagram alir pada Gambar 3.12.

START

Inisialisasi awal Memori, Timer, Serial

Cek RTC valid?

Reset Tanggal &

Waktu

Baca Tanggal Masehi Hijriyah Jawa Cina &

Waktu (Jam, Menit, Detik)

Taruh di Buffer Display (RAM)

Baca tanggal Masehi dan waktu dari RTC

Detik sdh berubah?

Update tanggal jawa Cina & hijriyah di

RTC

Taruh data di Buffer Display (RAM)

Y

Y

T T

Gambar 3.12. Diagram alir program utama

Penjelasan dari diagram alir program utama pada Gambar 3.12 yaitu pada saat program pertama kali dijalankan, dilakukan inisialisasi terlebih dahulu yang


(65)

meliputi inisialisasi memori, timer dan serial. Dilakukan cek apakah internal clock serial RTC sudah sesuai. Jika internal clock tak sesuai dilakukan reset pada RTC. Sebaliknya jika sesuai dilakukan pembacaan tanggal dan waktu. Setelah di-set data internal clock diletakkan di buffer RAM. Setelah semua proses dilakukan, selanjutnya dilakukan update internal clock RTC. Proses ini dilakukan berulang-ulang dan setiap selesai update data disimpan pada buffer display pada RAM.

C. Proses Serial Interrupt

Proses serial interrupt menangani apabila terdapat interrupt dari user untuk mengganti atau melakukan update pada kalender. Proses tersebut ditunjukkan oleh diagram alir pada Gambar 3.13.

START

Ambil data dari

SBUF

Data sudah di terima Lengkap? (Jam,Menit, Detik, Tgl,Bln,Thn Masehi,

Hijriyah,Jawa,Cina)

Update waktu, tgl Masehi, tgl Hijriyah,

tgl Jawa, tgl Cina RETI

Y T

RETI


(66)

Penjelasan dari diagram alir program utama pada Gambar 3.13 adalah saat terjadi interupsi dari user dengan memberi input tanggal yang lain pada komputer dan melakukan update kalender. Program akan membaca data dari register SBUF. Kemudian program akan melakukan cek apakah data yang dikirimkan sudah diterima dengan lengkap meliputi jam, menit, detik, tanggal, bulan dan tahun Masehi, Hijriyah, Jawa, dan Cina. Seandainya data sudah lengkap akan dilakukan update kalender.


(1)

4. Dengan menggunakan osiloskop, kita bisa mencari dan melihat gambar sinyal yang dikeluarkan dari pin Rx pada mikrokontroler.

D. Hasil Pengujian

1. Pengiriman Karakter ‘n’

Hasil pengujian untuk pengiriman karakter ‘n’ dapat diperoleh sinyal keluaran seperti pada gambar 4.1.

Gambar 4.1 Sinyal Keluaran Dari Karakter ‘n’

Dari keluaran sinyal pada gambar 4.1 dibaca 0011101101, dimana data tersebut termasuk start bit dan stop bit. Letak start bit berada pada awal data yaitu bernilai 0 (low) dan stop bit berada pada akhir data yaitu bernilai 1 (high). Berarti data dari karakter ‘n’ adalah 01101110 biner atau 0x6E hexadesimal

2. Pengiriman karakter ‘L’

Hasil pengujian sesuai dengan prosedur pengujian. Dari pengiriman karakter ‘L’ dapat diperoleh sinyal keluarannya yaitu pada Gambar 4.2.


(2)

68

Gambar 4.2 Sinyal Keluaran Dari Karakter ‘L’

Dari keluaran sinyal pada gambar 4.2 dibaca 0001100101, dimana data tersebut termasuk start bit dan stop bit. Letak start bit berada pada awal data yaitu bernilai 0 (low) dan stop bit berada pada akhir data yaitu bernilai 1 (high). Berarti data dari karakter ‘L’ adalah 01001100 biner atau 0x76 hexadesimal.


(3)

BAB V PENUTUP

Dari beberapa pengujian yang telah dilakukan, baik pada perangkat keras maupun perangkat lunak dapat disimpulkan bahwa keduanya telah berjalan dengan baik. Memang masih harus diteliti dan dikembangkan lebih lanjut untuk mendapatkan hasil yang lebih maksimal.

5.1. Kesimpulan

1) Pengujian konversi kalender Masehi ke kalender Hijriyah, kalender Jawa dan kalender Cina berhasil dilakukan.

2) Pengujian tahun kabisat pada kalender Hijriyah berjalan dengan baik.

3) Pengujian keseluruhan dari sistem berjalan dengan baik, dimana mikrokontroler dapat menampilkan data kalender ke display dot matrix

sebagaimana mestinya.

5.2. Saran

1) Pemberian informasi hanya berupa hari, tanggal, bulan, dan tahun dalam 4 sistem penanggalan. Untuk lebih lengkapnya dapat dicantumkan pula shio, unsur, maupun pasaran.

2) Dari sisi display dot matrix, hanya menampilkan warna merah saja. Jika nanti dikembangkan sebaiknya terdapat beberapa warna untuk memberikan perbedaan antara hari minggu dan hari lainnya.


(4)

70

DAFTAR PUSTAKA

Abdul Salam Nawawi. 2008. Metode Hisab (Perhitungan Astronomi)., (Online)., (http:// Mathematics.its.ac.id, diakses 08 maret 2008)

Abdurrahman. 2008. Mengenal Kalender Hijriyah, (Online)., (http://www.mesjidul.ui.edu, diakses 23 juni 2008)

Agfianto, E. P. 2002. Belajar Mikrokontroler AT89C51/52/55 Teori dan Aplikasi. Yogyakarta : Gava Media

ATMEL Corporation. 2005. 8-bit Microcontroller with 8K Bytes In-System Programmable Flash AT89S52, (Online), (http://www.atmel.com, diakses 23 Juni 2008).

Barokah.2005. Strategi Konvergensi Ajaran Agama Islam dalam Budaya Jawa., (Online)., (http://albarokah.or.id., diakses 2 Juni 2008)

Budiharto, W. 2004. Interfacing Komputer dan Mikrokontroler. Jakarta : PT. Elex Media Komputindo. Indonesia

DALLAS Semiconductor. DS1307/DS1308 64X8 Serial Real Time Clock, (Online), (http://www.dalsemi.com, diakses 23 Agustus 2008).

Djamal. 2008. Mengurai Kepelikan Kalender Hijriah. (Online), (http://www .media. isnet.org/ almanac html/, diakses 20 Mei 2008)

Ebta. 2008. Konversi Hijriyah ke Masehi dan Sebaliknya, (Online),

(http://ebsoft.web.id/2007/03/20/konversi-hijriyah-ke-masehi-dan-sebaliknya/, diakses 20 Mei 2008)

Hendro Set y ant o. 2008. Kalendar Jawa, (Online),

(http://www.babadbali.com/pewarigaan/kalender-jawa.htm, diakses 02 maret 2008)

Herong Yang. 2008. Kalendar China, (Online), (http://www.herongyang.com, diakses 09 Aapril 2008)

Ikhwan. 2008. Kalender Lunisolar, (Online)., (http:// ikhwan-interaktif.com./., diakses 02 februari 2008)

Komunikasi Serial I2C(Online), (http://new.indorenesas.com, diakses 4 Juni 2008)


(5)

Mutoha. 2006. Kalender (Online), (http://rukyatulhilal.org/kalender.html, diakses 9 April 2008)

Mazidi, M.A. 2000. The 8051 Microcontroller and Embedded Systems. New Jersey : Prentice Hall Inc.

Nalwan, P. A. 2007. Panduan Praktis Teknik Antarmuka dan Pemrograman Mikrokontroler AT89C51. Jakarta : PT Elex Media Komputindo.

National Semiconductor. 2000. DM74LS164 8-bit Serial In/Parallel out Shift Register. (Online), (http://www.national.com/, diakses 2 Maret 2008). Para Light Electronics. 2002. A-5880EG (Online), (http://www.semiconductors.

philips.com/, diakses 2 Juli 2008).

Pesantren Akmaliah. Menghitung Hari. (Online), (http: //www.akmaliah.com, diakses 9 April 2008).

Philips Semiconductor Co. 2006. 74HC573; 74HCT573 (Online), (http://www.semiconductors.philips.com/, diakses 23 Juni 2008).

Pramesti. 2007. Kalendar Masehi, (Online), (http://langitselatan.com/kalender-masehi/, diakses 22 november 2008)

Priyadi. 2007. Kalender Hijriah, (Online), (http://achoyob.com/, diakses 26 Oktober 2008).

Sigit. F. 2007. Elektronika Digital dan Mikroprosesor, Jakarta. PT Andi Offset, Indonesia.

Syamsul Anwar. 2008. Almanak_Hijriah, (Online), (http://www.muhammadiyah

.or.id, diakses 20 Januari 2008) TEMPO, Wap.2004. Tahun Kabisat.

Tondering, 2008. Frequently asked question about calendars version 2.9, (Online), (http://www.tondering.dk/claus/calendar.html, diakses 24 Mei 2008)

Wapedia. 2008. Kalender Hijriyah.(Online), (http://www.wapedia.mobile.id /, diakses 26 juli 2008)

Wikipedia. 2007. Tahun Syamsiah. (Online), (http://id.Wiki.detik.com/wiki/, diakses 08 juli 2008).

Wikipedia. 2008. Hisab dan Rukyat. (Online), (http://id.wikipedia.org/ wiki/, diakses 04 agustus 2008).


(6)

72

Wasito. 1995. Vademekum Elektronika, Jakarta: PT. Gramedia, Indonesia Yulian. F. Penanggalan Cina. (Online), (http://yulian.firdaus.or.id/, diakses 24