Anda di halaman 1dari 120

LAPORAN PROYEK AKHIR

BEL SEKOLAH TERPROGRAM BERBASIS


MIKROKONTROLER ATMega32

Disusun Oleh :
ALEXANDER DAVID SIHOTANG
NIM. 10/298535/NT/13968

PROGRAM DIPLOMA TEKNIK ELEKTRO


SEKOLAH VOKASI
UNIVERSITAS GADJAH MADA
YOGYAKARTA
2013

LAPORAN PROYEK AKHIR

BEL SEKOLAH TERPROGRAM BERBASIS


MIKROKONTROLER ATMega32
Laporan Proyek Akhir ini digunakan sebagai salah satu syarat
untuk memenuhi jenjang pendidikan diploma tiga
pada Program Diploma Teknik Elektro

Disusun Oleh :
ALEXANDER DAVID SIHOTANG
NIM. 10/298535/NT/13968

PROGRAM DIPLOMA TEKNIK ELEKTRO


SEKOLAH VOKASI
UNIVERSITAS GADJAH MADA
YOGYAKARTA
2013

PERNYATAAN
Dengan ini saya menyatakan bahwa proyek akhir ini tidak terdapat karya
yang pernah diajukan untuk memperoleh ahli madya di suatu perguruan tinggi,
dan sepanjang pengetahuan saya tidak terdapat karya atau pendapat yang pernah
ditulis atau diterbitkan oleh orang lain, kecuali yang secara tertulis diacu dalam
naskah ini dan disebutkan dalam daftar pustaka.

Yogyakarta, 4 Oktober 2013

ALEXANDER DAVID SIHOTANG

INTISARI
Perkembangan

kemajuan

teknologi merupakan

hal

yang sangat

diperhatikan dalam perkembangan zaman. Seiringnya dengan kemajuan zaman


sehingga hampir semua yang manual dibuat menjadi otomasi. Dengan adanya
sistem komputerisasi ini membuat pengguna lebih mudah dalam menyelesaikan
segala permasalahan. Dalam kegiatan belajar menganjar disekolah pihak penjaga
sekolah/guru piket disibukkan dengan aktifitas membuyikan bel sekolah saat jam
masuk sekolah, ganti jam masuk, pergantian jam belajar, istirahat, serta pulang
sekolah yang mungkin setiap hari lebih dari 5x.
Bel sekolah merupakan salah satu perangkat yang tidak dapat dipisahkan
dari sekolah. Bel sekolah pelajaran berfungsi untuk memberikan tanda pergantian
jam untuk setiap pergantian jam. Tetapi sayangnya petugas sering kali lupa
membuyikan bel sekolah pada saat yang tepat, sehingga pergantian pelajaran
menjadi kacau, pelajaran satu dengan yang lainya durasi belajar salah satu mata
pelajaran di kelas berbeda.

ABSTRACT

Development of technology advances is very important these day as time


passes almost all of the manual are converted into automation. Computerized
system makes the user easier in solving all the problems. In the course of studying
the school caretaker / teacher picket busy with activity when the school bell
school hours, changing hours of admission, change of hours of study, rest, and
home schools may be every day more than fivetimes . School bell is a device that
can not be separated from the school . School bell lesson serves to give any sign
of daylight saving time change to daylight saving time change. But unfortunately
officers often forgotten in school bell at the right time, so that the lessons turn into
chaos.

MOTTO

ORA ET LABORA ( Bekerja Sambil Berdoa )

PERSEMBAHAN
Karya kecil ini saya persembahkan untuk :
Kedua orang tua Bapak dan Ibu yang sangat saya cintai dan selalu
menyayangi, membimbing, memberi semangat, dan mendoakan. Adik ku yang
selalu memberi semangat dan dorongannya agar dapat menyelesaikan proyek
akhir. Sahabat- sahabat, dan saudara-saudara ku semua yang tidak dapat
disebutkan satu- satu terimakasih atas dukungan dan doanya.

PRAKATA
Puji syukur kepada Tuhan yang Maha ESA atsa karunianya, berkah, serta
anugerahnya-Nya sehingga saya sendiri dapat menyelesaikan dan menyusun
Laporan Tugas Akhir dengan baik dan lancar sehingga laporan ini dapat
terselesaikan.
Laporan ini disususn untuk menyelesaikan salah satu persyaratan dalam
menyelesaikan pendidikan di Program Diploma Teknik Elektro UGM. Dalam
laporan Tugas Akhir ini saya mengambil judul Bel Sekolah Terprogram Berbasis
Mikrokontroler

dimana judul ini berfungsi untuk mempermudah pengaturan

waktu sekolah dan mengoptimalkan Kurikulum yang ada di sekolah.


Proyek Akhir ini dapat terselesaikan berkat bantuan dari berbagai pihak
yang terkait. Oleh karena itu pula, pada kesempatan ini tidak lupa pula saya
sampaikan penghargaan dan rasa terimakasih yang sebesar besarnya kepada :
1. Bapak Ir. Lukman Subekti.,MT selaku ketua dari Program Diploma
Teknik Elektro Universitas Gadjah Mada
2. Bapak Hidayat Nur Isnianto, ST.M.Eng selaku dosen pembimbing Tugas
Akhir di Program Diploma Teknik Elektro Universitas Gadjah Mada
3. Kepada Kedua Orang Tua yang telah memberikan dukungannya dan
doanya dalam menyelesaikan pendidikan di Program Diploma Teknik
Elektro Universitas Gadjah Mada

4.

Kepada Adik yang telah memberikan semangat dan keceriaan dalam


menyelesaikan

pendidikan

di

Program

Diploma

Teknik

Elektro

Universitas Gadjah Mada


5. Kepada sanak saudara yang selalu memberikan semangat dan mendoakan
agar dapat menyelesaikan pendidikan di Program Diploma Teknik Elektro
Universitas Gadjah Mada
6. Segenap teman-teman yang telah memberikan dukungan kepada saya
selama menyelesaikan pendidikan dan menyelesaikan tugas akhir.
Pada laporan tugas akhir ini saya menyadari bahwa masih jauh dari
kesempurnaan baik dari segi meteri dan penulisanya. Oleh karena itu kritik dan
saran yang membangun dari pembaca akan sangat dibutuhkan bagi kesempurnaan
penyusunan laporan. Saya berharap laporan tugas akhir ini dapat memberikan
manfat dan menanbah ilmu dan menanbah wawasan bagi pembaca pada umumnya
maupun mahasiswa Diploma Teknik Elektro pada khususnya.
Yogyakarta.

Penyusun

DAFTAR ISI

HALAMAN JUDUL .................................................................................. i


LEMBAR PENGESAHAN ........................................................................ ii
PERYATAAN ............................................................................................. iii
INTISARI ................................................................................................... iv
ABSTRACT ............................................................................................... v
MOTTO ..................................................................................................... vi
PERSEMBAHAN ...................................................................................... vii
PRAKATA ................................................................................................. viii
DAFTAR ISI ............................................................................................... ix
DAFTAR GAMBAR................................................................................... xiii
DAFTAR TABEL ....................................................................................... xv
BAB I PENDAHULUAN
1.1 Latar Belakang ................................................................................. 1
1.2 Fungsi kegunaan......................................................................... ........ 2
1.3 Maksud dan Tujuan......................... 2

1.4 Batasan Masalah.................................. 3


1.5 Metode Pengumpulan Data . 4
1.6 Sistematika Penulisan Laporan.. . 4
BAB II DASAR TEORI
2.1 Catu Daya. ........................................................................................ 6
2.1.1 Tranformator ............................................................................ 7
2.1.2 Rangkaian Penyearah................................................................ 8
2.1.3 Regulator .................................................................................. 9
2.2 Komponen yang Dipergunakan ......................................................... 10
2.2.1 RTC DS1307 ............................................................................ 10
2.2.2 Konfigurasi Pin RTC DS1307 .................................................. 11
2.2.3 Register-register DS 1307 .............. 13
2.3 Mikrokontroler Atmega . ............................ 15
2.3.1 Penjelasan singkat tentang mikrokontroler.......................... 15
2.3.2 Pengantar arsitektur ATMEGA32....................... 17
2.3.3 Konfigurasi pin ATMEGA32. ........................... 20
2.3.4 Arsitektur ATMEGA32 ............................................................ 21

2.3.5 Peta Memori ATMEGA32 ........................................................ 22


2.3.5.1 Memori ATMEGA32 ........................................................ 22
2.3.5.2 Memori Data (SRAM) ....................................................... 23
2.3.5.3 Memori EEPROM ............................................................. 24
2.3.5.4 Stack Pointer ..................................................................... 25
2.4 LCD 16x2 ......................................................................................... 26
2.5 IC UM3483 ....................................................................................... 28
2.5.1 Definisi IC UM3483 ................................................................. 28
BAB III PERANCANGAN ALAT
3.1 Perancangan Alat ............................................................................. 31
3.1.1 Blok Diagram ........................................................................... 31
3.1.2 Rangkaian Catu Daya ............................................................... 33
3.1.3 Desain Alat ............................................................................... 34
3.1.4 Perancangan Perangkat Keras ................................................... 35
3.1.4.1 Rangkaian Kontroler .................................................... 35
3.1.4.2 RTC DS1307................................................................ 37
3.1.4.3 Perancangan Rangkaian LCD 16x2 .............................. 38

3.1.4.4 Rangkain Bel Dengan IC UM3483 ............................... 39


3.1.4.5 Perangcangan Tombol .................................................. 41
3.2 Perancangan Lunak .......................................................................... 42
3.2.1 Perancangan Perangkat Lunak ................................................ 42
3.2.2 Flowchart ................................................................................ 42
3.2.3 Pemrograman Bahasa C dengan Codevision AVR.

44

BAB IV PENGUJIAN DAN PEMBAHASAN


4.1 Pengujian Fungsional ....................................................................... 45
4.1.1 Pengujian Rangkaian Catu Daya ............................................ 46
4.1.2 Pengujian Unit Mikrokontroler .............................................. 48
4.1.3 Pengujian RTC ...................................................................... 49
4.1.4 Pengujian Tombol .................................................................. 50
4.1.4.1 Pengujian Tombol Menu ............................................ 51
4.1.4.2 Pengujian Tombol UP Dan Down............................... 54
4.1.4.3 Pengujian Tombol OK................................................. 54
4.1.5 Pengujian Indikaotor LED ..................................................... 55
4.1.6 Pengujian Battery atau Aki..................................................... 56

4.2 Pengujian Keseluruhan Alat ............................................................. 56


4.2.1 Pengujian Dan Pengaturan Dalam Satu Hari ............................ 59
4.2.2 Pengujian Dan Pengaturan Alaram Dalam Satu Minggu .......... 59
4.2 Pengujian Program Sistem Minimum Mikrokontroler ....................... 61
4.3.1 Header ..................................................................................... 61
4.3.2 Deklarasi Variabel Global........................................................ 62
4.3.3 Deklarasi Fungsi ...................................................................... 61
4.3.3.1 Fungsi Pembacaan ADC .............................................. 63
4.3.3.2 Fungsi Pembacaan LCD ............................................... 63
4.3.3.2 Fungsi Setting Nilai Alarm ........................................... 63
4.3.3.4 Fungsi Setting Menit .................................................... 64
4.3.3.5 Fungsi Setting Hari ...................................................... 65
4.3.3.6 Fungsi Setting Tanggal................................................. 65
4.3.3.7 Fungsi Setting Bulan .................................................... 66
4.3.3.8 Fungsi Setting Tahun ................................................... 66
4.3.3.9 Fungsi Setting Alaram .................................................. 67
4.3.3.10 Fungsi RTC Main....................................................... 69

4.3.3.10 Fungsi RTC Main....................................................... 69


4.3.3.10 Fungsi Tampil Menu .................................................. 76
4.3.3.10 Fungsi Inisialisasi ....................................................... 77

DAFTAR GAMBAR

Gambar 2.1

Diagram Proses Catu Daya .......................................................

Gambar 2.2

Simbol Trafo ............................................................................

Gambar 2.3

Penyearah Dan Bentuk Gelombang ..........................................

Gambar 2.4

Bentuk Fisik Dari IC LM 78XX ...............................................

Gambar 2.5

Penerapan regulator dengan higt current LM 78XX.................. 10

Gambar 2.6

Pin-Pin RTC DC1307 .............................................................. 11

Gambar 2.7

Diangram blok IC RTC 1307 ................................................... 13

Gambar 2.8

Blok diagram ATMEGA32 ...................................................... 19

Gambar 2.9

Konfigurasi pin ATMEGA32 ................................................... 20

Gambar 2.10 Arsitektur ATMEGA32............................................................ 21


Gambar 2.11 Peta Memori Program ATMEGA32 ......................................... 23
Gambar 2.12 Alamat Register File dan Data Address...................................... 24
Gambar 2.13 Memori EEPROM......... ........................................................... 25
Gambar 2.14 Stack Pointer ............................................................................ 25
Gambar 2.15 Bentuk Fisik dari LCD 16x2 .................................................... 28

Gambar 2.16 Konfigurasi Pin IC UM 3483 ................................................... 29


Gambar 3.1

Perancangan Alat ..................................................................... 31

Gambar 3.2

Catu Daya Dengan IC Regulator LM 7805 ............................... 33

Gambar 3.3

Desain Box Hardware ............................................................. 34

Gambar 3.4

Sistem Minimum Mikrokontroler ATMega32 .......................... 36

Gambar 3.5

Pin Konfigurasi DS 1307 ......................................................... 37

Gambar 3.6

Skematik Rangkaian LCD 16x2 ............................................... 38

Gambar 3.7

Rangkaian Penampil LCD 16x2 ............................................... 39

Gambar 3.8

Rangkaian Bel IC UM3483 ...................................................... 40

Gambar 3.9

Tombol 4x1.............................................................................. 41

Gambar 4.1

Blok Pengujian Sistem Minimum ATMega32 .......................... 48

Gambar 4.2

Blok Pengujian RTC DS 1307 .................................................. 49

Gambar 4.3

Pengujian Dengan Stopwatch ................................................... 50

Gambar 4.4

Blok Diagram Pengujian Tombol ............................................. 50

Gambar 4.5

Tampilan LCD Awal ................................................................ 51

Gambar 4.6

Tampilan LCD Setelah Ditekan Tombol Menu......................... 52

Gambar 4.7

Menu Set Waktu ...................................................................... 52

Gambar 4.8

Menu Set Tanggal .................................................................... 52

Gambar 4.9

Menu Set Alarm ....................................................................... 52

Gambar 4.10 Set Waktu ................................................................................ 53


Gambar 4.11 Set Hari dan Tanggal ................................................................ 53
Gambar 4.12 Set Hari, Tanggal, Dan Jenis Lagu ........................................... 54
Gambar 4.13 Pengujian Indikator Pada Battery Full ...................................... 55
Gambar 4.14 Pengujian Battery dan Aki........................................................ 56
Gambar 4.15 Tampilan Pertama LCD ........................................................... 57
Gambar 4.16 Tampilan Utama Pada LCD ..................................................... 57
Gambar 4.17 Menu Set Waktu ...................................................................... 58
Gambar 4.18 Menu Set Tanggal .................................................................... 58
Gambar 4.19 Menu Set Alarm ....................................................................... 58

DAFTAR TABEL

Tabel 2.1 Peta Alamat RTC DS1307 .......................................................... 14


Tabel 2.2 Register Control ......................................................................... 14
Tabel 2.3 Rate Select (RS1 dan RS0) ......................................................... 15
Tabel 2.4 Perbedaan Seri AVR Berdasarkan Jumlah Memori ..................... 16
Tabel 2.5 Konfigurasi Pin ATMEGA32 ..................................................... 20
Tabel 2.6 Fungsi Pin Pada LCD ................................................................. 28
Tabel 2.7 Fungsi Pin IC UM3483 ............................................................... 30
Tabel 3.1 Koneksi Antara LCD Dengan Mikrokontroler............................. 38
Tabel 4.1 Pengujian Rangkaian Catu Daya Dengan Osiloskop ................... 46
Tabel 4.2 Pengujian Rangkaian Catu Daya Dengan Multimeter .................. 47
Tabel 4.3 Hasil Pengujian Pengkalibrasian Keakuratan Data RTC .............. 49
Tabel 4.4 Tabel Pengujian Tombol ............................................................. 51
Tabel 4.5 Tabel Pengujian Pertama Mode Normal ...................................... 59
Tabel 4.6 Tabel Pengujian Hari Libur......................................................... 60

BAB I
PENDAHULUAN
1.1

Latar Belakang
Seiringnya dengan kemajuan zaman sehingga hampir semua yang manual

dibuat menjadi otomasi. Dengan adanya sistem komputerisasi ini membuat


pengguna lebih mudah dalam menyelesaikan segala permasalahan. Dalam
kegiatan belajar menganjar disekolah pihak penjaga sekolah/guru piket disibukkan
dengan aktifitas membuyikan bel sekolah saat jam masuk sekolah, ganti jam
masuk, pergantian jam belajar, istirahat, serta pulang sekolah yang mungkin setiap
hari lebih dari 5x.
Bel sekolah merupakan salah satu perangkat yang tidak dapat dipisahkan
dari sekolah. Bel sekolah pelajaran berfungsi untuk memberikan tanda pergantian
jam untuk setiap pergantian jam. Tetapi sayangnya petugas sering kali lupa
membuyikan bel sekolah pada saat yang tepat, sehingga pergantian pelajaran
menjadi kacau, pelajaran satu dengan yang lainya durasi belajar salah satu mata
pelajarab di kelas berbeda. Dengan kondisi demikian,maka di perangkat keras
berupa bel sekolah otomatis yang fleksibel.
Aplikasi ini diharapkan dapat membantu pihak sekolah. Dengan kelebihan,
yaitu bel dapat berbunyi secara otomatis sesuai waktu yang sudah di tentukan
sebelumnya dan untuk jenis suaranya dapat diatur sehingga dapat mempermudah
pekerjaan penjaga sekolah /guru piket. Untuk penentuan waktu cukup 1 kali saja
karena hasil input data bel sekolah otomatis akan tersimpan dalam program yang

menggunakan sistem mikrokontroler keluarga AVR yang banyak dijual di


pasaran.

1.2

FUNGSI DAN KEGUNAAN


a. Menggantikan fungsi bel sekolah manual menjadi otomatis berbunyi
pada waktu yang telah ditentukan sesuia dengan jadwal pelajaran.
b. Menghidari kelalain petugas dalam penekan tombol bel karena sudah
tidak dibutuhkan lagi pekerjaan menekan bel.
c. Memberikan informasi yang lebih lengkap tentang tiap tiap waktu bel
berbunyi,misalnya diinformasikan pada jam 09.00 WIB saatnya siswa
beristirahat.
d. Dapat diset sebagai BEL HARIAN ataupun BEL khusus pada saat
pelaksanaan ujian/test atau waktu bulan ramadhan.

1.3

Maksud dan Tujuan


Adapun maksud dan tujuan pembuatan implementasi sistem mikrokontoler

sebagai pengendali bel sekolah otomastis di setiap sekolah yang menggunakan


aplikasi tersebut antara lain :
1. Sebagai salah satu syarat dalam menyelesaikan studi pada program
Diploma Teknik Elektro Sekolah Vokasi Universitas Gadjah Mada.
2. Mampu membuat dan merancang alat berbasis mikrokontroler
yang dapat diimplementasikan untuk mengatur bel sekolah
otomatis yang berkerja secara otomatis pada kondisi yang telah
diatur sebelumnya.

3. Menerapkan ilmu ke elektroaan yang didapat pada masa kuliah dan


dapat pula di implementasikan di masyarakat.
4. Untuk menggurangi pekerjaan penjaga/guru piket disekolah dan
dapat mengurangi jam belajar pelajaran di setiap sekolah.

1.4

Batasan Masalah
Mengenai ruang lingkup batasan masalah yang akan digunakan dibatasi

antara lain sebagai berikut :


1. Penggunaan jam digital yang menggunakan Real Time Clock (RTC)
DS1307 sebagai pewaktu dalam penganturan waktu jam masuk
sekolah, istirahat, pergantian jam, dan pulang sekolah.
2. Menggunakan Mikrokontroler Atmega32 yang digunakan sebagai
program yang digunakan dalam pengaturan jam yang telah ditentukan.
3. Penggunaan

tombol

yang

dipergunakan

untuk

mempermudah

pengaturan pengaturan yang terdapat dalam program yang telah dibuat.


4. Perangkat lunak yang mengendalikan kerja alat yang dibuat.

1.5

Metode Pengumpulan Data


Pembuatan piranti dan laporan tugas akhir ini menggunakan metode sebagai
berikut :
1. Metode pustaka, yaitu cara mempelajari beku buku literatur yang
berhubungan dangan masalah yang dihadapi dalam pembuatan alat,
baik karakteristik komponen, teknik pengunaanya, dan teknik

merangkai komponen, serta teknik dasar yang digunakan dengan


maksud untuk memperoleh data yang tepat.
2. Metode perancangan, yaitu dengan memcoba membuat desain
rangkain yang dibuat secara afisien dan efektif.
3. Metode pengujian, yaitu dilakukan dengan menguji rangkaian yang
dibuat sesuai dengan yang diharapkan.

1.6

Sistematika Penulisan Laporan


Adapun sistematika yang digunakan dalam laporan tugas akhir sebagai

berikut :

BAB I PENDAHULUAN
Membahas tentang judul tugas akhir, latar belakang masalah, maksud dan
tujuan, batasan masalah, metode pengumpulan data, dan sistematika penulisan.

BAB II LANDASAN TEORI


Menbahas tentang dasar dasar teori yang digunakan dalam perancangan
alat yang dibuat.

BAB III PERANCANGAN ALAT


Membahas tentang prinsip dasar mekanisme cara kerja alat sehingga dapat
sesuai dengan yang di inginkan.

BAB IV PENGUJIAN ALAT


Membahas tentang hasil pengujian dari alat yang telah dibuat, apakah
sesuai dengan yang diharapkan atau tidak dalam implementasiannya di sekolah.

BAB V PENUTUP
Membahas tentang kesimpulan dan saran sehingga tugas akhir ini dapat
dikembangkan lebih lanjut dalam masyarakat yang menggukan alat tersebut.

BAB II
DASAR TEORI
2.1

Catu Daya
Perangka elektronika seharusnya dicatu oleh sumber listrik searah DC

(direct current) yang stabil agar dapat bekerja dengan baik sesuai dengan
kegunaan dan perancangannya. Baterai atau accu adalah sumber catu daya DC
yang paling baik. Namun apabila digunakan untuk apikasi yang membutuhkan
catu daya lebih besar, sumber dari baterai atau accu tidak akan cukup. Sumber
catu daya yang lain adalah sumber listrik bolak balik AC (altrnating carrent) dari
pembangkit tenaga listrik. Untuk mengubah menjadi tegangan DC yang baik dan
stabil diperlukan suatu tahapan proses yang secara umun diperhatikan pada
Gambar 2.1.

Gambar 2.1 Diangram Proses Catu Daya DC

Tranformator diperlukan sebagai komponen yang berfungsi untuk


menurunkan tegangan AC dari jala-jala lisrtik pada kumparan primernya menjadi
tegangan AC yang lebih kecil pada kumparan sekundernya. Keluaran
transformator yang masih AC kemudian disearahkan oleh untai peyearah
(rectifier).
2.1.1

Transformator
Transformator (trafo) adalah alat yang dapat menaikan dan menurunkan

tegangan sesuai dengan kebutuhan. Transformator ternuat dari suatu terah baja
lunak tertutup yang berlais lapis dilengkapi dengan kumparan primer dan
sekunder. Apabila kemparan orimer P dihubungkan pada arus bolak balik, maka
akan timbul arus gaya magnet yangakan menginduksi kumparan primer P juga
kumparan sekunder S. Besar tegangan kumparan sekunder S terinduksi tergantung
pada jumlah lilitan kumparan primer P dan sekunder S ditunjukan pada Gambar
2.2.

Gambar 2.2 Simbol Trafo


Semakin besar perbedaan jumlah lilitan kedua kumparan tersebut, maka
akan semakin besar perbedaan antara tegangan masukan dengan tegangan

keluaranl. Apabila jumlah lilitan pada kumparan sekundernya lebih tinggi nilainya
dari pada tegangan yang masuk dan sebagainya.
Hubungan tersebut dinyatakan dengan persamaan :
U1 : U2 = N1 :N2
Dimana : U1 : tegangan primer
N1 : jumlah lilitan primer
2.1.2

U2 : teganan sekunder
N2 : jumlah lilitan sekunder

Rangkaian Peyearah
Untuk mendapatkan supply tegangan DC, dibutuhkan rangkaian penyearah

(rectifier) yang mempuyai fungsi untuk mengkonversi arus listrik AC menjadi


arus listrik DC sehingga pada hasil akhirnya akan mengahasilkan tegangan DC.
Untuk mendapatkan penyearah gelombang penuh (full wave) diperlukan
tranformator dengan center tap (CT), bentuk rangkain penyearah gelombang
penuh dengan menggunakan transformator CT ditunjukkan pada Gambar 2.3.

a. Peyearah Jembatan

b. Bentuk Gelombang

Gambar 2.3 Peyearah dan bentuk gelombang

Tegangan positif phasa yang pertama diteruskan oleh D1 sedangkan phasa


yang berikutnya dilewatkan melalui D2 ke beban R1 dengan CT tranformator
sebagai commond ground. Dengan demikian beban R1 mendapat suplay tegangan
gelombang penuh seperti Gambar 2.3.
2.1.3 Regulator
Catu daya yang baik biasanya dilengkapi dengan regulator tegangan.
Tujuan pemasangan regulator tegangan pada catu daya adalah menstabilkan
tegangan keluaran apabila terjadi perubahan tegangan masukan pada catu daya.
Fungsi lain dari regulator tegangan adalah untuk perlindungan dari terjadinya
hubung singkat pada beban.
IC seri LM 78XX adalah regulator tegangan positif dengan tiga terminal.
Regulator ini mempunyai kemanpuan mengeluarkan arus yang besarnya
bervariasi sesuai dengan tipe yang diberikan pabrik hingga 1 Ampere terlihat pada
Gambar 2.4

Gambar 2.4 Bentuk Fisik Dari IC LM 78XX

Tipe regulator LM 78XX adalah salah satu regulator tegangan tetap


dengan tiga terminal, yaitu terminal Vin, GND dan Vout. Tegangan keluaran dari
regulator LM 78XX memungkinkan regulator untuk dipakai dalam sistem logika
dan sistem informasi. Regulator tegangan LM 78XX dirancang sebagai regulator
tegangan tetap, meskipun demikian dapat juga keluaran dari regulator ini diatur
tegangan dan arusnya melalui tambahan komponen eksternal. Cara pemasangan
dari penerapan regulator tegangan tetap LM 78XX peda catu daya dapat dilihat
pada Gambar 2.5

Gambar 2.5 Penerapan Regulator dengan Hight Current LM 78XX


Pada Gambar 2.5 dipergunakan transistor daya BD536 sebagai penguatan
arus dipergunakan untuk mencukupi arus untuk LCD 16 x 2 yang membutuhkan
arus minimal 1,2 A. Selain itu dari rangkaian tersebut uotput dariLM78XX
menjadi fixed output voltage sesuai lebel yang tertera pada IC LM78XX. Pada
rangkaian ini dipergunakan LM7805 yang dimana output tegangannya yaitu, 5
VDC.

2.2 Komponen Yang Dipergunakan


2.2.1 RTC DS1307
Real time clock (RTC) DS 1307 adalah sebuah IC yang mampu
menyimpan data detik, menit, jam, tanggal, bulan dan tahun yang sangat valid. IC
ini akan tetap bekerja walaupun power supply dimatikan, karena mempuyai
tambahan battery back up. Data-data waktu yang tersimpan dalam memory
bersifat non volatile pada IC tersebut.
RTC DS 1307 memiliki fitur sebagai berikut :
1. Real time clock (RTC) meyimpan data-data detik, menit, jam,
tanggal dan bulan dalam seminggu, dan tahun
2. 56-byte, battery-backup, RAM nonvolatile (NV) RAM untuk
menyimpan
3. Antarmuka intergradated inter connection (I2C)
4. Sinyal keluaran gelombang-kotak terprogram (programmable
squarewave)
5. Deteksi otomatis kegagalan-daya (power-fail) dan rangkain swtich
6. Konsumsi daya kurang dari 500nA menggunakan mode baterai
cadangan dengan operasional osilator
7. Tersedia fitur industri dengan ketahanan suhu : -40C hingga
+85C
8. Tersedia dalam kemasan 8-pin DIP atau SOIC

2.2.2 Konfigurasi Pin RTC DS1307


Susunan dan fungsi dari masing-masing pin (kaki) dapat dijelaskan lebih
lanjut pada Gambar 2.6.

Gambar 2.6 Pin-Pin RTC DC1307


Fungsi dari setiap pin RTC DS1307 adalah sebagai berikut :
1. X1
Merupakan pin yang digunakan untuk dihubungkan crystal dan
terhubung juga dengan X2
2. X2
Berfungsi sebagai port keluaran/output dari crystal yang digunakan.
Terhubung juga dengan X1
3.Vbat
Adalah battery backup supply untuk RTC besarnya adalah 3V.
Apabila tidak menggunakan battrey backup maka pin dihubungkan ke
ground.

2 GND
Berfungsi sebagai ground
3 SDA
Berfungsi sebagai masukan / keluaran (I/O) untuk 12C serial
interface. Pin ii bersifat open drain, sehingga membutuhkan resistor
pull up.
4 SCL
Berfungsi sebagai clock untuk input 12C dan digunakan untuk
mensingkronisasikan

pergerakan

data

dalam

serial

interface.

Bersifatopen drain, sehingga membutuhkan resistor pull up.


5 SWQ/OUT
Sebagai square wafe/ Output Driver. Jika di aktifkan maka akan
menjadi 4 frekuensi gelombang kotak yaitu, 1 Hz, 4 Hz, 8 Hz dan 32
Hz. Sifat dari pin sama dengan sifat pin SDA dan UCL, sehingga
membutuhkan eksternal pull up resistor. Dapat dioperasikan dengan
VCC maupun dengan VBAT.
6 VCC
Merupakan sumber tegangan utama besarnya adalah 5volt.
Adapun diagram blok dari RTC DS 1307 ditunjukkan Gambar 2.7.

Gambar 2.7 Diangram Blok IC RTC 1307

2.2.3 Register-register
register DS 1307
RTC DS 1307 mempunyai 8 pemetaan alamat (address
(address map
map) pada RTC
dimana register-register
register RTC di tempatkan pada lokasi pengalamatan 00h sampai
07h. Sedangkan register
register-register RAM (Ramdom
Ramdom Access Memory)
Memory ditempatkan
pada lokasi pengalamatan 08h samapai 3Fh.
Tabel 2.1 Peta alamat RTC DS1307

Register kontrol pada RTC DS1307 digunkan untuk mengontrol operasi


pada pin SQW/OUT.
Tabel 2.2 Register kontrol (register control)

Keterangan bit-bit pada register kontrol :


1.

Bit -7
Output Control (OUT) yaitu, 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 HIGT

2. Bit-4
Squqre-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 Selectr (RS1,RS0) unutk menentukan frekuensi yang keluar dari
pin SQW/OUT. Kombinasi nilai RS0 dan RS1 menghasilkan output
gelombang kotak dengan nilai frekuensi masing-masing.
Tabel 2.3 Rate select (RS1 dan RS0)

2.3

Mikrokontroler Atmega

2.3.1

Penjelasan Singkat Tentang Mikrokontroler


Mikrokontroler merupakan perkembangan dari mikroprosesor. Dalam

sebuah chip mikrokontroler telah terintegrasi memori, CPU, dan I/O. Hal tersebut
membuat mikrokontroler dapat langsung dibuat sistem dengan menambahkan
sebuah

peripheral

lain.

Sifat

mikrokontroler

yang

mampu

diprogram

menyebabkan mikrokontroler yang mempunyai kemanpuan aplikasi yang sangat


luas. Mikrokontroler dengan arsitektur RISC kini semakin berkembang pesat dan
semakin banyak diminati dalam aplikasi sistem kendali. Salah satu jenis
mikrokontroler AVR dari Atmel. Mikrokontroler AVR (Alf and Vegards RISC
processor), memiliki konsep yang hampir sama dengan PICmicro dari Microchip
Inc. Yang memiliki arsitektur RISC 8-bit.

Mikrokontroler AVR memiliki arsitektur RISC 8-bit yang memiliki


kemapuan tinggi dengan daya rendah sehingga besar intruksi dieksekusi hanya
dalam satu siklus detak. Secar umum AVR dapat dikelompokan menjadi empat
kelas, yaitu keluarga Attiny, keluarga AT90Sxx, keluarga Atmega dan
AT86RFxx. Pada dasrnya yang membedakan masing-masing kelas adalah
memori, peripheral dan fungsinya. Dari segi arsitektur dan intruksi hampir sama.
Tabel 2.4 Perbedaan seri AVR berdasarkan jumlah memori

Seperti terlihat pada Tabel 2.4 semua jenis AVR ini telah dilengkapi
dengan memory flash yang memiliki bervariasi dari 1KB 128 KB. Secara teknis
memori jenis ini dapat diprogram melalui saluran antarmuka yang dikenal dengan
nama Serial Peripheral Interface (SPI) yang terdapat pada setiap seri AVR
tersebut. Dengan menggunakan perangkat lunak programmer yang tepat,
pengisian memori flash dengan menggunakan saluran SPI ini dapat dilakukan
bahkan chip AVR telah terpasang pada sistem akhir, sehingga pemrograman
sangat fleksibel dan tidak merepotkan pengguna dan metode ini secara praktis
dengan nama ISP (In System Programming).

2.3.2

Pengantar Arsitektur ATMEGA32


Untuk mempelajari arsitektur mikrokontroler AVR maka dipilih arsitektur

ATMEGA32 yang memiliki fitur cukup lengkap antara lain :


1. Performa tinggi dengan konsumsi daya rendah
2. Arsitektur RISC 8 bit dengan beberapa fitur antara lain :
a. 131 kode intruksi dalam bahasa assembly
b. Mempuyai 32 x 8 bit register kerja kegunaan umum
c. Pengoprasian full static
d. Kecepatan mengeksekusi samapai dengan 16 MHz
3. Flash EEPROM sebesar 32 kilobyte yang dapat diprogram ulang
dengan kemampuan Read While Write
4. Ketahanan hapus-tulis Flash ROM adalah 10.000 kali dengan
pengaaturan pilihan kode boot dan Look Bit independent
5. Memori SRAM sebesar 2 kilobyte yang dapat dihapus-ditulis 100.000
kali
6. Penguncian kode program untul keamanan perangkat lunak agar tidak
dapat dibaca
7. Memori yang non-volatile EEPROM sebesar 1024 byte
8. Memiliki 2 buah timer/couter 8 bit sebanyak 2 buah dan sebuah
timer/couter 16 bit dengan opsi PWM sebanyak 4 kanal
9. Memiliki 8 kanal Analog to Digital Converter 10 bit dengan jenis single
ended

10. Untuk kemasan TQFP ADC dapat diatur 7 buah kanal jenis diferensial
dan khusus 2 kanal dengan penguatan yang dapat diatur melalui
register sebesar 1x, 10x atau 20x
11. Antarmuka kominikasi serial USART yang dapat diprogram dengan
kecepatan maksimal 2,5 Mbps
12. Antarmuka SPI master/slave
13. Watchdog timer dengan osilator di dalam chip yang dapat diprogram
14. Terdapat komprator analog didalam chip
15. Terdapat pendeksian tegangan gagal yang dapat diprogram (brownout
detection)
16. Osilator RC internal yang terkalibrasi
17. Sumber interupsi eksternal dan internal
18. Terdapat pilihan mode sleep : idle, pereduksian noise ADC,
penghematan daya konsumsi, penurunan daya,dan kondisi standby
19. Terdapat 32 pin masukan dan inputan yang terprogram
20. Tegangan pengoprasian
a. 2,7 5,5 Volt untuk ATMEGA32L
b. 4,5 5,5 Volt untuk ATMEGA32
21. Kecepatan
a. 0 8 MHz untuk ATMEGA32L
b. 0 16 MHz untuk ATMEGA32
22. Konsumsi daya pada 1 MHz, 3 Volt, suhu 25C untul ATMEGA32L
a.

Aktif

: 1,1 mA

b.

Mode

: 0,35 mA

c.

Mode

: kurang dari 1 uA

Gambar 2.8 Blok Diagram ATMEGA32


2.3.3 Konfigurasi Pin ATMEGA32
ATMEGA32 yang dapat dilihat pada Gambar 2.9. Mempunyai konfigurasi
sebagai berikut :

Gambar 2.9 Konfigurasi pin ATMEGA32


Tabel 2.5 Konfigurasi pin ATMEGA32
Nomor
Pin

Nama

10

VCC

Catu daya positif

11,31

GND

Catu daya negative

30

AVCC

Catu daya positif untuk ADC

32

AREF

Pin untuk tegangan refrensi ADC

1 -- 8

PB0 -- PB7

Pin masukan dan keluaran PORTB

33 -- 40

PA0 -- PA7

Pin masukan dan keluaran PORTBA

14 -- 21

PD0 -- PD7

Pin masukan dan keluaran PORTD

22 -- 29

PC0 -- PC7

Pin masukan dan keluaran PORTC

RESET

Pin masukan untuk reset (active low)

12, 13

XTAL 1
dan 2

Pin untuk masukan osilator eksternal

Fungsi

2.3.4 Arsitektur ATMEGA32


Berikut adalah blok diagram arsitektur dari ATMEGA32

Gambar 2.10 Arsitektur ATMEGA32


Mikrokontroler

ATMEGA32

memiliki

arsitektur

Harvard

yaitu,

memisahkan memori untuk kode program dan memori untuk data sehingga dapat
memaksimalkan kerja dan paralelisme. Instruksi instruksi dalam memori
program dieksekusi dalam satu alur tunggal, dimana pada saat satu intruksi
dikerjakan instruksi berikutnya sudah diamabil (pre-fethed) dari memori program.
Konsep inilah yang memungkinkan instruksi instruksi dieksekusi dalam setiap
satu siklus clock.
32 x 8 register serbaguna untuk mendukung operasi pada Artihmetic Logic
Unit (ALU) yang dapat dilakukan dalam satu siklus. 6 dari register ini dapat
digunakan sebagai 3 buah registerpointer 16-bit padamode pengalamatan tak

langsung unutk mengambil data ruang memori data. Ketiga register pointer 18-bit
ini disebut dengan register X, register Y, dan register Z.
Hampir semua intruksi AVR memiliki format 16-bit (word). Setiap alamat
program terdiri dari instruksi 16-bit atau 32-bit. Selain itu register serbaguna
diatas, terdapat register lain yang terpetakan dengan teknik memori mapped I/O
selebar 64 Byte. Beberapa register control Timer/Counter, Interupsi, ADC,
USART, SPI, EEPROM, dan fungsi I/O lainnya. Register register ini
menempati memori pada alamat 0x20 - 0x3fh.
2.3.5 Peta Memori ATMEGA32
2.3.5.1 Memori ATMEGA32
Arsitektur AVR mempuyai 2 memori utama yaitu, memori data dan
memori program. Selain itu ATMEGA32 memilik memori EEPROM untuk
menyimpan

data.

ATMEGA32

memiliki

32Kbyte

On-chip

In-system

Reprogramble Flash memori untuk menyimpan program. Karena semua instruksi


AVR memiliki format 16 atau 32 bit maka flash diatur dalam 16K x 16 bit. Untuk
keamanan program, memori flash dibagi menjadi 2 bagian yaitu, bagian
Bootloader dan aplikasi. Bootloader adalah program kecil yang bekerja pada saat
start up time yang dapat memasukan seluruh program aplikasi dalam memori
prosesor.

Gambar 2.11 Peta Memori Program ATMEGA32


2.3.5.2 Memori Data (SRAM)
Memori data ATMEGA32 terbagi menjadi 3 bagian yaitu, 32 buah register
umum, 64 buah register I/O dan 2Kbyte SRAM internal. General purpose register
menempati alamat data terbawah yaitu, $00 sampai $1F. Memori I/O merupakan
register yang khusus digunakan untuk mengatur fungsi terhadap berbagai
peripheral mikrokontroler seperti control register, timer/counter, fungsi fungsi
I/O, dan sebagainya. 2084 alamat memori berikutnya mulai dari alamat $60
hingga $85F digunakan untuk SRAM internal. Fungsi SRAM yaitu, digunakan
untuk menyimpan data variabel yang dimungkingkan berubah setiap saatnya.

Gambar 2.12 Alamat Register File dan Data Address


2.3.5.3 Memori EEPROM
EEPROM (Electrically Eraseable Programmable Read Only Memory)
yang dimana mempuyai fungsi untuk menyimpan data data yang bersifat
permanen. ATMEGA32 terdiri dari 1024 byte memori data EEPROM 8 bit dan
dapat tulis/baca dari memori ini, ketika catu daya dimatikan, data terakhir yang
ditulis pada memori EEPROM masih tersimpan pada memori ini, atau dengan
kata lain memori EEPROM bersifat nonvolatile. EEPROM. Hanya dapat ditulis
dan dihapus sebanyak 10.000 kali. Aplikasi penggunaan EEPROM adalah untuk

menyimpan data informasi yang tidak boleh hilang saat catu daya dimatikan tetapi
bisa diperbarui, misalnya untuk data ID, kata kunci (passowrd), dan lain lain.

Gambar 2.13 Memori EEPROM


2.3.5.4 Stack Pointer
Stack pointer digunakan untuk menyimpan data sementara (data variabel)
atau untuk menyimpan alamat program yang sedang dikerjakan pada saat terjadi
instruksi percabangan atau interupsi. Stack pointer menempati alamat memori
RAM paling atas dan akan turun kebawah dengan bertambahnya data yang
disimpan. Instruksi PUSH digunakan untuk menyimpan data ke stack pointer
kemudian secara otomatis stack pointer berkuran menjadi 1. Sebaliknya instruksi
POP digunkan untuk mengambil data stack pointer kemudian secara otomatis
stack pointer bertambah 1.

Gambar 2.14 Stack Pointer


2.4

LCD 162

2.4.1 Pengertian LCD


Liquid Crystal Display (LCD) merupakan sebuah teknologi layar datar
yang menghasilkan citra pada sebuah permukaan yang rata (flat) dengan
memberikan sinar pada kkristal
ristal cair dan filter berwarna, yang memiliki sruktur
molekul polar diapit antara dua elektroda yang transparan. Apabila diberikan
medan listrik molekul akan menyesuaikan posisinya yang mempolarisasi cahaya
yang melaluinya. Teknologi yang ditemukan sejak tahun 1888 ini, merupakan
pengolahan kristal cair yang berupa cairan kimia, dimana molekul
molekul-molekulnya
dapat diatur sedemikian bila diberikan medan listrik. LCD adalah salah satu jenis
media tampilan yang menggunakan kristal cair sebagai penampil utama. LCD
sudah digunakan di berbagai bidang misalnya dalam alat
alat-alat
alat elektronik seperti
televisi, kalkulator ataupun layar komputer. LCD sebagaimana outputnya yang
daoat menampilkan tulisan sehingga lebih mudah dimengerti, dibandingkan jika
menggunakan LED saja. T
Tampilan
ampilan LCD terdiri dari dua bagian, yaitu bagian
panel LCD yang terdiri dari banyak titik. LCD dan sebuah mikrokontroler yang
menempel dipanel dan berfungsi untuk mengatur titik-titik
titik titik LCD menjadi huruf

atau angka yang terbaca. Huruf atau angka yang akan ditampilkan dikirim ke
LCD dalam bentuk kode ASCII, kode ASCII ini diterima dan diolah oleh
mikrokontroler didalam LCD menjadi titik-titik LCD yang terbaca sebagai huruf
atau angka. Dengan demikian tugas mikrokontroler pemakai tampilan LCD
hanyalah mengirimkan kode-kode ASCII untuk tampilan.
Berikut spesifikasi dari LCD secara umum :
1. Jumlah baris
2. Jumlah karakter perbaris
3. Tegangan kerja
Fungsi dari pin pada LCD karakter :
1. Pin 1 : Vss/GND : Tegangan 0 volt atau ground
2. Pin 2 : Vcc : Tegangan Vcc
3. Pin 3 : VEE/Vcontrast : Tegangan pengatur kontras pada LCD
4. Pin 4 : RS : 0 : Instruksi 1 : Data
5. Pin 5 : R/W : Signal yang masuk digunakan untuk memilih mode
membaca atau menulis 0 : menulis 1 : membaca
6. Pin 6 : E : Untuk mulai mengirim data atau intruksi
7. Pin 7 sampai dengan pin 14 : Untuk mengirimkan data kerakter
8. Pin 15 dan Pin 16 : Untuk mengatur cahaya pada background atau
insruksi.
LCD ini hanya memerlukan daya yang sangat kecil, tegangan yang
dibutuhkan juga sangat rendah yaitu 5V.

Tabel 2.6 Fungsi Pin Pada LCD


No.

Symbol

Level

Keterangan

Vss

Dihubungkan ke 0 V (Ground)

Vcc

Dihubungkan dengan tegangan supply +5V dengan


toleransi 10%.

Vee

Digunakan untuk mengatur tingkat kontras LCD.

RS

H/L

Bernilai logika 0 untuk input instruksi dan bernilai


logika 1 untuk input data.

R/W

H/L

Bernilai logika 0 untuk proses write dan bernilai


logika 1 untuk proses read.

Merupakan sinyal enable. Sinyal ini akan aktif pada


failing edge dari logika 1 ke logika 0.

DB0

H/L

Pin data D0

DB1

H/L

Pin data D1

DB2

H/L

Pin data D2

10

DB3

H/L

Pin data D3

11

DB4

H/L

Pin data D4

12

DB5

H/L

Pin data D5

13

DB6

H/L

Pin data D6

14

DB7

H/L

Pin data D7

15

V+BL

Back Light pada LCD ini dihubungkan dengan


tegangan sebesar 4 4,2 V dengan arus 50 200 mA

16

V-BL

Back Light pada LCD ini dihubungkan dengan


ground

Gambar 2.15 Bentuk Fisik dari LCD 162


2.5

IC UM3483

2.5.1 Definisi IC UM3483


Sebuah IC multi-instrument melodi generator, diimplementasikan dalam
teknologi CMOS. Perangkat ini diranacang untuk bermain melodi IC ini pula
diprogram dan mampu menghasilkan 16 lagu dengan 3 instrument suara, piano,
organ dan mandolin.
IC UM3483 memiliki beberpa fitur terdiri dari :
1. Power supply 3 Volt
2. Arus yang kecil pada mode standby
3. Hingga 16 lagu
4. 5 tempo tersedia melalui pengaturan 8 mode bermain oleh pengaturan
pengguna
5. Dapat memainkan 10 nada sesuai pilihan pengguna
6. saru built-in RC osilator

7. On-chip modulator dan pre-amplifier


Berikut adalah gambar dari konfigurasi pin IC UM3483 :

Gambar 2.16 Konfigurasi Pin IC UM 3483


Fungsi masing-masing Pin IC UM3483 pada Tabel 2.7 :
Tabel 2.7 Fungsi Pin IC UM3483
No

pin

keterangan

TSP

Untuk mode normal pin ini tidak dihubungkan

CE

aktif jika terhubung VCC dan nonaktif jika terhubung ke


Ground

LP

Hanya memainkan sebuah lagu jika terhubung ke VCC


dan memainkan semua lagu jika terhubung ke Ground

SL

Trigger positif untuk memainkan lagu berikutnya

AS

Lagu akan dimainkan ulang jika terhubung ke ground dan


akan berhenti otomatis jika terhubung ke VCC

NC

Tidak dihubungkan

ENV

Envelope

GND

Ground

MTO

Modulasi nada sinyal output

10

OP1

Pre-amplifier output 1

11

OP2

Pre-amplifier output2

12

MT1

Memodulasi nada sinyal input ke pre-amplifier

13

NC

14

OSC2

Eksternal osilator pinl

15

OSC1

Eksternal osilator pin2

16

VCC

Positif power supply

Tidak dihubungkan

BAB III
PERANCANGAN ALAT
Pada bab ini akan dibahas dalam mekanisme perancangan alat dari
perangkat keras (hardware) ataupun perangkat lunak (software). Tahap pertama
dimulai dari desain alat, perancangan blok diagram sistem perangcangan
perangkat keras (hardware), serta perancangan perangkat lunak (software).
3.1 Perancangan Alat
3.1.1 Blok Diagram
Berikut adalah blok diagram dari skema BEL SEKOLAH TERPROGRA
BERBASIS MIKROKONTROLER ATMega32 agar dapat dengan mudah
mengetahui sistem kerja pada alat tersebut.

Gambar 3.1 Block Diagram

Block diagram secara umum terdapat 4 bagian, yaitu :


a. Block input terdiri dari tanggal, hari, dan jam
b. Block output terdiri dari indikator LED, sound, dan penampil LCD 162
c. Block kontrol terdiri dari ATMEGA32
d. Block catudaya
Bagian-bagian tersebut terhubung menjadi satu agar alat dapat berjalan dengan
baik. Sedangkan block catu daya difungsikan sebagai catudaya bagian input,
uotput, dan kontroler.
Bagian-bagian tersebut terhubung menjadi satu agar alat dapat berjalan dengan
baik. Sedangkan block catu daya difungsikan sebagai catudaya bagian input,
uotput, dan kontroler. Cara kerja pada Gambar 3.1 dapat dijelaskan bahwa Bel
Sekolah Terprogram Berbasis Mikrokontroler ATMega32 terdiri dari tujuh bagian
block diagram bagian input terdiri dari push botton atau keypad yang berfungsi
sebagai pengatur settingan. RTC DS1307 berfungsi sebagai sumber data jam
maupun tanggal yang diakses oleh Mikrokontroler ATMega32. Sedangkan bagian
pemproses utama skaligus pengendali utama Bel Sekolah Terprogram Berbasis
Mikrokontroler ATMega32. Pada bagian output terdiri indikator LED sebagai
indikator dari level tegangan dari aki. LCD 16x2 sebagai display penanpil utama
yang menanpilkan data nilai jam, menit, detik, hari, tanggal, bulan, tahun dan data
ADC dari pembacaan tegangan aki. IC UM3483 berfungis sebagai nada lagu
utama pada saat pengaturan waktu alarm berbunyi. Sumber catu daya untuk
sistem rangkaian Bel Sekolah Terprogram Berbasis Mikrokontroler ATMega32

bersumber dari tegangan 220 PLN yang diturunkan oleh transformator stepdown
dah disearahkan oleh penyearah gelombang penuh kemudian diregulasi oleh
regulator 7805 namu sisi kelebihan yang lain pada alat ketika listrik pada PLN
mati alat tetap menyala karena tegangan disimpan pada aki.
3.1.2 Rangkaian Catu Daya
Setiap rangkaian catu daya tentunya membutuhkan catu daya sehingga
perancangan catu daya menjadi sangat penting. Rangkaian catu daya dibuat terdiri
dari transformator, rangkaian penyearah transfer switch, filter dan regulator
.Catu daya digunakan pada rangkaian ada 2, yaitu catu daya tegangan 5V dan catu
daya 12. Catu daya dengan output tegangan 5V digunakan sebagai suplly sistem
tagangan ATMEGA32, LCD, dan RTC.

Gambar 3.2 Catu Daya Dengan IC Regulator LM 7805

3.1.3 Desain Alat


Pertama kali yang dikerjakan yaitu perancangan untuk kotak (box) sebagai
tempat peletakan hardware yang dibuat. Desain box hardware sebagai berikut :
Keterangan posisi pada box :
1. LCD 164
2. Push Button
3. Power AC
4. Speaker
5. Tombol Push On
6. Kipas Pendingin
7. Fuse
8. LED Indikator
9. Output Speaker

Gambar 3.3 Desain Box Hardware

Alat ini dibuat untuk tujuan mengkondisi suatu sekolah yang ingin memiliki
ketepatan waktu dan efisiensi waktu pada jam pelajaran disekolah agar dapat
memaksimalkan jam pelajaran. Dimana waktu ketika saat proses akademik di
kebanyakan sekolah dapat terbuang percuman karena kurangnya efisiensi waktu
ketika saat pergantian jam pelajaran, jam masuk sekolah, jam istirahat,dan jam
pulang sekolah.
Ketika menggunakan alat ini semua dapat diproses secara otomatis hanya
dengan memasukan jadwal ataupun waktu yang dipakai di setiap sekolah. Waktu
akan secara otomatis tersimpan di RTC (Real Time Clock) ketika sudah

menginputkan data dan waktu yang dipergunakan di sekolah tersebut, secara


otomatis setiap pergantian jam pelajaran akan berbunyi bel yang menandakan
pergantian jam, untuk jam istirahat bel berbunyi akan berbeda dengan jam
pergantian pelajaran begitu pula saat jam masuk sekolah dan pulang sekolah akan
berbeda. Pengaturan bel dapat diatur pula sesuai dengan keingnanan.
Pada alat pula dilengkapi dengan penampil LCD 162 yang berfungsi
sebagai penampil. Berikut yang akan tertampil pada LCD antara lain :
1.

Hari

2. Waktu yang meliputi jam, menit, detik, tanggal, bulan dan tahun
3. Alaram
Bagian-bagian tersebut terhubung menjadi satu agar alat dapat berjalan
dengan baik. Sedangkan block catu daya difungsikan sebagai catudaya bagian
input, uotput, dan kontroler.
3.1.4

Perancangan Perangkat Keras

3.1.4.1 Rangkaian Kontroler


Rangkaian pengendali yang paling utama pada sistem adalah sistem yang
menggunakan mikrokontroler ATMEGA32 yang merupakan IC yang dapat
menagani berbagai operasi aritmatika dan logika melalui port-port yang dimiliki
oleh IC tersebut. Mikrokontroler ini akan memproses program yang telah dibuat
dan akan di downloadkan ke dalam mikrokontroler ATMEGA32. Bagian- bagian
ini adalah fitur yang tersedia pada mikrokontroler yang akan digunakan antara lain
12C, TWI, interrupt external dan port-port yang akan digunakan sebagai inputan

ataupun output. Berikut adalah rangkaian dari sistem ATMEGA32. Criystal yang
digunakan pada sistem ini adalah sebesar 12 MHz serta 2 buah kapasitor keramik
bernilai 22 pF.

Gambar 3.4 Sistem Minimum Mikrokontroler ATMEGA32

Adapun fungsi-fungsi dari port yang akan digunakan pada Gambar 3.3 diatas,
yaitu :
1

PORT A : Pada PORTA.0 sampai PORT.7 berfungsi sebagai indikator


pada batettry.

PORT B : Difungsikan sebagai penampil LCD 162

3. PORT C : Pada PORTC.6 dan PORTC.7 berfungsi sebagai komunikasi


dari RTC DS 1307 dan tombol ke microkontroler ATMEGA32
4 PORT D : Berfungsi sebagai komunikasi key pad ke mikrokontroler
ATMEGA32

3.1.4.2 RTC DS1307


Pada bagian ini difungsikan sebagai pewaktu yang berisi data tentang hari,
tanggal, bulan, tahun, jam, menit dan detik. RTC merupakan IC 8 PIN yang
dimana fungsi kaki-kakinya yaitu :
a.

Pin 1 dan Pin 2 digunakan untuk inputan Kristal 32.768 KHz

b. Pin 3 dan Pin 4 digunakan untuk baterai 3 V eksternal


c. Pin 5 untuk jalur Serial Data (SDA), pin 6 untuk jalur untuk jalur Serial
Clock (SCL)
d. Pin 7 digunakan untuk squre wave/driver output
e. Pin 8 digunakan untuk VCC 5 V

Gambar 3.5 Pin Konfigurasi DS 1307


Pada rangkaian sistem minimum RTC DS1307 digunakan 2 resistor
sebesar 10K yang berfungsi sebagai pull up, pada RTC DS1307 juga
menggunakan kristal sebesar 32,768 kHz dan baterai eksternal 3V digunakanan
untuk mencatu RTC agar pada saat adanya gangguan pada trafo atau mati listrik
maka data-data yang terdapat pada memori RTC DS1307 tidak hilang.

Gambar 3.6 Skematik RTC DS1307


3.1.4.3Perancangan Rangkaian LCD 162
LCD 162 dimanfaatkan sebagai penampil jam, tanggal, bulan, tahun dan
menu. Berikut adalah tabel konfigurasi koneksi antara modul LCD dengan
mikrokontroler.
Tabel 3.1 Koneksi Antara LCD Dengan Mikrokontroler
Pin LCD

Keterangan LCD

Port Mikrokontroler.

1
2
4
5
6
11
12
13
14
15
16

GND
VCC
RS
RW
EN
D4
D5
D6
D7
NC
NC

GND
VCC
PortB.0
PortB.1
PortB.2
PortB.3
PortB.4
PortB.5
Port B.6
PortB.7
GND

Gambar 3.7 Rangkaian Penampil LCD 162


Pada rangkaian kontrol LCD 162 resistor 1K berfungsi untuk mengatur
kontras karakter yang ditampilkan oleh LCD 162.
3.1.4.4Rangkaian Bel Dengan IC UM3483
Pada bel ini terdapat sebuah IC yang dimana IC tersebut sudah tertanam 10
macam lagu, IC tersebut adalah IC UM3483. IC UM3483 merupakan salah satu
dari beberapa IC UM348X series. Seri UM348X adalah mask-Rom diprogram
multi-instrumentasi melodi generator, di implementasikan dalam teknologi
CMOS. Perangkat ini dirancang untuk bermain melodi menurut informasi
sebelumnya diprogram dan mampu menghasilkan 16 lagu dengan 3 instrumen
suara, piano, organ dan mandoli. Prangkat ini pula termasuk pra-penguat yang
menyediakan antarmuka yang sederhana ke sirkuit driver. Rangkaian Bel dengan
IC UM3483 seperti pada Gambar 3.8.

Gambar 3.8 Rangkaian Bel IC UM3483


Rangkaian bel ini terdiri dari beberapa daftar komponen yang digunakan
pada rangkaian. Daftar rangkaian sebagai berikut :
R1,2,3 = 100K
R2

= 56K

R5

= 330K

VR trimpot

= 100K

C1

= 33pF

C2

= 20nF/10V

C3

= 20nf

C4

= 100nF/10V

C5

= 20uF/10V

C6

= 100uf

C7

= 4,7uF/10V

Q1

= 9012

Q2

= 9013

IC

= UM 3483

SW

= Push ON

LS

= 8Ohm

Pada rangkaian Bel Musik ini diperlukan pengaturan kestabilan musik 10


lagunya, maka dibutuhkan Variabel Resistor. Pada rangkaian menggunakan VR
100K. Dengan VR ini maka frekuensi nada musik dapat diatur sedemikian, dan
bebes pengaturan.
3.1.4.5Perancangan Tombol
Tombol berfungsi untuk memilih dan mengatur waktu. Tombol terhubung
pada PORTC 0, PORTC 1, PORTC 2, PORTC 3. Pada perancangan tombol
menggunakan

sistem aklif

low.

Pada

saat terhubung dengan ground

mikrokontroler akan mengeksekusi perintah. Berikut adalah gambar tombol ke


port pada mikrokontroler.

Gambar 3.9 Tombol 4x1

Fungsi dari masing-masing tombol direncanakan sebagai berikut :


A. Tombol OK (1) masuk ke menu yang akan dipilih.
B. Tombol UP (2) untuk data display menjadi naik/ menambah data dan
untuk berpindah kepilihan menu berikutnya.
C. Tombol DOWN (3) untuk data display menjadi turun/mengurangi data
dan untuk berpindah ke pilihan menu selanjutnya.
D. Tombol CANCEL (4) untuk membatalkan dan kembali ke menu
selanjutnya.
3.2

Perangkat Lunak

3.2.1 Perancangan Perangkat Lunak


Pada pembuatan alat ini diprogram dengan menggunkan bahasa
pemograman C dengan file berekstensi *.c. Melalui perangkat lunak Codevision
AVR sebagai compiler-nya, file

ini kemudian di-compile

menjadi

file

hexadesimal dengan ekstensi file *.hex. File .hex ini kemudian di-download
ke dalam mikrokontroler dengan menggunakan perangkat lunak AVR MKII
melalui perantara USB Downloader.
3.2.2 Flowchart
Flowchart digunakan sebagai dasar acuan dalam membuat program,
berikut ini adalah flowchart keseluruhan sistem

mulai

Inisialisai Port,
ADC, RTC

Baca data RTC

Tampilkan Waktu,
Tanggal dan
Kondisi Batry

Ambil data Alarm pada


EEPROM

Data RTC=
Data
EEPROM?
Tampilkan Menu

ya
Nyalakan Lagu Alarm

Tombol ok
Ditekan?

If
detik==18

ya

ya

Ya
Set waktu

Atur Jam

tdk
Ya
Set
tanggal

Lagu Alarm Off

Atur tanggal

tdk
Ya
Set
alaram

tdk

Atur Alarm

3.2.3 Pemrograman Bahasa C dengan Codevision AVR


Dari flowchart dapat dibuat rancangan program yang sesuai. Struktur
penulisan bahasa C umumnya terdiri atas empat blok, yaitu:
a. Header
b. Deklarasi konstanta, variabel dan fungsi
c. Fungsi dan prosedur
d. Program utama

BAB IV
PENGUJIAN DAN PEMBAHASAN
Pada bab ini membuat hasil dari pengujian dan pembahasan agar dapat
mengetahui sistem kerja rangkaian. Dari rangkaian tesebut kemudian dilakukan
pengujian agar dapat mengetahui dan mendapatkan data. Kemudian dari data
tersebut akan dibandingkan dengan penyesuaian dari teori-teori yang sudah
didapatkan. Tujuan utama dari pengujian ini adalah untuk membuktikan apakah
sistem yang dipergunakan pada alat telah memenuhi spesifikasi yang telah
direncanakan

sebelumnya.

Hasil

pengujian

akan

dimanfaatkan

untuk

menyempurnakan kinerja sistem dan sekaligus digunakan dalam pengembangan


lebih lanjut. Ada beberapa metode pengujian dapat dipilih berdasarkan fungsi
operasional dan beberapa parameter yang ingin dipilih dari sistem tersebut. Data
yang diperoleh dari metode pengujian yang dipilih tersebut dapat memberikan
informasi yang cukup unutk keperluan penyempurnaan.
4.1

Pengujian Fungisonal
Pengujian funsional bagian demi bagian dan sistem keseluruhan yang

terdapat pada rangkaian terdiri dari pengujian rangkaian catu daya, sistem
minimum mikrokontroler ATMega32, rangkaian bel, dan software.

4.1.1 Pengujian Rangkain Catu Daya


Rangkaian catu daya adalah bagian yang sangat penting dalam suatu
rangkaian, yaitu sebagai sumber tengangan. Catu daya dibutuhkan pada sistem ini
adalah catu daya dengan output 2 buah tegangan +5V dan tegangan +12V. Catu
daya yang dipakai menggunakan trafo CT 2 A dengan 2 buah diode dan filter
kapasitor. Titik pengukuran pada keluaran IC 7805 dengan ground, yaitu Vcc
dengan Ground. Alat yang digunakan untuk pengujian yaitu voltmeter DC dan
osiloskop. Pengujian dilakukan dengan mengambil data pengukuran tegangan dari
rangkaian catu daya, yaitu pada Vcc dan Ground. Data hasil pengujian tegangan
catu daya adalah sebagai berikut :
Tabel 4.1 Pengujian Rangkaian Catu Daya Dengan Osiloskop

Vout
No

Bagian

Tanpa

Beban

beban

penuh

5V

5V

4,95 V

12 V

12 V

11.8 V

Vin

Regulator
1
7805

Regulator
2
7812

Bentuk gelombang

Tegangan Terukur
No

Bagian

Vin

Tanpa
Beban

Beban
Penuh

3.

Ground

0V

0V

0V

Bentuk Gelombang

Tabel 4.2 Pengujian Rangkaian Catu Daya Dengan Multimeter

Tegangan terukur
No

Bagian

Tanpa

Beban

beban

penuh

5V

4.95 V

12 V

11.96 V

0V

0V

Bentuk gelombang

Regulator
1
7805

Regulator
2
7812

Ground

Dari hasil pengukuran tersebut dapat diketehui bahawa regulator 7805


bekerja dengan baik karena keluarannya 5 V dan 12 V. Untuk mengetahui

output dari catu daya tersebut terdapat led indikator, apabila led menyala
menunjukan bahwa tegangan sudah mengalir pada rangkaian. Regulasi beban
biasanya dipengaruhi aleh faktor ripple (riak) dan koefisien suhu dari komponen
yang digunakan. Regulasi beban dapat dicari menggunakan rumus sebagai
berikut.

%Reg. Beban =

Untuk tegangan keluaran 5 volt, %Reg.Beban =

Untuk tegangan keluaran 12 volt, %Reg. Beban =

100%

100%=1%
,

100% = 0,33%

Regulasi tegangan ini tidak terlalu berpengaruh terhadap rangkaian selama


masih dalam batas yang wajar dan masih memenuhi syarat untuk menyuplai
rangkaian.
4.1.2 Pengujian Unit Mikrokontroler
Mikrokontroler

merupakan

unit

sebagai

pengontrol

utama

dari

perancangan alat ini. Pengujian yang dilakukan bertujuan untuk menguji


mikrokontroler dapat bekerja dengan baik atau tidak bekerja dengan baik.
Pengujian dilakukan dengan menampilakan tulisan pada LCD. Sedangkan blog
diagram seperti gambar dibawah ini :

Mikrokontroler
ATMega32

LCD 162

Gambar 4.1 Blok Pengujian Sistem Minimum ATMega32


4.1.3 Pengujian RTC

RTC DS1307 digunakan sebagai pewaktu jam digital dan kalender yang
merupakan tampilan utama sistem yang digunkan. Jam digital menunjukan data
waktu untuk jam, menit dan detiknya, terdapat pula tamabahan waktu untuk hari,
tanggal, bulan dan tahun. Fungsi utama dari rangkaian ini difungsikan sebagai
pewaktu untuk penanda bel sekolah otomatis. Contoh pada saat masuk sekolah
jam 07.15 WIB maka alat akan bekerja secara otomatis sesuai dengan pengaturan
waktu yang telah ditentukan oleh pihak sekolah. Blok diagaram perancangan
seperti gambar dibawah ini :

RTC DS1307

Mikrokontroler
ATMega32

LCD 162

Gambar 4.2 Blok Pengujian RTC DS 1307


Pengujian dilakukan dengan membandingkan data waktu pada RTC
dengan data waktu yang sudah terkalibrasi. Pada pengujian RTC perbandingan
menggunakan Stopwatch sebagai acuan waktu. Berikut tabel pengamatan
perbandingan.
Tabel 4.3 Hasil Pengujain Pengkalibrasian Keakuratan Data RTC
Sistem RTC

Stopwatch

00 : 10 : 00

00 : 10 : 00

00 : 45 : 00

00 : 45 : 00

01 : 00 : 00

01 : 00 : 00

02 : 00 : 00

02 : 00 : 00

Terlihat dari data tabel pengujian keakuratan RTC dengan stopwach diatas
dapat diketahui bahwa waktu pada RTC sudah tepat waktu dan akurat. Berikut
adalah Gambar 4.3 pengujian dengan stopwatch.

Gambar 4.3 Pengujian Dengan stopwatch


4.1.4 Pengujian Tombol
Pada pengujain tombol untuk dapat mengetahui apakah tombol dapat
bekerja sesuai dengan perintah pada pengguna alat. Dalam tombol terdiri dari 4
buah tombol, yaitu OK, UP, Down, Cancel. Sedangkang dalam blok diagram
pengujian seperti gambar dibawah ini.
MENU
DOWN
UP

Mikrokontroler
ATMEGA32

LED & LCD

OK
Gambar 4.4 Blok Diagram Pengujian Tombol

Tabel 4.4 Tabel Pengujian Tombol.


Tombol

Keluaran Tombol (Volt)

MENU

UP

DOWN

OK

MENU

UP

DOWN

OK

4,8

4,8

4,8

4,8

4,8

4,8

4,8

4,8

4,8

4,8

4,8

4,8

Keterangan pada tabel : () merupakan pada saat tombol ditekan.


4.1.4.1 Pengujian Tombol Menu
Sebelum melakukan pengujian akan tertampil awal pada LCD seperti
terlihat pada gambar 4.5

Gambar 4.5 Tampilan LCD Awal


Kemudain ketika tombol Menu ditekan maka akan tertampil pada LCD
seperti terlihat pada gambar 4.6

Gambar 4.6 Tampilan LCD Setelah Ditekan Tombol Menu


Setelah tombol menu ditekan tertapil pada LCD beberapa pilihan Menu
yang terdiri dari setting waktu, setting tanggal, dan setting alarm. Terlihat pada
gambar berikut ini.

Gambar 4.7 Menu Set Waktu

Gambar 4.8 Menu Set Tanggal

Gambar 4.9 Menu Set Alarm

Menu setting waktu digunakan untuk mengatur dan menyesuaikan dengan


jam yang di inginkan. Berikut adalah gambar ketika melakukan pengaturan waktu.

Gambar 4.10 Set Waktu


Menu setting tanggal adalah menu yang digunakan untuk mengatur dan
menyesuaikan hari dan tanggal yang di inginkan. Berikut adalah gambar yang
ditunjukan ketika pengaturan hari dan tanggal.

Gambar 4.11 Set Hari dan Tanggal


Menu setting alarm berfungsi sebagai pengaturan waktu yang digunakan
untuk mengatur waktu, tanggal dan jenis lagu yang digunakan sebagai alarm.
Berikut adalah gambar yang ditunjukan pada gambar sebagai berikut.

Gambar 4.12 Set Hari, Tanggal dan Jenis Lagu


4.1.4.2 Pengujian Tombol UP dan DOWN
Pada pengujian tombol UP dan DOWN memiliki fungsi untuk melakukan
instruksi pemilihan pada menu yang tersedia seperti pada contoh ketika di
tampilan menu awal UP dan DOWN berfungsi untuk melakukan pemilihan
terhadap menu setting waktu, setting tanggal, dan setting alarm jika pada menu
setting waktu dilakukan untuk menambah dan mengurangi nilai jam, dan menit.
Pada menu setting tanggal dilakukan untuk menanbah dan mengurangi angka
yang menunjukan hari, tanggal, bulan, dan tahun.
4.1.4.3 Pengujian Tombol OK
Pada tombol Ok berfungsi sebagai mengeksekusi yang telah dipilih
sebagai setting waktu, setting tanggal, dan setting alarm yang telah ditentukan.
4.1.5 Pengujian Indikator LED
Pengujian ini dirancang untuk mengetahui apakah indikator pada led yang
digunakan berjalan dengan baik atau sebaliknya. Terdapat 4 indikator led yang

bertugas sebagai penanda pada battery pada keadaan full, medium, low, dan very
low.
Keterangan LED :
1. Indikator LED menyala secara keseluruhan untuk battery full
2. Indikator LED menyala hanya tiga keadaan untuk battery medium
3. Indikator LED menyala hanya dua keadaaan untuk battery low
4. Indikator LED menyala hanya satu keadaan untuk battery very low
Berikut salah satu gambar pada saat percobaan keadaan battery full lampu
indikator LED akan menyala semua.

Gambar 4.13 Pengujian Indikator LED Pada Battery Ful


4.16

Pengujian Battery atau Aki


Pada pengujian aki atau battery digunakan sebagai listrik cadangan apabila

dalam keadaan listrik mati maka battery atau aki akan segera menggantikan peran
dari listrik menjadi penyuplai tegangan pada rangkaian agar tetep berjalan dengan
keinginan, dan pada saat listrik menyala battery akan terisi secara otomatis
sebagai tenaga cadangan pada rangkaian. Terlihat seperti gambar berikut ini.

Gambar 4.14 Pengujian Battery atau Aki


4.2

Pengujian Keseluruhan Alat


Setelah hardware dan softwarenya dapat teruji dengan baik, kemudian

melakukan pengujian keseluruhan sistem. Untuk langkah-langkahnya, yaitu


dengan menghubungkan keseluruhan rangkaian hardware dan software berupa
program yang telah di downloadkan ke mikrokontroler ATMEGA32 yang telah
diuji terlebih dahulu program yang akan di downloadkan ke mikrokontroler.
Tujuan yang paling utama dalam pengujian alat secara keseluruhan adalah untuk
mengetahui apakah alat dapat bekerja sesuai dengan keinginan yang telah
dirancang.
Sedangkan untuk tampilan pertama pada LCD setelah saklar utama di ON
kan akan tertampil tampilan seperti gambar dibawah ini.

Gambar 4.15 Tampilan Pertama Pada LCD

Gambar 4.16 Tampilan Utama Pada LCD


Untuk masuk ke menu utama maka dengan penekanan tombol Menu.
Terdapat 3 tampilan menu utama, yaitu setting waktu, setting tanggal, dan
setting alarm. Berikut ini merupakan gambar tampilan menu utama pada setiap
pengaturan.

Gambar 4.17 Menu Set Waktu

Gambar 4.18 Menu Set Tanggal

Gambar 4.19 Menu Set Alarm


Dalam pengujian dilakukan dengan melakukan setting waktu, setting
tanggal, dan setting alarm dalam sehari. Kemudian melakukan pengamatan
apakah bel dapat berbunyi sesuai dengan pengaturan yang dilakukan.
Sedangkan lagu yang dikeluarkan menunjukan variasi bunyi, terdapat 10
lagu. Setiap lagu tersebut dapat dipilih sesuai dengan keinginan. Dalam percobaan
alat kali ini menggunakan beberapa urutan lagu. Lagu yang pertama untuk
pergatian jam pelajaran, lagu ke dua untuk pergatian untuk masuk, lagu ke tiga
untuk istirahat, dan lagu ke empat untuk waktu pulang sekolah.
4.2.1 Pengujian Dan Pengaturan Alarm Dalam Satu Hari
Pengujian ini bertujuan apakah akan bel berbunyi sesuai dengan setting
yang dilakukan. Pengujian ini dilakukan dengan menyalakan sistem tanpa
mematikan hingga bel berakhir.
Pengujian bel pada salah satu hari kamis biasa terlihat pada tabel berikut ini :

Tabel 4.5. Tabel Pengujian Pertama Mode Normal


Pengujian

Hasil Pengujian

NO

Keterangan
Waktu

Waktu

Keterangan bel

6.30

6.30

Lagu 2

Masuk

7.15

7.15

lagu 1

Pelajaran ke-2

8.00

8.00

lagu 1

Pelajaran ke-3

8.45

8.45

lagu 1

Pelajaran ke-4

9.30

9.30

lagu 3

Istirahat-1

9.45

9.45

Lagu 2

Masuk

10.30

10.30

lagu 1

Pelajaran ke-6

11.15

11.15

lagu 1

Pelajaran ke-7

12.00

12.00

lagu 3

Istirahat-2

10

12.15

12.15

Lagu 2

Masuk

11

13.00

13.00

lagu 4

Pulang

Berdasarkan tabel hasil pengujian diatas dapat disimpulkan bahwa bel


berbunyi sesuai dengan waktu yang ditentukan dan suara bel sesuai dengan
pengaturan.
4.2.2 Pengujian Dan Pengaturan Alarm Dalam Satu Minggu
Pengujian ini bertujuan menguji pada hari minggu apakah berbunyi sesuai
dengan pengaturan. Pengujian ini dilakukan dengan menyalakan sistem selama 1

minggu tanpa mematikan hingga berakhir. Pengujian hari libur tersaji pada Tabel
4.6.
Tabel 4.6 Tabel Pengujian Hari Libur
Pengujian

Hasil Pengujian

NO

Keterangan
Hari & Tanggal

Hari&Tanggal

Ket. Bel

Senin, 7-10-2013

Senin, 7-10-2013

Nyala

Hari Biasa

Selasa, 8-10-2013

Selasa, 8-10-2013

Nyala

Hari Biasa

Rabu, 9-10-2013

Rabu, 9-10-2013

Nyala

Hari Biasa

Kamis, 9-10-2013

Nyala

Hari Biasa

Jumat, 11-10-2013

Nyala

Hari Biasa

Sabtu, 12-10-2013

Nyala

Hari Biasa

Mati

Minggu

Jumat, 11-102013
Sabtu, 12-102013

Kamis, 10-102013

Minggu, 13-10-

Minggu, 13-10-

2013

2013

berdasarkan tabel pengujian diatas dapat disimpulkan bahwa bel berbunyi


ketika pada hari biasa, ketika hari minggu maka bel akan mati. Hal ini
membuktikan bahwa bel mati sesuai dengan pengaturan hari libur.
4.3 Pengujian Program Sistem Minimum Mikrokontroler
Pengujian ini dilakukan untuk mengetahui program yang di download ke
mikrokontroler ATMega32 berjalan dengan baik dan sesuai alur kerja yang
diinginkan penulis.

Pengujian ini meliputi analisa program dari bagian per bagian. Didalam
Pemograman bahasa C sendiri terdapat beberapa blok penulisan seperti header,
deklarasi konstanta, deklarasi variabel, deklarasi fungsi, program fungsi dan
program utama. Berikut ini akan dijelaskan beberapa blok atau bagian yang
digunakan didalam pemograman rangkaian dari segi sistem minimum
mikrokontroler ATMega32, antara lain :
4.3.1 Header
Bagian header meliputi :
#include <mega32.h>
#include <delay.h>
#include <i2c.h>
#include <ds1307.h>
#include <alcd.h>
#include <stdio.h>
#include <stdarg.h>
#include <stdlib.h>

//header ATmega32
//header delay
//I2C Bus functions
//DS1307 Real Time Clock functions
//Alphanumeric LCD functions
//standar Input/Output
//
//standar liburary

#define ADC_VREF_TYPE 0x60 // definisi register referensi ADC


#define RTC_ADDR 0xD0
// definisi register alamat I2C

#define
#define
#define
#define

ok
!PINC.4 //definsi tombol ok di PINC.4
down !PINC.3 //definsi tombol down di PINC.3
up
!PINC.2 //definisi tombol up di PINC.2
cancel !PINC.1 //definisi cancel di PINC.1

(#Preprosessor) digunakan untuk memasukkan (include) text dari file lain,


misalnya untuk mendefinisikan mikrokontroller yang digunakan seperti #include
<mega32.h>, maupun untuk mendefinisikan fungsi pustaka seperti #include
<stdio.h> dan #include <delay.h>. #define digunakan untuk mendefinisikan
makro,

dimana

pada

program

ini

program

define

digunakan

untuk

menginisialisasikan PINC.1 sampai PINC.4 untuk tombol PINC.1 CANCEL,


PINC.2 UP, PINC.3 DOWN, PINC.4 OK.
4.3.2 Deklarasi Variabel Global
Setiap konstanta dan variabel yang akan digunakan pada program harus
dideklarasikan agar konstanta dan variabel yang akan digunakan tersebut dapat
dikenali. Dalam rangkaian ini, hanya menggunakan satu konstanta dan variabel,
yaitu :
char *dday[]={"Senin ","Selasa","Rabu ","Kamis ","Jum'at","Sabtu
","minuteggu","
"};
unsigned char hour, minute, sec, week_day, day, month, year;
signed char v_hour,v_minute,v_week_day,v_day=1, v_month=1, hari,cacah;
int v_year;
unsigned int pointer, alarm, j;
unsigned char __ADC;
signed char alarm_jam[60],alarm_menit[60],alarm_lagu[20];

4.3.3

Deklarasi Fungsi
Merupakan subprogram utama yang menjalankan suatu fungsi tertentu.

Program fungsi ini akan dijalankan apabila dipanggil, baik dipanggil dalam
program utama maupun program fungsi lainnya. Pada pemrograman rangkaian
ini menggunakan beberapa fungsi, antara lain :

4.3.3.1 Fungsi Pembacaan ADC


Pada program ini berisi perintah konversi data analog ke digital, berikut
list program read ADC. Listing program adalah sebagai berikut :
unsigned char read_adc(unsigned char adc_input){
ADMUX= adc_input | (ADC_VREF_TYPE & 0xff);
// Delay needed for the stabilization of the ADC input voltage
delay_us(10);
// Start the AD conversion

ADCSRA|=0x40;
// Wait for the AD conversion to complete
while ((ADCSRA & 0x10)==0);
ADCSRA|=0x10;
return ADCH;
}

4.3.3.2 Fungsi Tampil LCD


Pada fungsi ini berisi tenteng pembacaan pada LCD. Yang akan tertampil
pada LCD. Listing program adalah sebagai berikut :
void tampil_lcd(unsigned char kolom,unsigned char baris,char flash*fmtstr,...){
char lcd[17];
va_list(ap);
va_start(ap,fmtstr);
vsprintf(lcd,fmtstr,ap);
va_end(ap)
lcd_gotoxy(kolom,baris);
lcd_puts(lcd);
}

4.3.3.3 Fungsi Setting Nilai Jam


Pada fungsi program ini berguna untuk menyeting nilai jam yang akan
tertampil pada LCD. Listing program adalah sebagai berikut :
void setting_jam(){
lcd_clear(); //menghapus lcd dari data sebelumnya
while(1){
delay_ms(50);
tampil_lcd(7,0,"%2i:%2i:00",v_hour,v_minute); //menampilkan nilai
variable settingan jam, menit
delay_ms(100);
tampil_lcd(7,0," :%2i:00",v_minute);
if(up){while(up);v_hour++;if(v_hour>23)v_hour=0;} //increment nilai
variable jam
if(down){while(up);v_hour--;if(v_hour<=0)v_hour=23;} //decrement nilai
variable jam
if(ok){while(ok);setting_menit();} //if ok pergi ke fungsi setting menit
if(cancel){while(cancel);rtc_main();} //if cancel pergi ke fungsi rtc main
}

4.3.3.4 Fungsi Setting Menit


Fungsi setting menit adalah kelanjutan dari setting jam, setelah setting jam
akan menyeting menit. Listing program adalah sebagai berikut :
void setting_menit(){
lcd_clear(); //menghapus lcd dari data sebelumnya
while(1){
delay_ms(50);
tampil_lcd(7,0,"%2i:%2i:00",v_hour,v_minute);//menampilkan nilai variable
settingan menit
delay_ms(100);
tampil_lcd(7,0,"%2i: :00",v_hour);
if(up){while(up);v_minute++;if(v_minute>59)v_minute=0;}//increment nilai
variable menit
if(down){while(up);v_minute--;if(v_minute<=0)v_minute=59;} //decrement
nilai variable menit
if(ok){while(ok);rtc_set_time(v_hour,v_minute,0);rtc_main();} //if ok pergi
ke rtc main
if(cancel){while(cancel);rtc_main();} //if cancel pergi ke rtc main
}
}

4.3.3.5 Fungsi Setting Hari


Fungsi setting hari adalah kelanjutan dari setting hari, setelah setting menit
akan menyeting hari. Listing program adalah sebagai berikut :
void setting_hari(){
lcd_clear(); //menghapus lcd dari data sebelumnya
while(1){
tampil_lcd(0,1,"%s%2i:%2i:%4i",dday[v_week_day],v_day,v_month,v_year);
//menampilkan nilai variable hari, tanggal, bulan dan tahun
delay_ms(50);
tampil_lcd(0,1,"%s%2i:%2i:%4i",dday[7],v_day,v_month,v_year);
delay_ms(50);
if(up){while(up);v_week_day++;if(v_week_day>6)v_week_day=0;}
//increment nilai variable hari

if(down){while(up);v_week_day--;if(v_week_day<=0)v_week_day=6;}
//decerement nilai variable hari
if(ok){while(ok);setting_tanggal();} //if ok pergi ke fungsi setting tanggal
if(cancel){while(cancel);rtc_main();} //if cancel pergi fungsi rtc main
}
}

4.3.3.6 Fungsi Setting Tanggal


Fungsi setting hari adalah kelanjutan dari setting tanggal, setelah setting
hari akan menyeting tanggal. Listing program adalah sebagai berikut :
void setting_tanggal(){
lcd_clear(); //menghapus tampilan lcd dari data sebelumnya
while(1){
tampil_lcd(0,1,"%s%2i:%2i:%4i",dday[v_week_day],v_day,v_month,v_year);//m
enampilkan nilai variable hari, tanggal bulan dan tahun
delay_ms(50);
tampil_lcd(0,1,"%s :%2i:%4i",dday[v_week_day],v_month,v_year);
delay_ms(50);
if(up){while(up);v_day++;if(v_day>31)v_day=1;} //increment nilai variable
tanggal
if(down){while(up);v_day--;if(v_day<=0)v_day=31;} //decrement nilai
variable tanggal
if(ok){while(ok);setting_bulan();} //if ok pergi ke setting bulan
if(cancel){while(cancel);rtc_main();} // if cancel pergi ke rtc main
}
}

4.3.3.7 Fungsi Setting Bulan


Fungsi setting tanggal adalah kelanjutan dari setting bulan, setelah setting
tanggal akan menyeting bulan. Listing program adalah sebagai berikut :
void setting_bulan(){
lcd_clear();
while(1){
tampil_lcd(0,1,"%s%2i:%2i:%4i",dday[v_week_day],v_day,v_month,v_year);
delay_ms(50);

tampil_lcd(0,1,"%s%2i: :%4i",dday[v_week_day],v_day,v_year);
delay_ms(50);
if(up){while(up);v_month++;if(v_month>12)v_month=1;}
if(down){while(up);v_month--;if(v_month<=0)v_month=12;}
if(ok){while(ok);setting_tahun();}
if(cancel){while(cancel);rtc_main();}
}
}

4.3.3.8 Fungsi Setting Tahun


Fungsi setting bulan adalah kelanjutan dari setting tahun, setelah setting
bulan akan menyeting tahun. Listing program adalah sebagai berikut :
void setting_tahun(){
lcd_clear();
while(1){
tampil_lcd(0,1,"%s%2i:%2i:%4i",dday[v_week_day],v_day,v_month,v_year);
delay_ms(50);
tampil_lcd(0,1,"%s%2i:%2i: ",dday[v_week_day],v_day,v_month);
delay_ms(50);
if(up){while(up);v_year++;if(v_year>2100)v_year=0;}
if(down){while(up);v_year--;if(v_year<=0)v_year=2100;}
if(ok){while(ok);rtc_set_date(v_week_day,v_day,v_month,v_year);rtc_main();}
if(cancel){while(cancel);rtc_main();}
}
}

4.3.3.9 Fungsi Setting Alarm


Fungsi setting alarm adalah kelanjutan setelah setting waktu, tanggal,
bulan, dan tahun. Listing program adalah sebagai berikut :
void set_alarm(){
alarm=0;
pointer=1;
lcd_clear();
atas:
while(1){

tampil_lcd(3,0,"Pilih hari");
if(up){while(up);pointer++;if(pointer>6)pointer=1;}
if(down){while(down);pointer--;if(pointer<1)pointer=6;}
switch(pointer){
case 1 : hari=1;tampil_lcd(0,1,"senin ");break;
case 2 : hari=2;tampil_lcd(0,1,"selasa");break;
case 3 : hari=3;tampil_lcd(0,1,"rabu ");break;
case 4 : hari=4;tampil_lcd(0,1,"kamis ");break;
case 5 : hari=5;tampil_lcd(0,1,"jumat ");break;
case 6 : hari=6;tampil_lcd(0,1,"sabtu ");break;
}
if(ok){while(ok);goto setwaktu;}
if(cancel){while(cancel);rtc_main();}
}
setwaktu:
lcd_clear();
while(1){
tampil_lcd(3,0,"Set Alarm[%2d]",cacah+1);
delay_ms(50);
tampil_lcd(3,0,"Set Alarm[ ]",cacah+1);
delay_ms(50);
if(up){while(up);cacah++;if(cacah>9)cacah=0;}
if(down){while(down);cacah--;if(cacah<=0)cacah=9;}
if(ok){while(ok);goto bawah;}
if(cancel){while(cancel);rtc_main();}
}
bawah:
lcd_clear();
if(hari==1)alarm=cacah;
if(hari==2)alarm=cacah+10;
if(hari==3)alarm=cacah+20;
if(hari==4)alarm=cacah+30;
if(hari==5)alarm=cacah+40;
if(hari==6)alarm=cacah+50;
while(1){
tampil_lcd(0,1,"%2d:%2d lagu:%2d
",alarm_jam[alarm],alarm_menit[alarm],alarm_lagu[cacah]);
delay_ms(50);
tampil_lcd(0,1," :%2d lagu:%2d ",alarm_menit[alarm],alarm_lagu[cacah]);
delay_ms(50);
if(up){while(up);alarm_jam[alarm]++;if(alarm_jam[alarm]>23)alarm_jam[alarm]
=0;}

if(down){while(down);alarm_jam[alarm]-;if(alarm_jam[alarm]<0)alarm_jam[alarm]=23;}
if(ok){
while(ok);
ee_jam[alarm]=alarm_jam[alarm];
goto set_menit;
}
}
set_menit:
delay_ms(500);
lcd_clear();
while(1){
tampil_lcd(0,1,"%2d:%2d lagu:%2d
",alarm_jam[alarm],alarm_menit[alarm],alarm_lagu[cacah]);
delay_ms(50);
tampil_lcd(0,1,"%2d: lagu:%2d ",alarm_jam[alarm],alarm_lagu[cacah]);
delay_ms(50);
if(up){while(up);alarm_menit[alarm]++;if(alarm_menit[alarm]>59)alarm_menit[a
larm]=0;}
if(down){while(down);alarm_menit[alarm]-;if(alarm_menit[alarm]<0)alarm_menit[alarm]=59;}
if(ok){
while(ok);
ee_menit[alarm]=alarm_menit[alarm];
goto set_lagu;
}
}
set_lagu:
delay_ms(500);
lcd_clear();
while(1){
tampil_lcd(0,1,"%2d:%2d lagu:%2d
",alarm_jam[alarm],alarm_menit[alarm],alarm_lagu[cacah]);
delay_ms(50);
tampil_lcd(0,1,"%2d:%2d lagu: ",alarm_jam[alarm],alarm_menit[alarm]);
delay_ms(50);
if(up){while(up);alarm_lagu[cacah]++;if(alarm_lagu[cacah]>9)alarm_lagu[cacah]
=1;}
if(down){while(down);alarm_lagu[cacah]-;if(alarm_lagu[cacah]<1)alarm_lagu[cacah]=9;}
if(ok){
while(ok);

ee_lagu[cacah]=alarm_lagu[cacah];
goto atas;
}
if(cancel){
while(cancel);
ee_lagu[cacah]=alarm_lagu[cacah];
goto setwaktu;
}
}
}

4.3.3.10 Fungsi RTC Main


Fungsi dari RTC main adalah fungsi dari pembacaan dari RTC DS1307.
Listing program adalah sebagai berikut :
void rtc_main(){
int x=0,putar=0;
lcd_clear();
rtc_init(0,0,0);
while(1){
mulai:
PORTD.0=0;
__ADC = read_adc(0);
delay_ms(100);
rtc_get_time(&hour,&minute,&sec);
rtc_get_date(&week_day,&day,&month,&year);
tampil_lcd(7,0,"%2d:%2d:%2d\n",hour,minute,sec);
tampil_lcd(6,1,"%2d/%2d/%4d",day,month,2000+year);
tampil_lcd(0,0,"%03d", __ADC);
lcd_gotoxy(0,1);
lcd_puts(dday[week_day]);
if(week_day == 6) goto loncat;
if(week_day == 0)
for(j=0;j<10;j++){
if(hour==alarm_jam[j] && minute==alarm_menit[j] && sec==0 ){
alarm_lagu[j]-=1;
putar=alarm_lagu[j];
PORTD.0=1;
PORTD.1=0;
lcd_clear();
while(1){
tampil_lcd(5,0,"ALARM !!!");
tampil_lcd(5,1,"%2d:%2d:%2d\n",hour,minute,sec);

delay_ms(100);
lcd_clear();
delay_ms(100);
rtc_get_time(&hour,&minute,&sec);
if(sec==4){
for(x=0;x<=putar;x++){
PORTD.0=1;
delay_ms(40);
tampil_lcd(0,0,"%d",x);
PORTD.1=0;
delay_ms(1900);
}
break;
}
}
while(1){
rtc_get_time(&hour,&minute,&sec);
tampil_lcd(5,0,"ALARM !!!");
tampil_lcd(5,1,"%2d:%2d:%2d\n",hour,minute,sec);
delay_ms(100);
lcd_clear();
delay_ms(100);
if(sec>18){
PORTD.0=0;
PORTD.1=0;
goto mulai;
}
}
}
}
if(week_day == 1)
for(j=10;j<20;j++){
if(hour==alarm_jam[j] && minute==alarm_menit[j] && sec==0 ){
alarm_lagu[j-10]-=1;
putar=alarm_lagu[j-10];
PORTD.0=1;
PORTD.1=0;
lcd_clear();
while(1){
tampil_lcd(5,0,"ALARM !!!");
tampil_lcd(5,1,"%2d:%2d:%2d\n",hour,minute,sec);
delay_ms(100);

lcd_clear();
delay_ms(100);
rtc_get_time(&hour,&minute,&sec);
if(sec==4){
for(x=0;x<=putar;x++){
PORTD.0=1;
delay_ms(40);
tampil_lcd(0,0,"%d",x);
PORTD.1=0;
delay_ms(1900);
}
break;
}
}
while(1){
rtc_get_time(&hour,&minute,&sec);
tampil_lcd(5,0,"ALARM !!!");
tampil_lcd(5,1,"%2d:%2d:%2d\n",hour,minute,sec);
delay_ms(100);
lcd_clear();
delay_ms(100);
if(sec>18){
PORTD.0=0;
PORTD.1=0;
goto mulai;
}
}
}
}
if(week_day == 2)
for(j=20;j<30;j++){
if(hour==alarm_jam[j] && minute==alarm_menit[j] && sec==0 ){
alarm_lagu[j-20]-=1;
putar=alarm_lagu[j-20];
PORTD.0=1;
PORTD.1=0;
lcd_clear();
while(1){
tampil_lcd(5,0,"ALARM !!!");
tampil_lcd(5,1,"%2d:%2d:%2d\n",hour,minute,sec);
delay_ms(100);
lcd_clear();
delay_ms(100);

rtc_get_time(&hour,&minute,&sec);
if(sec==4){
for(x=0;x<=putar;x++){
PORTD.0=1;
delay_ms(40);
tampil_lcd(0,0,"%d",x);
PORTD.1=0;
delay_ms(1900);
}
break;
}
}
while(1){
rtc_get_time(&hour,&minute,&sec);
tampil_lcd(5,0,"ALARM !!!");
tampil_lcd(5,1,"%2d:%2d:%2d\n",hour,minute,sec);
delay_ms(100);
lcd_clear();
delay_ms(100);
if(sec>18){
PORTD.0=0;
PORTD.1=0;
goto mulai;
}
}
}
}
if(week_day == 3)
for(j=30;j<40;j++){
if(hour==alarm_jam[j] && minute==alarm_menit[j] && sec==0 ){
alarm_lagu[j-30]-=1;
putar=alarm_lagu[j-30];
PORTD.0=1;
PORTD.1=0;
lcd_clear();
while(1){
tampil_lcd(5,0,"ALARM !!!");
tampil_lcd(5,1,"%2d:%2d:%2d\n",hour,minute,sec);
delay_ms(100);
lcd_clear();
delay_ms(100);
rtc_get_time(&hour,&minute,&sec);

if(sec==4){
for(x=0;x<=putar;x++){
PORTD.0=1;
delay_ms(40);
tampil_lcd(0,0,"%d",x);
PORTD.1=0;
delay_ms(1900);
}
break;
}
}
while(1){
rtc_get_time(&hour,&minute,&sec);
tampil_lcd(5,0,"ALARM !!!");
tampil_lcd(5,1,"%2d:%2d:%2d\n",hour,minute,sec);
delay_ms(100);
lcd_clear();
delay_ms(100);
if(sec>18){
PORTD.0=0;
PORTD.1=0;
goto mulai;
}
}
}
}
if(week_day == 4)
for(j=40;j<50;j++){
if(hour==alarm_jam[j] && minute==alarm_menit[j] && sec==0 ){
alarm_lagu[j-40]-=1;
putar=alarm_lagu[j-40];
PORTD.0=1;
PORTD.1=0;
lcd_clear();
while(1){
tampil_lcd(5,0,"ALARM !!!");
tampil_lcd(5,1,"%2d:%2d:%2d\n",hour,minute,sec);
delay_ms(100);
lcd_clear();
delay_ms(100);
rtc_get_time(&hour,&minute,&sec);
if(sec==4){
for(x=0;x<=putar;x++){

PORTD.0=1;
delay_ms(40);
tampil_lcd(0,0,"%d",x);
PORTD.1=0;
delay_ms(1900);
}
break;
}
}
while(1){
rtc_get_time(&hour,&minute,&sec);
tampil_lcd(5,0,"ALARM !!!");
tampil_lcd(5,1,"%2d:%2d:%2d\n",hour,minute,sec);
delay_ms(100);
lcd_clear();
delay_ms(100);
if(sec>18){
PORTD.0=0;
PORTD.1=0;
goto mulai;
}
}
}
}
if(week_day == 5)
for(j=50;j<60;j++){
if(hour==alarm_jam[j] && minute==alarm_menit[j] && sec==0 ){
alarm_lagu[j-50]-=1;
putar=alarm_lagu[j-50];
PORTD.0=1;
PORTD.1=0;
lcd_clear();
while(1){
tampil_lcd(5,0,"ALARM !!!");
tampil_lcd(5,1,"%2d:%2d:%2d\n",hour,minute,sec);
delay_ms(100);
lcd_clear();
delay_ms(100);
rtc_get_time(&hour,&minute,&sec);
if(sec==4){
for(x=0;x<=putar;x++){
PORTD.0=1;
delay_ms(40);
tampil_lcd(0,0,"%d",x);

PORTD.1=0;
delay_ms(1900);
}
break;
}
}
while(1){
rtc_get_time(&hour,&minute,&sec);
tampil_lcd(5,0,"ALARM !!!");
tampil_lcd(5,1,"%2d:%2d:%2d\n",hour,minute,sec);
delay_ms(100);
lcd_clear();
delay_ms(100);
if(sec>18){
PORTD.0=0;
PORTD.1=0;
goto mulai;
}
}
}
}
if ((__ADC >= 90) && (__ADC <= 95)){
tampil_lcd(0,0,"Vlow");
PORTD = 0b1000000;
}
if ((__ADC >= 96) && (__ADC <= 100)){
tampil_lcd(0,0,"Low ");
PORTD = 0b1100000;
}
if ((__ADC >= 101) && (__ADC <= 105)){
tampil_lcd(0,0,"Med ");
PORTD = 0b1110000;
}
if (__ADC >= 106){
tampil_lcd(0,0,"Full ");
PORTD = 0b1111100;
}
loncat:
if(cancel){while(cancel);menu();}
}

4.3.3.11 Fungsi Tampil Menu


Fungsi dari tampilan menu adalah untuk menanpilkan pilihan menu.
Listing program adalah sebagai berikut :
void menu(){
pointer=1;
lcd_clear();
while(1){
tampil_lcd(3,0,"MENU");
if(up){while(up);delay_ms(200);pointer++;if(pointer>3)pointer=1;}
if(down){while(down);delay_ms(200);pointer--;if(pointer<=0)pointer=3;}
switch(pointer){
case 1 : tampil_lcd(0,1,"1.Set Waktu ");break;
case 2 : tampil_lcd(0,1,"2.Set Tanggal ");break;
case 3 : tampil_lcd(0,1,"3.Set Alarm ");break;
}
if(ok){while(ok);
switch(pointer){
case 1 : setting_jam();break;
case 2 : setting_hari();break;
case 3 : set_alarm();break;
}
}
if(cancel){while(cancel);rtc_main();}
}
}
4.3.3.12 Fungsi Inisialisai
Funsi inisialisasi adalah fungsi untuk mengatur port setiap port untuk
inputan atau outputan. Berikut adalah listing program :
void init(void)
{
PORTA = 0x00;
DDRA = 0x00;
PORTB = 0x00;
DDRB = 0xFF;
PORTC = 0xFF;
DDRC = 0x00;
PORTD = 0b00000000; DDRD=0xFF;
ADMUX=ADC_VREF_TYPE & 0xff;

ADCSRA=0x86;
SFIOR&=0xEF;
lcd_init(16);
tampil_lcd (0,0,"Bel Sekolah ");
tampil_lcd (0,1,"Brbsis Mikro ");
delay_ms(1500);
lcd_clear();
}

4.3.3.13 Fungsi Main


Fungsi main adalah fungsi dari keseluruhan dari program utama pada
mikrokontroler. Beikut adalah listing program :
void main()
{
init();
i2c_init();
rtc_main();
}

BAB V PENUTUP
5.1

Kesimpulan
Setelah melakukan berbagai percobaan dan analisis terhadap alat yang

telah dirancang dan dibuat, maka dapat disimpulkan sebagai berikut :


1. Alat sudah dapat bekerja dengan baik sesuai dengan yang diharapkan, hal
ini dapat dibuktikan dengan bel yang berbunyi secara otomatis sesuai
dengan jadwal yang ditentukan.
2. Apabila pada suatu waktu waktu jadwal dirubah dengan mudah.
3. Ketika di hari libur kalender dan hari libur minggu bel akan secara
otomatis dapat mati, selain itu saat listrik mati data-data yang telah
tersimpan tidak begitu saja hilang, sehingga tidak perlu melakukan
pengaturan ulang.
4. Dapat di atur dengan 10 jenis melodi
5.2

Saran
Apabila alat ini ingin dikembangkan terdapat beberapa kemungkinan yang

bisa dilakukan dalam peyempurnaan alat. Sebagai berikut :


1. Desain BOX yang lebih minimalis.
2. Suara lagu pada bel dapat menggunakan suara yang lebih menarik.
3. Menanbahkan fitur-fitur pada alat sehingga dapat mempermudah
penggunaan.

4. Pada baterry cadangan yang digunakan 9V lebih baik dilengkapi


dengan charger pada saat baterry habis tidak perlu diganti.

DAFTAR PUSTAKA
[1] Data sheet ATMega32, Regulator 7805,RTC DS1307, UM3483, LCD 16x2,
diakses di http://www.alldatasheet.com
[2] Bejo, Agus., C & AVR Rahasia Kemudahan Bahasa C dalam Mikrokontroler
ATmega 8535, Graha Ilmu, Yogyakarta, 2008.
[3] Eko putra, Agfianto, Mikrokontroler AT89 dan AVR, Gava Media;
Yogyakarta 2010.
[4] Wibawanto, Hari, Elektronika Dasar, Elex Media Komputindo, Yogykarta
2009.

LAMPIRAN

/*****************************************************
This program was produced by the
CodeWizardAVR V2.05.3 Standard
Automatic Program Generator
Copyright 1998-2011 Pavel Haiduc, HP InfoTech s.r.l.
http://www.hpinfotech.com
Project :
Version :
Date : 29/9/2013
Author : Alexander David Sihotang
Company : Diploma Teknik Elektro
Comments:

Chip type
: ATmega32
Program type
: Application
AVR Core Clock frequency: 12.000000 MHz
Memory model
: Small
External RAM size
:0
Data Stack size
: 512
*****************************************************/
#include <mega32.h>
#include <delay.h>
#include <i2c.h>
#include <ds1307.h>
#include <alcd.h>
#include <stdio.h>
#include <stdarg.h>
#include <stdlib.h>

//header ATmega32
//header delay
//I2C Bus functions
//DS1307 Real Time Clock functions
//Alphanumeric LCD functions
//standar Input/Output
//
//standar liburary

#define ADC_VREF_TYPE 0x60 // definisi register referensi ADC


#define RTC_ADDR 0xD0
// definisi register alamat I2C

#define
#define
#define
#define

ok
!PINC.4 //definsi tombol ok di PINC.4
down !PINC.3 //definsi tombol down di PINC.3
up
!PINC.2 //definisi tombol up di PINC.2
cancel !PINC.1 //definisi cancel di PINC.1

/*===============Deklarasi Variable GLobal==============*/


char *dday[]={"Senin ","Selasa","Rabu ","Kamis ","Jum'at","Sabtu
","minggu"," "};
unsigned char hour, minute, sec, week_day, day, month, year;
signed char v_hour,v_minute,v_week_day,v_day=1, v_month=1, hari,cacah;

int v_year;
unsigned int pointer, alarm, j;
unsigned char __ADC;
signed char alarm_jam[60],alarm_menit[60],alarm_lagu[20];
/*===============Deklarasi Variable EEPROM==============*/
__eeprom int ee_jam[60]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
ee_menit[60]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
ee_lagu[20]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
/*==================Deklarasi Prototype FUngsi==============*/
void setting_jam();
void set_alarm();
void setting_menit();
void setting_hari();
void setting_tanggal();
void setting_bulan();
void setting_tahun();
void menu();
void rtc_main();
/*=======================Fungsi Read_ADC================*/
unsigned char read_adc(unsigned char adc_input){
ADMUX= adc_input | (ADC_VREF_TYPE & 0xff);
// Delay needed for the stabilization of the ADC input voltage
delay_us(10);
// Start the AD conversion
ADCSRA|=0x40;
// Wait for the AD conversion to complete
while ((ADCSRA & 0x10)==0);
ADCSRA|=0x10;
return ADCH;
}
/*================Fungsi Tampil
LCD=========================*/
void tampil_lcd(unsigned char kolom,unsigned char baris,char flash*fmtstr,...){
char lcd[17];
va_list(ap);
va_start(ap,fmtstr);
vsprintf(lcd,fmtstr,ap);
va_end(ap)
lcd_gotoxy(kolom,baris);
lcd_puts(lcd);

}
/*========================Fungsi Setting Nilai
Jam==================*/
void setting_jam(){
lcd_clear(); //menghapus lcd dari data sebelumnya
while(1){
delay_ms(50);
tampil_lcd(7,0,"%2i:%2i:00",v_hour,v_minute); //menampilkan nilai
variable settingan jam, menit
delay_ms(100);
tampil_lcd(7,0," :%2i:00",v_minute);
if(up){while(up);v_hour++;if(v_hour>23)v_hour=0;} //increment nilai
variable jam
if(down){while(up);v_hour--;if(v_hour<=0)v_hour=23;} //decrement nilai
variable jam
if(ok){while(ok);setting_menit();} //if ok pergi ke fungsi setting menit
if(cancel){while(cancel);rtc_main();} //if cancel pergi ke fungsi rtc main
}
}
/*===================Fungsi Setting Menit====================*/
void setting_menit(){
lcd_clear(); //menghapus lcd dari data sebelumnya
while(1){
delay_ms(50);
tampil_lcd(7,0,"%2i:%2i:00",v_hour,v_minute);//menampilkan nilai variable
settingan menit
delay_ms(100);
tampil_lcd(7,0,"%2i: :00",v_hour);
if(up){while(up);v_minute++;if(v_minute>59)v_minute=0;}//increment nilai
variable menit
if(down){while(up);v_minute--;if(v_minute<=0)v_minute=59;} //decrement
nilai variable menit
if(ok){while(ok);rtc_set_time(v_hour,v_minute,0);rtc_main();} //if ok pergi
ke rtc main
if(cancel){while(cancel);rtc_main();} //if cancel pergi ke rtc main
}
}
/*=====================Fungsi Setting
Hari=========================*/
void setting_hari(){

lcd_clear(); //menghapus lcd dari data sebelumnya


while(1){
tampil_lcd(0,1,"%s%2i:%2i:%4i",dday[v_week_day],v_day,v_month,v_year);
//menampilkan nilai variable hari, tanggal, bulan dan tahun
delay_ms(50);
tampil_lcd(0,1,"%s%2i:%2i:%4i",dday[7],v_day,v_month,v_year);
delay_ms(50);
if(up){while(up);v_week_day++;if(v_week_day>6)v_week_day=0;}
//increment nilai variable hari
if(down){while(up);v_week_day--;if(v_week_day<=0)v_week_day=6;}
//decerement nilai variable hari
if(ok){while(ok);setting_tanggal();} //if ok pergi ke fungsi setting tanggal
if(cancel){while(cancel);rtc_main();} //if cancel pergi fungsi rtc main
}
}
/*==============Fungsi Setting Tanggal====================*/
void setting_tanggal(){
lcd_clear(); //menghapus tampilan lcd dari data sebelumnya
while(1){
tampil_lcd(0,1,"%s%2i:%2i:%4i",dday[v_week_day],v_day,v_month,v_year);//m
enampilkan nilai variable hari, tanggal bulan dan tahun
delay_ms(50);
tampil_lcd(0,1,"%s :%2i:%4i",dday[v_week_day],v_month,v_year);
delay_ms(50);
if(up){while(up);v_day++;if(v_day>31)v_day=1;} //increment nilai variable
tanggal
if(down){while(up);v_day--;if(v_day<=0)v_day=31;} //decrement nilai
variable tanggal
if(ok){while(ok);setting_bulan();} //if ok pergi ke setting bulan
if(cancel){while(cancel);rtc_main();} // if cancel pergi ke rtc main
}
}
/*================Fungsi Setting Bulan=====================*/
void setting_bulan(){
lcd_clear();
while(1){
tampil_lcd(0,1,"%s%2i:%2i:%4i",dday[v_week_day],v_day,v_month,v_year);
delay_ms(50);

tampil_lcd(0,1,"%s%2i: :%4i",dday[v_week_day],v_day,v_year);
delay_ms(50);
if(up){while(up);v_month++;if(v_month>12)v_month=1;}
if(down){while(up);v_month--;if(v_month<=0)v_month=12;}
if(ok){while(ok);setting_tahun();}
if(cancel){while(cancel);rtc_main();}
}
}

/*=============Fungsi Setting Tahun==================*/


void setting_tahun(){
lcd_clear();
while(1){
tampil_lcd(0,1,"%s%2i:%2i:%4i",dday[v_week_day],v_day,v_month,v_year);
delay_ms(50);
tampil_lcd(0,1,"%s%2i:%2i: ",dday[v_week_day],v_day,v_month);
delay_ms(50);
if(up){while(up);v_year++;if(v_year>2100)v_year=0;}
if(down){while(up);v_year--;if(v_year<=0)v_year=2100;}
if(ok){while(ok);rtc_set_date(v_week_day,v_day,v_month,v_year);rtc_main();}
if(cancel){while(cancel);rtc_main();}
}
}
/*=====================Fungsi Setting
Alarm=====================*/
void set_alarm(){
alarm=0;
pointer=1;
lcd_clear();
atas:
while(1){
tampil_lcd(3,0,"Pilih hari");
if(up){while(up);pointer++;if(pointer>6)pointer=1;}
if(down){while(down);pointer--;if(pointer<1)pointer=6;}
switch(pointer){
case 1 : hari=1;tampil_lcd(0,1,"senin ");break;
case 2 : hari=2;tampil_lcd(0,1,"selasa");break;
case 3 : hari=3;tampil_lcd(0,1,"rabu ");break;

case 4 : hari=4;tampil_lcd(0,1,"kamis ");break;


case 5 : hari=5;tampil_lcd(0,1,"jumat ");break;
case 6 : hari=6;tampil_lcd(0,1,"sabtu ");break;
}
if(ok){while(ok);goto setwaktu;}
if(cancel){while(cancel);rtc_main();}
}
setwaktu:
lcd_clear();
while(1){
tampil_lcd(3,0,"Set Alarm[%2d]",cacah+1);
delay_ms(50);
tampil_lcd(3,0,"Set Alarm[ ]",cacah+1);
delay_ms(50);
if(up){while(up);cacah++;if(cacah>9)cacah=0;}
if(down){while(down);cacah--;if(cacah<=0)cacah=9;}
if(ok){while(ok);goto bawah;}
if(cancel){while(cancel);rtc_main();}
}
bawah:
lcd_clear();
if(hari==1)alarm=cacah;
if(hari==2)alarm=cacah+10;
if(hari==3)alarm=cacah+20;
if(hari==4)alarm=cacah+30;
if(hari==5)alarm=cacah+40;
if(hari==6)alarm=cacah+50;
while(1){
tampil_lcd(0,1,"%2d:%2d lagu:%2d
",alarm_jam[alarm],alarm_menit[alarm],alarm_lagu[cacah]);
delay_ms(50);
tampil_lcd(0,1," :%2d lagu:%2d ",alarm_menit[alarm],alarm_lagu[cacah]);
delay_ms(50);
if(up){while(up);alarm_jam[alarm]++;if(alarm_jam[alarm]>23)alarm_jam[alarm]
=0;}
if(down){while(down);alarm_jam[alarm]-;if(alarm_jam[alarm]<0)alarm_jam[alarm]=23;}
if(ok){
while(ok);
ee_jam[alarm]=alarm_jam[alarm];
goto set_menit;
}

}
set_menit:
delay_ms(500);
lcd_clear();
while(1){
tampil_lcd(0,1,"%2d:%2d lagu:%2d
",alarm_jam[alarm],alarm_menit[alarm],alarm_lagu[cacah]);
delay_ms(50);
tampil_lcd(0,1,"%2d: lagu:%2d ",alarm_jam[alarm],alarm_lagu[cacah]);
delay_ms(50);
if(up){while(up);alarm_menit[alarm]++;if(alarm_menit[alarm]>59)alarm_menit[a
larm]=0;}
if(down){while(down);alarm_menit[alarm]-;if(alarm_menit[alarm]<0)alarm_menit[alarm]=59;}
if(ok){
while(ok);
ee_menit[alarm]=alarm_menit[alarm];
goto set_lagu;
}
}
set_lagu:
delay_ms(500);
lcd_clear();
while(1){
tampil_lcd(0,1,"%2d:%2d lagu:%2d
",alarm_jam[alarm],alarm_menit[alarm],alarm_lagu[cacah]);
delay_ms(50);
tampil_lcd(0,1,"%2d:%2d lagu: ",alarm_jam[alarm],alarm_menit[alarm]);
delay_ms(50);
if(up){while(up);alarm_lagu[cacah]++;if(alarm_lagu[cacah]>9)alarm_lagu[cacah]
=1;}
if(down){while(down);alarm_lagu[cacah]-;if(alarm_lagu[cacah]<1)alarm_lagu[cacah]=9;}
if(ok){
while(ok);
ee_lagu[cacah]=alarm_lagu[cacah];
goto atas;
}
if(cancel){
while(cancel);
ee_lagu[cacah]=alarm_lagu[cacah];
goto setwaktu;

}
}
}
/*===============Fungsi RTC Main================*/
void rtc_main(){
int x=0,putar=0;
lcd_clear();
rtc_init(0,0,0);
while(1){
mulai:
PORTD.0=0;
__ADC = read_adc(0);
delay_ms(100);
rtc_get_time(&hour,&minute,&sec);
rtc_get_date(&week_day,&day,&month,&year);
tampil_lcd(7,0,"%2d:%2d:%2d\n",hour,minute,sec);
tampil_lcd(6,1,"%2d/%2d/%4d",day,month,2000+year);
tampil_lcd(0,0,"%03d", __ADC);
lcd_gotoxy(0,1);
lcd_puts(dday[week_day]);
if(week_day == 6) ;
if(week_day == 0)
for(j=0;j<10;j++){
if(hour==alarm_jam[j] && minute==alarm_menit[j] && sec==0 ){
alarm_lagu[j]-=1;
putar=alarm_lagu[j];
PORTD.0=1;
PORTD.1=0;
lcd_clear();
while(1){
tampil_lcd(5,0,"ALARM !!!");
tampil_lcd(5,1,"%2d:%2d:%2d\n",hour,minute,sec);
delay_ms(100);
lcd_clear();
delay_ms(100);
rtc_get_time(&hour,&minute,&sec);
if(sec==4){
for(x=0;x<=putar;x++){
PORTD.0=1;
delay_ms(40);
tampil_lcd(0,0,"%d",x);
PORTD.1=0;
delay_ms(1900);
}

break;
}
}
while(1){
rtc_get_time(&hour,&minute,&sec);
tampil_lcd(5,0,"ALARM !!!");
tampil_lcd(5,1,"%2d:%2d:%2d\n",hour,minute,sec);
delay_ms(100);
lcd_clear();
delay_ms(100);
if(sec>18){
PORTD.0=0;
PORTD.1=0;
goto mulai;
}
}
}
}
if(week_day == 1)
for(j=10;j<20;j++){
if(hour==alarm_jam[j] && minute==alarm_menit[j] && sec==0 ){
alarm_lagu[j-10]-=1;
putar=alarm_lagu[j-10];
PORTD.0=1;
PORTD.1=0;
lcd_clear();
while(1){
tampil_lcd(5,0,"ALARM !!!");
tampil_lcd(5,1,"%2d:%2d:%2d\n",hour,minute,sec);
delay_ms(100);
lcd_clear();
delay_ms(100);
rtc_get_time(&hour,&minute,&sec);
if(sec==4){
for(x=0;x<=putar;x++){
PORTD.0=1;
delay_ms(40);
tampil_lcd(0,0,"%d",x);
PORTD.1=0;
delay_ms(1900);
}
break;

}
}
while(1){
rtc_get_time(&hour,&minute,&sec);
tampil_lcd(5,0,"ALARM !!!");
tampil_lcd(5,1,"%2d:%2d:%2d\n",hour,minute,sec);
delay_ms(100);
lcd_clear();
delay_ms(100);
if(sec>18){
PORTD.0=0;
PORTD.1=0;
goto mulai;
}
}
}
}
if(week_day == 2)
for(j=20;j<30;j++){
if(hour==alarm_jam[j] && minute==alarm_menit[j] && sec==0 ){
alarm_lagu[j-20]-=1;
putar=alarm_lagu[j-20];
PORTD.0=1;
PORTD.1=0;
lcd_clear();
while(1){
tampil_lcd(5,0,"ALARM !!!");
tampil_lcd(5,1,"%2d:%2d:%2d\n",hour,minute,sec);
delay_ms(100);
lcd_clear();
delay_ms(100);
rtc_get_time(&hour,&minute,&sec);
if(sec==4){
for(x=0;x<=putar;x++){
PORTD.0=1;
delay_ms(40);
tampil_lcd(0,0,"%d",x);
PORTD.1=0;
delay_ms(1900);
}
break;
}

}
while(1){
rtc_get_time(&hour,&minute,&sec);
tampil_lcd(5,0,"ALARM !!!");
tampil_lcd(5,1,"%2d:%2d:%2d\n",hour,minute,sec);
delay_ms(100);
lcd_clear();
delay_ms(100);
if(sec>18){
PORTD.0=0;
PORTD.1=0;
goto mulai;
}
}
}
}
if(week_day == 3)
for(j=30;j<40;j++){
if(hour==alarm_jam[j] && minute==alarm_menit[j] && sec==0 ){
alarm_lagu[j-30]-=1;
putar=alarm_lagu[j-30];
PORTD.0=1;
PORTD.1=0;
lcd_clear();
while(1){
tampil_lcd(5,0,"ALARM !!!");
tampil_lcd(5,1,"%2d:%2d:%2d\n",hour,minute,sec);
delay_ms(100);
lcd_clear();
delay_ms(100);
rtc_get_time(&hour,&minute,&sec);
if(sec==4){
for(x=0;x<=putar;x++){
PORTD.0=1;
delay_ms(40);
tampil_lcd(0,0,"%d",x);
PORTD.1=0;
delay_ms(1900);
}
break;
}
}

while(1){
rtc_get_time(&hour,&minute,&sec);
tampil_lcd(5,0,"ALARM !!!");
tampil_lcd(5,1,"%2d:%2d:%2d\n",hour,minute,sec);
delay_ms(100);
lcd_clear();
delay_ms(100);
if(sec>18){
PORTD.0=0;
PORTD.1=0;
goto mulai;
}
}
}
}
if(week_day == 4)
for(j=40;j<50;j++){
if(hour==alarm_jam[j] && minute==alarm_menit[j] && sec==0 ){
alarm_lagu[j-40]-=1;
putar=alarm_lagu[j-40];
PORTD.0=1;
PORTD.1=0;
lcd_clear();
while(1){
tampil_lcd(5,0,"ALARM !!!");
tampil_lcd(5,1,"%2d:%2d:%2d\n",hour,minute,sec);
delay_ms(100);
lcd_clear();
delay_ms(100);
rtc_get_time(&hour,&minute,&sec);
if(sec==4){
for(x=0;x<=putar;x++){
PORTD.0=1;
delay_ms(40);
tampil_lcd(0,0,"%d",x);
PORTD.1=0;
delay_ms(1900);
}
break;
}
}
while(1){
rtc_get_time(&hour,&minute,&sec);

tampil_lcd(5,0,"ALARM !!!");
tampil_lcd(5,1,"%2d:%2d:%2d\n",hour,minute,sec);
delay_ms(100);
lcd_clear();
delay_ms(100);
if(sec>18){
PORTD.0=0;
PORTD.1=0;
goto mulai;
}
}
}
}
if(week_day == 5)
for(j=50;j<60;j++){
if(hour==alarm_jam[j] && minute==alarm_menit[j] && sec==0 ){
alarm_lagu[j-50]-=1;
putar=alarm_lagu[j-50];
PORTD.0=1;
PORTD.1=0;
lcd_clear();
while(1){
tampil_lcd(5,0,"ALARM !!!");
tampil_lcd(5,1,"%2d:%2d:%2d\n",hour,minute,sec);
delay_ms(100);
lcd_clear();
delay_ms(100);
rtc_get_time(&hour,&minute,&sec);
if(sec==4){
for(x=0;x<=putar;x++){
PORTD.0=1;
delay_ms(40);
tampil_lcd(0,0,"%d",x);
PORTD.1=0;
delay_ms(1900);
}
break;
}
}
while(1){
rtc_get_time(&hour,&minute,&sec);
tampil_lcd(5,0,"ALARM !!!");
tampil_lcd(5,1,"%2d:%2d:%2d\n",hour,minute,sec);
delay_ms(100);

lcd_clear();
delay_ms(100);
if(sec>18){
PORTD.0=0;
PORTD.1=0;
goto mulai;
}
}
}
}
if ((__ADC >= 90) && (__ADC <= 95)){
tampil_lcd(0,0,"Vlow");
PORTD = 0b1000000;
}
if ((__ADC >= 96) && (__ADC <= 100)){
tampil_lcd(0,0,"Low ");
PORTD = 0b1100000;
}
if ((__ADC >= 101) && (__ADC <= 105)){
tampil_lcd(0,0,"Med ");
PORTD = 0b1110000;
}
if (__ADC >= 106){
tampil_lcd(0,0,"Full ");
PORTD = 0b1111100;
}
loncat:
if(cancel){while(cancel);menu();}
}
}
/*========================Fungsi Tampil
Menu========================*/
void menu(){
pointer=1;
lcd_clear();
while(1){
tampil_lcd(3,0,"MENU");
if(up){while(up);delay_ms(200);pointer++;if(pointer>3)pointer=1;}
if(down){while(down);delay_ms(200);pointer--;if(pointer<=0)pointer=3;}

switch(pointer){
case 1 : tampil_lcd(0,1,"1.Set Waktu ");break;
case 2 : tampil_lcd(0,1,"2.Set Tanggal ");break;
case 3 : tampil_lcd(0,1,"3.Set Alarm ");break;
}
if(ok){while(ok);
switch(pointer){
case 1 : setting_jam();break;
case 2 : setting_hari();break;
case 3 : set_alarm();break;
}
}
if(cancel){while(cancel);rtc_main();}
}
}
/*==========================Fungsi
Inisialisai=======================*/
void init(void)
{
PORTA = 0x00;
DDRA = 0x00;
PORTB = 0x00;
DDRB = 0xFF;
PORTC = 0xFF;
DDRC = 0x00;
PORTD = 0b00000000; DDRD=0xFF;
ADMUX=ADC_VREF_TYPE & 0xff;
ADCSRA=0x86;
SFIOR&=0xEF;
lcd_init(16);
tampil_lcd (0,0,"Bel Sekolah ");
tampil_lcd (0,1,"Brbsis Mikro ");
delay_ms(1500);
lcd_clear();
}
/*==========================Fungsi
Main======================*/
void main()
{
init();
i2c_init();
rtc_main();
}

Anda mungkin juga menyukai