Rtc (Real Time Clock) Ds1307 Sebagai Pengatur Waktu Pada Sistem Traffic Light Adaptif

(1)

RTC (Real Ti

WAKTU PA

A

FAKULTAS MA U

l Time Clock) DS1307 SEBAGAI PENGA

PADA SISTEM TRAFFIC LIGHT AD

TUGAS AKHIR

ARMANSAH PUTRA SINGARIMBUN 122408015

PROGRAM STUDI D3–FISIKA DEPARTEMEN FISIKA

MATEMATIKA DAN ILMU PENGETAHU UNIVERSITAS SUMATERA UTARA

MEDAN 2015

ENGATUR

ADAPTIF


(2)

RTC (Real Ti

WAKTU PA

Diajukan Untuk Me

A

FAKULTAS MA U

l Time Clock) DS1307 SEBAGAI PENGA

PADA SISTEM TRAFFIC LIGHT AD

TUGAS AKHIR

elengkapi Tugas Dan Memenuhi Syarat Me Madya

ARMANSAH PUTRA SINGARIMBUN 122408015

PROGRAM STUDI D3–FISIKA DEPARTEMEN FISIKA

MATEMATIKA DAN ILMU PENGETAHU UNIVERSITAS SUMATERA UTARA

MEDAN

ENGATUR

ADAPTIF

Memperoleh Ahli


(3)

LEMBAR PERSETUJUAN

Judul : RTC (Real Time Clock) DS1307 SEBAGAI PENGATUR WAKTU PADA SISTEM TRAFFIC LIGHT ADAPTIF Kategori : TUGAS AKHIR

Nama : ARMANSAH PUTRA SINGARIMBUN

NIM : 122408015

Program Studi : D-III FISIKA Departemen : FISIKA

Fakultas : MATEMATIKA DAN ILMU PENGETAHUAN ALAM UNIVERSITAS SUMATERA UTARA

Disetujui di Medan, Juli 2015

Disetujui Oleh

Ketua Program Studi, Pembimbing,


(4)

LEMBAR PERNYATAAN

RTC (Real Time Clock) DS1307 SEBAGAI PENGATUR WAKTU PADA SISTEM TRAFFIC LIGHT ADAPTIF

TUGAS AKHIR

Saya mengakui bahwa tugas akhir ini adalah hasil karya saya sendiri, kecuali beberapa kutipan dan ringkasan yang masing-masing disebut sumbernya.

Medan, Juli 2015

ARMANSAH PUTRA SINGARIMBUN 122408015


(5)

PENGHARGAAN

Puji syukur penulis panjatkan ke hadirat Tuhan Yang Maha Esa, berkat rahmat dan karunia-Nya penulis dapat menyelesaikan tugas akhir ini. Meskipun dalam proses penulisan banyak menemui hambatan dan rintangan namun dengan usaha maksimal yang dilakukan penulis serta bantuan dari berbagai pihak, akhirnya tugas akhir ini dapat selesai. Atas bantuan dan motivasi yang diberikan dari berbagai pihak, maka penulis mengucapkan banyak terimakasih kepada:

1. Ayahanda dan Ibunda tercinta yang telah memberikan bantuan berupa dukungan moril dan materil yang sangat membantu dalam menyelesaikan Tugas Akhir ini.

2. Bapak Prof. Dr. Sutarman, M.Sc selaku Dekan Fakultas Matematika dan Ilmu Pengetahuan Alam Universitas Sumatera Utara.

3. Ibu Dr. Marpongahtun, M.Sc selaku Pembantu Dekan I Fakultas Matematika dan Ilmu Pengetahuan Alam Universitas Sumatera Utara. 4. Ibu Dr. Susilawati, M.Si selaku ketua Program Studi D-3 Fisika Fakultas

Matematika dan Ilmu Pengetahuan Alam universitas Sumatera Utara. 5. Bapak Dr. Bisman Perangin-angin, M.Eng.Sc selaku pembimbing yang

telah membimbing dan mengarahkan kepada penulis dalam menyelesaikan Tugas Akhir ini.

6. Seluruh Staf Pengajar / Pegawai program studi fakultas MIPA Universitas Sumatera Utara.

7. Kawan saya Gunawan, Arman Hidayat, Redondo Lijuandi, Irda Florista Paris, Siska Agustina, Putri Amalia, Eko Milala, Jhon Daenlesh, dan


(6)

seluruh rekan Fisika Instrumentasi D3 yang memberikan bantuan penulis untuk menyelesaikan Tugas Akhir ini.

8. Semua pihak yang turut membantu dalam pengerjakan Tugas Akhir ini yang tidak dapat disebutkan satu persatu.

Penulis menyadari dalam penyusunan tugas akhir ini masih terdapat kekurangan dan masih jauh dari kesempurnaan. Oleh karena itu, penulis sangat terbuka terhadap saran maupun kritikan dalam sebuah diskusi yang membangun dari pembaca.

Akhir kata penulis mengharapkan semoga tugas akhir ini dapat bermanfaat bagi pembaca.


(7)

ABSTRAK

Penggunaan RTC (Real Time Clock), Mikrokontroler dan Lacth dapat mengatur traffic light ( merah, kuning, hijau) tersebut menyala sesuai dengan waktu yang kita inginkan. Real Time Clock (RTC) digunakan untuk mengatur detik, menit, hari, tanggal, bulan dan lain-lain. Dengan menggunakan Real Time Clock (RTC), kita bisa membuat program waktu yang tepat yang diperlukan dalam menyalakan lampu pada traffic light. Perancangan alat lampu lalu lintas (Traffic Light) menggunakan Real Time Clock (RTC) sebagai pengatur waktu ditempatkan pada persimpangan jalan untuk menghindari tidak terjadi kemacetan yang disebabkan oleh kendaraan yang melewati jalan tersebut.


(8)

DAFTAR ISI

Halaman

LEMBAR PERSETUJUAN ... i

LEMBAR PERNYATAAN ... ii

PENGHARGAAN ... iii

ABSTRAK ... v

DAFTAR ISI ... vi

DAFTAR TABEL ... viii

DAFTAR GAMBAR ... ix

BAB 1. PENDAHULUAN ... 1

1.1. Latar Belakang masalah ... 1

1.2. Rumusan Masalah ... 2

1.3. Tujuan Penulisan ... 2

1.4. Batasan Masalah ... 2

1.5. Sistematika Penulisan ... 3

BAB 2. LANDASAN TEORI ... 4

2.1. Mikrokontroler ... ... 4

2.1.1. Mikrokontroler ATMega8 ... 4

2.1.2. Arsitektur Mikrokontroler ATMega8 ... 5

2.1.3. Fitur Mikrokontroler ATMega8 ... 7

2.1.3.1. Fitur Perangkat ... 7

2.1.3.2. Fitur Spesial ... 8

2.1.4. Konfigurasi Pin Pada Mikrokontroler ATMega8 ... 9

2.1.5. Deskripsi Pin-pin Pada Mikrokontroler ATMega8 ... 10

2.1.6. Kebutuhan Clock ... 14

2.2. RTC (Real Time Clock) DS1307 ... 14

2.2.1. Konfigurasi Pin RTC DS1307 ... 15

2.2.2. Fitur–fitur RTC DS1307 ... 16

2.2.3. Peta Alamat RTC DS1307 ... 17

2.2.4. Register Kontrol RTC DS1307 ... 18

2.2.5. Komunikasi I2C Pada RTC DS1307 ... 19

2.3. IC Shift Register 74HC595 ... 21

2.4. IC ULN2803 ... 22

2.5. Liquid Crystal Display (LCD) ... 23

2.5.1. Pengendali/kontroler LCD ... 24

2.5.2. Register Kontrol Pada LCD ... 25

2.5.3. Konfigurasi Pin Pada LCD ... 25

2.5.4. Karakteristik LCD ... 26

2.6. Light Emitting Diode (LED) ... 27

2.7. Tactile Switch ... 28

2.8. Bahasa Pemograman BASCOM-AVR ... 29

2.8.1. Tipe Data ... 30

2.8.2. Variabel ... 31


(9)

BAB 3. PERANCANGAN SISTEM ... 31

3.1. Diagram Blok Rangkaian ... 31

3.2. Perancangan Rangkaian Kendali Sistem ... 34

3.2.1. Rangkaian Catu Daya ... 35

3.2.2. Rangkaian Pewaktu RTC DS1307 ... 36

3.2.3. Rangkaian Mikrokontroler ATMega8 ... 37

3.2.4. Rangkaian Driver LED ... 38

3.2.5. Rangkaian LCD Karakter 16x2 ... 39

3.2.6. Rangkaian Tombol/Tactile Switch ... 40

3.3. Rancangan Perangkat Lunak Sistem ... 41

3.3.1. Flowchart Sistem ... 41

BAB 4. PENGUJIAN RANGKAIAN ALAT ... 43

4.1. Pengujian Rangkaian Catu Daya ... 43

4.2. Pengujian Rangkaian Pewaktu RTC DS1307 ... 44

4.3. Pengujian Rangkaian Mikrokontroler ATMega8 ... 48

4.4. Pengujian Rangkaian Tombol/Tactile Switch ... 49

4.5. Pengujian Rangkaian LCD ... 50

4.6. Pengujian Rangkaian Driver LED ... 52

4.7. Pengujian Kerja Sistem Secara Keseluruhan ... 55

BAB 5. PENUTUP ... 56

5.1. Kesimpulan ... 56

5.2. Saran ... 56 DAFTAR PUSTAKA


(10)

DAFTAR TABEL

Tabel 2.1 Fungsi Alternatif PORT B Pada Setiap Pin ... 10

Tabel 2.2 Fungsi Alternatif PORT C Pada Setiap Pin ... 11

Tabel 2.3 Fungsi Alternatif PORT D Pada Setiap Pin ... 13

Tabel 2.4 Jenis–jenis Sumber Clock ... 14

Tabel 2.5 Peta Alamat RTC DS1307 ... 17

Tabel 2.6 Register Kontrol Pada RTC DS1307 ... 18

Tabel 2.7 Frekuensi SQW Output ... 18

Tabel 2.8 Konfigurasi Pin LCD ... 26

Tabel 2.9 Tipe–tipe data dalam BASCOM-AVR ... 30

Tabel 2.10 Operasi Relasi ... 32

Tabel 4.1 Hasil Pengukuran Tegangan Pada Setiap Titik Uji ... 43

Tabel 4.2 Hasil Pengukuran Rangkaian Tombol di Setiap Titik Uji ... 50


(11)

DAFTAR GAMBAR

Gambar 2.1 Mikrokontroler ATMega8 ... 6

Gambar 2.2 Konfigurasi Pin Mikrokontroler ATMega8 ... 9

Gambar 2.3 RTC DS1307 ... 15

Gambar 2.4 Kominikasi Serial RTC dengan I2C ... 19

Gambar 2.5 IC Shift Register 74HC595 ... 21

Gambar 2.6 Intergrated Circuit (IC) ULN2803 ... 23

Gambar 2.7 LCD (Liquid Crystal Display) ... 24

Gambar 2.8 Light Emitting Diode (LED) ... 28

Gambar 2.9 Tactile Switch ... 29

Gambar 3.1 Diagram Blok Rangkaian ... 33

Gambar 3.2 Rangkaian Catu Daya ... 35

Gambar 3.3 Rangkaian Pewaktu RTC DS1307 ... 36

Gambar 3.4 Rangkaian Mikrokontroler ATMega8 ... 37

Gambar 3.5 Rangkaian Driver LED ... 38

Gambar 3.6 Rangkaian LCD Karakter 16x2 ... 39

Gambar 3.7 Rangkaian Tombol / Tactile Switch ... 40

Gambar 3.8 Flowchart Sistem ... 41

Gambar 4.1 Pengujian Pada Rangkaian Catu Daya ... 43

Gambar 4.2 Pengujian Rangkaian Pewaktu RTC DS1307 ... 44

Gambar 4.3 Pengujian Rangkaian Mikrokontroler ATMega8 ... 48

Gambar 4.4 Pengujian Rangkaian Tombol/Tactile Switch ... 49

Gambar 4.5 Pengujian Rangkaian LCD ... 50


(12)

ABSTRAK

Penggunaan RTC (Real Time Clock), Mikrokontroler dan Lacth dapat mengatur traffic light ( merah, kuning, hijau) tersebut menyala sesuai dengan waktu yang kita inginkan. Real Time Clock (RTC) digunakan untuk mengatur detik, menit, hari, tanggal, bulan dan lain-lain. Dengan menggunakan Real Time Clock (RTC), kita bisa membuat program waktu yang tepat yang diperlukan dalam menyalakan lampu pada traffic light. Perancangan alat lampu lalu lintas (Traffic Light) menggunakan Real Time Clock (RTC) sebagai pengatur waktu ditempatkan pada persimpangan jalan untuk menghindari tidak terjadi kemacetan yang disebabkan oleh kendaraan yang melewati jalan tersebut.


(13)

BAB 1 PENDAHULUAN

1.1 Latar Belakang Masalah

Pada kondisi saat ini, seiring dengan tingkat pertambahan kendaraan yang semakin tinggi maka mengakibatkan kemacetan di jalan raya sering kali terjadi. Salah satu cara untuk mengatasinya adalah dengan menggunakan lampu lalu lintas. Lampu lalu lintas ini berfungsi mengatur jalannya kendaraan yang melintas dijalan tersebut agar terjadi ketertiban para pengguna jalan.

Real Time Clock (RTC) merupakan suatu chip IC yang memiliki fungsi sebagai jam dan kalender elektronik dimana perhitungan detik, menit, jam, hari, bulan dan tahun tersimpan di memori dengan alamat – alamat tertentu. Sistem perhitungan jam dan kalender pada RTC berjalan secara otomatis dan kontinyu walaupun power supply dimatikan. Pada pemakaiannya RTC bisa dihubungkan ke mikrokontroler, dimana mikrokontroler tersebut hanya perlu melakukan setting mode RTC, setting waktu maupun pembacaan waktu saja. Pada tugas akhir ini dikembangkan suatu sistem pengaturan lampu lalu lintas dengan menggunakan RTC. Mikrokontroler akan mengambil data waktu dari modul RTC melalui komunikasi serial Inter Intergrated Circuit (I2C). Berdasarkan permasalahan yang dikemukakan diatas, penulis membuat sebuah judul realisasi proyek tugas akhir, yang berjudul “RTC (Real Time Clock) DS1307 SEBAGAI PENGATUR WAKTU PADA SISTEM TRAFFIC LIGHT ADAPTIF”. Dengan tujuan agar kemacetan disetiap ruas jalan dapat dikendalikan sehingga tidak terjadi kemacetan yang terlalu panjang.


(14)

1.2 Rumusan Masalah

Dalam merancang dan membuat “RTC (Real Time Clock) DS1307 SEBAGAI PENGATUR WAKTU PADA SISTEM TRAFFIC LIGHT ADAPTIF”, penulis akan membahas tentang perangkat keras yang meliputi suatu sistem traffic light tersebut yang terdiri dari pengendali lampu, pencacah, mikrokontroler ATMega8, dan RTC (Real Time Clock) DS1307 sebagai pengatur waktu serta komunikasi yang digunakan dalam perancangan sistem.

1.3 Tujuan Penulisan

Adapun tujuan penulisan tugas proyek ini adalah:

1. Membuat suatu prototipe Sistem Traffic Light yang bekerja mandiri dengan menggunakan RTC (Real Time Clock) DS1307 sebagai pengatur waktu.

2. Mampu mengurangi kemacetan pada setiap ruas jalan terutama pada saat jam–jam sibuk.

1.4 Batasan Masalah

Adapun batasan masalah dalam tulisan ini adalah sebagai berikut:

1. Sistem Traffic Light menggunakan Mikrokontroler ATMega8 sebagai pusat pengolahan data.

2. Sistem pengatur waktu menggunakan RTC (Real Time Clock) DS1307. 3. Bahasa pemograman yang digunakan pada Mikrokontroler adalah bahasa


(15)

1.5 Sistematika Penulisan

Untuk mempermudah pembahasan dan penulisan laporan ini, penulis membuat susunan bab-bab yang membentuk laporan ini dalam sistematika penulisan laporan dengan urutan sebagai berikut:

BAB 1 PENDAHULUAN

Dalam bab ini menjelaskan mengenai latar belakang, rumusan masalah, tujuan penulisan, batasan masalah, serta sistematika penulisan.

BAB 2 LANDASAN TEORI

Dalam bab ini menjelaskan tentang teori pendukung yang digunakan untuk pembahasan dan cara kerja rangkaian.

BAB 3 PERANCANGAN DAN PEMBUATAN

Dalam bab ini menjelaskan tentang perancangan dan pembuatan alat serta program yang digunakan.

BAB 4 HASIL DAN PEMBAHASAN

Dalam bab ini menjelaskan pengujian dan hasil analisa dari alat.

BAB 5 PENUTUP

Dalam bab ini menjelaskan kesimpulan dan saran dari alat ataupun data yang dihasilkan dari alat. Bab ini juga merupakan akhir dari penulisan laporan proyek ini.


(16)

BAB 2

LANDASAN TEORI

Dalam bab ini penulis akan membahas tentang komponen - komponen yang digunakan dalam seluruh unit alat ini. Agar pembahasan tidak melebar dan menyimpang dari topik utama laporan ini, maka setiap komponen hanya di bahas sesuai fungsi nya pada masing- masing unit nya.

2.1 Mikrokontroler

Dalam merancang aplikasi elektronika digital dibutuhkan sebuah alat/komponen yang dapat menghitung, mengingat, dan mengambil pilihan dan digunakan sebagai otaknya. Kemampuan ini dimiliki oleh sebuah komputer, namun tidaklah efisien jika harus menggunakan komputer hanya untuk keperluan tersebut. Untuk itu komputer dapat digantikan dengan sebuah mikrokontroler. Mikrokontroler sebenarnya adalah pengembangan dari mikroprosesor, namun dirancang khusus untuk keperluan instrumentasi sederhana.

2.1.1 Mikrokontroler ATMega8

Mikrokontroler dapat dianalogikan sebagai sebuah sistem komputer yang dikemas dalam sebuah chip, artinya di dalam sebuah IC mikrokontroler sebetulnya sudah terdapat kebutuhan minimal agar mikroprosesor dapat bekerja, yaitu meliputi mikroprosesor, ROM, RAM, I/O dan clock seperti halnya yang dimiliki oleh sebuah PC.


(17)

Mengingat kemasannya yang berupa sebuah chip dengan ukuran yang relatif lebih kecil, tentu saja spesifikasi dan kemampuan yang dimiliki oleh mikrokontroller akan menjadi lebih rendah bila dibandingkan dengan sistem komputer seperti PC baik dilihat dari segi kecepatannya. Tidak seperti system komputer, yang mampu menangani berbagai macam program aplikasi (misalnya pengolah kata, pengolah angka dan lain sebagainya), mikrokontroler hanya bisa digunakan untuk satu aplikasi tertentu saja.

Meskipun dari sebuah kemampuan lebih rendah tetapi mikrokontroler memiliki kelebihan yang tidak bisa diperoleh pada sistem komputer yaitu,dengan kemasannya yang kecil dan kompak membuat mikrokontroller menjadi lebih fleksibel dan praktis digunakan terutama pada sistem-sistem yang relatif tidak terlalu kompleks atau tidak memerlukan bahan komputasi yang tinggi.

2.1.2 Arsitektur Mikrokontroler ATMega8

Mikrokontroller jenis AVR merupakan keluarga mikrokontroller RISC (Reduced Instruction Set Computing) keluaran Atmel. Konsep arsitektur AVR pada mulanya dibuat oleh dua orang mahasiswa di Norwegian institute of Technology ( NTH ) yaitu Alf-Egil Bogen dan Vegard Wollan. Mikrokontroler kemudian dikembangkan lebih lanjut oleh Atmel. Seri pertama AVR yang dikeluarkan adalah mikrokontroler 8 bit AT90S8515, dengan konfigurasi pin yang sama dengan mikrokontroler 8051, termasuk address dan data bus yang termultipleksi.

Mikrokontroler AVR menggunakan teknologi RISC dimana set instruksinya dikurangi dari segi ukurannya dan kompleksitas mode pengalamatannya. Pada awal era industri komputer, bahasa pemograman masih


(18)

mengunakan kode mesin dan bahasa assembly. Untuk mempermudah dalam pemograman pada desainer komputer kemudian mengembangkan bahasa pemograman tingkat tinggi yang mudah dipahami manusia. Namun akibatnya, intruksi yang ada semakin kompleks dan membutuhkan lebih banyak memori. Dan tentu saja siklus eksekusi instruksinya menjadi semakin lama.

Dalam AVR dengan arsitektur RISC 8 bit, semua instruksi berukuran 16 bit sebagian besar dieksekusi dalam 1 siklus clock. Berbeda dengan MCS-51 yang instruksinya bervariasi antara 8 bit sampai dengan 32 bit dan dieksekusi selama 1 sampai 4 siklus mesin membutuhkan 12 periode clock. Dalam pengembangannya , AVR dibagi menjadi beberapa varian yaitu AT908xx, ATMega, AT86RFxx dan ATTiny. Pada dasarnya yang membedakan masing-masing varian adalah kapasitas memori dan beberapa fitur tambahan saja. Mikrokontroler ATMega8 merupakan mikrokontroler keluarga AVR 8bit.

Gambar 2.1 Mikrokontroler ATMega8

Beberapa tipe mikrokontroler yang berkeluarga sama dengan ATMega8 ini antara lain ATMega8535, ATMega16, ATMega32, ATmega328, dll. Yang membedakan antara mikrokontroler yang disebutkan antara lain adalah, ukuran memori, banyaknya GPIO (pin input/output), peripherial (USART, timer, counter,


(19)

dibandingkan dengan beberapa mikrokontroler disebutkan diatas. Namun untuk segi memori dan periperial lainnya ATMega8 tidak kalah dengan yang lainnya karena ukuran memori dan periperialnya relatif sama dengan ATMega8535, ATMega32, dll, hanya saja jumlah GPIO lebih sedikit dibandingkan mikrokontroler yang lainnya.

2.1.3 Fitur Mikrokontroler ATMega8

Pada mikrokontroler ATMega8 ini terdapat beberapa fitur didalamnya diantaranya ialah fitur perangkat dan fitur spesial. Adapun yang dimaksud dari kedua fitur tersebut ialah:

2.1.3.1 Fitur Perangkat

1. Mempunyai dua buah Timer/Counter (pencacah) 8-bit dengan Prescale yang terpisah (berbeda-beda satu dengan yang lain), juga terdapat mode pembanding (Compare).

2. Memiliki satu buah Timer/Counter (pencacah) 16bit dengan Prescale yang terpisah, mode pembanding dan mode Capture.

3. Mencacah (counter) secara berkala (real time).

4. Mempunyai tiga saluran (channel) PWM (Pulse Width Modulation). 5. Terdapat delapan saluran ADC (Analog to Digital Converter) pada

kemasan/ paket TQFP (Thin Quad Flat Pack) dan QFN (Quad Flat No-lead)/ MLF (Micro Lead Frame) dan bisa mencapai 10-bit dengan akurasi yang tinggi.

6. Enam saluran ADC pada kemasan PDIP (Plastic Dual Inline Package), bisa mencapai 10-bit dengan akurasi tinggi.


(20)

7. Memiliki antarmuka serial dua kabel (two-wire) berorientasi byte.

8. Dapat diprogram dengan komunikasi Serial USART (Universal Synchronous and Asynchronous serial Receiver and Transmitter).

9. Memiliki antarmuka SPI (Serial Peripheral Interface) dengan tingkat Master/ Slave.

10. Mempunyai Watchdog (monitoring) Timer dengan osilator yang terpisah di dalam Chip.

11. Memiliki Analog Comparator (pembanding analog) di dalam Chip.

2.1.3.2 Fitur Spesial

1. Terdapat Reset dengan Power-on, dan pendeteksi brown-out

Brown-out adalah kondisi ketidakstabilan power supply (sumber tegangan) seperti kadang menyala, kadang tidak, kadang tegangan naik, kadang turun, tetapi dengan waktu yang cepat sehingga kadang kita tidak menyadarinya. Biasanya jika terdapat peristira ini lampu akan redup, bahkan bisa hidup dan mati. Peristiwa ini bisa merusak perangkat jika dibiarkan terus menerus.

2. Memiliki kalibrasi untuk osilator internal

Disamping menduukung osilator external, ATmega8 juga memiliki osilator internal dan memiliki kalibrasi khusus yang terdapat didalamnya 3. Mempunyai sumber interrupt eksternal dan internal

Pin INT merupakan sistem interrupt dan memiliki sumber interrupt eksternal dan internal


(21)

4. Terdapat lima mode sleep, yaitu:

 Idle

 ADC Noise Reduction

 Power-safer

 Power-down

 Standby

2.1.4 Konfigurasi Pin Pada Mikrokontroler ATMega8

Gambar 2.2 Konfigurasi Pin Mikrokontroler ATMega8

Konfigurasi Mikrokontroler ATMega8 dapat dilihat digambar 2.1 diatas, Mikrokontroler ATMega8 memiliki 28 pin yang terdiri dari Input/Output, Vcc, GND,dan AREF. Secara fungsional konfigurasi pin-pin tersebut dapat dijelaskan sebagai berikut:

1. VCC merupakan pin yang berfungsi sebagai pin masukan atau catu daya. 2. GND merupakan pin ground.


(22)

3. Port B (PB0 – PB7) merupakan jalur 8 bit yang difungsikan sebagai input/output.

4. Port C (PC0 –PC6) merupakan jalur data 7 bit yang difungsikan sebagai input/output data digital.

5. Port D (PD0 – PD7) merupakan jalur data 8bit yang masing-masing pin-nya juga dapat difungsikan sebagai input/output.

6. AREF merupakan pin masukan tegangan referensi ADC.

2.1.5 Deskripsi Pin-pin Pada Mikrokontroler ATMega8

Mikrokontroler ATMega8 memiliki 3 buah PORT utama yaitu PORTB, PORTC, dan PORTD dengan total pin input/output sebanyak 23 pin. PORT tersebut dapat difungsikan sebagai input/output digital atau difungsikan sebagai periperial lainnya.

1. PORT B

PORTB merupakan jalur data 8bit yang dapat difungsikan sebagai input/output. Selain itu PORTB juga dapat memiliki fungsi alternatif seperti yang tertera pada tabel di bawah ini:


(23)

- ICP1(PB0), berfungsi sebagai Timer Counter 1 input capture pin.

- OC1A(PB1), OC1B(PB2) dan OC2(PB3) dapat difungsikan sebagai keluaran PWM (pulse width modulation).

- MOSI(PB3), MISO(PB4), SCK(PB5), SS(PB2) merupakan jalur komunikasi SPI. Selain itu pin ini juga berfungsi sebagai jalur pemograman serial (ISP). TOSC1(PB6) dan TOSC2(PB7) dapat difungsikan sebagai sumber clock external untuk timer.

- XTAL1(PB6) dan XTAL2(PB7) merupakan sumber clock utama mikrokontroler. Perlu diketahui, jika kita menggunakan clock internal (tanpa crystal) maka PB6 dan PB7 dapat difungsikan sebagai input/output digital biasa. Namun jika kita menggunakan clock dari crystal external maka PB6 dan PB7 tidak dapat kita gunakan sebagai input/output.

2. PORT C

PORTC merupakan jalur data 7bit yang dapat difungsikan sebagai input/output digital. Fungsi alternatif PORTC antara lain sebagai berikut:


(24)

- ADC 6 channel (PC0,PC1,PC2,PC3,PC4,PC5) dengan resolusi sebesar 10bit. ADC dapat kita gunakan untuk mengubah input yang berupa tegangan analog menjadi data digital.

- I2C (SDA dan SDL) merupakan salah satu fitur yang terdapat pada PORTC. I2C digunakan untuk komunikasi dengan sensor atau device lain yang memiliki komunikasi data tipe I2C seperti sensor kompas, accelerometer nunchuck, dll.

- RESET merupakan salah satu pin penting di mikrokontroler, RESET dapat digunakan untuk merestart program. Pada ATMega8 pin RESET digabungkan dengan salah satu pin IO (PC6). Secara default PC6 ini didisable dan diganti menjadi pin RESET. Kita dapat mendisable fungsi pin RESET tersebut untuk menjadikan PC6 sebagai pin input/output. Kita dapat melakukan konfigurasi di fusebit untuk melakukan pengaturannya, namun saya sarankan untuk tidak merubahnya karena jika pin RESET di disable maka kita tidak dapat melakukan pemograman melalui jalur ISP.

3. PORT D

PORTD merupakan jalur data 8bit yang masing-masing pin-nya juga dapat difungsikan sebagai input/output. Sama seperti PORTB dan PORTC, PORTD juga memiliki fungsi alternatif seperti terlihat pada tabel dibawah ini:


(25)

Tabel 2.3 Fungsi Alternatif PORT D pada setiap pin

- USART (TXD dan RXD) merupakan jalur data komunikasi serial dengan level sinyal TTL. Pin TXD berfungsi untuk mengirimkan data serial, sedangkan RXD kebalikannya yaitu sebagai pin yang berfungsi untuk menerima data serial.

- Interrupt (INT0 dan INT1) merupakan pin dengan fungsi khusus sebagai interupsi hardware. Interupsi biasanya digunakan sebagai selaan dari program, misalkan pada saat program berjalan kemudian terjadi interupsi hardware/software maka program utama akan berhenti dan akan menjalankan program interupsi.

- XCK dapat difungsikan sebagai sumber clock external untuk USART, namun kita juga dapat memanfaatkan clock dari CPU, sehingga tidak perlu membutuhkan external clock.

- T0 dan T1 berfungsi sebagai masukan counter external untuk timer 1 dan timer 0.

- AIN0 dan AIN1 keduanya merupakan masukan input untuk analog comparator.


(26)

2.1.6 Kebutuhan Clock

Sumber clock pada ATMega8 secara garis besar ada 2 buah, yaitu clock internal dan clock external. Untuk clock internal maksimum clock yang dapat digunakan adalah 8MHz, sedangkan untuk clock external maksimum clock yang dapat digunakan adalah sebesar 16MHz. Lebih jelasnya mengenai berbagai macam sumber clock dapat dilihat pada tabel di bawah ini

Tabel 2.4 Jenis-jenis sumber Clock

Untuk sumber clock external kita dapat menggunakan RC osilator atau crystal osilator. Namun biasanya yang lebih banyak digunakan adalah osilator tipe crystal.

2.2 RTC (Real Time Clock) DS1307

Real Time Clock (RTC) DS1307 adalah IC yang dibuat oleh perusahaan Dallas Semiconductor. RTC (Real Time Clock) DS1307 bekerja dengan daya rendah (low power), memiliki kalender/jam BCD dan SRAM yang nonvolatile dengan kapasitas 56 bytes. Alamat dan data dikirim melalui 2 kabel dwi-arah. Jam dan kalender pada DS1307 menyediakan informasi detik, menit, jam, hari, tanggal,


(27)

baik untuk 31 hari maupun kurang. Jam bekerja dalam format 24 jam atau 12 jam dengan indikator AM/PM. DS1307 dapat mendeteksi secara otomatis catu dayanya, jika catu daya ke sistem mati, maka secara otomatis DS1307 akan mengambil catu daya dari baterai (jika dipasang). DS1307 memiliki akurasi (kadaluarsa) hingga tahun 2100.

Pada sistem komputer chip RTC sering dijumpai pada motherboard PC (biasanya terletak dekat chip BIOS). Semua komputer menggunakan RTC karena berfungsi menyimpan informasi waktu terkini dari komputer yang bersangkutan. RTC dilengkapi dengan baterai sebagai pensuplai daya pada chip, sehingga jam akan tetap up-to-date walaupun komputer dimatikan. RTC dinilai cukup akurat sebagai pewaktu (timer) karena menggunakan osilator kristal. Ada beberapa jenis RTC, yaitu : DS1307, DS1302, DS12C887, DS3234.

Gambar 2.3 RTC (Real Time Clock) DS1307

2.2.1 Konfigurasi pin RTC DS1307

Adapun konfigurasi dari setiap pin pada RTC DS1307 adalah:


(28)

menulis maupun membaca data. Ketika baterai disambungkan pada IC dan nilai Vcc dibawah 1.25 Vbat. Proses penulisan dan pembacaan data tidak dapat dilakukan, namun proses pencacahan waktu tetap berjalan dan tidak terpengaruh oleh peenurunan Vcc, karena IC akan mengambil sumber tegangan dari Vbat.

2. Vbat : Digunakan sebagai masukan baterai lithium 3 volt atau sumber energy yang lain. Tegangan baterai harus berkisar antara 2 volt sampai 3.5 volt. Baterai lithium 48 mA atau lebih besar dapat digunakan lebih dari 10 tahun pada suhu 25oC.

3. SCL (Serial Clock Input) : SCL digunakan untuk sinkronisasi perpindahan data pada antarmuka serial.

4. SDA (Serial Data Input/Output) : SDA berfungsi sebagai pin masukan dan keluaran pada antarmuka serial 2 kabel. Pin SDA dan SCL membutuhkan resistor pull-up sekitar 4K7ohm.

5. SQW/OUT (Square Wave/Output Driver) : Jika diaktifkan, SQWE bit harus diset ke 1. SQWE akan mengeluarkan gelombang kotak dengan pilihan frekuensi (1Hz, 4kHz, 8kHz, 32kHz). Pin SQW/OUT membutuhkan resistor pull-up eksternal. SQW/OUT dapat bekerja baik dengan sumber tegangan Vcc maupun dengan kristal 32,768kHz.

2.2.2 Fitur–fitur RTC DS1307

1. Real Time Clock menyimpan data – data detik, menit, jam, tanggal, bulan, tahun dan tahun valid hingga 2100.


(29)

3. Antarmuka serial two wire (I2C).

4. Sinyal keluaran gelombang kotak terprogram (Programmable squarewave).

5. Konsumsi daya kurang dari 500nA menggunakan mode baterai cadangan dengan operasional osilator.

6. Tersedia fitur industri dengan ketahanan suhu antara -40oC hingga +85oC.

7. Tersedia dalam kemasan 8-pin DIP atau SOIC.

2.2.3 Peta Alamat RTC DS1307

Pemetaan alamat pada RTC DS1307 dimana register-register DS1307 ditempatkan pada lokasi pengalamatan 00h sampai 07h. Sedangkan register -register RAM (Random Access Memory) ditempatkan pada lokasi pengalamatan 08h sampai 3Fh.

Khusus alamat 02H, bit-6 LOW untuk siklus jam 00–24 dan HIGH untuk siklus jam 00–12. Bit-5 HIGH pada saat PM dan LOW pada saat AM atau angka puluhan jika bit-6 LOW.


(30)

2.2.4 Register Kontrol RTC DS1307

Register kontrol pada RTC DS1307 digunakan untuk mengontrol operasi pada pin SQW/OUT.

Tabel 2.6 Register Kontrol Pada RTC DS1307

BIT 7 BIT 6 BIT 5 BIT 4 BIT 3 BIT 2 BIT 1 BIT 0

OUT X X SQWE X X RS1 RS0

1. Bit 7 Output Control (OUT) : Bit 7 adalah keadaan jika pin SQW/OUT di disable sehingga tidak mengeluarkan clock, bit 7 ini menentukan level sinyal yang keluar dari pin SQW/OUT. Jika bit 7 ini LOW, maka level pin SQW/OUT ikut LOW dan jika bit 7 ini HIGH, maka level pin SQW/OUT ikut HIGH.

2. Bit 4 Square-wave Enable : Digunakan untuk enable/disable keluarnya clock dari pin SQW/OUT. HIGH berarti enable dan LOW berarti disable. Frekuensi sinyal clock yang keluar dari pin SQW/OUT ditentukan oleh kondisi bit 1 dan bit 0.

3. Bit 1 dan 0 Rate Select (RS1, RS0) Digunakan untuk menentukan frekuensi yang keluar dari pin SQW/OUT. Kombinasi nilai RS0, dan RS1 menghasilkan output gelombang kotak dengan nilai frekuensi masing-masing yang ditunjukkan oleh tabel 2.7


(31)

2.2.5 Komunikasi I2C Pada RTC DS1307

Untuk membaca data tanggal dan waktu yang tersimpan di memori RTC DS1307 dapat dilakukan melalui komunikasi serial I2C seperti tampak pada gambar berikut:

Gambar 2.4 Komunikasi serial RTC dengan I2C

Dari gambar 2.4 diatas dapat dilihat DS1307 beropersai sebagai slave pada bus I2C. Cara Access pertama mengirim sinyal START diikuti device address dan alamat sebuah register yg akan dibaca. Beberapa register dapat dibaca sampai STOP condition dikirim.

I2C singkatan dari Inter Integrated Circuit, adalah sebuah protokol untuk komunikasi serial antar IC, dan sering disebut juga Two Wire Interface (TWI). Bus yang digunakan untuk komunikasi antara mikrokontroler dan divais periferal seperti memori, sensor temperatur dan I/O expander. Komunikasi dilakukan melalui dua jalur: SDA (serial data) dan SCL (serial clock). Setiap divais I2C memiliki 7-bit alamat yang unik. MSB adalah fix dan ditujukan untuk kategori divais.Inter Integrated Circuit atau sering disebut I2C adalah standar komunikasi


(32)

serial dua arah menggunakan dua saluran yang didisain khusus untuk mengirim maupun menerima data. Divais yang mengirim data sepanjang bus disebut master, divais yang menerima data disebut slave. Master memulai transmisi dengan sebuah sinyal start, dan menghentikan transmisi dengan sebuah sinyal stop pada jalur SDA. Selama sinyal start dan stop, jalur SCL harus dalam keadaan high.

Setelah master memulai pengiriman data dengan sebuah sinyal start, master menulis satu byte alamat divais kepada slave. Setiap byte data harus memiliki panjang 8-bit. Slave harus memberikan konfirmasi dari byte data yang diterimanya dengan sebuah bit acknowledge (ACK). Sinyal Start merupakan sinyal untuk memulai semua perintah, didefinisikan sebagai perubahan tegangan SDA dari 1 menjadi 0 pada saat SCL 1. Sinyal Stop merupakan sinyal untuk mengakhiri semua perintah, didefinisikan sebagai perubahan tegangan SDA dari 0 menjadi 1 pada saat SCL 1. 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, yaitu dengan membuat SDA menjadi 0 selama siklus clock ke 9.

Pada komunikasi I2C antara DS1307 dan mikrokontroler, data- data jam dan yang lain dikirim dalam format BCD. Data dikirim per-byte dari mikrokontroler ke DS1307 secara serial. Setelah menerima satu byte data, DS1307 sebagai slave akan mengirim sinyal acknowledge ke mikrokontroler. Sinyal acknowledge adalah tanda bahwa satu byte data telah diterima oleh DS1307. Awal komunikasi, mikrokontroler akan membangkitkan sinyal start I2C. Kemudian mikrokontroler akan mengirimkan alamat group dari DS1307 dan kode


(33)

karena mikrokontroler akan menuliskan terlebih dahulu alamat awal pembacaan register DS1307. Setelah itu, proses pembacaan I2C dimulai. Mikrokontroler mengirimkan alamat DS1307 beserta kode instruksi baca. Proses pembacaan dilakukan per-byte dimulai dari register deetik sampai register tahun. Setelah menerima data 1 byte utuh mikrokontroler akan mengirimkan sinyal acknowledge ke DS1307. Pada akhir pembacaan register tahun, akan dikirim sinyal notacknowledge dan diakhiri dengan sinyal stop.

2.3 IC Shift Register 74HC595

Shift register SIPO (Serial In Paralel Out) memiliki pin input serial, pin clock, dan beberapa pin output. Setiap kali sinyal clock terdeteksi di pin clock, nilai-nilai pada pin-pin output akan digeser ke kiri (umumnya), dan nilai pin input akan diselipkan menjadi bit terendah (LSB). Sinyal clock umumnya ditandai dengan perubahan tegangan naik (rising up) atau turun (rising down) tergantung dari spesifikasi shift register yang bersangkutan.

Gambar 2.5 IC Shift Register 74HC595

74HC595 adalah IC (integrated circuit, sirkuit elektronika terpadu) dari keluarga TTL seri 74xx yang berfungsi sebagai Shift Register. Komponen


(34)

menerima masukan secara serial dan keluaran paralel dalam 8-pin keluaran. Data masukan disimpan pada register penyimpanan tipe-D sepanjang satu byte (8 bit D-type storage register). Register penyimpanan ini memiliki keluaran paralel dengan 3 kondisi (3-state): HIGH, LOW, dan NULL (High-Z, High Impedance). Sumber detak terpisah disediakan untuk masing-masing register (shift register dan storage register).

Shift Register memiliki pin kendali SRCLR untuk mereset data di antrian (direct overriding clear control), pin masukan serial (SER), dan pin keluaran serial untuk disambungkan dengan IC lainnya (cascading). Dengan adanya pin keluaran serial ini, data keluaran paralel dapat diekspansi menjadi lebih dari 8-bit. Shift register clock (SRCLK) maupun storage register clock (RCLK) dipicu pada sisi positif signal (positive-edge triggered). Bila kedua sumber detak disambungkan bersama-sama, shift register akan selalu satu pulsa detak lebih awal dibanding storage register.

2.4 IC ULN2803

ULN2803 adalah chip Integrated Circuit (IC) berupa rangkaian transistor Darlinton dengan Tegangan Tinggi. Hal ini memungkinkan untuk membuat antarmuka sinyal TTL dengan beban tegangan tinggi. Chip mengambil sinyal tingkat rendah (TLL, CMOS, PMOS, NMOS) yang beroperasi pada tegangan rendah dan arus rendah dan bertindak sebagai relay, menyalakan atau mematikan tingkat sinyal yang lebih tinggi di sisi yang berlawanan. Secara fisik ULN2803 adalah konfigurasi IC 18-pin dan berisi delapan transistor NPN. Pins 1-8


(35)

sinyal rendah). Pin 10 adalah COM pada sisi yang lebih tinggi dan umumnya akan dihubungkan ke tegangan positif. Pins 11-18 adalah output (Pin 1 untuk Pin 18, Pin 2 untuk 17, dst).

Gambar 2.6 Intergrated Circuit (IC) ULN2803

Di sisi output ULN2803 umumnya berada pada selang nilai 50V/500mA, sehingga dapat mengoperasikan beban kecil secara langsung. Pada aplikasi lain, sering digunakan untuk daya kumparan dari satu atau lebih relay yang memungkinkan tegangan yang lebih tinggi atau arus yang lebih kuat, dikontrol oleh sinyal tingkat rendah. Dalam aplikasi arus kuat (listrik), ULN2803 menggunakan tingkat rendah (TTL) sinyal untuk mengaktifkan ataupun mematikan sinyal tegangan/arus yang lebih tinggi pada sisi output.

2.5 Liquid Crystal Display (LCD)

LCD adalah lapisan dari campuran organik antara lapisan kaca bening dengan elektroda transparan indium oksida dalam bentuk tampilan seven-segment dan lapisan elektroda pada kaca belakang. Ketika elektroda diaktifkan dengan medan listrik (tegangan), molekul organik yang panjang dan silindris menyesuaikan diri dengan elektroda dari segmen. Lapisan sandwich memiliki polarizer cahaya


(36)

lapisan reflektor. Cahaya yang dipantulkan tidak dapat melewati molekul-molekul yang telah menyesuaikan diri dan segmen yang diaktifkan terlihat menjadi gelap dan membentuk karakter data yang ingin ditampilkan.

Gambar 2.7 LCD (Liquid Cristal Display)

2.5.1 Pengendali/kontroler LCD (Liquid Crystal Display)

Dalam modul LCD (Liquid Cristal Display) terdapat microcontroller yang berfungsi sebagai pengendali tampilan karakter LCD (Liquid Cristal Display). Microntroller pada suatu LCD (Liquid Cristal Display) dilengkapi dengan memori dan register. Memori yang digunakan microcontroler internal LCD adalah :

a. DDRAM (Display Data Random Access Memory) merupakan memori tempat karakter yang akan ditampilkan berada.

b. CGRAM (Character Generator Random Access Memory) merupakan memori untuk menggambarkan pola sebuah karakter dimana bentuk dari karakter dapat diubah-ubah sesuai dengan keinginan.


(37)

merupakan karakter dasar yang sudah ditentukan secara permanen oleh pabrikan pembuat LCD (Liquid Cristal Display) tersebut sehingga pengguna tinggal mangambilnya sesuai alamat memorinya dan tidak dapat merubah karakter dasar yang ada dalam CGROM.

2.5.2 Register Kontrol Pada LCD (Liquid Crystal Display)

a. Register perintah yaitu register yang berisi perintah-perintah dari mikrokontroler ke panel LCD (Liquid Cristal Display) pada saat proses penulisan data atau tempat status dari panel LCD (Liquid Cristal Display) dapat dibaca pada saat pembacaan data.

b. Register data yaitu register untuk menuliskan atau membaca data dari atau ke DDRAM. Penulisan data pada register akan menempatkan data tersebut ke DDRAM sesuai dengan alamat yang telah diatur sebelumnya.

2.5.3 Konfigurasi Pin Pada LCD

a. Pin data adalah jalur untuk memberikan data karakter yang ingin ditampilkan menggunakan LCD (Liquid Cristal Display) dapat dihubungkan dengan bus data dari rangkaian lain seperti mikrokontroler dengan lebar data 8 bit.

b. Pin RS (Register Select) berfungsi sebagai indikator atau yang menentukan jenis data yang masuk, apakah data atau perintah. Logika low menunjukan yang masuk adalah perintah, sedangkan logika high menunjukan data.


(38)

c. Pin R/W (Read Write) berfungsi sebagai instruksi pada modul jika low tulis data, sedangkan high baca data.

d. Pin E (Enable) digunakan untuk memegang data baik masuk atau keluar. e. Pin VBL berfungsi mengatur kecerahan tampilan (kontras) dimana pin ini

dihubungkan dengan trimpot 5 Kohm, jika tidak digunakan dihubungkan ke ground, sedangkan tegangan catu daya ke LCD sebesar 5 Volt.

Tabel 2.8 Konfigurasi Pin LCD

No Simbol Level Fungsi

1 Vss - 0 Volt

2 Vcc - 5+10% Volt

3 Vee - Penggerak LCD

4 RS H/L

H=Memasukkan Data,L=Memasukkan Ins

5 R/W H/L H=Baca, L=Tulis

6 E Enable Signal

7 DB0 H/L

Data Bus

8 DB1 H/L

9 DB2 H/L

10 DB3 H/L

11 DB4 H/L

12 DB5 H/L

13 DB6 H/L

14 DB7 H/L

15 V+BL

Kecerahan LCD

16 V-BL

2.5.4 Karakteristik LCD

Modul LCD memiliki karakteristik sebagai berikut:

1. Terdapat 16 x 2 karakter huruf yang bisa ditampilkan. 2. Setiap terdiri dari 5 x 7 dot-matrix cursor.


(39)

4. Terdapat 80 x 8 bit display RAM ( maksimal 80 karakter ).

5. Memiliki kemampuan penulisan dengan 8 bit maupun dengan 4 bit. 6. Dibangun oleh osilator lokal.

7. Satu sumber tegangan 5 Volt.

8. Otomatis reset saat tegangan dihidupkan. 9. Bekerja pada suhu 0oC sampai 550C.

2.6 Light Emitting Diode (LED)

LED merupakan keluarga dari Dioda yang terbuat dari Semikonduktor. Cara kerjanya pun hampir sama dengan Dioda yang memiliki dua kutub yaitu kutub Positif (P) dan Kutub Negatif (N). LED hanya akan memancarkan cahaya apabila dialiri tegangan maju (bias forward) dari Anoda menuju ke Katoda. LED terdiri dari sebuah chip semikonduktor yang di doping sehingga menciptakan junction P dan N. Proses doping yang dimaksud dalam semikonduktor adalah proses untuk menambahkan ketidakmurnian (impurity) pada semikonduktor yang murni sehingga menghasilkan karakteristik kelistrikan yang diinginkan.

Ketika LED dialiri tegangan maju atau bias forward yaitu dari Anoda (P) menuju ke Katoda (K), Kelebihan Elektron pada N-Type material akan berpindah ke wilayah yang kelebihan Hole (lubang) yaitu wilayah yang bermuatan positif (P-Type material). Saat Elektron berjumpa dengan Hole akan melepaskan photon dan memancarkan cahaya monokromatik (satu warna).


(40)

Gambar 2.8 Light Emitting Diode (LED)

2.7 Tactile Switch

Tactile Switch merupakan komponen control yang sangat berguna, alat ini dapat kita jumpai pada panel listrik atau di luar panel listrik. Fungsi tombol tekan adalah untuk mengontrol kondisi on atau off rangkaian listrik, prinsip kerja tombol tekan adalah kerja sesaat maksudnya jika tombol kita tekan sesaat maka akan kembali pada posisi semula. Berdasarkan fungsinya tombol tekan terbagi atas 3 tipe kontak:

1. Kontak NO (Normally Open = Kondisi terbuka) Tombol jenis ini biasanya digunakan untuk menghubungkan arus pada suatu rangkaian Kontrol atau sebagai tombol start. Fungsi mengalirkan arus pada tombol ini terjadi apabila pada bagian knop nya ditekan sehingga kontaknya saling terhubung dan aliran listrik akan terputus apabila knopnya dilepas karena terdapat pegas.

2. Kontak NC (Normally Close = Kondisi Tertutup) Tombol jenis ini adalah jenis kontak tertutup. Biasanya digunakan untuk memutus arus listrik yaitu dengan cara menekan knopnya sehingga kontaknya terpisah, namun kalau


(41)

knop dilepas maka akan kembali pada posisi semula. Tombol jenis ini digunakan untuk tombol stop.

3. Kontak NO dan NC merupakan gabungan antara kontak NO dan kontak NC. Mereka berja secara bersamaan dalam satu poros. Jika tombol di tekan maka kontak NO yang semula terbuka (Open) dan kontak NC yang terhubung (Close) akan terbalik arah yaitu kontak NO akan menjadi terhubung (Close) dan kontak NC akan menjadi terbuka (Open). Jika knop pada tombol dilepaskan maka akan kembali ke posisi semula.

Gambar 2.9 Tactile Switch

2.8 Bahasa Pemograman BASCOM-AVR

Bahasa BASCOM-AVR menggunakan bahasa pemograman BASIC. Bahasa BASIC adalah bahasa pemograman yang dapat dikatakan bahasa pemograman berlevel tinggi. Bahasa pemograman berlevel rendah berarti bahasa pemograman yang berorientasi pada mesin, misalnya bahasa assembly. Sedangkan bahasa pemograman berlevel tinggi merupakan bahasa pemograman yang berorientasi pada manusia. Bahasa pemograman berlevel rendah merupakan bahasa pemograman dengan sandi yang hanya dimengerti oleh mesin, sehingga untuk


(42)

memprogram dalam bahasa ini diperlukan tingkat kecermatan yang tinggi. Bahasa pemograman berlevel tinggi relatif mudah digunakan, karena ditulis dengan bahasa manusia yang lebih mudah dimengerti dan tidak tergantung pada mesin.

Penulisan program dalam bahasa BASCOM-AVR ini tidak mengenal aturan penulisan dikolam tertentu. Jadi bisa dimulai dari kolom manapun. Namun demikian, untuk mempermudah dalam pembacaan program dan untuk keperluan dokumentasi, sebaiknya penulisan program dalam bahasa BASCOM-AVR ini diatur sedemikian rupa sehingga mudah dibaca. BASCOM AVR menyediakan pilihan yang dapat mensimulasikan program.

2.8.1 Tipe Data

Tipe data merupakan bagian program yang penting karena tipe data mempengaruhi setiap instruksi yang akan dilaksanakan komputer. Pemilihan tipe data yang tepat akan membuat operasi data menjadi lebih efesien dan efektif.

Tabel 2.9 Tipe-Tipe Data Dalam BASCOM-AVR

NO Tipe Jangkauan

1. Bit 0 atau 1

2. Byte 0–225

3. Integer -65,535

4. Word 0–65535

5. Long -2E+09

6. Single 1.5x10-45–3.4x10

38

7. Double 5.0x10-324–1.7x10


(43)

2.8.2 Variabel

Variabel adalah suatu pengenal (identifier) yang digunakan untuk mewakili suatu nilai tertentu di dalam proses program yang dapat diubah-ubah sesuai dengan kebutuhan. Nama dari variable terserah sesuai dengan yang diinginkan namun hal yang terpenting adalah setiap variabel diharuskan :

• Terdiri dari gabungan huruf dan angka dengan karakter pertama harus berupa huruf, max 32 karakter.

• Tidak boleh mengandung spasi atau symbol-simbol khusus seperti : $, ?, %, #, !, &, *, (, ), -, +, = dan lain sebagainya kecuali underscore.

• Panjang sebuaah nama variabel hanya 32 karakter.

Untuk dapat menggunakan variabel, maka variabel tersebut harus dideklarasikan terlebih dahulu pada program yang dibuat.

2.8.3 Operasi–operasi dalam BASCOM AVR

Bahasa pemograman BASCOM AVR ini dapat digunakan untuk menggabungkan, membandingkan, atau mendapatkan informasi tentang sebuah pernyataan dengan menggunakan operator-operator yang tersedia di BASCOM AVR.

• Operator aritmatika adalah operator yang digunakan dalam perhitungan operator aritmatika meliputi + (tambah), - (kurang), / (bagi), dan * (kali).

• Operator Relasi berfungsi membandingkan nilai sebuah angka. Hasilnya dapat digunakan untuk membuat keputusan yang sesuai dengan program yang kita buat. Operator relasi meliputi:


(44)

Tabel 2.10 Operasi Relasi

Opertor Relasi Pernyataan

= Sama Dengan X = Y

<> Tidak Sama Dengan X <> Y

< Lebih Kecil Dari X < Y

> Lebih Besar Dari X > Y

<= Lebih Kecil Sama Dengan X <= Y >= Lebih Besar Sama Dengan X >= Y

• Operator Logika digunakan untuk menguji sebuah kondisi atau memanipulasi bit dan bolean. Dalam BASCOM-AVR ada 4 buah operator logika, yaitu AND, OR, NOT, dan XOR.

• Operator fungsi adalah operator yang digunakan untuk melengkapi operator yang sederhana.


(45)

BAB 3

PERANCANGAN SISTEM

3.1 Diagram Blok

Secara garis besar diagram blok rangkaian dapat ditunjukkan pada gambar 3.1 dibawah ini:

Gambar 3.1 Diagram Blok Rangkaian

MIKROKONTROLER ATMEGA8

RTC (Real Time Clock)

Tombol

LCD

Traffic

Light 1 Light 2Traffic Light 3Traffic Light 4Traffic

Driver LED Driver LED

Shift Register Shift Register PSA


(46)

Dari gambar diatas dapat dijelaskan bahwa RTC (Real Time Clock) DS1307 dihubungkan ke mikrokontroler dengan sistem komunikasi dua arah (2 wire). Dalam hal ini mikrokontroler dapat difungsikan sebagai pengolah data dari data yang dikirim RTC (Real Time Clock) DS1307 ke mikrokontroler tersebut. Pada dasarnya RTC (Real Time Clock) DS1307 tersebutlah yang mengatur waktu dari sistem traffic light tersebut yang kemudian data dari RTC (Real Time Clock) DS1307 itu diteruskan ke mikrokontroler untuk diolah datanya.

Dengan adanya RTC (Real Time Clock) DS1307 sebagai pengatur waktu maka mikrokontroler dapat memutuskan pada pukul berapa sajakah setiap ruas jalan yang akan mendapatkan penyalaan lampu hijau paling lama, setelah mikrokontroler memutuskan waktu pada setiap ruas jalan yang akan mendapatkan penyalaan lampu hijau paling lama maka mikrokontroler akan memerintahkan driver LED pada traffic light untuk menjalankan prosedur penyalaan lampu traffic.

3.2 Perancangan Rangkaian Kendali Sistem

Rancangan rangkaian menggunakan komponen-komponen elektronika analog dan digital. Dalam hal ini, sebagai inti rangkaian digunakan sebuah RTC (Real Time Clock) dan sebuah mikro dan beberapa komponen pendukung, misalnya IC yang digunakan untuk Driver LED, dan display. Rangkaian dapat dibagi menjadi beberapa bagian sesuai fungsinya, yaitu:


(47)

3.2.1 Rangkaian Catu Daya

Adapun rangkaian catu daya yang digunakan pada alat ini adalah sebagai berikut:

Gambar 3.2 Rangkaian Catu Daya

Sumber tegangan pada rangkaian ini adalah dari tegangan PLN, sehingga digunakan sebuah transformator untuk menurunkan tegangan dari 220V menjadi 9V. Setelah tegangan diturunkan, tegangan tersebut kemudian disearahkan oleh sebuah dioda. Kapasitor berfungsi sebagai filter sehingga tegangan DC yang dihasilkan dioda mempunyai ripple tegangan yang kecil. Tegangan tersbut kemudian di regulasi oleh regulator LM7805 sehingga tegangan output dari rangkaian ini akan stabil pada 5V. Tegangan inilah yang digunakan untuk mensupply rangkaian pada alat yang dirancang.


(48)

3.2.2 Rangkaian Pewaktu RTC DS1307

Adapun rangkaian pewaktu yang digunakan pada alat ini adalah sebagai berikut:

Gambar 3.3 Rangkaian Pewaktu RTC DS1307

Rangkaian pewaktu yang digunakan adalah rangkaian DS1307. IC ini merupakan ic yang sering digunakan dalam pembuatan jam digital. Prinsip kerja dari rangkaian RTC ini adalah pin Vcc dari RTC dihubungkan dengan supply sebesar 5 Vdc. Sinyal osilasi disediakan melalui kristal dengan frekuensi 32,768KHz yang dihubungkan dengan pin X1 dan X2. Keperluan untuk back-up supply yang dihubungkan untuk mempertahankan data waktu RTC disediakan oleh baterai dengan tegangan sebesar 3 Vdc yang dihubungkan dengan pin VBat. Sedangkan untuk proses komunikasi data waktu dengan sistem keseluruhan diatur melalui SCL dan SDA. SCL itu adalah sebagai clock untuk input ke I2C


(49)

Bersifat open drain, oleh sebab itu membutuhkan external pull up resistor. Sedangkan SDA adalah yang berfungsi sebagai masukan/keluaran untuk I2C serial interface. Bersifat open drain, oleh sebab itu membutuhkan external pull up resistor. Pin SCL dan pin SDA dihubungkan dengan mikrokontroler yang diberi resistor pull up sebesar 10 KΩ .

3.2.3 Rangkaian Mikrokontroler ATMega8

Berikut adalah rangkaian mikrokontroler ATMega8 yang digunakan pada alat ini:


(50)

Rangkaian ini merupakan rangkaian minimum ATMega8 dengan 38ristal 16MHz. Dengan rangkaian ini mikrokontroler akan bekerja pada frekuensi kerja 16MHz. Rangkaian minimum ini adalah rangkaian dengan konfigurasi minimum yang digunakan agar mikrokontroler dapat beroperasi. Pin Reset pada mikrokontroler terhubung ke 5V melalui sebuah resistor 10K. Pin AVCC, VCC dan Aref pada mikrokontroler langsung terhubung pada 5V.

3.2.4 Rangkaian Driver LED


(51)

Rangkaian tersebut merupakan rangkaian yang digunakan untuk menyalakan LED pada traffic light. Rangkaian ini menggunakan IC 74LS595 dan ULN2803. IC 74LS595 merupakan IC shift register yang dihubungkan pada mikrokontroler. IC tersebut akan mengubah data serial dari mikrokontroler menjadi data paralel. Data tersebut kemudian dimanfaatkan untuk menyalakan LED melalui IC ULN2803. LED dihubungkan melalui SL2, SL3, SL4, dan SL5. Sedangkan SL1 akan dihubungkan ke mikrokontroler.

3.2.5 Rangkaian LCD Karakter 16x2

Berikut ini merupakan rangkaian yang digunakan untuk mengoperasikan LCD karakter 16x2:


(52)

Pada rangkaian ini digunakan trimpot yang dihubungkan pada pin 3 dari LCD. Hal ini bertujuan agar kontras pada karakter yang ditampilkan pada LCD dapat diatur tingkat kecerahannya. Pin 5 pada LCD dihubungkan langsung pada GND shingga logika pada pin ini selalu low. Hal ini akan menyebabkan LCD akan selalu pada mode Write, dimana LCD sifatnya akan selalu untuk menampilkan data dari mikrokontroler saja.

3.2.6 Rangkaian Tombol / Tactile Switch

Adapun rangkaian tombol / tactile switch yang digunakan adalah sebagai berikut:

Gambar 3.7 Rangkaian Tombol / Tactile Switch

Rangkaian ini merupakan sarana input logika digital bagi mikrokontroler. Dari rangkaian dapat dilihat bahwa ketika sakelar tidak tekan, semua pin pada SL1 akan tetap bertegangan 5V (logika 1). Ketika salah satu sakelar ditekan, maka


(53)

3.3 Rancangan Perangkat Lunak Sistem 3.3.1 Flowchart Sistem


(54)

Gambar diatas merupakan flowchart atau diagram alir sistem. Diagram tersebut menjelaskan proses alir dari start hingga selesai satu siklus kerja, hal ini adalah aliran kerja program. Pada saat alat dinyalakan, alat pertama kali akan menginisialisasi pin - pin yang dihubungkan pada mikrokontroler. Hal ini bertujuan agar mikrokontroler dapat berkomunikasi dengan RTC sebagai penentu waktu, tombol sebagai sarana input digital, rangkaian display LCD dan rangkaian display waktu. Setelah itu, mikrokontroler akan memeriksa slot waktu yang mana yang aktif. Slot waktu aktif didapatkan berdasarkan waktu yang diperoleh dari rangkaian RTC. Slot waktu tersebut berguna untuk menentukan jeda waktu untuk perpindahan warna lampu pada traffic light. Ketika slot waktu yang aktif sudah didapatkan, maka dengan demikian jeda waktu yang aktif untuk waktu tersebut pun sudah didapatkan. Setelah itu alat akan menjalankan urutan penyalaan lampu traffic light dengan waktu jeda perpindahan warna lampu sesuai dengan data yang sudah didapatkan tadi. Kemudian program pun kembali lagi untuk memeriksa slot waktu kembali. Demikian seterusnya alat akan beroperasi.


(55)

BAB 4

PENGUJIAN RANGKAIAN ALAT

Pengujian dilakukan secara masing-masing blok dan secara keseluruhan. Pengujian dapat dilakukan setelah masing-masing bagian telah terangkai dengan baik. Berikut adalah hasil pengujian berdasarkan fungsi masing-masing bagian sistem.

4.1 Pengujian Rangkaian Catu Daya

Gambar 4.1 Pengujian Pada Rangkaian Catu Daya

Pada rangkaian ini, sumber tegangan yang digunakan adalah tegangan AC dari PLN. Untuk menguji rangkaian ini, dilakukan pengukuran pada titik-titik yang ditunjukkan pada rangkaian. Berikut merupakan hasil pengukuran tegangan yang dilakukan:

Tabel 4.1 Hasil Pengukuran Tegangan Pada Setiap Titik Uji Test Point Tegangan

TP1 215 V AC

TP2 10 V AC

TP3 9,5V DC


(56)

4.2 Pengujian Rangkaian Pewaktu RTC DS1307

Gambar 4.2 Pengujian Rangkaian Pewaktu RTC DS1307

Pengujian rangkaian ini dilakukan dengan cara merangkai rangkaian seperti gambar. Setelah itu, berikut adalah program yang digunakan untuk menguji coba rangkaian tersebut:

$regfile = "m328pdef.dat" $crystal = 11059200

$lib "mcsbyte.lbx" $lib "ds1307clock.lib"

Config Lcdpin = Pin , Db4 = Portb.0 , Db5 = Portd.7 , Db6 = Portd.6 , Db7 = Portd.5 , Rs = Portb.2 , E =


(57)

Config Lcd = 16 * 2 Cursor Off

Cls

Config Sda = Portc.4 Config Scl = Portc.5

Const Ds1307w = &HD0 Const Ds1307r = &HD1

Tbl_menu Alias Pind.2 Tbl_up Alias Pind.3 Tbl_down Alias Pind.4

Dim Jam As Byte Dim Menit As Byte Dim Detik As Byte

Jam = 16 Menit = 40 Detik = 0

Gosub Ds_setting


(58)

Gosub Disp_waktu Waitms 10

Loop

Disp_waktu: Locate 1 , 1

Lcd "Waktu: : : " If Jam < 10 Then

Locate 1 , 8 Lcd "0" ; Jam Else

Locate 1 , 8 Lcd Jam

End If

If Menit < 10 Then Locate 1 , 11 Lcd "0" ; Menit Else

Locate 1 , 11 Lcd Menit End If

If Detik < 10 Then Locate 1 , 14 Lcd "0" ; Detik


(59)

Locate 1 , 14 Lcd Detik End If

Return

Ds_waktu: I2cstart

I2cwbyte Ds1307w I2cwbyte 0

I2cstart

I2cwbyte Ds1307r I2crbyte Detik , Ack I2crbyte Menit , Ack I2crbyte Jam , Nack I2cstop

Detik = Makedec(detik) Menit = Makedec(menit) Jam = Makedec(jam) Return

Ds_setting:

Detik = Makebcd(detik) Menit = Makebcd(menit) Jam = Makebcd(jam)


(60)

I2cwbyte Ds1307w I2cwbyte 0

I2cwbyte Detik I2cwbyte Menit I2cwbyte Jam I2cstop

Return

Setelah program diinputkan pada mikrokontroler, maka akan tampil jam digital dengan tampilan waktu 16:40:00 pada LCD. Jika hal tersebut tampil, maka rangkaian DS1307 sudah dapat berkomunikasi dengan mikrokontroler dengan baik.

4.3 Pengujian Rangkaian Mikrokontroler ATMega8


(61)

Untuk memastikan rangkaian mikrokontroler dalam keadaan baik, maka dilakukan pengujian rangkaian. Pengujian dilakukan dengan cara merangkai rangkaian seperti terlihat pada gambar dan kemudian menginputkan program sederhana pada mikrokontroler tersebut. Berikut merupakan program sederhana yang diinputkan untuk menguji rangkaian ini:

$regfile = "m328pdef.dat" $crystal = 16000000

Do

Toggle portd.7 Waitms 100 Loop

Ketika program tersebut berjalan, maka LED yang terhubung pada mikrokontroler akan tampak berkedip dengan jeda waktu tertentu. Jika sudah dalam keadaan demikian, maka dapat dikatakan rangkaian tersebut sudah beroperasi dengan baik.


(62)

Pengujian rangkaian ini dilakukan dengan mengukur tegangan pada titik seperti yang ditunjukkan pada gambar diatas. Setelah itu, dilakukan penekanan pada tombol dan pengukuran tegangan dilanjutkan agar mengetahui tombol-tombol sudah beroperasi dengan baik atau tidak. Berikut ini merupakan table pengukuran yang dilakukan:

Tabel 4.2 Hasil Pengukuran Rangkaian Tombol di Setiap Titik Uji

Titik Uji

Tombol 1 Tombol 2 Tombol 3

Tidak Ditekan

Ditekan

Tidak Ditekan

Ditekan

Tidak Ditekan

Ditekan

TP1 4,6V DC 0 4,6V DC 4,6V DC 4,6V DC 4,6V DC

TP2 4,6V DC 4,6V DC 4,6V DC 0 4,6V DC 4,6V DC

TP3 4,6V DC 4,6V DC 4,6V DC 4,6V DC 4,6V DC 0


(63)

Rangkaian LCD diuji dengan cara menghubungkannya dengan mikrokontroler seperti pada gambar diatas. Kemudian pada mikrokontroler diinputkan program sebagai berikut:

$regfile = "m328pdef.dat" $crystal = 11059200

Config Lcdpin = Pin , Db4 = Portb.0 , Db5 = Portd.7 , Db6 = Portd.6 , Db7 = Portd.5 , Rs = Portb.2 , E = Portb.1

Config Lcd = 16 * 2 Cursor Off

Cls

Do

Lcd "Test " Loop

Rangkaian LCD dikatakan dalam kondisi baik apabila setelah program tersebut diinputkan pada mikrokontroler dan dioperasikan, maka pada LCD akan tampil tulisan Test.


(64)

4.6 Pengujian Rangkaian Driver LED

Untuk menguji rangkaian ini, perlu dibuat rangkaian sebagai berikut:

Gambar 4.6 Pengujian Rangkaian Driver LED Kemudian pada mikrokontroler dimasukkan program berikut:

$regfile = "m8def.dat" $crystal = 16000000 Pin_data Alias Portb.0 St_cp Alias Portb.1 'Enable


(65)

Sh_cp Alias Portb.2 'clock

Dim Data_lampu As Byte Dim Waktu_lampu As Byte

Dim Waktu_lampu_kuning As Byte Reset Pin_data

Reset St_cp Reset Sh_cp Waktu_lampu = 5

Waktu_lampu_kuning = 2 Do

Data_lampu = &H84

Shiftout Pin_data , Sh_cp , Data_lampu , 1 Data_lampu = &H21

Shiftout Pin_data , Sh_cp , Data_lampu , 1 Set St_cp

Waitus 100 Reset St_cp

Wait Waktu_lampu Data_lampu = &H0C6

Shiftout Pin_data , Sh_cp , Data_lampu , 1 Data_lampu = &H42


(66)

Waitus 100 Reset St_cp

Wait Waktu_lampu_kuning Data_lampu = &H21

Shiftout Pin_data , Sh_cp , Data_lampu , 1 Data_lampu = &H84

Shiftout Pin_data , Sh_cp , Data_lampu , 1 Set St_cp

Waitus 100 Reset St_cp

Wait Waktu_lampu Data_lampu = &H42

Shiftout Pin_data , Sh_cp , Data_lampu , 1 Data_lampu = &H0C6

Shiftout Pin_data , Sh_cp , Data_lampu , 1 Set St_cp

Waitus 100 Reset St_cp

Wait Waktu_lampu_kuning Loop

Ketika program tersebut dijalankan pada rangkaian, maka lampu led akan bergantian menyala merah, kuning dan hijau pada tiap displaynya.


(67)

4.7 Pengujian Kerja Sistem Secara Keseluruhan

Akhir dari pengujian rangkaian secara keseluruhan ini dimulai dari menjalankan sistem hingga mengeksekusi program yang telah dibuat di PC, maka dihasilkan table data sebagai berikut:

Tabel 4.3 Hasil Pengujian Kerja Sistem Secara Keseluruhan

Slot Waktu Waktu Merah Hijau Kuning

1 01.00–12.59 - - 0 detik

2 03.00–05.59 5 detik 5 detik 2 detik

3 06.00–08.59 15 detik 15 detik 2 detik

4 09.00–11.59 10 detik 10 detik 2 detik

5 12.00–13.59 15 detik 15 detik 2 detik

6 14.00–16.59 10 detik 10 detik 2 detik

7 17.00–20.59 15 detik 15 detik 2 detik


(68)

BAB 5 PENUTUP

5.1 Kesimpulan

Setelah melakukan tahap perancangan dan pembuatan sistem yang kemudian dilanjutkan dengan tahap pengujian maka dapat diambil kesimpulan sebagai berikut:

1. Alat ini sudah bekerja sesuai tujuannya yaitu sebagai Traffic Light yang bekerja mandiri dengan menggunakan RTC (Real Time Clock) DS1307 sebagai pengatur waktu. Dengan demikian kemacatan pada ruas jalan dapat berkurang.

2. Alat ini telah berfungsi dengan baik. Walaupun sumber tegangan terputus, perhitungan waktu akan tetap berjalan otomatis dan dengan adanya batteray CMOS maka waktu dapat direset ulang.

5.2 Saran

Dengan memandang dari segi penggunaan dan sistem kerja suatu peralatan, maka penulis mempunyai beberapa saran untuk pengembangan alat yang di buat apabila ada pihak yang berminat mengembangkan secara luas antara lain:

1. Rangkaian ini dapat dikembangkan lagi dengan menambah sensor kepadatan di setiap ruas jalan, sehingga walaupun waktu tunda habis tetapi sensor masih mendeteksi kepadatan maka otomatis waktu tunda (delay) bertambah dengan sendirinya.


(69)

DAFTAR PUSTAKA

Putra Eko, Afgianto. 2010. Mudah Menguasai Pemrograman Mikrokontroler Atmel AVR Menggunakan BASCOM-AVR. Yogyakarta: Penerbit Graha Ilmu

Wahyudin, Didin. 2007. Belajar Mudah Mikrokontroler AT89S52 Dengan Bahasa BASIC Menggunakan BASCOM-8051. Yogyakarta: Penerbit ANDI.

Winoto, Ardi. 2008. Mikrokontroler AVR ATMega8/32/16/6535 dan pemogramannya dengan bahasa C pada WinAVR. Bandung: Penerbit Informatika.

http://purnomosejati.wordpress.com/2011/08/25/mengenal-komunikasi-i2cinter-integrated-circuit/

Diakses pada tanggal: 29 April 2015

http://pccontrol.wordpress.com/2011/06/27/pengetahuan-dasar-pemrograman-rtc-ds1307-dengan-bahasa-c-codevision-untuk-avr/

Diakses pada tanggal: 29 April 2015

http://akhdanazizan.com/tombol-tekan-push-button Diakses pada tanggal: 29 April 2015

http://www.alldatasheet.com


(70)

LAMPIRAN

A


(71)

(72)

LAMPIRAN

B


(73)

Program yang digunakan pada “RTC (Real Time Clock) DS1307 Sebagai Pengatur Waktu Pada Sistem Traffic Light Adaptif”

$regfile = "m8def.dat" $crystal = 16000000 $lib "ds1307clock.lib"

Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portc.1 , Db7 = Portc.0 , Rs = Portc.5 , E = Portc.4

Config Lcd = 16 * 2 Cursor Off

Cls

Config Sda = Portd.7 Config Scl = Portd.6 Const Ds1307w = &HD0 Const Ds1307r = &HD1 Sqw Alias Pind.5

Tbl_menu Alias Pind.2 Tbl_up Alias Pind.3 Tbl_down Alias Pind.4 Pin_data Alias Portb.0

St_cp Alias Portb.1

'Enable

Sh_cp Alias Portb.2

'clock Awal:

Enable Int0

Enable Interrupts On Int0 Set_waktu Dim Jam As Byte Dim Menit As Byte Dim Detik As Byte Dim Tunda As Byte Dim Temp As Byte

Dim Tunda_set As Byte Dim Slot As Byte

Dim Data1 As Byte Dim Data2 As Byte Locate 1 , 1


(74)

Locate 1 , 8 Lcd " : : " Locate 2 , 1

Lcd "Slot: Det: " Tunda = 0

Do

Gosub Ambil_waktu Gosub Cek_slot Gosub Tampil If Slot = 1 Then

Data1 = &H42 Data2 = &H42 Gosub Kirim_data Waitms 250

Data1 = 0 Data2 = 0

Gosub Kirim_data Waitms 250 Else Gosub Looping_lampu End If Loop Kirim_data:

Shiftout Pin_data , Sh_cp , Data1 , 1 Shiftout Pin_data , Sh_cp , Data2 , 1 Set St_cp Waitus 200 Reset St_cp Return Ambil_waktu: I2cstart I2cwbyte Ds1307w I2cwbyte 0 I2cstart I2cwbyte Ds1307r I2crbyte Detik , Ack I2crbyte Menit , Ack I2crbyte Jam , Nack I2cstop

Detik = Makedec(detik) Menit = Makedec(menit) Jam = Makedec(jam)


(75)

Incr Tunda End If

Temp = Detik Return

Tampil:

Locate 1 , 8 If Jam < 10 Then

Locate 1 , 8 Lcd "0"

End If Lcd Jam

Locate 1 , 11

If Menit < 10 Then Locate 1 , 11 Lcd "0"

End If Lcd Menit Locate 1 , 14

If Detik < 10 Then Locate 1 , 14 Lcd "0"

End If Lcd Detik Locate 2 , 14

If Tunda < 10 Then Locate 2 , 14 Lcd "0"

End If Lcd Tunda Locate 2 , 7 Lcd Slot Return Set_waktu: Disable Int0 Waitms 250 Do

If Tbl_up = 0 Then Incr Menit

If Menit > 59 Then Menit = 0


(76)

End If

If Tbl_down = 0 Then Decr Menit

If Menit > 254 Then Menit = 59

End If Waitms 80 End If

Gosub Tampil Waitms 80

Loop Until Tbl_menu = 0 Waitms 150

Do

If Tbl_up = 0 Then Incr Jam

If Jam > 23 Then Jam = 0

End If Waitms 80 End If

If Tbl_down = 0 Then Decr Jam

If Jam > 254 Then Jam = 23

End If Waitms 80 End If

Gosub Tampil Waitms 80

Loop Until Tbl_menu = 0 Waitms 250

Detik = 0

Detik = Makebcd(detik) Menit = Makebcd(menit) Jam = Makebcd(jam) I2cstart I2cwbyte Ds1307w I2cwbyte 0 I2cwbyte Detik I2cwbyte Menit I2cwbyte Jam I2cstop


(77)

Lcd "Waktu: " Locate 1 , 8 Lcd " : : " Locate 2 , 1

Lcd "Slot: Det: " Goto Awal

Return Cek_slot:

If Jam >= 1 And Menit >= 0 Then If Jam <= 2 And Menit <= 59 Then

Slot = 1 Tunda = 0 End If

End If

If Jam >= 3 And Menit >= 0 Then If Jam <= 5 And Menit <= 59 Then

Slot = 2

Tunda_set = 5 End If

End If

If Jam >= 6 And Menit >= 0 Then If Jam <= 8 And Menit <= 59 Then

Slot = 3

Tunda_set = 15 End If

End If

If Jam >= 9 And Menit >= 0 Then

If Jam <= 11 And Menit <= 59 Then Slot = 4

Tunda_set = 10 End If

End If

If Jam >= 12 And Menit >= 0 Then If Jam <= 13 And Menit <= 59 Then

Slot = 5

Tunda_set = 15 End If

End If

If Jam >= 14 And Menit >= 0 Then If Jam <= 16 And Menit <= 59 Then

Slot = 6


(78)

End If

If Jam >= 17 And Menit >= 0 Then If Jam <= 20 And Menit <= 59 Then

Slot = 7

Tunda_set = 15 End If

End If

If Jam >= 21 And Menit >= 0 Then If Jam <= 23 And Menit <= 59 Then

Slot = 8

Tunda_set = 5 End If

End If

If Jam = 0 And Menit <= 59 Then Slot = 8

Tunda_set = 10 End If

Return

Looping_lampu: Data1 = &H24 Data2 = &H84 Gosub Kirim_data Do

Gosub Ambil_waktu Gosub Tampil

Loop Until Tunda = Tunda_set Tunda = 0

Data1 = &H44 Data2 = &H84 Gosub Kirim_data Do

Gosub Ambil_waktu Gosub Tampil

Loop Until Tunda = 2 Tunda = 0

Data1 = &H84 Data2 = &H24 Gosub Kirim_data


(79)

Gosub Tampil

Loop Until Tunda = Tunda_set Tunda = 0

Data1 = &H84 Data2 = &H44 Gosub Kirim_data Do

Gosub Ambil_waktu Gosub Tampil

Loop Until Tunda = 2 Tunda = 0

Data1 = &H81 Data2 = &H84 Gosub Kirim_data Do

Gosub Ambil_waktu Gosub Tampil

Loop Until Tunda = Tunda_set Tunda = 0

Data1 = &H82 Data2 = &H84 Gosub Kirim_data Do

Gosub Ambil_waktu Gosub Tampil

Loop Until Tunda = 2 Tunda = 0

Data1 = &H84 Data2 = &H81 Gosub Kirim_data Do

Gosub Ambil_waktu Gosub Tampil

Loop Until Tunda = Tunda_set Tunda = 0

Data1 = &H84 Data2 = &H82 Gosub Kirim_data


(80)

Gosub Ambil_waktu Gosub Tampil

Loop Until Tunda = 2 Tunda = 0


(1)

End If

Temp = Detik Return

Tampil:

Locate 1 , 8 If Jam < 10 Then

Locate 1 , 8 Lcd "0"

End If Lcd Jam

Locate 1 , 11

If Menit < 10 Then Locate 1 , 11 Lcd "0"

End If Lcd Menit Locate 1 , 14

If Detik < 10 Then Locate 1 , 14 Lcd "0"

End If Lcd Detik Locate 2 , 14

If Tunda < 10 Then Locate 2 , 14 Lcd "0"

End If Lcd Tunda Locate 2 , 7 Lcd Slot Return

Set_waktu: Disable Int0 Waitms 250 Do

If Tbl_up = 0 Then Incr Menit

If Menit > 59 Then Menit = 0

End If Waitms 80


(2)

End If

If Tbl_down = 0 Then Decr Menit

If Menit > 254 Then Menit = 59

End If Waitms 80 End If

Gosub Tampil Waitms 80

Loop Until Tbl_menu = 0 Waitms 150

Do

If Tbl_up = 0 Then Incr Jam

If Jam > 23 Then Jam = 0

End If Waitms 80 End If

If Tbl_down = 0 Then Decr Jam

If Jam > 254 Then Jam = 23

End If Waitms 80 End If

Gosub Tampil Waitms 80

Loop Until Tbl_menu = 0 Waitms 250

Detik = 0

Detik = Makebcd(detik) Menit = Makebcd(menit) Jam = Makebcd(jam) I2cstart

I2cwbyte Ds1307w I2cwbyte 0

I2cwbyte Detik I2cwbyte Menit I2cwbyte Jam I2cstop


(3)

Locate 1 , 8 Lcd " : : " Locate 2 , 1

Lcd "Slot: Det: " Goto Awal

Return Cek_slot:

If Jam >= 1 And Menit >= 0 Then If Jam <= 2 And Menit <= 59 Then

Slot = 1 Tunda = 0 End If

End If

If Jam >= 3 And Menit >= 0 Then If Jam <= 5 And Menit <= 59 Then

Slot = 2

Tunda_set = 5 End If

End If

If Jam >= 6 And Menit >= 0 Then If Jam <= 8 And Menit <= 59 Then

Slot = 3

Tunda_set = 15 End If

End If

If Jam >= 9 And Menit >= 0 Then

If Jam <= 11 And Menit <= 59 Then Slot = 4

Tunda_set = 10 End If

End If

If Jam >= 12 And Menit >= 0 Then If Jam <= 13 And Menit <= 59 Then

Slot = 5

Tunda_set = 15 End If

End If

If Jam >= 14 And Menit >= 0 Then If Jam <= 16 And Menit <= 59 Then

Slot = 6

Tunda_set = 10 End If


(4)

End If

If Jam >= 17 And Menit >= 0 Then If Jam <= 20 And Menit <= 59 Then

Slot = 7

Tunda_set = 15 End If

End If

If Jam >= 21 And Menit >= 0 Then If Jam <= 23 And Menit <= 59 Then

Slot = 8

Tunda_set = 5 End If

End If

If Jam = 0 And Menit <= 59 Then Slot = 8

Tunda_set = 10 End If

Return

Looping_lampu: Data1 = &H24 Data2 = &H84 Gosub Kirim_data Do

Gosub Ambil_waktu Gosub Tampil

Loop Until Tunda = Tunda_set Tunda = 0

Data1 = &H44 Data2 = &H84 Gosub Kirim_data Do

Gosub Ambil_waktu Gosub Tampil

Loop Until Tunda = 2 Tunda = 0

Data1 = &H84 Data2 = &H24 Gosub Kirim_data Do


(5)

Loop Until Tunda = Tunda_set Tunda = 0

Data1 = &H84 Data2 = &H44 Gosub Kirim_data Do

Gosub Ambil_waktu Gosub Tampil

Loop Until Tunda = 2 Tunda = 0

Data1 = &H81 Data2 = &H84 Gosub Kirim_data Do

Gosub Ambil_waktu Gosub Tampil

Loop Until Tunda = Tunda_set Tunda = 0

Data1 = &H82 Data2 = &H84 Gosub Kirim_data Do

Gosub Ambil_waktu Gosub Tampil

Loop Until Tunda = 2 Tunda = 0

Data1 = &H84 Data2 = &H81 Gosub Kirim_data Do

Gosub Ambil_waktu Gosub Tampil

Loop Until Tunda = Tunda_set Tunda = 0

Data1 = &H84 Data2 = &H82 Gosub Kirim_data Do


(6)

Gosub Ambil_waktu Gosub Tampil

Loop Until Tunda = 2 Tunda = 0