BEL SEKOLAH TERPROGRAM BERBASIS MIKROKONTROLER ATMega32
-
Upload
usman-abdul-rahman -
Category
Documents
-
view
98 -
download
17
Transcript of BEL SEKOLAH TERPROGRAM BERBASIS MIKROKONTROLER ATMega32
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 ....................................................... 6
Gambar 2.2 Simbol Trafo ............................................................................ 7
Gambar 2.3 Penyearah Dan Bentuk Gelombang .......................................... 8
Gambar 2.4 Bentuk Fisik Dari IC LM 78XX ............................................... 9
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 U2 : teganan sekunder
N1 : jumlah lilitan primer N2 : jumlah lilitan sekunder
2.1.2 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 : -40°C hingga
+85°C
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
2.2.3 Register-register DS 1307
RTC DS 1307 mempunyai 8 pemetaan alamat (
dimana register-register RTC di tempatkan pada lokasi pengalamatan 00h sampai
07h. Sedangkan register
pada lokasi pengalamatan 08h samapai 3Fh.
Gambar 2.7 Diangram Blok IC RTC 1307
register DS 1307
RTC DS 1307 mempunyai 8 pemetaan alamat (address map
register RTC di tempatkan pada lokasi pengalamatan 00h sampai
07h. Sedangkan register-register RAM (Ramdom Access Memory
pada lokasi pengalamatan 08h samapai 3Fh.
Tabel 2.1 Peta alamat RTC DS1307
address map) pada RTC
register RTC di tempatkan pada lokasi pengalamatan 00h sampai
Ramdom Access Memory) ditempatkan
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 Vegard’s 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 25’C 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
Tabel 2.5
Nomor
Pin
10
11,31
30
32
1 -- 8
33 -- 40
14 -- 21
22 -- 29
9
12, 13
Gambar 2.9 Konfigurasi pin ATMEGA32
Tabel 2.5 Konfigurasi pin ATMEGA32
Nama Fungsi
VCC Catu daya positif
GND Catu daya negative
AVCC Catu daya positif untuk ADC
AREF Pin untuk tegangan refrensi ADC
PB0 -- PB7 Pin masukan dan keluaran PORTB
PA0 -- PA7 Pin masukan dan keluaran PORTBA
PD0 -- PD7 Pin masukan dan keluaran PORTD
PC0 -- PC7 Pin masukan dan keluaran PORTC
RESET Pin masukan untuk reset (active low)
XTAL 1
dan 2 Pin untuk masukan osilator eksternal
Pin untuk tegangan refrensi ADC
Pin masukan dan keluaran PORTB
PORTBA
Pin masukan dan keluaran PORTD
Pin masukan dan keluaran PORTC
Pin masukan untuk reset (active low)
Pin untuk masukan osilator eksternal
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.
2.4 LCD 16×2
2.4.1 Pengertian LCD
Liquid Crystal Display
yang menghasilkan citra pada sebuah permukaan yang rata
memberikan sinar pada k
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
pengolahan kristal cair yang berupa cairan kimia, dimana molekul
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
televisi, kalkulator ataupun layar komputer. LCD sebagaimana outputnya yang
daoat menampilkan tulisan sehingga lebih mudah dimengerti, dibandingkan jika
menggunakan LED saja. T
panel LCD yang terdiri dari banyak titik. LCD dan sebuah mikrokontroler yang
menempel dipanel dan berfungsi untuk mengatur titik
Gambar 2.14 Stack Pointer
Pengertian LCD
Liquid Crystal Display (LCD) merupakan sebuah teknologi layar datar
yang menghasilkan citra pada sebuah permukaan yang rata
memberikan sinar pada kristal 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
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 elektronik seperti
televisi, kalkulator ataupun layar komputer. LCD sebagaimana outputnya yang
daoat menampilkan tulisan sehingga lebih mudah dimengerti, dibandingkan jika
menggunakan LED saja. Tampilan 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 LCD menjadi huruf
(LCD) merupakan sebuah teknologi layar datar
yang menghasilkan citra pada sebuah permukaan yang rata (flat) dengan
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
tahun 1888 ini, merupakan
pengolahan kristal cair yang berupa cairan kimia, dimana molekul-molekulnya
dapat diatur sedemikian bila diberikan medan listrik. LCD adalah salah satu jenis
media tampilan yang menggunakan kristal cair sebagai penampil utama. LCD
alat elektronik seperti
televisi, kalkulator ataupun layar komputer. LCD sebagaimana outputnya yang
daoat menampilkan tulisan sehingga lebih mudah dimengerti, dibandingkan jika
ampilan LCD terdiri dari dua bagian, yaitu bagian
panel LCD yang terdiri dari banyak titik. LCD dan sebuah mikrokontroler yang
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
1 Vss - Dihubungkan ke 0 V (Ground)
2 Vcc - Dihubungkan dengan tegangan supply +5V dengan
toleransi ± 10%.
3 Vee - Digunakan untuk mengatur tingkat kontras LCD.
4 RS H/L Bernilai logika ‘0’ untuk input instruksi dan bernilai
logika ‘1’ untuk input data.
5 R/W H/L Bernilai logika ‘0’ untuk proses ‘write’ dan bernilai
logika ‘1’ untuk proses ‘read’.
6 E H Merupakan sinyal enable. Sinyal ini akan aktif pada
failing edge dari logika ‘1’ ke logika ‘0’.
7 DB0 H/L Pin data D0
8 DB1 H/L Pin data D1
9 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 16×2
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
1 TSP Untuk mode normal pin ini tidak dihubungkan
2 CE aktif jika terhubung VCC dan nonaktif jika terhubung ke
Ground
3 LP Hanya memainkan sebuah lagu jika terhubung ke VCC
dan memainkan semua lagu jika terhubung ke Ground
4 SL Trigger positif untuk memainkan lagu berikutnya
5 AS Lagu akan dimainkan ulang jika terhubung ke ground dan
akan berhenti otomatis jika terhubung ke VCC
6 NC Tidak dihubungkan
7 ENV Envelope
8 GND Ground
9 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 Tidak dihubungkan
14 OSC2 Eksternal osilator pinl
15 OSC1 Eksternal osilator pin2
16 VCC Positif power supply
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 16×2
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 16×4
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 16×2 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.
2 PORT B : Difungsikan sebagai penampil LCD 16×2
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 16×2
LCD 16×2 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 GND GND 2 VCC VCC 4 RS PortB.0 5 RW PortB.1 6 EN PortB.2
11 D4 PortB.3 12 D5 PortB.4 13 D6 PortB.5 14 D7 Port B.6 15 NC PortB.7 16 NC GND
Gambar 3.7 Rangkaian Penampil LCD 16×2
Pada rangkaian kontrol LCD 16×2 resistor 1K berfungsi untuk mengatur
kontras karakter yang ditampilkan oleh LCD 16×2.
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
tdk
tdk
tdk
Ya
Ya
ya
Ya
ya
ya
Baca data RTC
Ambil data Alarm pada EEPROM
Tombol ok Ditekan?
Atur Jam Set waktu
Set alaram
Set tanggal
Atur tanggal
Atur Alarm
Tampilkan Waktu,
Tanggal dan
Kondisi Batry
mulai
Inisialisai Port,
ADC, RTC
Data RTC=
Data
EEPROM?
Nyalakan Lagu Alarm
If
detik==18
Lagu Alarm Off
Tampilkan Menu
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
No Bagian Vin
Vout
Bentuk gelombang Tanpa
beban
Beban
penuh
1 Regulator
7805 5 V 5 V 4,95 V
2 Regulator
7812 12 V 12 V 11.8 V
No Bagian Vin Tegangan Terukur
Bentuk Gelombang Tanpa Beban
Beban Penuh
3. Ground 0 V 0 V 0 V
Tabel 4.2 Pengujian Rangkaian Catu Daya Dengan Multimeter
No Bagian
Tegangan terukur
Bentuk gelombang Tanpa
beban
Beban
penuh
1 Regulator
7805 5 V 4.95 V
2 Regulator
7812 12 V 11.96 V
3 Ground 0 V 0 V
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 =���. ����� ����� − ���. ����� ����ℎ
���. ����� �����× 100%
Untuk tegangan keluaran 5 volt, %Reg.Beban =���.��
�× 100%=1%
Untuk tegangan keluaran 12 volt, %Reg. Beban =�����,��
��× 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 :
Gambar 4.1 Blok Pengujian Sistem Minimum ATMega32
4.1.3 Pengujian RTC
Mikrokontroler
ATMega32
LCD 16×2
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 :
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
RTC DS1307 LCD 16×2 Mikrokontroler
ATMega32
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.
Gambar 4.4 Blok Diagram Pengujian Tombol
MENU
Mikrokontroler
ATMEGA32
LED & LCD DOWN
UP
OK
Tabel 4.4 Tabel Pengujian Tombol.
Tombol Keluaran Tombol (Volt)
MENU UP DOWN OK MENU UP DOWN OK
√ - - - 0 4,8 4,8 4,8
- √ - - 4,8 0 4,8 4,8
- - √ - 4,8 4,8 0 4,8
- - - √ 4,8 4,8 4,8 0
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
NO
Pengujian Hasil Pengujian
Keterangan
Waktu Waktu Keterangan bel
1 6.30 6.30 Lagu 2 Masuk
2 7.15 7.15 lagu 1 Pelajaran ke-2
3 8.00 8.00 lagu 1 Pelajaran ke-3
4 8.45 8.45 lagu 1 Pelajaran ke-4
5 9.30 9.30 lagu 3 Istirahat-1
6 9.45 9.45 Lagu 2 Masuk
7 10.30 10.30 lagu 1 Pelajaran ke-6
8 11.15 11.15 lagu 1 Pelajaran ke-7
9 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
NO
Pengujian Hasil Pengujian
Keterangan
Hari & Tanggal Hari&Tanggal Ket. Bel
1 Senin, 7-10-2013 Senin, 7-10-2013 Nyala Hari Biasa
2 Selasa, 8-10-2013 Selasa, 8-10-2013 Nyala Hari Biasa
3 Rabu, 9-10-2013 Rabu, 9-10-2013 Nyala Hari Biasa
4 Kamis, 9-10-2013 Kamis, 10-10-
2013 Nyala Hari Biasa
5 Jumat, 11-10-
2013 Jumat, 11-10-2013 Nyala Hari Biasa
6 Sabtu, 12-10-
2013 Sabtu, 12-10-2013 Nyala Hari Biasa
7 Minggu, 13-10-
2013
Minggu, 13-10-
2013 Mati Minggu
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> //header ATmega32 #include <delay.h> //header delay #include <i2c.h> //I2C Bus functions #include <ds1307.h> //DS1307 Real Time Clock functions #include <alcd.h> //Alphanumeric LCD functions #include <stdio.h> //standar Input/Output #include <stdarg.h> // #include <stdlib.h> //standar liburary #define ADC_VREF_TYPE 0x60 // definisi register referensi ADC #define RTC_ADDR 0xD0 // definisi register alamat I2C #define ok !PINC.4 //definsi tombol ok di PINC.4 #define down !PINC.3 //definsi tombol down di PINC.3 #define up !PINC.2 //definisi tombol up di PINC.2 #define 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);//menampilkan 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[alarm]=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> //header ATmega32 #include <delay.h> //header delay #include <i2c.h> //I2C Bus functions #include <ds1307.h> //DS1307 Real Time Clock functions #include <alcd.h> //Alphanumeric LCD functions #include <stdio.h> //standar Input/Output #include <stdarg.h> // #include <stdlib.h> //standar liburary #define ADC_VREF_TYPE 0x60 // definisi register referensi ADC #define RTC_ADDR 0xD0 // definisi register alamat I2C #define ok !PINC.4 //definsi tombol ok di PINC.4 #define down !PINC.3 //definsi tombol down di PINC.3 #define up !PINC.2 //definisi tombol up di PINC.2 #define 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);//menampilkan 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[alarm]=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(); }