1
BAB II LANDASAN TEORI
2.1. Real-Time Clock (RTC) DS1307 Real Time Clock berhubungan dengan waktu mulai dari detik, menit, jam, hari, tanggal, bulan dan tahun. Tetapi IC RTC ini juga bisa dipakai untuk menyimpan data di dalam internal RAM RTC ini, di mana data tersebut tidak bisa hilang meskipun supply diputus, hal ini karena di dalam IC RTC tersebut ada battery-nya yang selalu hidup untuk menjalankan clock-nya jadi waktu (clock) tetap berjalan meskipun supply dimatikan. IC RTC ini masih mempunyai kelebihan bisa dipakai sebagai timer atau alarm. Untuk hitungan detik, menit, jam, hari, tanggal, bulan dan tahun dengan tahun kabisat yang valid sampai 2100 karena compensation valid up to 2100. Mode yang dipilih juga bisa 12 or 24 hour clock with AM dan PM in 12 hour mode. RTC 1307 menggunakan teknik I2C yaitu memakai 2 jalur untuk keperluan transfer data secara seri, sedangkan SPI dan MicroWire memakai 3 jalur. Semua teknik mempunyai 1 jalur untuk Clock, I2C hanya punya satu jalur data 2 arah, sedangkan SPI dan MicroWire mempunyai 2 jalur data satu arah, masing-masing untuk jalur data masuk dan jalur data keluar. Komunikasi dengan protokol I2C pada RTC 1307 mempunyai cara yang sama seperti mengakses eeprom serial tipe 24C04 misalnya. Pertama kirim start-
2
bit, alamat RTC(0xC0) dengan bit R/W low, kemudian nomor register yang ingin diakses. Real-time clock DS1307 memiliki fitur sebagai berikut: 1. Real-time clock (RTC) meyimpan data-data detik, menit, jam, tanggal dan bulan dalam seminggu, dan tahun valid hingga 2100. 2. 56-byte,
battery-backed,
RAM
nonvolatile
(NV)
RAM
untuk
penyimpanan. 3. Antarmuka serial Two-wire (I2C). 4. Sinyal
keluaran
gelombang-kotak
terprogram
(Programmable
squarewave). 5. Deteksi otomatis kegagalan-daya (power-fail) dan rangkaian switch. 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.
Untuk lebih jelas mengenai fungsi dan kegunaan dari IC ini terlebih dahulu akan dijelaskan fungsi dari tiap-tiap pin pada IC keluarga DS1307, di mana diketahui bahwa IC DS1307 memiliki 8 pin atau kaki.
3
Gambar 2.1. Diagram pin RTC DS1307 (Data Sheet IC Real-Time Clock DS1307).
Konfigurasi Pin IC RTC DS1307 1. X1 dan X2 adalah pembangkit pulsa yang terhubung dengan quart krtstal 32,768Khz sebagai internal circuit oscillator yang didesain dengan CL 12,5pF. X1 adalah osilator input yang terhubung langsung dengan kristal, sedang X2 adalah keluaran dari osilator kristal internal. 2. Power Control merupakan catu daya yang mensuplay tegangan ke DS1307, Vcc adalah daya luar sebesar 5V dan VBAT sebagai suplai input dengan 3V lithium Cell. Tegangan baterei harus berada diantara batasan minimum dan maksimum pengoperasian. Baterei lithium 48mAh atau lebih dapat mempertahankan fungsi RTC selama 10 tahun. 3. Serial Bus Interface And Address Register merupakan jalur data serial dan pengalamatan register DS1307 dengan akses pulsa melalui SCL dan SDA. SCL (Serial Clock) berfungsi sebagai clock input I2C dan digunakan untuk sinkronisasi data serial. SDA (Serial Data) berfungsi sebagai data input/output untuk I2C serial, baik SCL dan SDA masih memerlukan pull up eksternal.
4
4. Control Logic merupakan pengendali data-data yang dibaca ataupun ditulis melalui SCL dan SDA dengan pewaktu dari osilator kristal. 5. Buffer (7 bytes) adalah penyangga sementara sebelum data diterima atau dikirim, berkisar 7 bytes (7 x 8 bit) sebagai transit pengalamatan register 8 bit detik-menit-jam-hari-tanggal-bulan-tahun. 6. Clock, Calender and Control Register atau CR berisi informasi clock dan
kalender
serta
register
pengendali
untuk
pengoperasian SQW/OUT.
Gambar 2.2. Blok Diagram Internal (Data Sheet IC Real-Time Clock DS1307).
mengontrol
5
2.1.1. Prinsip Komunikasi I2C
I2C singkatan dari Inter Integrated Circuit, adalah sebuah protokol untuk komunikasi serial antar IC, dan sering disebut juga Two Wire Interface (TWI). Komunikasi dilakukan melalui dua jalur: SDA (serial data) dan SCL (serial clock). Setiap divice I2C memiliki 7-bit alamat yang unik. MSB adalah fix dan ditujukan untuk kategori divice. Sebagai contoh, 1010 biner ditujukan untuk serial EEPROM. Tiga bit berikutnya memungkinkan 8 kombinasi alamat I2C, yang berarti, dimungkinkan 8 divice dengan tipe yang sama, beroperasi pada bus I2C yang sama. Pengiriman data hanya dapat dimulai ketika saluran tidak sibuk, ditdai dengan kondisi HIGH yang cukup lama pada pin SCL maupun SDA. Selama pengiriman data, saluran data (SDA) harus dalam keadaan stabil ketika saluran clock (SCL) dalam keadaan high. Perubahan kondisi SDA pada saat SCL high akan dianggap sebagai sinyal-sinyal kendali, seperti: sinyal START (HIGH ke LOW) atau sinyal STOP (LOW ke HIGH).
Gambar 2.3. Prinsip komunikasi serial bus I2C (Data Sheet RTC DS1307).
6
2.1.1.1. Pengalamatan 7-bit I2C/ TWI Byte pertama setelah sinyal START yang dikirim oleh master adalah alamat slave. Pengalamatan 7-bit memungkinkan 128 divice pada bus yang sama. Alamat I2C dikirim dalam byte pertama. LSB dari byte ini digunakan untuk menunjukkan bila master akan melakukan penulisan (0) atau pembacaan (0) terhadap slave. Divice yang mengirim data sepanjang bus disebut master, divice yang menerima data disebut slave. Master memulai transmisi dengan sebuah sinyal start, dan menghentikan transmisi dengan sebuah sinyal stop pada jalur SDA. Selama sinyal start dan stop, jalur SCL harus dalam keadaan HIGH. Setelah master memulai pengiriman data dengan sebuah sinyal start, master menulis satu byte alamat divice kepada slave. Setiap byte data harus memiliki panjang 8-bit. Slave harus memberikan konfirmasi dari byte data yang diterimanya dengan sebuah bit acknowledge (ACK). (Data Sheet IC Real-Time Clock DS1307).
2.1.1.2. Defenisi-defenisi Kondisi Bus Berikut ini adalah defenisi kondisi bus pada sistem komunikasi serial I2C/ TWI: 1. Bus tidak sibuk (bus not busy): menyatakan pada saat ini bus tidak sibuk yaitu pada saat jalur clock (SCL) dan jalur data (SDA) duaduanya dalam keadaan HIGH. 2. Mulai transfer data (start data transfer): ditandai dengan perubahan kondisi SDA dari HIGH ke LOW ketika SCL dalam kondisi HIGH.
7
3. Stop transfer data (stop data transfer): ditandai dengan perubahan kondisi SDA dari LOW ke HIGH ketika SCL dalam kondisi HIGH. 4. Data valid: data yang dikirim bit demi bit dianggap valid jika setelah START, kondisi SDA tidak berubah selama SCL HIGH, baik SDA HIGH maupun SDA LOW tergantung dari bit yang ingin ditransfer. Setiap siklus HIGH SCL baru menandakan pengiriman bit baru. Duty cycle untuk SCL tidak mesti 50%, tetapi frekuensi kemunculannya hanya ada dua macam, yaitu mode standar 100 kHz dan fast mode atau mode cepat 400 kHz. Setelah SCL mengirimkan sinyal HIGH yang kedelapan, arah transfer SDA berubah, sinyal kesembilan pada SDA ini dianggap sebagai acknowledge dari receiver ke transmitter. DS1307 hanya bisa melakukan transfer pada mode standar 100 kHz. 5. Pemberitahuan (Acknowledge): setiap receiver wajib mengirimkan sinyal acknowledge atau sinyal balasan setiap selesai pengiriman 1byte (8-bit data). Master harus memberikan eksta clock atau clock tambahan pada SCL, yaitu clock kesembilan untuk memberikan kesempatan receiver mengirimkan sinyal acknowledge ke transmitter berupa keadaan LOW pada SDA selama SCL HIGH. Meskipun master berperan sebagai receiver, ia tetap sebagai penentu sinyal STOP. Pada bit akhir penerimaan byte terakhir, master tidak mengirimkan sinyal acknowledge, SDA dibiarkan HIGH oleh receiver dalam hal ini master, kemudian master mengubah SDA dari LOW menjadi HIGH yang berarti sinyal STOP. (Data Sheet IC Real-Time Clock DS1307).
8
2.1.1.3. Mode Pengoperasian Transfer Data Mode pengoperasian transfer data berdasarkan kondisi bit R/W, ada dua jenis transfer data yaitu: transfer data dari transmitter master ke receiver slave dan transfer data dari transmitter slave ke receiver master. A. Transfer Data dari Transmitter Master ke Receiver Slave Byte pertama yang dikirimkan oleh master adalah alamat slave, setelah itu master mengirimkan sejumlah byte data. Slave atau receiver mengirimkan sinyal acknowledge setiap kali menerima 1-byte data. Pada tiap byte, bit pertama yang dikirim adalah MSB dan bit yang terakhir adalah LSB. B. Transfer Data dari Transmitter Slave ke Receiver Master Meskipun master berperan sebagai receiver, byte pertama dikirimkan oleh master berupa alamat slave. Setelah itu slave meengirimkan bit acknowledge, dilanjutkan dengan pengiriman sejumlah byte dari slave ke master. Master mengirimkan bit acknowledge untuk setiap byte yang diterimanya kecuali byte terakhir. Pada akhir byte, master mengirimkan sinyal ‘not avknowledge’, setelah itu master mengirimkan sinyal STOP.
Gambar 2.4. Proses transfer data pada I2C (data sheet RTC DS1307).
9
2.1.1.4. Peta Alamat RTC DS1307 Pemetaan alamat (address map) pada RTC dimana register-register RTC di tempatkan pada lokasi pengalamatan 00h sampai 07h. sedangkan registerregister RAM (Random Access Memory) ditempatkan pada lokasi pengalamatan 08h sampai 3Fh. Khusus alamat 02H, bit-6 LOW untuk siklus jam 00 – 24 dan HIGH untuk siklus jam 00 – 12. Bit-5 HIGH pada saat PM dan LOW pada saat AM atau angka puluhan jika bit-6 LOW
Tabel 2.1. Peta alamat RTC DS1307 (Data sheet RTC DS1307).
2.2 Mikrokontroler ATMega8535 Atmel AVR adalah jenis mikrokontroller yang paling sering dipakai dalam bidang elektronika dan instrumentasi. Mikrokontroler AVR ini memiliki arsitektur RISC (Reduce Instruction Set Computing) delapan bit, di mana semua instruksi dikemas dalam kode 16-bit (16 bits word) dan sebagian besar instruksi dieksekusi dalam 1 (satu) siklus clock. Arsitektur mikrokontroler jenis AVR pertama kali dikembangkan pada tahun 1996 oleh dua orang mahasiswa Norwegian Institute of Technology yaitu Alf-Egil Bogen dan Vegard Wollan.
10
Mikrokontroler AVR kemudian dikembangkan lebih lanjut oleh Atmel. Seri pertama AVR yang dikeluarkan adalah mikrokontroler 8 bit AT90S8515, dengan konfigurasi pin yang sama dengan mikrokontroler 8051, termasuk address dan data bus yang termultipleksi. Mikrokontroler AVR menggunakan teknologi RISC dimana set instruksinya dikurangi dari segi ukurannya dan kompleksitas mode pengalamatannya. Pada
awal
era
industri
komputer,
bahasa
pemrograman
masih
menggunakan kode mesin dan bahasa assembly. Untuk mempermudah dalam pemrograman para desainer komputer kemudian mengembangkan bahasa pemrograman tingkat tinggi yang mudah dipahami manusia. Namun akibatnya, instruksi yang ada menjadi semakin komplek dan membutuhkan lebih banyak memori. Dan tentu saja siklus eksekusi instruksinya menjadi semakin lama. Mikrokontroler AVR ATmega8535 memiliki fitur yang cukup lengkap. Mikrokontroler AVR ATmega8535 telah dilengkapi dengan ADC internal, EEPROM internal, Timer/Counter, PWM, analog comparator, dll (M.Ary Heryanto, 2008). Sehingga dengan fasilitas yang lengkap ini memungkinkan kita belajar mikrokontroler keluarga AVR dengan lebih mudah dan efisien, serta dapat mengembangkan kreativitas penggunaan mikrokontroler ATmega8535. Fitur-fitur yang dimiliki oleh mikrokontroler ATmega8535 adalah sebagai berikut: 1. Saluran I/O sebanyak 32 buah, yaitu port A, port B, port C, dan port D. 2. ADC internal sebanyak 8 saluran. 3. Tiga buah Timer/Counter dengan kemampuan pembandingan. 4. CPU yang terdiri atas 32 buah register.
11
5. SRAM sebesar 512 byte. 6. Memori Flash sebesar 8 kb dengan kemampuan Read While Write. 7. Port antarmuka SPI 8. EEPROM sebesar 512 byte yang dapat diprogram saat operasi. 9. Antarmuka komparator analog. 10. Port USART untuk komunikasi serial. 11. Sistem mikroprosesor 8 bit berbasis RISC dengan kecepatan maksimal 16 MHz. 12. Dan lain-lainnya.
2.2.1 Arsitektur ATMega 8535
Dalam AVR dengan arsitektur RISC 8 bit, semua instruksi berukuran 16 bit dan sebagian besar dieksekusi dalam 1 siklus clock. Berbeda dengan mikrokontroler MCS-51 yang instruksinya bervariasi antara 8 bit sampai 32 bit dan dieksekusi selama 1 sampai 4 siklus mesin, dimana 1 siklus mesin membutuhkan 12 periode clock. Dalam perkembangannya, AVR dibagi menjadi beberapa varian yaitu AT90Sxx, ATMega, AT86RFxx dan ATTiny. Pada dasarnya yang membedakan masing-masing varian adalah kapasitas memori dan beberapa fitur tambahan saja. Memori merupakan bagian yang sangat penting pada mikrokontroler. Mikrokontroler ATmega8535 memiliki 3 jenis memori, yaitu memori program, memori data dan memori EEPROM. Ketiganya memiliki ruang sendiri dan terpisah.
12
1. Memori program ATmega8535 memiliki kapasitas memori progam sebesar 8 Kbyte yang terpetakan dari alamat 0000h – 0FFFh dimana masing-masing alamat memiliki lebar data 16 bit. Memori program ini terbagi menjadi 2 bagian yaitu bagian program boot dan bagian program aplikasi. 2. Memori data ATmega8535 memiliki kapasitas memori data sebesar 608 byte yang terbagi menjadi 3 bagian yaitu register serba guna, register I/O dan SRAM. ATmega8535 memiliki 32 byte register serba guna, 64 byte register I/O yang dapat diakses sebagai bagian dari memori RAM (menggunakan instuksi LD atau ST) atau dapat juga diakses sebagai I/O (menggunakan instruksi IN atau OUT), dan 512 byte digunakan untuk memori data SRAM. 3. Memori EEPROM ATmega8535 memiliki memori EEPROM sebesar 512 byte yang terpisah dari memori program maupun memori data. Memori EEPROM ini hanya dapat diakses dengan menggunakan registerregister I/O yaitu register EEPROM Address, register EEPROM Data, dan register EEPROM Control. Untuk mengakses memori EEPROM ini diperlakukan seperti mengakses data eksternal, sehingga waktu eksekusinya relatif lebih lama bila dibandingkan dengan mengakses data dari SRAM.
13
Untuk mikrokontroler dengan progam yang sudah baku dan diproduksi secara masal, progam diisikan ke dalam ROM pada saat IC mikrokontroler dicetak di pabrik IC. Untuk keperluan tertentu mikrokontroler mengunakan ROM yang dapat diisi ulang atau Programble-Eraseable ROM yang disingkat menjadi PEROM atau PROM. Dulu banyak dipakai UV-EPROM (Ultra Violet Eraseable Progamble ROM) yang kemudian dinilai mahal dan ditinggalkan setelah ada flash PEROM yang harganya jauh lebih murah. ATMega8535 memiliki On-Chip In-System Reprogrammable Flash Memory untuk menyimpan program. Untuk alasan keamanan, memori program dibagi menjadi dua bagian yaitu boot flash section dan application flash section. Boot flash section digunakan untuk menyimpan program boot loader, yaitu program yang harus dijalankan pada saat AVR reset atau pertamakali diaktifkan. Application flash section digunakan untuk menyimpan program aplikasi yang dibuat user. AVR tidak dapat menjalankan program aplikasi ini sebelum menjalankan program boot loader. Besarnya memori boot flash section dapat diprogram dari 128 word sampai 1024 word tergantung setting pada konfigurasi bit di register BOOTSZ. Jika boot loader diproteksi, maka program pada application flash section juga sudah aman. (Lingga Wrdhana, 2006).
14
Gambar 2.5. IC Mikrokontroler ATMega8535 (Data Sheet IC AT90S8535, AT90L8535).
Konfigurasi Pin Mikrokontroler AVR ATmega8535: 1. VCC - Merupakan pin yang berfungsi sebagai pin masukan catu daya. 2. GND – Merupakan pin ground. 3. Port A (PA0...PA7) - Merupakan pin I/O dan pin masukan ADC. 4. Port B (PB0 – PB7) – Merupakan akan pin I/O dua arah dan pin fungsi khusus, yaitu sebagai Timer/Counter, komperator analog dan SPI. 5. Port C (PC0 – PC7) – Merupakan pin I/O dua arah dan pin fungsi khusus, yaitu TWI, komperator analog, input ADC dan Timer Osilator. 6. Port D (PD0 – PD7) – Merupakan pin I/O dua arah dan pin fungsi khusus, yaitu komperator analog, interupsi eksternal dan komunikasi serial. 7. RESET – Merupakan pin yang digunakan untuk mereset mikrokontoler. 8. XTAL1 dan XTAL2 – Merupakan pin masukan clock eksternal. 9. AVCC – Merupakan pin masukan tegangan untuk ADC. 10. AREF – Merupakan pin tegangan referensi ADC.
15
2.2.2 Menentukan Lamanya Satu Detik
Baik jam digital maupun alalog pada prinsipnya sama, yaitu frekuensi getaran. Perbedaanya hanya terletak pada sumber getaran / frekuensinya. Kalau jam analog menggunakan ayunan mekanik dan gear dengan kombinasi tertentu sehingga dia mampu untuk menentukan lamanya 1 detik dan menghitung 1 menit = 60 detik. Skema jam digital sumber frekuensinya dengan detak/ clock ditunjukkan pada gambar 2.6.Sebuah pembangkit getaran /sumber detak 1 Hz akan dicacah dengan menggunakan MOD 60, artinya 1 Hz = 1 detik,setelah melewati MOD 60,maka 60 detik = 1 menit. Begitu pula dengan jam, 60 menit = 1 jam dan 24 jam = 1 hari
Gambar 2.6. Skema penentuan detik, menit dan jam (http://elektroarea.blogspot.com/2009_01_13_archive.html).
2.2.3 Menentukan Satu Detik Menggunakan Osilator Kristal Pembagian suatu sinyal osilator dengan menggunakan frekuensi kristal untuk menghasilkan akurasi (0,01%) waktu 1 detik. Dua buah kounter 12 stage
16
(CD4040) membentuk sebuah kounter biner 24 stage dan bit-bit yang sesuai digerbangkan bersama untuk memperoleh hasil yang diinginkan. Menggunakan sebuah kristal 50 kHz, perhitungan 50000 diperoleh ketika bit-bit yang sesuai dijumlahkan untuk menghasilkan nilai 50000 adalah berlogika high (1). Bit-bit sesuai yang dijumlahkan adalah: bit 15 (= 32768) + bit 14 (= 16384) + bit 9 (= 512) + bit 8 (= 256) + bit 6 (= 64) + bit 4 (= 16). Bit 14 dan 15 adalah stage ke-3 dan ke-4 pada kounter kedua (Q3 – pin 6 dan Q4 – pin 5), bit 0 adalah stage pertama pada kounter pertama (Q1 – pin 9). Untuk menggunakan kristal 100 kHz, masing-masing bit digeser ke kanan sebanyak satu kali menjadi: 65536(bit 16) + 32768(bit 15) + 1024(bit 10) + 512(bit 9) + 128(bit 7) + 32(bit 5) = 100.000. Dan jika menggunakan kristal 1MHz, bit-bit berikut ini akan diperlukan:
Bit 19-Right counter
Q8-pin 1
Decimal value = 524288
18
Q7-pin 4
262144
17
Q6-pin 2
131072
16
Q5-pin 3
65536
14
Q3-pin 6
16384
Bit 9- Left counter
Q10- pin 14
512
6
Q7- pin 4
64
Pada 1 MHz, resistor 330K pada rangkaian osilator dibutuhkan untuk peredaman yang setara dengan kira-kira 15K. Ketika hitungan terminal tercapai, sebuah pulsa reset 7 uS dibangkitkan oleh inverter Schmitt Trigger yang
17
mengikuti gerbang NAND. Resistor 47K dan kapasitor 470 pF menopang output agar kounter-kounternya menghasilkan reset ke nol. Ini kurang dari satu siklus klok pada 50kHz dan tidak menghasilkan error akan menjadi sama dengan 7 siklus pada 1 MHz yang akan menyebabkan kounter kehilangan 7 mikro sekon waktu dalam setiap detiknya. Ini bukan error yang besar (7 bagian dari 1 juta). Lebar pulsa reset minimum untuk kounter CMOS kira-kira 1.5 mikro sekon, jadi pulsa reset tidak dapat dibuat terlalu singkat.
2.2.4 Menentukan Satu Detik Pada Mikrokontroler
Sebuah mikrokontroler mempunyai beberapa port keluaran. Dari port tersebut dapat dikeluarkan isyarat clock dengan frekuensi tertentu. Aras rendah clock dapat dikeluarkan dengan memberikan logika rendah pada keluaran port tersebut; dan aras tinggi clock dapat dikeluarkan dengan memberikan logika tinggi pada keluaran port tersebut. Frekuensi tertinggi clock yang dapat dikeluarkan sebuah port tergantung pada frekuensi clock yang diberikan kepada mikrokontoler tersebut dan pemilihan instruksi yang tepat. Pembangkit isyarat clock Pembangkitan isyarat clock dapat dilakukan minimal dengan tiga cara. Pertama, dengan mengeluarkan data logika tinggi diikuti dengan data logika rendah secara periodis. Hal ini dapat dilakukan dengan instruksi pemindahan data seperti MOV. Agar dapat diperoleh frekuensi clock cukup tinggi, maka dipilih instruksi yang mempunyai waktu eksekusi paling kecil yaitu satu siklus. Contoh instruksi tersebut adalah MOV P1, A (Atmel Corp., 1997). Jika suatu mikrokontroler dioperasikan dengan clock 24 MHz, maka
18
dengan instruksi tersebut perubahan logika keluaran port 1 dapat dilakukan setiap 0,5 mikrodetik sekali. Cara kedua dengan mengeset dan mereset sebuah pin port keluaran. Hal ini dapat dilakukan dengan instruksi SETB
dan CLR . Cara kedua ini mempunyai kelebihan tidak terlibatnya data di memori lain. Sedangkan cara ketiga adalah dengan menegasikan logika port keluaran. Dengan menggunakan instruksi CPL , maka logika keluaran di suatu pin pada port keluaran dapat dinegasikan setiap satu siklus sekali atau 0,5 mikrodetik sekali. Pembangkit clock 1 MHz Dengan mengoperasikan mikrokontroler pada frekuensi 24 MHz, maka satu siklus bahasa mesin yang terdiri dari enam fase dapat dieksekusi dalam waktu 0,5 mikrodetik (Atmel Corp., 2007). Dengan menggunakan instruksi CPL P1.0 berturut-turut, maka di pin 0 port 1 akan diperoleh keluaran isyarat clock dengan periode 1 mikrodetik atau berfrekuensi 1 MHz. Keluaran pin 0 port 1 diharapkan berbentuk gelombang kotak dengan frekuensi 1 MHz. Namun dengan adanya efek kapasitif pada keluaran port tersebut, bentuk gelombang berbentuk keluaran mungkin tidak kotak, tapi mendekati keluaran gelombang kotak yang telah melalui untai integrator. Untuk mengembalikan bentuk tersebut ke gelombang kotak dapat digunakan gerbang dengan pemicu Schmitt, misalnya gerbang NOT dengan pemicu Schmitt 74LS14 (Tocci dan Widmer, 1998).
19
Gambar 2.7. Pembangkitan clock 1 MHz di port 1 pin 0 (Teknoin, Volume 13, Nomor 2, Desember 2008, 6-10. ISSN: 0853-8697).
Pembangkit clock kurang dari 1 MHz Clock dengan frekuensi kurang dari 1 MHz dapat dibentuk dengan menunda pelaksanaan instruksi CPL P1.0 berikutnya. Penundaan dapat dilakukan dengan menyisipkan instruksi untuk tidak mengerjakan apa-apa, yaitu NOP (No operation). Instruksi tersebut membutuhkan waktu eksekusi satu siklus. Penyisipan satu instruksi NOP di antara dua instruksi CPL P1.0 akan menunda eksekusi instruksi CPL P1.0 berikutnya selama satu siklus. Dengan mengoperasikan mikrokontroler ini pada clock 24 MHz, maka instruksi CPL berikutnya akan tertunda satu siklus atau 0,5 mikrodetik, sehingga selang eksekusi dua instruksi CPL adalah 1 μs.
Gambar 2.8, Pembangkitan clock 500 kHz (Teknoin, Volume 13, Nomor 2, Desember 2008, 6-10. ISSN: 0853-8697)
20
Penyisipan satu instruksi NOP akan membentuk clock dengan periode 2 mikrodetik atau berfrekuensi 500 kHz. Penyisipan dua instruksi NOP akan membentuk clock dengan frekuensi 333.333 Hz. Jumlah instruksi NOP yang dapat disisipkan dan frekuensi clock keluaran pada tabel 2.2.
Tabel 2.2. Jumlah instruksi NOP yang disisipkan dan frekuensi clock Output (Teknoin, Volume 13, Nomor 2, Desember 2008, 6-10. ISSN: 0853-8697).
2.3. Liquid Crystal Display (LCD) LCD (Liquid Crystal Display) adalah suatu jenis media tampil yang menggunakan kristal cair sebagai penampil utama. LCD sudah digunakan diberbagai bidang misalnya alal–alat elektronik seperti televisi, kalkulator, ataupun layar komputer. Pada bab ini aplikasi LCD yang dugunakan ialah LCD karakter dengan jumlah karakter 2 x 16. LCD sangat berfungsi sebagai penampil yang nantinya akan digunakan untuk menampilkan status kerja alat. Adapun fitur yang disajikan dalam LCD ini adalah : 1. Terdiri dari 16 karakter dan 2 baris. 2. Mempunyai 192 karakter tersimpan. 3. Terdapat karakter generator terprogram.
21
4. Dapat dialamati dengan mode 4-bit dan 8-bit. 5. Dilengkapi dengan back light. LCD
Karakter
dalam
pengendaliannya
cenderung
lebih
mudah
dibandingkan dengan LCD Grafik. Namun ada kesamaan diantara keduanya, yaitu inisialisasi. Inisialisasi adalah prosedur awal yang perlu dilakukan dan dikondisikan kepada LCD agar LCD dapat bekerja dengan baik. Hal yang sangat penting yang ditentukan dalam proses inisialisasi adalah jenis interface (antarmuka) antara LCD dengan controller (pengendali). Pada umumnya terdapat dua jenis antarmuka yang dapat digunakan dalam pengendalian LCD karakter: 1. 4 Bit 2. 8 Bit Untuk dapat mengendalikan LCD karakter dengan baik, tentu perlu koneksi yang benar. Dan koneksi yang benar dapat diwujudkan dengan cara mengetahui pin-pin antarmuka yang dimiliki oleh LCD karakter tersebut. LCD karakter yang beredar di pasaran memiliki 16 pin antarmuka:
Gambar 2.9. Antar Muka LCD 16X2
22
Pin Konfigurasi 1. Vss 0V Supply Voltage for logic Ground 2. Vdd 5.0V Supply Voltage for logic and LED backlight 3. Vo (Variable) Operating voltage for LCD (Contrast Adjusment) 4. RS H/L H:DATA, L: Register select signal 5. R/W H/L H: Read Write Signal 6. E H,HÆL Chip enable signal 7. DB0 H/L Data bit 0 8. DB1 H/L Data bit 1 9. DB2 H/L Data bit 2 10. DB3 H/L Data bit 3 11. DB4 H/L Data bit 4 12. DB5 H/L Data bit 5 13.DB6 H/L Data bit 6 13. DB7 H/L Data bit 7 14. A/Vee Power supply for backlight V+/Negative Voltage Output +4.2 V 15. K Power supply for backlight V Pada aplikasi umumnya RW diberi logika rendah “0”. Bus data terdiri dari 4-bit atau 8-bit. Jika jalur data 4-bit maka yang digunakan ialah DB4 sampai dengan DB7. Sebagaimana terlihat
pada table diskripsi, interface LCD
merupakan sebuah parallel bus, dimana hal ini sangat memudahkan dan sangat cepat dalam pembacaan dan penulisan data dari atau ke LCD. Kode ASCII yang ditampilkan sepanjang 8-bit dikirim ke LCD secara 4-bit atau 8 bit pada satu waktu. Jika mode 4-bit yang digunakan, maka 2 nibble data dikirim untuk
23
membuat sepenuhnya 8-bit (pertama dikirim 4-bit MSB lalu 4-bit LSB dengan pulsa clock EN setiap nibblenya). Jalur kontrol EN digunakan untuk memberitahu LCD bahwa mikrokontroller mengirimkan data ke LCD. Untuk mengirim data ke LCD program harus menset EN ke kondisi high “1” dan kemudian menset dua jalur kontrol lainnya (RS dan R/W) atau juga mengirimkan data ke jalur data bus. Saat jalur lainnya sudah siap, EN harus diset ke “0” dan tunggu beberapa saat (tergantung pada datasheet LCD), dan set EN kembali ke high “1”. Ketika jalur RS berada dalam kondisi low “0”, data yang dikirimkan ke LCD dianggap sebagai sebuah perintah atau instruksi khusus (seperti bersihkan layar, posisi kursor dll). Ketika RS dalam kondisi high atau “1”, data yang dikirimkan adalah data ASCII yang akan ditampilkan dilayar. Misal, untuk menampilkan huruf “A” pada layar maka RS harus diset ke “1”. Jalur kontrol R/W harus berada dalam kondisi low (0) saat informasi pada data bus akan dituliskan ke LCD. Apabila R/W berada dalam kondisi high “1”, maka program akan melakukan query (pembacaan) data dari LCD. Instruksi pembacaan hanya satu, yaitu Get LCD status (membaca status LCD), lainnya merupakan instruksi penulisan. Jadi hampir setiap aplikasi yang menggunakan LCD, R/W selalu diset ke “0”. Jalur data dapat terdiri 4 atau 8 jalur (tergantung mode yang dipilih pengguna), DB0, DB1, DB2, DB3, DB4, DB5, DB6 dan DB7. Mengirim data secara parallel baik 4-bit atau 8bit merupakan 2 mode operasi primer. Untuk membuat sebuah aplikasi interface LCD, menentukan mode operasi merupakan hal yang paling penting. Mode 8-bit sangat baik digunakan ketika kecepatan menjadi keutamaan dalam sebuah aplikasi dan setidaknya minimal tersedia 11 pin I/O (3 pin untuk
24
kontrol, 8 pin untuk data).Sedangkan mode 4 bit minimal hanya membutuhkan 7bit (3 pin untuk kontrol, 4 pin untuk data). Bit RS digunakan untuk memilih apakah data atau instruksi yang akan ditransfer antara mikrokontroller dan LCD. Jika bit ini di set (RS = 1), maka byte pada posisi kursor LCD saat itu dapat dibaca atau ditulis. Jika bit ini di reset (RS = 0), merupakan instruksi yang dikirim ke LCD atau status eksekusi dari instruksi terakhir yang dibaca.
2.4. Keypad 4X4 Dalam perancangan alat ini dibutuhkan sebuah keypad sebagai inputan ke mikrokontroler yang berfungsi untuk menjalankan suatu aplikasi yang sudah jadi, dengan adanya keypad dapat menginputkan suatu besaran nilai yang dinginkan dan selain itu dapat memerintahkan suatu aplikasi agar dapat di proses.keypad adalah sarana inputan yang banyak digunakan dalam aplikasi MMI (Man Machine Interface). Misalnya: 1. Pada sistem pengaturan suhu, keypad bisa digunakan operator untuk memasukkan set point suhu yang diinginkan 2. Pada sistem pengaturan motor, keypad bisa digunakan operator untuk memasukkan set point kecepatan motor yang diinginkan 3. Proses inputan waktu untuk set waktu 4. Dan sebagainya
25
Gambar 2.10. Keypad 4X4 Ada 16 buah tombol pushbutton yang dirangkai sedemikian hingga menjadi 4 jalur kolom (K1,K2,K3,K4) dan 4 jalur baris (B1,B2,B3,B4). Dari konstruksi ini, kita bisa mendapatkan data-data karakteristiknya sebagai berikut: 1. Jika tidak ada penekanan tombol sama sekali, maka semua jalur akan saling lepas (tidak ada yang tersambung) 2. Tidak ada satu kondisipun yang memungkinkan terjadinya persambungan antar 3. Sesama jalur kolom atau antar sesama jalur baris, kecuali ada penekanan lebih dari satu tombol. Misalnya tombol 1 dan tombol 2 ditekan bersamaan, maka K1-K2-B1 akan tersambung. 4. Untuk penekanan hanya satu tombol, maka hanya terjadi persambungan antara jalur kolom dan jalur baris yang terhubung pada tombol yang ditekan tersebut. Misalnya, jika tombol 1 ditekan, maka K1-B1 akan tersambung.
26
Tabel 2.3. Konfigurasi Keypad 4X4 Tombol yang Ditekan 1
Jalur Yang Terhubung B1-K1
Tombol yang Ditekan 7
Jalur Yang Terhubung B3-K1
2
B1-K2
8
B3-K2
3
B1-K3
9
B3-K3
A
B1-K4
C
B3-K4
4
B2-K1
*
B4-K1
5
B2-K2
0
B4-K2
6
B2-K3
#
B4-K3
B
B2-K4
D
B4-K4