Perancangan Propeller Clock Digital Berbasis Mikrokontroler

(1)

TUGAS AKHIR

PERANCANGAN

PROPELLER CLOCK

DIGITAL

BERBASIS MIKROKONTROLER

Diajukan untuk memenuhi salah satu persyaratan dalam menyelesaikan pendidikan sarjana (S-1) pada Departemen Teknik Elektro

Oleh:

DEPARTEMEN TEKNIK ELEKTRO

FAKULTAS TEKNIK

UNIVERSITAS SUMATERA UTARA

MEDAN

2015

ROBIN

080402011


(2)

LEMBAR PENGESAHAN TUGAS AKHIR

PERANCANGAN PROPELLER CLOCK DIGITAL BERBASIS MIKROKONTROLER

Oleh:

1. Ketua Penguji : Ir. Kasmir Tanjung, M.T. ……….. ROBIN

080402011

Tugas Akhir ini diajukan untuk melengkapi salah satu syarat untuk mememperoleh gelar Sarjana Teknik pada

DEPARTEMEN TEKNIK ELEKTRO FAKULTAS TEKNIK

UNIVERSITAS SUMATERA UTARA MEDAN

Sidang pada tanggal 22 bulan April tahun 2015 di depan Penguji:

2. Anggota Penguji : Rahmad Fauzi, S.T., M.T. ……….. Disetujui oleh:

Pembimbing,

Ir. T. Ahri Bahriun, M.Sc NIP : 194905241985031001

Diketahui oleh:

Ketua Departemen Teknik Elektro FT USU,

NIP. 19540531198601100 Ir. SURYA TARMIZI KASIM, M.Si


(3)

i

ABSTRAK

Seiring perkembangan zaman, banyak cara untuk menampilkan waktu, tidak terbatas hanya pada jam analog atau jam digital yang sering dijual di pasaran. Salah satu contohnya adalah propeller clock, dimana prinsip dari jam ini adalah dengan

memutar sebaris LED yang dipasang berderet di atas sebuah papan PCB dengan kecepatan tinggi sehingga menghasilkan suatu efek persistence of vision dimana mata

kita seolah-olah melihat gambaran dari suatu jam.


(4)

KATA PENGANTAR

Puji dan syukur penulis ucapkan kepada Tuhan Yang Maha Esa atas rahmat dan karunia yang dilimpahkan-Nya sehingga penulis dapat menyelesaikan tugas akhir ini.

Terima kasih kepada kedua orang tua dan dan sanak saudara lainnya yang telah membesarkan, mendidik, dan memberikan dorongan baik moril maupun materiil sehingga penulis mempu menyelesaikan tugas akhir ini.

Selama masa perkuliahan sampai selesainya tugas akhir ini, banyak pihak yang telah membantu penulis dalam berbagai hal. Oleh karena itu dengan setulus hati penulis menyampaikan ungkapan terima kasih yang sebesar-besarnya kepada:

1. Bapak Ir. T. Ahri Bahriun, M.Sc selaku dosen pembimbing atas segala

bimbingan, ilmu, motivasi, dan nasihat selama mengerjakan tugas akhir ini.

2. Bapak Ir. Surya Tarmizi Kasim, M.Si selaku Ketua Departemen Teknik

Elektro FT-USU dan Bapak Rahmat Fauzi, S.T, M.T selaku Sekretaris Departemen Teknik Elektro FT-USU.

3. Seluruh staf pengajar Departemen Teknik Elektro FT-USU yang telah

memberikan ilmu kepada penulis semasa kuliah dan juga seluruh karyawan di Departemen Teknik Elektro FT-USU.

4. Teman-teman dekat semasa kuliah, Budiman Chandra, Denny, Yuyanto,


(5)

iii

5. Dwi Budi Prasetyo yang telah banyak membantu penulis dalam

menyelesaikan tugas akhir ini.

6. Teman-teman UKM Robotik Sikonek USU yang telah berbaik hati

meminjamkan ruangan dan peralatannya selama penulis menyelesaikan tugas akhir ini.

7. Teman-teman anggota laboratorium sistem pengaturan dan komputer,

Teguh, Reza, Arif, dan yang lainnya.

8. Rekan-rekan mahasiswa di departemen teknik elektro yang menjadi teman

belajar selama masa perkuliahan.

9. Berbagai pihak-pihak lainnya yang tidak dapat penulis sebutkan

satu-persatu.

Akhir kata, tugas akhir ini masih jauh dari sempurna karena masih banyak terdapat kesalahan dan kekurangan. Saran dan kritik dari pembaca sangat penulis harapkan agar dapat lebih baik ke depannya.

Medan, April 2015 Penulis


(6)

DAFTAR ISI

ABSTRAK ... i

KATA PENGANTAR... ii

DAFTAR ISI ... iv

DAFTAR GAMBAR ... vii

DAFTAR TABEL ... ix

BAB I PENDAHULUAN ... 1

1.1 Latar Belakang Masalah ... 1

1.2 Rumusan Masalah ... 1

1.3 Tujuan Penulisan ... 1

1.4 Batasan Masalah ... 2

1.5 Metodologi Penelitian ... 2

1.6 Sistematika Penulisan ... 3

BAB II DASAR TEORI ... 5

2.1 Persistence of Vision ... 5

2.2 Mikrokontroler ... 5

2.2.1 Mikrokontroler AVR ATMega8 ... 6

2.2.2 Konfigurasi Pena ATMega8 ... 10

2.2.3 Arsitektur Mikrokontroler ATMega8 ... 11

2.2.4 Peta Memori ATMega8 ... 12

2.2.4.1 Memori Program ... 13

2.2.4.2 Memori Data (SRAM) ... 13

2.2.4.3 Memori Data EEPROM ... 14

2.2.5 Serial Peripheral Interface (SPI) ... 15

2.2.6 Interupsi ... 15


(7)

v

2.4 LED Infrared... 17

2.5 Dioda Foto ... 18

2.6 Motor DC ... 18

2.7 CodeVision AVR ... 20

BAB III PERANCANGAN SISTEM ... 22

3.1 Spesifikasi Sistem ... 22

3.2 Perancangan Perangkat Keras ... 23

3.2.1 Mikrokontroler ATMega8 ... 24

3.2.2 RTC (Real Time Clock) DS 1307... 26

3.2.3 Push Button dan LED ... 27

3.2.4 Sensor Optik ... 29

3.2.5 Rangkaian Regulator Tegangan ... 30

3.2.6 Rangkaian Switching untuk ISP ( In System Programming) ... 34

3.3 Perancangan Perangkat Lunak ... 35

3.3.1 Sistem Perangkat Lunak secara Umum ... 36

3.3.2 Membaca Masukan dari Push Button ... 38

3.3.3 Konversi Karakter ke Tampilan LED ... 38

3.3.4 Interupsi Eksternal ... 39

BAB IV IMPLEMENTASI DAN PENGUJIAN ... 40

4.1 Implementasi ... 40

4.2 Pengujian... 41

4.2.1 Pengujian Catudaya Sistem ... 41

4.2.2 Pengujian Konsumsi Arus ... 42

4.2.3 Pengujian Sistem Minimum ... 43

4.2.4 Pengujian Sensor Optik ... 45

4.2.5 Pengujian Penampilan Karakter ... 46

4.2.6 Pengujian Sistem secara Keseluruhan ... 47

4.2.7 Pengujian Pengaruh Perubahan Tegangan Penggerak Motor terhadap Tampilan Karakter ... 48


(8)

5.1 Kesimpulan ... 50

5.2 Saran ... 50

DAFTAR PUSTAKA ... 52

LAMPIRAN A ... 53


(9)

vii

DAFTAR GAMBAR

Gambar 2.1 Diagram Blok Mikrokontroler AVR ATMega8... 9

Gambar 2.2 Konfigurasi Pena ATMega8...10

Gambar 2.3 Arsitektur Mikrokontroler ATMega8………. 12

Gambar 2.4 Peta Memori Program ATMega8………... 13

Gambar 2.5 Peta Memori data ATMega8……….. 14

Gambar 2.6 Susunan Pena RTC DS1307………... 16

Gambar 2.7 Simbol LED Inframerah………. 17

Gambar 2.8 Simbol Dioda Foto……….. 18

Gambar 2.9 Motor D.C Sederhana………. 19

Gambar 3.1 Blok Diagram Keseluruhan Sistem………. 23

Gambar 3.2 Hubungan RTC DS 1307 dengan Mikrokontroler……….. 27

Gambar 3.3 Hubungan Push Button dan LED dengan Mikrokontroler………. 28

Gambar 3.4 Rangkaian Sensor Optik………. 29

Gambar 3.5 Rangkaian Regulator Tegangan LM 7805……….. 34

Gambar 3.6 Rangkaian Switching……… 35

Gambar 3.7 Diagram Alir dari Perangkat Lunak……… 37

Gambar 4.1 Hasil Pengujian Catudaya Sistem……… 42

Gambar 4.2 Hasil Pengujian Konsumsi Arus………..43

Gambar 4.3 Hasil Pengujian Sistem Minimum……….. 44

Gambar 4.4 Hasil Pengujian Sensor Optik………. 45


(10)

Gambar 4.6 Hasil Pengujian Sistem secara Keseluruhan………... 47 Gambar 4.7 Hasil Pengujian Pengaruh Perubahan Tegangan Penggerak Motor terhadap Tampilan Karakter……..……….49


(11)

ix

DAFTAR TABEL


(12)

ABSTRAK

Seiring perkembangan zaman, banyak cara untuk menampilkan waktu, tidak terbatas hanya pada jam analog atau jam digital yang sering dijual di pasaran. Salah satu contohnya adalah propeller clock, dimana prinsip dari jam ini adalah dengan

memutar sebaris LED yang dipasang berderet di atas sebuah papan PCB dengan kecepatan tinggi sehingga menghasilkan suatu efek persistence of vision dimana mata

kita seolah-olah melihat gambaran dari suatu jam.


(13)

1 BAB I PENDAHULUAN

1.1 Latar Belakang Masalah

Berbagai jenis jam telah dijual di pasaran dengan berbagai bentuk, ukuran, dan cara penampilannya, tetapi masih sangat jarang ditemui jam yang menampilkan waktu dengan menerapkan prinsip persistence of vision dimana waktu ditampilkan

dengan memutar sebaris LED dengan kecepatan yang cukup tinggi sehingga mata manusia tidak dapat mengikutinya dan seolah-olah melihat tampilan karakter yang melayang di udara.

1.2 Rumusan Masalah

Dari latar belakang masalah diatas, timbul permasalahan bagaimana cara untuk menerapkan prinsip tersebut ke dalam sistem sehingga sistem yang dirancang dapat menampilkan waktu dengan baik. Oleh karena itu, dalam tugas akhir ini penulis akan merancang suatu sistem yang menggunakan prinsip tersebut untuk menampilkan waktu.

1.3 Tujuan Penulisan

Tugas akhir ini bertujuan untuk merancang suatu alat yang dapat menampilkan waktu secara digital hanya dengan menggunakan sebaris LED yang diputar dengan menerapkan prinsip persistence of vision.


(14)

1.4 Batasan Masalah

Agar pembahasan dalam Tugas Akhir ini tidak terlalu luas dan menyimpang, maka perlu diberikan batasan-batasan sebagai berikut :

1. Tidak membahas mengenai motor yang digunakan dan spesifikasinya.

2. Hanya menampilkan waktu secara digital.

3. Pengaturan waktu hanya dapat dilakukan ketika rangkaian dalam keadaan

diam.

4. Tidak membahas mengenai sensor optik secara mendalam.

5. Tundaan waktu yang digunakan didapat dengan metode trial and error.

6. Sistem yang dirancang tidak dimaksudkan untuk digunakan dalam waktu

yang lama.

1.5 Metodologi Penelitian

Adapun metodologi yang digunakan secara garis besar dapat dibagi menjadi empat tahap, yaitu :

1. Pemilihan komponen, yaitu memilih jenis motor, mikrokontroler, dan

komponen-komponen elektronik lainnya yang sesuai dengan kebutuhan.

2. Perancangan perangkat keras, yaitu membangun rangkaian seefisien dan

seefektif mungkin dan menghasilkan rangkaian yang dapat bekerja sesuai keinginan.

3. Perancangan perangkat lunak, yaitu penulisan kode program yang akan

ditanamkan ke dalam mikrokontroler sehingga rangkaian dapat bekerja sesuai yang diharapkan.


(15)

3

4. Pengujian dan perbaikan, yaitu menguji rangkaian yang telah dibuat dan

memperbaikinya jika terdapat kesalahan.

1.6 Sistematika Penulisan

Tugas akhir ini ditulis dengan sistematika penulisan sebagai berikut :

BAB I : PENDAHULUAN

Bab ini membahas secara umum tentang latar belakang penulisan, rumusan masalah, tujuan penulisan, batasan masalah, metodologi penulisan, dan sistematika penulisan dari tugas akhir.

BAB II : DASAR TEORI

Bab ini membahas secara umum tentang teori-teori dasar mengenai

persistence of vision, propeller clock, mikrokontroler, dan

komponen-komponen yang digunakan dalam rangkaian.

BAB III : PERANCANGAN SISTEM

Bab ini membahas tentang perancangan perangkat keras yaitu dengan membuat rangkaian di atas papan PCB dan perancangan perangkat lunak yaitu dengan membuat kode program dari sistem yang dirancang dalam tugas akhir ini.

BAB IV : IMPLEMENTASI DAN PENGUJIAN

Bab ini membahas tentang implementasi dan pengujian dari sistem yang telah dibuat.


(16)

BAB V : KESIMPULAN DAN SARAN

Bab ini berisi kesimpulan dari hasil pengujian dan saran untuk membuat sistem yang lebih baik.


(17)

5 BAB II DASAR TEORI

2.1 Persistence of Vision

Persistence of Vision adalah kemampuan mata untuk tetap melihat gambaran

dari suatu objek untuk sepersekian detik setelah objek menghilang dari pandangan. Gambaran dari suatu objek tetap tertinggal di retina meskipun kita telah selesai melihatnya. Mata dan otak kita sebenarnya mempertahankan kesan visual untuk sekitar 1/30 detik.

Prinsip dari persistence of vision digunakan dalam membuat gambar bergerak

dan animasi. Film dibuat dari sejumlah gambar terpisah, ditayangkan pada layar dengan kecepatan 24 gambar per detik. Ketika kita menontoh sebuah film, setiap gambar masih tertinggal di retina untuk waktu yang cukup lama sehingga bergabung dengan gambar berikutnya, dan kita akan mendapatkan ilusi berupa gambar bergerak.

Jika kita mengasumsikan bahwa kecepatan penampilan minimum agar mata kita dapat melihat efek persistence of vision adalah sebanyak 16 tampilan setiap detik,

maka jika prinsip tersebut diterapkan pada propeller clock, kecepatan minimum

motor yang digunakan agar dapat menghasilkan efek persistence of vision dimana

satu tampilan dihasilkan setiap satu putaran adalah sebesar 16 x 60 = 960 rpm.

2.2 Mikrokontroler

Mikrokontroler adalah suatu chip dengan kepadatan yang sangat tinggi,


(18)

satu keping, biasanya terdiri dari CPU (Central Proccesssing Unit), RAM (Random

Acess Memory), EEPROM/ EPROM/ PROM/ ROM, EEPROM/ EPROM/ PROM/

ROM, I/O, Timer dan lain sebagainya. Rata-rata mikrokontroler memiliki instruksi

manipulasi bit, akses ke I/O secara langsung dan mudah, dan proses interupsi yang cepat dan efisien.

Mikrokontroler sekarang ini sudah banyak dapat kita temui dalam berbagai peralatan elektronik, misalnya peralatan yang terdapat di rumah, seperti telepon digital, microwave oven, televisi, dan masih banyak lagi. Mikrokontroler juga dapat

kita gunakan untuk berbagai aplikasi misalnya untuk pengendalian suatu alat, otomasi dalam industri dan lain – lain. Keuntungan menggunakan mikrokontroler adalah harganya murah, dapat diprogram berulang kali, dan dapat diprogram sesuai dengan keinginan kita.

2.2.1 Mikrokontroler AVR ATMega8

Mikrokontroler AVR adalah mikrokontroler RISC 8 bit berdasarkan aristektur

Harvard, yang dibuat oleh Atmel pada tahun 1996. AVR memiliki keunggulan

dibandingkan dengan mikrokontroler lain, keunggulan AVR yaitu AVR memiliki kecepatan eksekusi program yang lebih cepat, karena sebagian besar instruksi

dieksekusi dalam 1 siklus clock, lebih cepat dibandingkan MCS51 yang

membutuhkan 12 siklus clock untuk mengeksekusi 1 instruksi. Mikrokontroler

ATMega8 memiliki fitur yang cukup lengkap. Selain itu, mikrokontroler ATMega8 juga beredar di pasaran sehingga lebih mudah didapatkan.


(19)

7

1. Performa tinggi dengan konsumsi daya yang rendah.

2. Arsitektur RISC yang meliputi:

a. 130 kode instruksi yang hampir semuanya hanya membutuhkan

satu clock untuk dieksekusi.

b. 32 x 8 buah register kerja kegunaan umum c. Pengoperasian full statik.

d. Kecepatan mengeksekusi sampai dengan 16 mega instruksi per

detik pada kecepatan clock 16 MHz.

e. Terdapat rangkaian pengali dua siklus di dalam chip. 3. Memori non-volatile dengan daya tahan yang tinggi.

a. Memori flash sebesar 8 Kbyte.

b. EEPROM 512 Byte.

c. SRAM internal 1 Kbyte.

d. Dapat dihapus-tulis sebanyak 10.000 kali untuk memori flash dan

100.000 kali untuk EEPROM.

e. Dapat menyimpan data selama 20 tahun pada suhu 85˚C atau 100

tahun pada suhu 25˚C.

f. Penguncian program untuk keamanan perangkat lunak.

4. Fitur-fitur periferal:

a. 2 buah timer/counter 8 bit. b. 1 buah timer/counter 16 bit.

c. Real Time Counter dengan osilator tersendiri.


(20)

e. 6 buah kanal ADC dengan akurasi 10 bit.

f. TWI.

g. USART.

h. SPI.

i. Watchdog timer yang dapat diprogram.

j. Komparator analog.

5. Fitur-fitur khusus mikrokontroler:

a. Power-on reset dan brown-out detection.

b. Osilator RC internal yang terkalibrasi. c. Sumber interupsi eksternal dan internal. d. 5 buah modus sleep.

6. 23 jalur I/O yang dapat diprogram.

7. Tegangan pengoperasian yaitu antara 4,5 – 5,5 Volt.

8. Kecepatan antara 0 – 16 MHz.

Adapun diagram blok dari mikrokontroler ATMega8 dapat dilihat pada Gambar 2.1.


(21)

9


(22)

2.2.2 Konfigurasi Pena ATMega8

Konfigurasi Pena ATMega8 untuk kemasan PDIP (Plastic Dual In-line

Package) 28 pena dapat dilihat pada Gambar 2.2.

Gambar 2.2 Konfigurasi Pena ATMega8

Adapun fungsi dari masing-masing pena ATMega8 adalah sebagai berikut:

1. VCC merupakan pena yang berfungsi sebagai masukan catu daya.

2. GND merupakan pena Ground

3. Port B (PB7..0) merupakan pena input/output dua arah dengan resistor pull-up

internal dan pena dengan fungsi khusus seperti

XTAL1/XTAL2/TOSC1/TOSC2.

4. Port C (PC6..0) merupakan pena input/output dua arah dengan resistor pull-up

internal.

5. Port D (PD7..0) merupakan pena input/output dua arah dengan resistor pull-up


(23)

11

6. RESET merupakan pena yang digunakan untuk me-reset mikrokontroler.

7. AVCC merupakan pena masukan tegangan untuk ADC.

8. AREF merupakan pena masukan tegangan referensi ADC.

2.2.3 Arsitektur Mikrokontroler ATMega8

ATMega8 menggunakan arsitektur Harvard dengan memisahkan antara

memori dan bus untuk program dan data untuk memaksimalkan kemampuan dan

kecepatan. Instruksi dalam memori program dieksekusi dengan pipelining single level

dimana ketika satu instruksi dieksekusi, instruksi berikutnya diambil dari memori program. Konsep ini mengakibatkan instruksi dieksekusi setiap siklus clock. CPU

terdiri dari 32x8 bit general purpose register yang dapat diakses dengan cepat dalam

satu siklus clock, yang mengakibatkan operasi Arithmetic Logic Unit (ALU) dapat

dilakukan dalam satu siklus. Pada operasi ALU, dua operand berasal dari register, kemudian operasi dieksekusi dan hasilnya disimpan kembali pada register dalam satu

siklus clock. Operasi aritmetik dan logika pada ALU akan mengubah bit-bit yang

terdapat pada Status Register (SREG). Arsitektur Mikrokontroler ATMega8 dapat


(24)

Gambar 2.3 Arsitektur Mikrokontroler ATMega8

2.2.4 Peta Memori ATMega8

ATMega8 memiliki dua memori utama, yaitu memori program dan memori

data. Memori program terletak pada In-System Reprogrammable Flash Program

Memory sedangkan memori data terbagi dua, yaitu memori data SRAM dan memori


(25)

13

2.2.4.1 Memori Program

ATMega8 memiliki 8Kbyte On-chip In-System Reprogrammable Flash

Memory untuk menyimpan program. Instruksi ATMega8 semuanya memiliki format

16 atau 32 bit, maka memori flash diatur dalam 8K x 16 bit. Memori flash dibagi

kedalam dua bagian, yaitu bagian program boot dan aplikasi seperti terlihat pada

Gambar 2.4. Bootloader adalah program kecil yang bekerja pada saat sistem dimulai

yang dapat memasukkan seluruh program aplikasi ke dalam memori prosesor.

Gambar 2.4 Peta Memori Program ATMega8

2.2.4.2 Memori Data (SRAM)

Memori data AVR ATMega8 terbagi menjadi 3 bagian, yaitu 32 register


(26)

menempati alamat data terbawah, yaitu $00 sampai $1F. Sedangkan memori I/O menempati 64 alamat berikutnya mulai dari $20 hingga $5F. Memori I/O merupakan register yang khusus digunakan untuk mengatur fungsi terhadap berbagai fitur mikrokontroler seperti kontrol register, timer/counter, fungsi-fungsi I/O, dan

sebagainya. 1024 alamat berikutnya mulai dari $60 hingga $45F digunakan untuk SRAM internal. Peta dari memori data ATMega8 dapat dilihat pada Gambar 2.5.

Gambar 2.5 Peta Memori data ATMega8

2.2.4.3 Memori Data EEPROM

ATMega8 terdiri dari 512 byte memori data EEPROM 8 bit, data dapat ditulis/dibaca dari memori ini, ketika catu daya dimatikan, data terakhir yang ditulis


(27)

15

pada memori EEPROM masih tersimpan pada memori ini, atau dengan kata lain

memori EEPROM bersifat non-volatile. Alamat EEPROM mulai dari $000 sampai

$511

2.2.5 Serial Peripheral Interface (SPI)

SPI pada ATMega8 digunakan untuk komunikasi serial dua arah antara pengirim dan penerima. Dalam SPI, pengirim dan penerima memiliki sumber penabuh yang sama. Hal ini membutuhkan jalur penabuh tambahan antara pengirim dan penerima tetapi memungkinkan tingkat transmisi data yang lebih tinggi. SPI dapat dilihat sebagai sebuah register geser 16-bit sinkron dengan setengah 8-bit berada di bagian pengirim dan setengah 8-bit lainnya berada di bagian penerima.

Pengirim dianggap sebagai master karena memberikan sumber penabuh sinkronisasi

antara pengirim dengan penerima sementara penerima ditunjuk sebagai slave.

2.2.6 Interupsi

Eksekusi program yang normal adalah mengikuti urutan instruksi dari program. Namun ada kalanya eksekusi tersebut terputus untuk menanggapi interupsi yang memiliki prioritas lebih tinggi yang berasal dari dalam maupun dari luar mikrokontroler. Ketika interupsi terjadi, mikrokontroler sementara harus menghentikan operasi normal dan melakukan tindakan-tindakan khusus yang disebut rutin layanan interupsi. Setelah interupsi selesai dilakukan maka mikrokontroler akan kembali mengeksekusi program normal yang terputus. ATMega8 dilengkapi dengan 19 buah sumber interupsi dimana tiga diantaranya merupakan sumber interupsi eksternal.


(28)

2.3 RTC (Real Time Clock) DS1307

RTC (Real Time Clock) DS1307 adalah IC yang dibuat oleh perusahaan

Dallas Semiconductor. DS1307 merupakan suatu IC yang dapat digunakan untuk menyimpan informasi waktu yang meliputi detik, menit, jam, hari, tanggal, bulan, dan tahun. Pengaksesan data dilakukan dengan sistem serial sehingga hanya

membutuhkan dua jalur untuk berkomunikasi yaitu jalur clock untuk membawa

informasi data penabuh dan jalur data yang membawa data. Susunan kaki-kaki dari DS1307 dapat dilihat pada Gambar 2.6.

Gambar 2.6 Susunan Pena RTC DS1307

Fungsi dari masing-masing pena DS1307 adalah sebagai berikut:

1. X1 dan X2 adalah pena yang dihubungkan dengan Kristal 32,768 KHz.

2. VBAT adalah pena yang dihubungkan dengan tegangan baterai +3V.

3. GND adalah pena yang dihubungkan dengan ground.

4. SDA adalah pena yang difungsikan sebagai jalur data. 5. SCL adalah pena yang difungsikan sebagai jalur clock.

6. SQW/OUT adalah pena yang digunakan sebagai keluaran sinyal kotak.


(29)

17

Untuk berkomunikasi dengan mikrokontroler ATMega8, RTC DS1307 menggunakan jenis komunikasi I2C.

2.4 LED Infrared

LED Infrared (LED inframerah) adalah suatu jenis dioda yang terbuat dari

bahan Gallium (Ga), Arsen (As), dan fosfor (P) yang apabila diberi tegangan maju maka arus majunya akan membangkitkan cahaya pada pertemuan PN-nya. Tegangan maju antara anoda-katoda berkisar antara 1,5 V – 2 V, sedangkan arus majunya berkisar antara 5 mA – 20 mA. Cahaya yang dibangkitkan oleh LED Inframerah adalah infra merah yang tidak dapat dilihat oleh mata. Led inframerah memancarkan

cahaya pada spektrum inframerah dengan panjang gelombang λ=940 nm. Spektrum

cahaya inframerah ini mempunyai level panas yang paling tinggi diantara sinar-sinar yang lain walaupun tidak tampak oleh mata dan mempunyai efek fotolistrik yang terkuat . Energi yang dihasilkan oleh LED inframerah tidak seluruhnya diubah menjadi bentuk energi cahaya atau foton melainkan dalam bentuk panas sebagian. Simbol dari LED inframerah dapat dilihat pada Gambar 2.7.


(30)

2.5 Dioda Foto

Dioda foto adalah jenis dengan diode biasa, kompone listrik. Cahaya yang dapat dideteksi oleh diode foto ini mulai dari cahaya serta beberapa peralatan di bidang medis. Simbol dari dioda foto dapat dilihat pada Gambar 2.8.

Gambar 2.8 Simbol Dioda Foto

2.6 Motor DC

Motor listrik merupakan perangkat elektromagnetis yang mengubah energi listrik menjadi energi mekanik. Energi mekanik ini digunakan untuk, misalnya memutar impeller pompa, fan atau blower, menggerakan kompresor, mengangkat

bahan,dll. Motor listrik digunakan juga di rumah (mixer, bor listrik, fan angin) dan di

industri. Motor listrik kadangkala disebut “kuda kerja” nya industri sebab diperkirakan bahwa motor-motor menggunakan sekitar 70% beban listrik total di industri.

Motor DC memerlukan suplai tegangan yang searah pada kumparan medan untuk diubah menjadi energi mekanik. Kumparan medan pada motor dc disebut stator


(31)

19

(bagian yang tidak berputar) dan kumparan jangkar disebut rotor (bagian yang berputar). Jika terjadi putaran pada kumparan jangkar dalam pada medan magnet, maka akan timbul tegangan (GGL) yang berubah-ubah arah pada setiap setengah putaran, sehingga merupakan tegangan bolak-balik. Prinsip kerja dari arus searah adalah membalik phasa tegangan dari gelombang yang mempunyai nilai positif dengan menggunakan komutator, dengan demikian arus yang berbalik arah dengan kumparan jangkar yang berputar dalam medan magnet. Bentuk motor paling sederhana memiliki kumparan satu lilitan yang bisa berputar bebas di antara kutub-kutub magnet permanen.

Catu tegangan dc dari baterai menuju ke lilitan melalui sikat yang menyentuh komutator, dua segmen yang terhubung dengan dua ujung lilitan. Kumparan satu lilitan pada gambar di atas disebut angker dinamo. Angker dinamo adalah sebutan untuk komponen yang berputar di antara medan magnet. Secara sederhana, motor DC dapat digambarkan seperti pada Gambar 2.9.


(32)

2.7 CodeVision AVR

CodeVisionAVR pada dasarnya merupakan perangkat lunak pemrograman mikrokontroler keluarga AVR berbasis bahasa C. Ada tiga komponen penting yang

telah diintegrasikan dalam perangkat lunak ini: Compiler C, IDE dan program

generator.

Berdasarkan spesifikasi yang dikeluarkan oleh perusahaan pengembangnya,

Compiler C yang digunakan hampir mengimplementasikan semua komponen standar

yang ada pada bahasa C standar ANSI (seperti struktur program, jenis tipe data, jenis

operator, dan library fungsi standar berikut penamaannya). Tetapi walaupun

demikian, dibandingkan bahasa C untuk aplikasi komputer, compiler C untuk

mikrokontroler ini memiliki sedikit perbedaan yang disesuaikan dengan arsitektur AVR tempat program C tersebut ditanamkan (embedded).

Khusus untuk library fungsi, disamping library standar (seperti fungsi-fungsi

matematik, manipulasi string, pengaksesan memori dan sebagainya),

CodeVisionAVR juga menyediakan fungsi-fungsi tambahan yang sangat bermanfaat dalam pemrograman antarmuka AVR dengan perangkat luar yang umum digunakan dalam aplikasi kontrol. Beberapa fungsi library yang penting diantaranya adalah

fungsi-fungsi untuk pengaksesan LCD, komunikasi I2C, IC RTC (Real time Clock),

sensor suhu, SPI (Serial Peripheral Interface) dan lain sebagainya.

Untuk memudahkan pengembangan program aplikasi, CodeVisionAVR juga


(33)

21

dijumpai pada setiap perangkat lunak berbasis Windows, CodeVisionAVR ini telah mengintegrasikan perangkat lunak downloader yang bersifat In System Programmer

yang dapat digunakan untuk mentransfer kode mesin hasil kompilasi ke dalam sistem memori mikrokontroler AVR yang sedang diprogram.

Selain itu, CodeVisionAVR juga menyediakan sebuah fitur yang dinamakan

dengan Code Generator atau CodeWizardAVR. Secara praktis, fitur ini sangat

bermanfaat membentuk sebuah kerangka program (template), dan juga memberi

kemudahan bagi programmer dalam peng-inisialisasian register-register yang

terdapat pada mikrokontroler AVR yang sedang diprogram. Dinamakan Code

Generator, karena perangkat lunak CodeVision ini akan membangkitkan kode-kode

program secara otomatis setelah fase inisialisasi pada jendela CodeWizardAVR selesai dilakukan. Secara teknis, penggunaan fitur ini pada dasarnya hampir sama dengan application wizard pada bahasa-bahasa pemrograman visual untuk komputer


(34)

22 BAB III

PERANCANGAN SISTEM

3.1 Spesifikasi Sistem

Sistem ini dirancang dengan menggunakan sebuah mikrokontroler untuk mengendalikan sistem. Sistem yang dirancang menggunakan LED yang disusun secara berurutan dan diputar dengan menggunakan sebuah motor DC untuk

menampilkan tampilan waktu dengan menerapkan prinsip persistence of vision.

Sistem ini memiliki sebuah switch yang digunakan untuk menyalakan sistem, 3 buah

push button yang digunakan untuk mengatur waktu, sebuah RTC (Real Time Clock)

untuk menyediakan informasi waktu, sebuah regulator tegangan, sebuah sensor optik dengan menggunakan LED dan dioda foto untuk sinkronisasi, sebuah konektor untuk

pemrograman secara ISP (In system Programming), dan LED untuk menampilkan

waktu secara digital.

LED yang digunakan sebanyak 10 buah LED yang terdiri dari 2 buah LED pada kedua bagian tepi yang selalu selalu berada dalam keadaan menyala sebagai bingkai dan 8 buah LED yang penyalaannya diatur oleh mikrokontroler. Waktu ditampilkan dalam format 6 digit yang terdiri 2 digit jam, 2 digit menit dan 2 digit detik dengan menggunakan tanda titik dua sebagai pemisah. Format waktu yang digunakan adalah 24 jam.

Tiga buah push button digunakan untuk mengendalikan waktu. Satu buah


(35)

23

setiap penekanan, satu buah push button yang digunakan untuk menambah cacah

digit menit sebanyak satu untuk setiap penekanan, dan satu buah push button yang

digunakan untuk membuat nol digit detik ketika ditekan. Secara umum, diagram blok dari keseluruhan sistem dapat dilihat pada Gambar 3.1.

Gambar 3.1 Blok Diagram Keseluruhan Sistem

3.2 Perancangan Perangkat Keras

Perancangan perangkat keras meliputi pemilihan komponen yang digunakan sesuai dengan yang dibutuhkan, perakitan sistem, dan peletakan komponen agar sistem dapat berada dalam keadaan yang seimbang dan dapat berputar dengan baik.

Dalam perancangan perangkat keras ada beberapa hal yang harus diperhatikan antara lain:

1. Keseimbangan sistem dimana sistem yang dirancang harus dibuat seseimbang

mungkin untuk mengurangi getaran yang timbul ketika sistem berputar. Agar

Mikrokontroler ATMega8 RTC

DS1307

3 buah

push button

Sensor optik

8 buah LED


(36)

sistem dapat seimbang, peletakan komponen-komponen yang digunakan harus diatur agar kedua sisi memiliki berat yang sama.

2. Kecepatan putaran motor dimana sudut yang ditempuh oleh LED ketika

menyala dipengaruhi oleh kecepatan putaran motor. Semakin cepat putaran motor maka besar sudut yang dilalui oleh LED juga akan semakin besar sehingga tampilan yang dihasilkan akan semakin melebar. Kecepatan putaran motor dipengaruhi oleh beberapa faktor antara lain jenis dari motor itu sendiri dan juga tegangan yang diberikan. Pada sistem ini, kecepatan putaran dari motor yang digunakan harus lebih besar dari 960 rpm agar dapat memberikan efek persistence of vision.

3. Jarak antara sensor optik dengan permukaan pantulan dimana semakin jauh

jarak antara LED inframerah dengan permukaan pantulan maka cahaya yang dihasilkan oleh LED inframerah menjadi lebih menyebar dan perbedaan intensitas cahaya yang dipantulkan oleh permukaan pantulan dan diterima oleh dioda foto menjadi kecil. Oleh karena itu jarak antara sensor optik dengan permukaan pantulan diusahakan sekecil mungkin sehingga terdapat perbedaan yang jelas antara intensitas cahaya yang diterima oleh dioda foto ketika sensor optik melewati permukaan putih dengan intensitas cahaya yang diterima oleh dioda foto ketika sensor optik melewati permukaan hitam.

3.2.1 Mikrokontroler ATMega8

Sistem yang dirancang menggunakan mikrokontroler jenis ATMega8. Pemilihan dilakukan dengan mempertimbangkan jumlah saluran I/O, fitur-fitur yang


(37)

25

disediakan, kapasitas memori, dan ukuran kemasan. Adapun jumlah saluran I/O yang

digunakan dalam sistem ini adalah sebanyak 11 buah ( 3 buah masukan dari push

button dan 8 buah keluaran ke LED ). Mikrokontroler ATMega8 juga telah memiliki

osilator internal dan unit interupsi eksternal sehingga fasilitas yang disediakan telah cukup untuk sistem yang akan dibuat. Sementara dari segi ukuran, mikrokontroler ATMega 8 memiliki ukuran yang cukup kecil dimana pada sistem yang akan dirancang diharapkan dapat dibuat seringan mungkin sehingga memperkecil beban pada motor DC. Selain itu, mikrokontroler ATMega8 juga mudah diperoleh dan cukup murah. Atas pertimbangan diatas maka diputuskan menggunakan mikrokontroler jenis ATMega8.

Sistem yang dirancang menggunakan osilator internal. Karena sistem yang dirancang ditujukan untuk bekerja dari sejak sistem dinyalakan hingga sistem dimatikan maka tidak diperlukan fungsi reset sehingga pena reset disambungkan

langsung dengan Vcc.

Adapun bandar-bandar I/O yang digunakan dalam sistem dapat dilihat pada Tabel 3.1.


(38)

Tabel 3.1 Daftar PORT/Bandar yang Digunakan

Port/Bandar Bit Fungsi

B 3-5

MOSI, MISO, dan SCK pada ISP (In System

Programming)

B 0-7 Keluaran ke 8 buah LED

C 4 Pena SDA dari RTC DS1307

C 5 Pena SCL dari RTC DS1307

D 2 Masukan untuk interupsi dari sensor optik

D 5-7 Masukan dari push button

3.2.2 RTC (Real Time Clock) DS 1307

Untuk menyediakan dan menyimpan informasi waktu dari sistem yang

dirancang maka diperlukan sebuah RTC (Real Time Clock). Pada tugas akhir ini

dipilih RTC jenis DS 1307 karena cukup mudah diperoleh dan dirasa paling cocok untuk digunakan dalam sistem yang dirancang.

Hubungan RTC DS 1307 dengan mikrokontroler ATMega8 menggunakan komunikasi I2C (Inter-Integrated Circuit) seperti yang ditunjukkan pada Gambar 3.2.


(39)

27

Gambar 3.2 Hubungan RTC DS 1307 dengan Mikrokontroler

Komunikasi I2C antar device menggunakan resistor pull-up yaitu R1 dan R2

pada pena SDA dan SCL dengan nilai resistansi 10K yang mengacu pada datasheet.

Pena SDA pada RTC dihubungkan ke PORTC.4 pada mikrokontroler dan pena SCL

dihubungkan ke PORTC.5. Pena X1 dan X2 dihubungkan dengan kristal quartz

32,768 KHz. VBAT dihubungkan dengan sumber tegangan baterai 3 V.

3.2.3 Push Button dan LED

Sistem yang dirancang menggunakan 3 buah push button dan 10 buah LED

dimana 2 buah LED dihubungkan langsung dengan Vcc dengan menggunakan

resistor 220 Ω dan 8 buah LED yang terhubung langsung dengan mikrokontroler

dengan menggunakan metode katoda bersama seperti yang ditunjukkan pada Gambar 3.3. VBAT 3 X1 1 X2 2 SCL 6 SDA 5 SOUT 7 U DS1307 X1 CRYSTAL 32.768KHz BAT1 3V SCL SDA R2 10K R1 10K Vcc


(40)

Gambar 3.3 Hubungan Push Button dan LED dengan Mikrokontroler

Seperti yang terlihat pada Gambar 3.3, ketiga push button dihubungkan

dengan PORTD.5-7 dan ground dengan alasan agar ketika push button ditekan maka

tegangan di pena dapat dipastikan berada pada 0 V. Push button tidak dihubungkan

dengan resistor karena mikrokontroler telah memiliki resistor pull-up internal

sehingga dapat menghemat komponen dan rangkaian yang dirancang lebih ringan, sementara untuk debouncing dapat dilakukan pada program.

LED 1 dan LED 10 dihubungkan dengan resistor 220 Ω untuk membatasi arus yang melalui kedua LED tersebut. Sementara LED 2 sampai dengan LED 9 dihubungkan langsung dengan PORTB.0-7 pada mikrokontroler karena arus maksimum yang dapat disediakan oleh mikrokontroler yaitu sebesar 40 mA yang

PB0/ICP1 14 PB1/OC1A 15 PB2/SS/OC1B 16 PB3/MOSI/OC2 17 PB4/MISO 18 PB5/SCK 19 PB6/TOSC1/XTAL1 9 PB7/TOSC2/XTAL2 10 PC6/RESET 1 PD0/RXD 2 PD1/TXD 3 PD2/INT0 4 PD3/INT1 5 PD4/T0/XCK 6 PD5/T1 11 PD6/AIN0 12 PD7/AIN1 13 PC0/ADC0 23 PC1/ADC1 24 PC2/ADC2 25 PC3/ADC3 26 PC4/ADC4/SDA 27 PC5/ADC5/SCL 28 AREF 21 AVCC 20 U1 ATMEGA8 LED 4 LED 5 LED 6 LED 7 LED 8 LED 3 LED 2 LED 9 PB1 PB2 PB3 LED 1 LED 10 R7 220 R8 220


(41)

29

masih berada dalam batas kerja LED sedangkan pemilihan metode katoda bersama adalah agar LED dapat dihubungkan tanpa menggunakan resistor dimana jika menggunakan metode anoda bersama maka diperlukan resistor yang terhubung dengan setiap LED sehingga rangkaian akan menjadi lebih berat dan boros komponen.

3.2.4 Sensor Optik

Untuk sinkronisasi sistem, maka diperlukan suatu rangkaian sensor optik yang akan membangkitkan sinyal interupsi setiap kali rangkaian melewati suatu posisi tertentu. Dalam tugas akhir ini, digunakan LED Inframerah dan dioda foto sebagai sensor optik. LED inframerah dan dioda foto dipasang berdampingan dimana dioda foto membaca cahaya pantulan dari LED inframerah. Pada permukaan pantulan akan dibuat sebuah garis hitam sehingga pada saat rangkaian melewati posisi tersebut intensitas cahaya yang diterima oleh dioda foto akan berubah dan menghasilkan sinyal interupsi pada mikrokontroler. Adapun rangkaian sensor optik yang digunakan dapat dilihat seperti pada Gambar 3.4.

Gambar 3.4 Rangkaian Sensor Optik IR LED 1

R4

220

PHOTODIODE 1

R5

10K

RV1

1K

Q1

BC 547

R6

1K


(42)

Seperti terlihat pada gambar, LED inframerah IR LED 1 dan dioda foto PHOTODIODE 1 akan menghasilkan tegangan pada katoda dari dioda foto yang nilainya berubah-ubah sesuai dengan warna dari permukaan pantulan. Sebuah trimpot RV1 digunakan untuk mengatur kepekaan transistor terhadap perubahan warna sehingga sistem dapat bekerja baik dalam kondisi terang maupun kondisi gelap. Sebuah transistor NPN Q1 dengan jenis BC 547 digunakan untuk menguatkan arus yang akan menjadi masukan dari interupsi menuju pena INT0 pada mikrokontroler.

3.2.5 Rangkaian Regulator Tegangan

Sistem dirancang dengan menggunakan catu daya dari baterai dengan tegangan 9V sementara komponen-komponen yang digunakan bekerja dengan catu daya 5V. Oleh karena itu dibutuhkan suatu regulator tegangan yang dapat menghasilkan tegangan keluaran yang stabil sebesar 5V. Untuk menentukan jenis regulator tegangan yang akan dipilih maka terlebih dahulu kita menghitung jumlah arus yang harus dapat disuplai oleh regulator tegangan dengan mengasumsikan kondisi dimana setiap komponen mengkonsumsi arus sampai pada batas maksimum yang memungkinkan.

Dari datasheet mikrokontroler ATMega 8, diketahui bahwa kebutuhan arus

untuk mikrokontroler adalah maksimum sebesar 300 mA, sementara arus maksimum yang dapat disediakan untuk keluaran setiap pena yaitu sebesar 40 mA. Pada kondisi dimana semua LED yang terhubung dengan mikrokontroler yaitu LED 2 sampai LED 9 menyala maka konsumsi arus maksimum untuk kedelapan buah LED adalah


(43)

31

sebesar 8 x 40 mA = 320 mA. Sementara RTC DS1307 telah memiliki catudaya tersendiri sehingga tidak mengkonsumsi arus.

Untuk kebutuhan arus dari kedua buah LED yang terhubung dengan Vcc yaitu LED 1 dan LED 10 dengan tegangan jatuh pada LED sebesar 2 V berdasarkan pengukuran dengan voltmeter maka arus yang mengalir pada LED 1 adalah:

ILED 1 =

Vcc−VLED 1

R7

ILED 1 = 5−2 220

ILED 1 = 3 220

ILED 1≈ 0,0136 A ≈ 14 mA

Karena R7 = R8 maka:

ILED 10 = ILED 1

ILED 10 = 14 mA

Maka arus yang mengalir pada kedua buah LED tersebut adalah sebesar 2 x 14 mA = 28 mA.

Arus maksimum yang mengalir melalui R1 dan R2 yaitu pada saat pena SDA dan pena SCL berada pada logika rendah yaitu:

IR1 = IR2 = Vcc


(44)

= 5

10K

= 0,5 mA

Sehingga jumlah arus maksimum yang melalui R1 dan R2 yaitu 0,5mA + 0,5mA = 1mA.

Untuk rangkaian sensor optik, arus yang mengalir pada LED inframerah IR LED 1 adalah sebesar:

IIR LED 1 =

Vcc−VIR LED 1 R4

IIR LED 1 = 5−2 220

IIR LED 1 = 3 220

IIR LED 1≈ 0.0136 A ≈ 14 mA

Sementara arus maksimum yang mengalir melalui R5 pada saat transistor Q1 saturasi dengan tegangan jatuh pada dioda foto PHOTODIODE 1 sebesar 1,6 V yang didapat melalui pengukuran adalah:

IR5 =

Vcc−VPHOTODIODE 1

R5

IR5 = 5−1,6

10K

IR5 = 3,4 10K


(45)

33

IR5= 0,34 mA

Sedangkan arus maksimum yang mengalir pada kolektor transistor Q1 yaitu ketika transistor berada dalam keadaan saturasi adalah:

IC = Vcc−0

R6

IC = 5−0

1K

IC = 5mA

Maka arus maksimal yang dibutuhkan oleh rangkaian sensor optik adalah sebesar 14 mA + 0,34 mA + 5 mA = 19,34 mA. Dengan demikian total arus maksimum yang harus dapat disediakan oleh regulator tegangan adalah:

Kebutuhan untuk mikrokontroler : 300 mA

Kebutuhan untuk output 8 buah LED : 320 mA

Kebutuhan untuk 2 buah LED : 28 mA

Kebutuhan untuk pena SDA dan SCL : 1 mA

Kebutuhan untuk sensor optik : 19,34 mA

Total : 668,34 mA

Berdasarkan perhitungan diatas, maka diperoleh kesimpulan bahwa rangkaian regulator tegangan harus dapat menyediakan arus minimal 668,34 mA. Oleh karena itu dipilih regulator tegangan LM 7805 yang dapat meregulasi tegangan menjadi 5 V dengan tegangan masukan antara 7 V sampai dengan 25 V serta menyediakan arus sebesar 1 A. Rangkaian regulator tegangan LM 7805 dapat dilihat pada Gambar 3.5.


(46)

Gambar 3.5 Rangkaian Regulator Tegangan LM 7805

Nilai dari C1 adalah 0,33 uF sedangkan C2 adalah sebesar 0,1 uF yang mengacu pada datasheet dari LM 7805.

3.2.6 Rangkaian Switching untuk ISP ( In System Programming)

Pada sistem ini, PORTB.3-5 digunakan untuk 2 fungsi yaitu untuk

menyalakan LED 5-7 dan keperluan ISP (In System Programming). Pada saat

pemrograman, hubungan antara mikrokontroler dengan LED harus terputus karena jika pemrograman dilakukan dengan keadaan LED masih terhubung maka arus yang mengalir melalui programmer akan terbagi menjadi dua yaitu menuju mikrokontroler

dan menuju LED sehingga dapat menimbulkan masalah. Untuk menghindari masalah

tersebut maka diperlukan sebuah rangkaian switching yang dapat memutuskan

hubungan dengan LED pada saat dilakukan pemrograman. Pada sistem ini digunakan

suatu komponen yang terdiri dari 4 buah switch dimana 3 buah diantaranya

dihubungkan antara PORTB.3-5 dengan LED 5-7 untuk keperluan tersebut sementara

VI 1

VO 3

G

N

D

2

U3

7805

BAT2

9V

C1

0.33uF

C2

0.1uF


(47)

35

1 buah yang dihubungkan antara PORTB.2 dengan LED 4 tidak digunakan. Adapun rangkaian switching yang digunakan dapat dilihat pada Gambar 3.6.

Gambar 3.6 Rangkaian Switching

3.3 Perancangan Perangkat Lunak

Pada dasarnya, setiap mikrokontroler memiliki set instruksi. Kumpulan dari set instruksi ini dapat dirancang untuk melakukan tugas tertentu yang disebut perangkat lunak / program dari sistem. Tanpa perangkat lunak, sistem yang dirancang tidak akan dapat bekerja.

Dalam tugas akhir ini, program ditulis dengan menggunakan bahasa pemrograman C dengan menggunakan CodeVision AVR.

PB0/ICP1 14 PB1/OC1A 15 PB2/SS/OC1B 16 PB3/MOSI/OC2 17 PB4/MISO 18 PB5/SCK 19 PB6/TOSC1/XTAL1 9 PB7/TOSC2/XTAL2 10 PC6/RESET 1 PD0/RXD 2 PD1/TXD 3 PD2/INT0 4 PD3/INT1 5 PD4/T0/XCK 6 PD5/T1 11 PD6/AIN0 12 PD7/AIN1 13 PC0/ADC0 23 PC1/ADC1 24 PC2/ADC2 25 PC3/ADC3 26 PC4/ADC4/SDA 27 PC5/ADC5/SCL 28 AREF 21 AVCC 20 U1 ATMEGA8 LED 4 LED 5 LED 6 LED 7 1 2 3 4 8 7 6 5 SW2 SW -DIP4 MOSI MISO SCK


(48)

3.3.1 Sistem Perangkat Lunak secara Umum

Secara sederhana, sistem ini berfungsi untuk menampilkan waktu secara

digital berdasarkan informasi yang diambil dari RTC. Tiga buah push button

digunakan untuk mengatur waktu sementara sensor optik digunakan untuk membangkitkan sinyal interupsi setiap kali rangkaian melewati posisi yang telah ditentukan. Sinyal interupsi inilah yang digunakan sebagai acuan untuk menentukan kapan LED harus dinyalakan. Flowchart dari program yang akan dibuat dapat dilihat

pada Gambar 3.7.

Start Inisialisasi data, variabel, PORT Apakah PB1 ditekan ? Apakah PB2 ditekan ? Apakah PB3 ditekan ? Ambil data dari RTC Ambil data dari RTC Ambil data dari RTC Naikkan cacah jam Naikkan cacah menit Nolkan cacah detik

Kirim data ke RTC

Kirim data ke RTC

Kirim data ke RTC Ya Ya Ya Tidak Tidak Tidak


(49)

37

Interupsi dari sensor optik

Tentukan nilai setiap digit

i=0 Ambil data dari

RTC

i<8 ?

Tampilkan data kolom berikutnya

Tunda 250 µs

Apakah masih ada kolom berikutnya ?

RET

Ya

Tidak

Ya

Tidak

Increment i


(50)

3.3.2 Membaca Masukan dari Push Button

Pembacaan masukan dari push button dilakukan dengan metode polling

dimana mikrokontroler akan terus-menerus bertanya apakah ada tombol yang ditekan. Jika tombol pertama PB1 ditekan maka mikrokontroler akan mengambil data waktu dari RTC dan kemudian menaikkan cacah pada jam sebanyak satu dan mengirimkan data yang telah diperbaharui kembali ke RTC. Jika tombol kedua PB2 ditekan maka mikrokontroler akan mengambil data waktu dari RTC dan kemudian menaikkan cacah pada menit sebanyak satu dan mengirimkan data yang telah diperbaharui kembali ke RTC. Jika tombol ketiga PB3 ditekan maka mikrokontroler akan mengambil data waktu dari RTC dan mengirimkan kembali data dengan membuat bagian detik menjadi nol.

3.3.3 Konversi Karakter ke Tampilan LED

Untuk menampilkan tampilan waktu dengan menggunakan LED maka diperlukan program untuk menentukan kapan masing-masing LED harus menyala agar dapat menampilkan karakter yang diinginkan. Karakter yang akan ditampilkan berjumlah 11 buah yaitu dari angka 0 sampai dengan 9 dan lambang titik dua Proses konversi dilakukan dengan membuat suatu tipe data array yang berisi kumpulan nilai heksadesimal dari setiap karakter yang akan dikirimkan ke PORT B untuk menyalakan LED untuk menampilkan karakter yang diinginkan.


(51)

39

3.3.4 Interupsi Eksternal

Interupsi eksternal digunakan untuk menentukan kapan LED mulai dinyalakan. Ketika rangkaian sensor optik melalui posisi yang telah ditentukan, sinyal interupsi akan memulai proses interupsi menuju ke pena INT 0 pada mikrokontroler. Setelah mikrokontroler mendapatkan sinyal interupsi, maka mikrokontroler akan mengambil data waktu dari RTC. Informasi waktu dari RTC akan dipisah menjadi 6 digit angka yang akan dikonversi menjadi keluaran dalam menyalakan LED.


(52)

40 BAB IV

IMPLEMENTASI DAN PENGUJIAN

4.1 Implementasi

Perancangan sistem diimplementasikan pada perangkat keras dan perangkat lunak. Perangkat keras diimplementasikan pada papan PCB yang terdiri dari beberapa bagian, yaitu regulator tegangan, mikrokontroler, RTC, sensor optik, push button, dan

LED. Perangkat lunak diimplementasikan dengan menggunakan bahasa C dengan

menggunakan CodeVision AVR sebagai compiler dan programmer ISP untuk

menanamkan program ke dalam mikrokontroler. Hasil integrasi dari perangkat keras dan perangkat lunak kemudian dilakukan pengujian.

Adapun tahapan-tahapan dalam implementasi adalah sebagai berikut:

1. Membuat rangkaian pada papan PCB.

2. Meng-install aplikasi-aplikasi yang dibutuhkan seperti CodeVision AVR dan

PROGISP. Sistem operasi yang digunakan adalah Windows 7 Ultimate

3. Menulis program dalam bahasa C dengan CodeVision AVR.

4. Meng-compile program yang dibuat sehingga menghasilkan file HEX.

5. Menanam file HEX ke dalam mikrokontroler ATMega 8 dengan

menggunakan programmer dengan aplikasi PROGISP.


(53)

41

4.2 Pengujian

Pengujian dilakukan untuk mengetahui apakah sistem telah bekerja sesuai dengan yang diharapkan atau tidak. Pengujian dilakukan terdiri dari beberapa tahapan yaitu pengujian pada setiap bagian untuk mengetahui apakah setiap bagian telah berfungsi dengan baik dan pengujian sistem secara keseluruhan.

4.2.1 Pengujian Catudaya Sistem

Pengujian catudaya rangkaian bertujuan untuk mengetahui apakah tegangan yang dihasilkan oleh regulator tegangan LM 7805 telah sesuai dengan tegangan kerja sistem yaitu 5 V. Pengujian ini cukup penting karena jika tegangan yang dihasilkan oleh regulator tegangan lebih besar daripada tegangan kerja sistem maka dapat mengakibatkan kerusakan pada sistem.

Pengujian dilakukan dengan menggunakan multimeter digital. Probe positif (merah) dari multimeter dihubungkan dengan pena 3 dari regulator 7805 sedangkan probe negative (hitam) dihubungkan dengan pena 2 dari regulator 7805. Hasil pengujian ditunjukkan pada Gambar 4.1.

Dari hasil pengujian tersebut tampak bahwa tegangan keluaran yang dihasilkan oleh regulator tegangan adalah 4,94 V dimana nilai tegangan ini telah sesuai dengan yang diinginkan.


(54)

Gambar 4.1 Hasil Pengujian Catudaya Sistem

4.2.2 Pengujian Konsumsi Arus

Pengujian konsumsi arus bertujuan untuk mengetahui berapa besar arus yang dikonsumsi oleh sistem dan melihat apakah arus yang dikonsumsi oleh sistem lebih kecil dari batas maksimum arus yang dapat disuplai oleh regulator tegangan LM7805 yaitu sebesar 1A karena jika arus yang dikonsumsi oleh sistem melebihi 1A maka regulator tegangan LM7805 dapat menjadi rusak.

Pengujian ini dilakukan dengan menuliskan program untuk menyalakan ketujuh buah LED yaitu LED 3 sampai dengan LED 9 dan mengukur besarnya konsumsi arus pada baterai BAT 2. Hasil dari pengujian ini ditunjukkan pada Gambar 4.2.


(55)

43

Gambar 4.2 Hasil Pengujian Konsumsi Arus

Dari hasil pengujian tersebut dapat dilihat bahwa arus yang dikonsumsi oleh sistem yaitu sebesar 0,05 A = 50 mA. Nilai ini jauh dibawah batas arus yang dapat disediakan oleh regulator tegangan LM7805 sehingga tidak ada masalah.

4.2.3 Pengujian Sistem Minimum

Sistem minimum merupakan rangkaian paling sederhana dari sistem mikrokontroler dengan tujuan agar pemrograman mikrokontroler dapat dilakukan secara ISP (In System Programming). Pengujian ini bertujuan untuk melihat apakah

mikrokontroler pada sistem yang dirancang dapat diprogram secara ISP atau tidak karena jika mikrokontroler tidak dapat diprogram secara ISP maka pemrograman


(56)

mikrokontroler harus dilakukan dengan melepaskan IC mikrokontroler dari sistem untuk diprogram dengan programmer khusus. Hal ini dapat mengakibatkan patahnya

pena mikrokontroler yang diakibatkan proses pencabutan dan pemasangan kembali IC mikrokontroler setiap kali kita ingin memrogram ulang.

Pengujian ini dilakukan dengan menghubungkan programmer ISP dengan

sistem. Perangkat lunak yang digunakan adalah PROGISP. Hasil dari pengujian dapat dilihat pada Gambar 4.3.


(57)

45

Dari hasil pengujian, didapatkan bahwa programmer dapat menghapus dan

menulis kembali program pada mikrokontroler yang artinya mikrokontroler telah dapat diprogram secara ISP.

4.2.4 Pengujian Sensor Optik

Pengujian ini bertujuan untuk mengetahui apakah sensor optik dapat bekerja dengan baik dan menghasilkan interupsi setiap kali sistem melewati posisi tertentu. Pengujian ini dilakukan dengan membuat program untuk menyalakan semua LED selama 200 mikrodetik dan mematikannya kembali setiap kali terjadi interupsi. Hasil dari pengujian ini dapat dilihat pada Gambar 4.4.

Gambar 4.4 Hasil Pengujian Sensor Optik

Dari hasil pengujian tersebut terlihat bahwa sensor optik telah bekerja dengan baik dan memberikan interupsi setiap kali sistem melewati posisi tertentu.


(58)

4.2.5 Pengujian Penampilan Karakter

Pengujian ini bertujuan untuk melihat apakah sistem dapat menampilkan karakter dengan baik atau tidak. Pengujian dilakukan dengan menulis program untuk menampilkan karakter 12:34:56 secara berurutan kemudian mencari tahu tundaan waktu antara penyalaan LED sehingga karakter yang dihasilkan dapat dilihat dan dibaca dengan baik. Hasil pengujian ini dapat dilihat pada Gambar 4.5.

Gambar 4.5 Hasil Pengujian Penampilan Karakter

Dari pengujian yang dilakukan didapat bahwa hasil terbaik yaitu dengan menggunakan resolusi 7x7 yaitu dengan menggunakan 7 kolom dimana 5 kolom digunakan untuk menampilkan karakter dan 1 kolom di bagian kiri dan kanan yang berfungsi untuk mematikan LED dan memberi jarak antara karakter dan menggunakan 7 dari 8 buah LED yang tersedia yaitu LED 3 sampai dengan LED 9.


(59)

47

LED 2 tidak digunakan dikarenakan bagian bawah dari karakter yang ditampilkan menjadi terlalu sempit sehingga karakter menjadi lebih susah dibaca.

4.2.6 Pengujian Sistem secara Keseluruhan

Pengujian sistem secara keseluruhan dilakukan dengan menanamkan program pada sistem dan melihat apakah seluruh sistem dapat bekerja sesuai dengan yang diharapkan. Hasil dari pengujian ini dapat dilihat pada Gambar 4.6.

Gambar 4.6 Hasil Pengujian Sistem secara Keseluruhan

Dari hasil pengujian secara keseluruhan, didapat bahwa sistem telah bekerja sesuai dengan yang diharapkan dan dapat menampilkan waktu dengan baik. Kita juga dapat menghitung kecepatan motor pada saat pengujian dilakukan dimana dari hasil pengujian terlihat bahwa 8 buah karakter dapat ditampilkan dalam setengah putaran. Setiap karakter terdiri dari 7 buah kolom dan setiap kolom ditampilkan dalam waktu 250µs sehingga waktu yang dibutuhkan untuk satu putaran adalah 2 x 8 x 7 x 250µs = 28ms = 0,028s. Maka kecepatan putaran motor adalah 60/0,028 ≈ 2143 rpm.


(60)

4.2.7 Pengujian Pengaruh Perubahan Tegangan Penggerak Motor terhadap Tampilan Karakter

Pengujian ini dilakukan dengan mengukur tegangan yang diberikan kepada motor ketika motor dalam keadaan berputar. Tegangan akan diturunkan secara bertahap dan melihat perubahan yang terjadi terhadap karakter yang ditampilkan. Gambar 4.7 (a) sampai dengan (d) memperlihatkan tampilan dari jam untuk tegangan penggerak motor DC sesuai dengan yang diperlihatkan oleh multimeter digital.


(61)

49

(c) (d)

Gambar 4.7 Hasil Pengujian Pengaruh Perubahan Tegangan Penggerak Motor terhadap Tampilan Karakter

Dari hasil pengujian diatas terlihat bahwa semakin kecil tegangan yang diberikan kepada motor maka karakter yang ditampilkan akan semakin menyempit.


(62)

50 BAB V

KESIMPULAN DAN SARAN

5.1 Kesimpulan

Setelah melakukan perancangan dan pengujian pada sistem, maka dapat diambil kesimpulan sebagai berikut:

1. Sistem yang dibuat sudah berhasil untuk menampilkan waktu dengan baik. 2. Hasil terbaik dari penampilan karakter yaitu dengan hanya menggunakan 7

buah LED yaitu LED 3 sampai dengan LED 9.

3. Semakin kecil tegangan yang diberikan kepada motor maka karakter yang

ditampilkan akan semakin menyempit.

4. Sistem yang dibuat dapat menyimpan informasi waktu pada RTC sehingga

informasi waktu tetap dapat diperbaharui walaupun sistem tidak diberi catudaya.

5. Sistem membutuhkan penahan agar putaran menjadi lebih stabil.

6. Sistem tidak dapat digunakan untuk waktu yang lama dikarenakan motor

menjadi terlalu panas dan dikhawatirkan dapat menjadi rusak.

5.2 Saran

Agar sistem dapat dikembangkan menjadi lebih baik, maka terdapat beberapa saran yang dapat diberikan, antara lain:


(63)

51

1. Tampilan yang dihasilkan dapat berupa jam analog atau dapat dipilih antara tampilan analog dengan tampilan digital.

2. Sistem yang dibuat diharapkan menggunakan satu buah sumber catudaya baik

untuk motor dan rangkaian sehingga tidak memerlukan baterai.

3. Sistem yang dibuat sebaiknya dapat diatur tanpa menghentikan putaran

terlebih dahulu, misalnya dengan menggunakan remote control.

4. Sistem yang dibuat diharapkan memiliki fungsi-fungsi tambahan lainnya

misalnya alarm.

5. Sistem yang dibuat sebaiknya dapat digunakan untuk waktu yang lama yaitu


(64)

DAFTAR PUSTAKA

1. Andrianto, Heri. 2008. Pemrograman Mikrokontroler AVR ATmega16

Menggunakan Bahasa C (CodeVisionAVR). Bandung: Informatika.

2. Bejo, Agus. 2008. C & AVR, Rahasia Kemudahan Bahasa C dalam

Mikrokontroler ATMega8535. Yogyakarta: Graha Ilmu.

3. Budiharto, Widodo. 2005. Perancangan Sistem dan Aplikasi Mikrokontroler.

Edisi Pertama. Jakarta: Erlangga.

4. Tarigan, Pernantin. 2011. Sistem Tertanam. Yogyakarta: Graha Ilmu.

5. Wardhana, Lingga. 2006. Belajar Sendiri Mikrokontroler AVR seri

ATMEGA8535. Yogyakarta: Andi.

6. Winoto, Ardi. 2010. Mikrokontroler AVR ATMega 8/32/16/8535 dan

Pemrogramannya dengan Bahasa C pada WinAVR. Bandung: Informatika


(65)

53 L AM P IRAN A RANG K AI AN S K E M A T IK S IS T E M YANG D IRANCAN G PB0/ICP1 14 PB1/OC1A 15 PB2/SS/OC1B 16 PB3/MOSI/OC2 17 PB4/MISO 18 PB5/SCK 19 PB6/TOSC1/XTAL1 9 PB7/TOSC2/XTAL2 10 PC6/RESET 1 PD0/RXD 2 PD1/TXD 3 PD2/INT04 PD3/INT1 5 PD4/T0/XCK 6 PD5/T1 11 PD6/AIN0 12 PD7/AIN1 13 PC0/ADC0 23 PC1/ADC124 PC2/ADC2 25 PC3/ADC3 26 PC4/ADC4/SDA27 PC5/ADC5/SCL 28 AREF 21 AVCC 20 U1 ATMEGA8 LED 4 LED 5 LED 6 LED 7 LED 8 LED 3 LED 2 LED 9 VBAT 3 X1 1 X2 2 SCL 6 SDA 5 SOUT 7 U2 DS1307 R2 10K R1 10K BAT1 3V X1 CRYSTAL 32.768 K IR LED 1

R4 220 PHOTODIODE 1 R5 10K RV1 1K Q1 BC 547 R6 1K PB1 PB2 PB3 MOSI MISO SCK R3 1K RESET VI 1 VO 3 G N D 2 U3 7805 BAT2 9V C1 0.33uF C2 0.1uF 1 2 3 4 5 6 J1 CONN-SIL6 RESET SCK MISO MOSI SW1 1 2 3 4 8 7 6 5 SW2 SW -DIP4 LED 1 LED 10 R7 220 R8 220


(66)

LAMPIRAN B

KODE PROGRAM SISTEM YANG DIRANCANG

/***************************************************** This program was produced by the

CodeWizardAVR V1.25.3 Standard Automatic Program Generator Project : propeller clock Version :

Date : 12/03/2015

Chip type : ATmega8 Program type : Application Clock frequency : 1.000000 MHz Memory model : Small

External SRAM size : 0 Data Stack size : 256

*****************************************************/ #include <mega8.h>

#include <delay.h> // I2C Bus functions #asm

.equ __i2c_port=0x15 ;PORTC .equ __sda_bit=4

.equ __scl_bit=5 #endasm

#include <i2c.h>

// DS1307 Real Time Clock functions #include <ds1307.h>

// Declare your global variables here unsigned char jam, menit, detik; int i, j;

int digit[8];

const char data[]={

0x00, 0x7C, 0x82, 0x82, 0x82, 0x7C, 0x00, // 0 0x00, 0x00, 0x42, 0xFE, 0x02, 0x00, 0x00, // 1 0x00, 0x42, 0x86, 0x8A, 0x92, 0x62, 0x00, // 2 0x00, 0x44, 0x82, 0x92, 0x92, 0x6C, 0x00, // 3 0x00, 0x18, 0x28, 0x48, 0xFE, 0x08, 0x00, // 4 0x00, 0xF2, 0x92, 0x92, 0x92, 0x9E, 0x00, // 5 0x00, 0x7C, 0x92, 0x92, 0x92, 0x8C, 0x00, // 6 0x00, 0x80, 0x80, 0x9E, 0xA0, 0xC0, 0x00, // 7 0x00, 0x6C, 0x92, 0x92, 0x92, 0x6C, 0x00, // 8 0x00, 0x62, 0x92, 0x92, 0x92, 0x7C, 0x00, // 9 0x00, 0x00, 0x6C, 0x6C, 0x00, 0x00, 0x00 // :


(67)

55

};

// External Interrupt 0 service routine interrupt [EXT_INT0] void ext_int0_isr(void) {

rtc_get_time(&jam, &menit, &detik);

digit[0]=jam/10; // digit pertama jam digit[1]=jam%10; // digit kedua jam digit[2]=11; // :

digit[3]=menit/10; // digit pertama menit digit[4]=menit%10; // digit kedua menit

digit[5]=11; // :

digit[6]=detik/10; // digit pertama detik digit[7]=detik%10; // digit kedua detik

for(i=0; i<8; i++) {

if(digit[i]==0) {

for(j=0; j<7; j++) { PORTB=data[j]; delay_us(250); } } else if(digit[i]==1) {

for(j=7; j<14; j++) { PORTB=data[j]; delay_us(250); } } else if(digit[i]==2) {

for(j=14; j<21; j++) { PORTB=data[j]; delay_us(250); } } else if(digit[i]==3) {

for(j=21; j<28; j++) { PORTB=data[j]; delay_us(250); } } else if(digit[i]==4) {


(68)

{ PORTB=data[j]; delay_us(250); } } else if(digit[i]==5) {

for(j=35; j<42; j++) { PORTB=data[j]; delay_us(250); } } else if(digit[i]==6) {

for(j=42; j<49; j++) { PORTB=data[j]; delay_us(250); } } else if(digit[i]==7) {

for(j=49; j<56; j++) { PORTB=data[j]; delay_us(250); } } else if(digit[i]==8) {

for(j=56; j<63; j++) { PORTB=data[j]; delay_us(250); } } else if(digit[i]==9) {

for(j=63; j<70; j++) { PORTB=data[j]; delay_us(250); } } else {

for(j=70; j<77; j++) {

PORTB=data[j]; delay_us(250); }


(69)

57

} }

void main(void) {

// Declare your local variables here // Input/Output Ports initialization // Port B initialization

// Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out

// State7=0 State6=0 State5=0 State4=0 State3=0 State2=0 State1=0 State0=0 PORTB=0x00;

DDRB=0xFF;

// Port C initialization

// Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In // State6=T State5=T State4=T State3=T State2=T State1=T State0=T PORTC=0x00;

DDRC=0x00;

// Port D initialization

// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T PORTD=0xF0;

DDRD=0x00;

// External Interrupt(s) initialization // INT0: On

// INT0 Mode: Falling Edge // INT1: Off

GICR|=0x40; MCUCR=0x02; GIFR=0x40;

// Timer(s)/Counter(s) Interrupt(s) initialization TIMSK=0x00;

// I2C Bus initialization i2c_init();

// DS1307 Real Time Clock initialization // Square wave output on pin SQW/OUT: Off // SQW/OUT pin state: 0

rtc_init(0,0,0);

// Global enable interrupts #asm("sei")


(70)

while (1) {

if(PIND.5==0) {

rtc_get_time(&jam, &menit, &detik); jam++;

if(jam>23) jam=0;

rtc_set_time(jam, menit, detik); PORTB=0b10101010 ; delay_ms(200); PORTB=0x00 ; } else if(PIND.6==0) {

rtc_get_time(&jam, &menit, &detik); menit++; if(menit>59) { menit=0; jam++; }

rtc_set_time(jam, menit, detik); PORTB=0b11001100; delay_ms(200); PORTB=0x00 ; } else if(PIND.7==0) {

rtc_get_time(&jam, &menit, &detik); rtc_set_time(jam, menit, 0);

PORTB=0b11110000; delay_ms(200); PORTB=0x00 ; } }; }


(1)

53

L

AM

P

IRAN A

RANG

K

AI

AN S

K

E

M

A

T

IK

S

IS

T

E

M

YANG

D

IRANCAN

G

PB0/ICP1 14 PB1/OC1A 15 PB2/SS/OC1B 16 PB3/MOSI/OC2 17 PB4/MISO 18 PB5/SCK 19 PB6/TOSC1/XTAL1 9 PB7/TOSC2/XTAL2 10 PC6/RESET 1 PD0/RXD 2 PD1/TXD 3 PD2/INT04 PD3/INT1 5 PD4/T0/XCK 6 PD5/T1 11 PD6/AIN0 12 PD7/AIN1 13 PC0/ADC0 23 PC1/ADC124 PC2/ADC2 25 PC3/ADC3 26 PC4/ADC4/SDA27 PC5/ADC5/SCL 28 AREF 21 AVCC 20 U1 ATMEGA8 LED 4 LED 5 LED 6 LED 7 LED 8 LED 3 LED 2 LED 9 VBAT 3 X1 1 X2 2 SCL 6 SDA 5 SOUT 7 U2 DS1307 R2 10K R1 10K BAT1 3V X1 CRYSTAL 32.768 K IR LED 1

R4 220 PHOTODIODE 1 R5 10K RV1 1K Q1 BC 547 R6 1K PB1 PB2 PB3 MOSI MISO SCK R3 1K RESET VI 1 VO 3 G N D 2 U3 7805 BAT2 9V C1 0.33uF C2 0.1uF 1 2 3 4 5 6 J1 CONN-SIL6 RESET SCK MISO MOSI SW1 1 2 3 4 8 7 6 5 SW2 SW -DIP4 LED 1 LED 10 R7 220 R8 220


(2)

LAMPIRAN B

KODE PROGRAM SISTEM YANG DIRANCANG

/***************************************************** This program was produced by the

CodeWizardAVR V1.25.3 Standard Automatic Program Generator Project : propeller clock Version :

Date : 12/03/2015

Chip type : ATmega8 Program type : Application Clock frequency : 1.000000 MHz Memory model : Small

External SRAM size : 0 Data Stack size : 256

*****************************************************/ #include <mega8.h>

#include <delay.h> // I2C Bus functions #asm

.equ __i2c_port=0x15 ;PORTC .equ __sda_bit=4

.equ __scl_bit=5 #endasm

#include <i2c.h>

// DS1307 Real Time Clock functions #include <ds1307.h>

// Declare your global variables here unsigned char jam, menit, detik; int i, j;

int digit[8];

const char data[]={

0x00, 0x7C, 0x82, 0x82, 0x82, 0x7C, 0x00, // 0 0x00, 0x00, 0x42, 0xFE, 0x02, 0x00, 0x00, // 1 0x00, 0x42, 0x86, 0x8A, 0x92, 0x62, 0x00, // 2 0x00, 0x44, 0x82, 0x92, 0x92, 0x6C, 0x00, // 3 0x00, 0x18, 0x28, 0x48, 0xFE, 0x08, 0x00, // 4 0x00, 0xF2, 0x92, 0x92, 0x92, 0x9E, 0x00, // 5 0x00, 0x7C, 0x92, 0x92, 0x92, 0x8C, 0x00, // 6 0x00, 0x80, 0x80, 0x9E, 0xA0, 0xC0, 0x00, // 7 0x00, 0x6C, 0x92, 0x92, 0x92, 0x6C, 0x00, // 8 0x00, 0x62, 0x92, 0x92, 0x92, 0x7C, 0x00, // 9 0x00, 0x00, 0x6C, 0x6C, 0x00, 0x00, 0x00 // :


(3)

};

// External Interrupt 0 service routine interrupt [EXT_INT0] void ext_int0_isr(void) {

rtc_get_time(&jam, &menit, &detik);

digit[0]=jam/10; // digit pertama jam digit[1]=jam%10; // digit kedua jam digit[2]=11; // :

digit[3]=menit/10; // digit pertama menit digit[4]=menit%10; // digit kedua menit

digit[5]=11; // :

digit[6]=detik/10; // digit pertama detik digit[7]=detik%10; // digit kedua detik

for(i=0; i<8; i++) {

if(digit[i]==0) {

for(j=0; j<7; j++) {

PORTB=data[j]; delay_us(250); }

}

else if(digit[i]==1) {

for(j=7; j<14; j++) {

PORTB=data[j]; delay_us(250); }

}

else if(digit[i]==2) {

for(j=14; j<21; j++) {

PORTB=data[j]; delay_us(250); }

}

else if(digit[i]==3) {

for(j=21; j<28; j++) {

PORTB=data[j]; delay_us(250); }

}

else if(digit[i]==4) {


(4)

PORTB=data[j]; delay_us(250); }

}

else if(digit[i]==5) {

for(j=35; j<42; j++) {

PORTB=data[j]; delay_us(250); }

}

else if(digit[i]==6) {

for(j=42; j<49; j++) {

PORTB=data[j]; delay_us(250); }

}

else if(digit[i]==7) {

for(j=49; j<56; j++) {

PORTB=data[j]; delay_us(250); }

}

else if(digit[i]==8) {

for(j=56; j<63; j++) {

PORTB=data[j]; delay_us(250); }

}

else if(digit[i]==9) {

for(j=63; j<70; j++) {

PORTB=data[j]; delay_us(250); }

} else

{

for(j=70; j<77; j++) {

PORTB=data[j]; delay_us(250); }


(5)

} }

void main(void) {

// Declare your local variables here // Input/Output Ports initialization // Port B initialization

// Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out

// State7=0 State6=0 State5=0 State4=0 State3=0 State2=0 State1=0 State0=0 PORTB=0x00;

DDRB=0xFF;

// Port C initialization

// Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In // State6=T State5=T State4=T State3=T State2=T State1=T State0=T PORTC=0x00;

DDRC=0x00;

// Port D initialization

// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T PORTD=0xF0;

DDRD=0x00;

// External Interrupt(s) initialization // INT0: On

// INT0 Mode: Falling Edge // INT1: Off

GICR|=0x40; MCUCR=0x02; GIFR=0x40;

// Timer(s)/Counter(s) Interrupt(s) initialization TIMSK=0x00;

// I2C Bus initialization i2c_init();

// DS1307 Real Time Clock initialization // Square wave output on pin SQW/OUT: Off // SQW/OUT pin state: 0

rtc_init(0,0,0);

// Global enable interrupts #asm("sei")


(6)

{

if(PIND.5==0) {

rtc_get_time(&jam, &menit, &detik); jam++;

if(jam>23) jam=0;

rtc_set_time(jam, menit, detik); PORTB=0b10101010 ;

delay_ms(200); PORTB=0x00 ; } else if(PIND.6==0) {

rtc_get_time(&jam, &menit, &detik); menit++;

if(menit>59) {

menit=0; jam++; }

rtc_set_time(jam, menit, detik); PORTB=0b11001100;

delay_ms(200); PORTB=0x00 ;

}

else if(PIND.7==0) {

rtc_get_time(&jam, &menit, &detik); rtc_set_time(jam, menit, 0);

PORTB=0b11110000; delay_ms(200); PORTB=0x00 ; }

}; }