BAB 2 DASAR TEORI 2.1 Perangkat Keras 2.1.1 LDR (Light Dependent Resistor) LDR (Light Dependent Resistant) merupakan suatu jenis resistor yang nilai resistansinya berubah-ubah karena adanya intensitas cahaya yang diserap. LDR dibentuk dari Cadium Sulfide (CDS) yang mana Cadium Sulfide dihasilkan dari serbuk keramik. Prinsip kerja LDR ini pada saat mendapatkan cahaya maka tahanannya turun, sehingga pada saat LDR mendapatkan kuat cahaya terbesar maka tegangan yang dihasilkan adalah tertinggi. Pada saat gelap atau cahaya redup, bahan dari cakram pada LDR menghasilkan elektron bebas dengan jumlah yang relatif kecil. Sehingga hanya ada sedikit elektron untuk mengangkut muatan elektrik. Artinya pada saat cahaya redup LDR menjadi pengantar arus yang kurang baik, atau bisa disebut juga LDR memiliki resistansi yang besar pada saat gelap atau cahaya redup. Pada saat cahaya terang, ada lebih banyak elektron yang lepas dari bahan semikonduktor tersebut. Sehingga akan ada lebih
banyak elektron untuk mengangkut muatan elektrik. Artinya pada saat cahaya terang LDR menjadi konduktor atau bisa disebut juga LDR memilki resistansi yang kecil pada saat cahaya terang. Simbol LDR seperti ditunjukan pada Gambar 2.1, sedangkan Gambar 2.2 menunjukkan grafik hubungan antara resistansi dan intensitas cahaya. Gambar 2.1 Simbol LDR Gambar 2.2 Grafik hubungan antara resistansi dan intensitas cahaya
LDR digunakan untuk mengubah energi cahaya menjadi energi listrik. Saklar cahaya otomatis adalah salah satu contoh alat yang menggunakan LDR. Akan tetapi karena responsnya terhadap cahaya cukup lambat, LDR tidak digunakan pada situasi dimana intesitas cahaya berubah secara drastis. Gambar 2.3 LDR (Light Dependent Resistor) 2.1.2 Mikrokontroler ATmega8535 2.1.2.1 Gambaran Umum Mikrokontroler merupakan suatu trobosan teknologi mikrokontroler dan mikrokomputer menjadi kebutuhan pasar dan teknologi baru. Sebagai teknologi baru, yaitu teknologi semikondultor dengan kandungan transistor yang lebih banyak namun hanya membutuhkan ruang kecil serta dapat diproduksi secara massal (dalam jumlah yang banyak) sehingga harga menjadi murah (dibandingkan mikroprosesor). Sebagai kebutuhan pasar, mikrokontroler hadir untuk memenuhi selera industri dan para konsumen akan kebutuhan pada alat-alat bantu dan mainan yang lebih canggih.
Sebagai contoh yang mungkin dapat memberikan gambaran yang jelas dalam penggunaan mikrokontroler adalah pada aplikasi alat ukur tinggi badan otomatis. Umumnya alat ukur tinggi badan masih bersifat manual, dimana pengguna harus menaikkan dan menurunkan sendiri palang atas kepala, dan kemudian membaca penunjukan skalanya. Sementara itu, bagi anak kecil atau orang yang tubuhnya pendek tentu akan kesulitan atau bahkan tidak dapat melakukannya sendiri. Olehkarenanya dengan adanya alat ukur tinggi badan yang berbasis kendali elektronika, orang yang hendak mengetahui tinggi badannya cukup berdiri di depan alat, dan secara otomatis alat tersebut akan mengukur dan menapilkannya pada display, yang semua itu bisa diperoleh dari mikrokontroler yang digunakan. Mikrokontroler adalah suatu keping IC dimana terdapat mikroprosesor dan memori program (ROM) serta memori serbaguna (RAM), bahkan ada beberapa jenis mikrokontroler yang memiliki fasilitas ADC, PPL, EEPROM dalam suatau kemasan. Penggunaan mikrokontroler dalam bidang kontrol sangat luas dan popular. Ada beberapa vendor yang membuat mikrokontroler diantaranya Intel, Microchip, Winbond, Atmel, Philips, Xemics dan lain-lain buatan Atmel. Mikrokontroler Atmega8535 merupakan generasi AVR ( Alf and Vegard s Risk processor). Mikrokontroler AVR memiliki arsitektur RISC (Reduced Instruction Set Computing) 8 bit, dimana semua instruksi dalam kode 16-bit (16-bit word) dan sebagian besar instruksi dieksekusi dalam 1 (satu) siklus clock. AVR menjalankan sebuah instruksi komponen eksternal dapat dikurangi. Mikrokontroler AVR didesain menggunakan arsitektur Harvard, di mana ruang dan jalur bus bagi memori program dipisahkan dengan memori data. Memori program diakses dengan single-level
pipelining, di mana ketika sebuah instruksi dijalankan, instruksinya akan di-prefetch dari memori program. 2.1.2.2 Arsitektur ATMega8535 Gambar 2.4 Diagram Blok Fungsional ATmega8535
Gambar 2.4 memperlihatkan bahwa ATmega8535 memiliki bagian sebagai berikut: 1. Saluran I/O sebanyak 32 buah, yaitu PortA, Port B, Port C, dan Port D. 2. ADC 10 bit sebanyak 8 saluran. 3. Tiga buah Timer/Counter dengan kemampuan pembanding. 4. CPU yang terdiri atas 32 buah register. 5. Watchdog Timer dengan osilator internal. 6. SRAM sebesar 512 byte. 7. Memori Flash sebesar 8 Kb dengan kemampuan Read While Write. 8. Unit interupsi internal dan eksternal. 9. Port antarmuka SPI. 10. EEPROM (Electrically Ersable Programmable Read Only Memori) sebesar 512 byte yang diprogram saat operasi. 11. Antarmuka komparator analog. 12. Port USART untuk komunikasi serial dengan kecepatan maksimal 12,5 Mbps. 13. Sistem mikroprosesor 8 bit berbasis RISC dengan kecepatan maksimal 16 MHz.
2.1.2.3 Konfigurasi Pin ATmega8535 Gambar 2.5 Konfigurasi Pin ATmega8535 Konfigurasi pin ATmega8535 dapat dilihat pada gambar 2.5 Secara fungsional konfigurasi pin ATmega 8535 sebagai berikut: 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 dua arah dan pin masukan ADC. 4. Port B (PB0..PB7) meruapakn pin I/O dua arah dan pin fungsi khusus untuk Timer/Counter, Komparator analog, dan SPI.
5. Port C (PC0..PC7) meruapan pin I/O dua arah dan pin khusus untuk TWI, Komparator analog, dan Timer Oscilator. 6. Port D (PD0..PD7) merupakan pin I/O dua arah dan pin khusus untuk Komparator analog, Interupsi eksternal, dan Komunikasi serial. 7. RESET merupakan pin yang digunakan untuk me-reset mikrokontroller. 8. XTAL1 dan XTAL2 meruapakan pin masukan clock eksternal. 9. AVCC meruapakan pin masukan tegangan untuk ADC. 10. AREF meruapkan pin masukan tegangan referensi ADC. 2.1.2.4 Peta Memori ATmega8535 memiliki ruang pengalamatan memori data dan memori program yang terpisah. Memori data terbagi manjadi 3 bagian, yaitu 32 buah register umum, 64 buah register I/O, dan 512 byte SRAM Interbal. Register dengan fungsi umum menempati space data pada alamat terbawah, yaitu $00 sampai $1F, register khusus untuk menangani I/O dan kontrol mikrokontroller menpati 64 alamat $20 hingga $5F, sedangkan SRAM 512 byte. Pada alamat $60 sampai dengan $25F. Konfigurasi memori data ditunjukkan pada gambar 2.6 berikut:
Gambar 2.6 Konfigurasi Memori Data ATmega8535 Memori program yang terletak dalam Flash PEROM tersusun dalam word karena setuiap insruksi memilki lebar 16-bit atau 32-bit. AVR ATmega8535 memiliki 4 Kbyte x 16-bit Flash PEROM dengan alamat mulai dari $000 sampai $FFF. AVR memliki 12-bit Program Counter (PC) sehingga mampu mengalamati isi Flash.
Gambar 2.7 Memori Program ATmega8535 ATmega8535 juga memiliki memori data berupa EEPROM 8-bit sebanyak 512 byte. Alamat EEPROM dimulai dari $000 sampai $1EF. 2.1.2.5 Status Register (SREG) Status Register merupakan register berisi status yang dihasilkan pada setiap operasi yang dilakukan ketika suatu instruksi dieksekusi SREG merupakan bagian dari inti CPU mikrokontroler. Gambar 2.8 Status Register ATmega8535
1. Bit 7-I : Global Interrupt Enable Bit yang harus diset untuk meng-enable interupsi. 2. Bit 6-1 : Bit Copy Storage Instruksi BLD dan BST menggunakan bit-t sebagai sumber atau tujuan dalam operasi bit. Suatu bit dalam sebuah register GPR dapat disalin ke bit T menggunakan instruksi BST, dan sebaliknya bit-t dapat disalin kembali ke suatu bit dalam segister GPR menggunakan instruksi BLD. 3. Bit 5-H : Half Carry Flag. 4. Bit 4-S : Sign Bit Bit-S merupakan hasil operasi EOR antara flag N (negative) dan flag-v (two s complement overflow). 5. Bit 3-V : Two s Complement Overflow Flag Bit yang berguna untuk mendukung opersai aritmatika. 6. Bit 2-N : Negative Flag 7. Bit 2 N : Negative Flag Bit akan diset bila suatu operasi menghailkan bilangan negatif. 8. Bit 1-Z : Zero Flag Bit akan diset bila hasil operasi yang diperoleh adalah nol. 9. Bit 0-C : Carry Flag Bit akan diset bila suatu operasi menghasilkan carry.
2.1.3 LCD (Liquid Crystal Display) Kegunaan LCD banyak sekali dalam perancangan suatu sistem dengan menggunakan menggunakan mikrokontroler, LCD (Liquid Crysral Display) dapat berfungsi untuk menampilakan suatu nilai hasil sensor, menampilakan teks, atau menampilakan menu pada aplikasi mikrokontroler. M1632 merupakan modul LCD matrix dengan konfigurasi 16 karakter dan 2 baris dengan setiap karakternya dibentuk oleh baris pixel dan 5 kolom pixel (1 baris pixel terakhir adalah kursor). Didalam modul M1632 sudah tersedia HD44780 yang dikeluarkan oleh Hitachi, Hyundai dan modul-modul M1632 lainnya. HD44780 sebetulnya merupakan mikrokontroler dirancang khusus untuk mengenendalikan LCD dan mempunyai kemampuan untuk mengatur proses scanning pada layar LCD yang terbentuk oleh 16 COM dan 40 SEG sehingga mikrokontroler/perangkat yang mengakses modul LCD ini tidak perlu lagi mengatur scanning pada layar LCD. Mikrokontroler atau perangkat tersebut hanya mengirim data-data yang merupakan karakter yang akan ditampilkan pada LCD atau perintah yang mengatur proses tampilan pada LCD saja. Adapun konfigurasi dan deskripsi dari pin-pin LCD M1632 antara lain: 1. Pin 1 dihubungkan ke Gnd 2. Pin 2 dihubungkan ke Vcc +5V 3. Pin 3 dihubungkan ke bagian tengan potensiometer 10KOhm sebagai pengatur kontras. 4. Pin 4 untuk membritahukan LCD bahwa sinyal yang dikirim adalah data, jika Pin 4 ini diset ke logika 1 (high, +5V), atau memberitahukan bahwa sinyal yang dikirim adalah perintah jika pin ini di set ke logika 0 (low, 0V).
5. Pin 5 digunakan untuk mengatur fungsi LCD. Jika di set ke logika 1 (high, +5V) maka LCD berfungsi untuk menerima data (membaca data). Dan fungsi untuk mengeluarkan data, jika pin ini di set ke logika 0 (low, 0V). Namun kebanyakan aplikasi hanya digunakan untuk menerima data, sehingga pin 5 ini selalu dihubungkan ke Gnd. 6. Pin 6 adalah terminal enable. Berlogika 1 setiap kali pengiriman atau pembaca data. 7. Pin 7 Pin 14 adalah data 8 bit data bus (Aplikasi ini menggunakan 4 bit MSB saja, sehingga pin data yang digunkan hanya Pin 11 Pin 14). 8. Pin 15 dan Pin 16 adalah tegangan untuk menyalakan lampu LCD. Adapun gambar dari LCD 2x16 adalah sebagai berikut: Gambar 2.9 LCD (Liquid Crystal Display)
2.1.3.1 Struktur Memori LCD Modul LCD M1632 memilki beberapa jenis memori yang digunakan untuk menyimpan atau memproses data-data yang ditampilkan pada layar LCD. Setiap memori mempunyai fungsi-fungsi tersendiri: a. DDRAM DDRAM merupakan memori tempat karakter yang ditampilkan berada. Contohnya karakter A atau 41h yang ditulis pada alamat 00 akan tampil pada baris pertama dan kolom pertama dari LCD. Apabila karakter tersebut di alamat 40h, karakter tersebut akan tampil pada baris kedua kolom pertama darai LCD. b. CGRAM CGRAM merupakan memori untuk menggambarkan pola seluruh karakter dan bentuk karakter dapat diubah-ubah sesuai keinginan. Akan tetapi isi memori akan hilang saat power supplay tidak aktif sehingga pola karakter akan hilang. c. CGROM Adalah memori untuk menggambarkan pola sebuah karakter dan pola tersebut ditentukan secara permanen dari HD44780 sehingga pengguna tidak dapat menubah lagi. Oleh karena ROM bersifat permanen, pola karakter tersebut akan hilang walaupun power supplay tidak aktif.
2.2 Perangkat Lunak 2.2.1 Bahasa BASIC Menggunkan BASCOM-AVR BASCOM-AVR adalah program BASIC Compiler berbasis Windows untuk mikrokontroler keluarga AVR seperti ATmega, dan yang lainnya. BASCOM-AVR merupakan program dengan bahasa tingkat tinggi BASIC yang dikembangkan dan dikeluarkan oleh MCS Elektronika. 2.2.1.1 Karakteristik Dalam BASCOM Dalam progrm BASCOM, karakter dasarnya terdiri atas karakter alphabel (A-Z dan a- z), karakter numeric (0-9), dan karakter spesial (lihat tabel dibawah ini) karakter Nama Blank Apostrophe * Asterisk (symbol perkalian) + Plus sign, Comma - Minus sign. Period (decimal point) / Slash (division symbol) will be handled as\ : Colon Double quotation mark
; Semicolon < Less than = Equal sign (assignment symbol or relational operator) > Greater than \ Backspace (integer or word division symbol) Tabel 2.1 Karakter Spesial 2.2.1.2 Tipe Data Stiap variabel dalam BASCOM memiliki tipe data yang menunjukkan daya tampungannya. Hal ini berhubungan denga penggunaan memori mikrokontroler. Berikut ini adalah tipe data pada BASCOM berikut keterangannya. Tipe Data Ukuran (byte) Range Bit 1/8 - Byte 1 0 255 Integer 2-32,768 - +32,767 Word 2 0 65535 Long 4-214783648 - +2147483647
Single 4 - String hingga 254 byte - Tabel 2.2 Tipe data BASCOM 2.2.1.3 Variabel Variabel dalam sebuah pemrograman berfungsi sebagai tempat penyimpanan atau penampungan data sementara, misalnya menampung hasil perhitungan, menampung data hasil pembacaan register, dan lainnya. Variabel merupakan pointer yang menunjukkan pada alamat memori fisik dan mikrokontroler. Dalam BASCOM, ada beberapa aturan dalam penamaan sebuah variabl: a. Nana variabel maksimum terdiri atas 32 karakter. b. Karakter bisa berupa angka atau huruf. c. Nama variabel harus dimula dengan huruf. d. Variabel tidak boleh menggunkan katae. kata yang digunakan oleh BASCOM sebagai perintah, pernyataan, internal register, dan nama operator (AND, OR, DIM, dan lain-lain) Sebelum digunakan maka variabel harus dideklarasikan terlebih dahu. Dalam BASCOM, ada beberapa cara untuk mendeklarasikan sebuah variabel. Cara pertama adalah menggunakan pernyataan DIM diikuti nama tipe datanya. Contohnya pendeklarasian menggunkan DIM sebagai berikut: Dim nama as byte Dim tombol1 as integer
Dim tombol2 as word Dim tombol3 as word Dim tombol4 as word Dim Kas as string*10 2.2.1.4 Alias Dengan menggunkan alias, variabel yang sama dapat diberikan nama yang lain. Tujuannya adalah mempermudah proses pemrograman. Umumnya, alias digunakan untuk mengganti nama variabel yang baku, seperti port mikrokontroler. Dim LedBar as byte Led1 as LedBar.0 Led2 as LedBar.1 Led3 as LedBar.2 Dalam deklarasi diatas, variabel yang sama dapat diberikan nama yang lain. Tujuannya adalah mempermudah proses pemrograman. Umumnya, alias digunakan untuk mengganti nama variabel yang baku, seperti port mikrokontroler. Dim LedBar as byte Led1 as LedBar.0 Led2 as LedBar.1 Led3 as LedBar.2
2.2.1.5 Konatanta Dalam BASCOM, selain variabel kita mengenal pula konstanta. Konstansa merupakan variabel pula, perbedaannya dengan variabel adalah nilai yang terkandung tetap. Dengan konstanta, kode program yang kita buat akan lebih mudah dibaca dan dapat mencegah kesalahan penulisan pada program kita. Misalnya, kita akan lbih mudah menulis phi dari pada menulis 3,14159867. Sama seperti variabel, agar konstanta bisa dikenal oleh program, maka harus dideklarasikan terlebih dahulu. Berikut adalah pendeklarasikan sebuah konstanta. Dim A As Const 5 Dim B1 As Const &B1001 Cara lain yang paling mudah: Const Cbyte = &HF Const Cint = -1000 Const Csingle = 1.1 Const Cstring = test 2.2.1.6 Array Dengan array, kita bisa menggunakan sekumpulan variabel dengan nama dan tipe yang sama. Untuk mengakses variabel tertentu dalam array, kita harus menggunakan indeks. Indeks harus berupa angka dengan tipe data byte, integer, atau word. Artinya nilai maksimal sebuah indeks sebesar 65535.
Proses pendeklarasikan sebuah array hampir sama dengan variabel, namun perbedaannya kita mengikuti jumlah elemennya. Berikut adalah contoh pemakaian array: Dim kelas(10) as byte Dim c as Integer For C = 1 To 10 a(c) = c p1 = a(c) Next Program diatas membuat sebuah array dengan nama kelas yang berisi 10 elelmen (1-10) dan kemudian seluruh elemennya diisikan dengan nilai c yang berurutan. Untuk pembacanya kita menggunakan indeks dimana elemen disimpan. Pada program diatas, elemen-elemen arraynya dikeluarkan ke Port 1 dari mikrokontroler. 2.2.2 Operasi-Operasi Dalam BASCOM Pada bagian ini akan dibahas tentang cara menggabungkan, memodifikasi, membandingkan, atau mendapatkan informasi tentang sebuah pernyataan dengan menggunkan operator-operator yang tersedia di BASCOM dan bagaimana sebuah pernyataan terbentuk dan dihasilkan dari operator-operator berikut:
a. Operator Aritmatika Operator digunakan dalam perhitungan aritmatika meliuti + (tambah), - (kurang), / (bagi), dan * (kali). b. Operator Relasi Operator berfungsi membandingkan nilai sebuah angka. Hasilnya dapat digunakan untuk membuat keputusan sesuai dengan program yang kita buat. Operator relasi meliput i: Operator Relasi Pernyataan = Sama dengan X = Y <> Tidak sama dengan X <> Y < Lebih kecil dari X < Y > Lebih besar dari X > Y <= Lebih kecil atau sama dengan X <= Y >= Lebih besar atau sama dengan X >= Y Tabel 2.3 Tabel Operator Relasi c. Operator Logika Operator logika digunakan untuk menguji sebuah kondisi atau memanipulasi bit dan operasi bolean. Dalam BASCOM, ada empat buah operator logika, yaitu AND, OR, NOT, dan XOR.
Operator logika bisa pula digunakan untuk menguji sebuah byte dengan pola bit tertentu, sebagai contoh: Dim A As Byte A = 63 And 19 PPRINT A A = 10 or 9 PRTINT A Output 16 11 d. Operator Fungsi Operator fungsi digunakan untuk melengkapi operator yang sederhana. 2.2.3 Aplikasi BASCOM dengan LCD Salah satu kelebihan yang dimiliki oleh BASCOM adalah programnya yang menyediakan rutin-rutin khusus untuk menampilkan karakter menggunakan LCD. Bahkan kita pun dapat membuat karakter special dengan fasilitas LCD designer.
Antarmauka antara LCD dengan ATmega8535 menggunakan mode antarmuka 4 bit. Selain lebih hemat I/O, mode demikian mempermudah proses pembuatan PCBnya. Program berikut akan menjalankan beberapa perintah berkenan dengan LCD $regfile = m8535.dat $crystal = 4000000 dim x as byte config LCD = 16*2 Cursor off do X = 100 Cls Lcd namaku Elda Lowerline Lcd Nilaiku selalu ; x Wait 1 Cls Lcd <<<< Hebat >>>> For x=1 to 16
Shiftlcd left next For x=1 to 32 Shiftlcd right Waitms 200 Next x = 100 cls lcd hex x loop penjelasan programnya sebagai berikut: a. Dim x As Byte Pernyataan di atas merupakan pendeklarasian variabel c/x dengan ukuran byte. b. Config LCD = 16 * 2 Oleh karana itu konfigurasi pendeklarasikannya delisting program yang kita buat seperti dikontrolkan diatas.
c. CLS Perintah CLS berfungsi membersihkan atau mengosongkan tampilan LCD. d. Lowerline Perintah berfungsi memindahkan kursor ke baris bawah. Karena LCD yang digunakan adalah LCD 2x16, maka LCD memilih 2 baris dan kolom. e. X = 100 Lcd namaku Elda Lowerline Lcd Nilaiku selalu ; x Ketika kita menjalankan perintah di atas, maka keluarannya adalah: Nama Elda Nilaiku selalu 100 Contoh tersebut menunjukkan bahwa kita dapat menampilkan isi sebuah variabel menggunakan LCD hanya dengan menulis. f. Shift LCD left/right Perintah digunakan untuk menggeser tampilan LCD ke kiri atau ke kanan sebanyak 1 langkah. Perintah berguna untuk menampilkan kalimat yang panjang dan membuat animasi LCD.
g. Lcdhex x Perintah berfungsi mengirim isi sebuah variabel LCD dalam format hexadecimal. Jika ingin menjalankan program, maka hasilnya 64