BAB 2 LANDASAN TEORI
2.1 Mikrokontroller ATMega 8535 Mikrokontroler AVR (Alf and Vegard’s RISC Processor) dari Atmel ini menggunakan arsitektur RISC (Reduced Instruction Set Computing) yang artinya proses tersebut memilikiset instruksi program yang lebih sedikit dibandingkan dengan MCS-51 yang menerapkan arsitektur CISC (Complex Instruction Set Computer). Beberapa fitur yang dimiliki Mikrokontroler ATMega8535 adalah 130 macam instruksi yang hampir semuanya dieksekusi dalam satu siklus clock. 32 x 8-bit register serbaguna.
Gambar 2.1 Mikrokontroler ATMega8535
2.1.1
Timer ATMega8535
ATMega8535 memiliki 3 modul timer yang terdiri dari 2 buah timer / counter 8-bit dan 1 buah timer / counter 16-bit. Ketiga modul timer / counter ini dapat diatur dalam mode yang berbeda secara individu dan tidak saling mempengaruhi satu sama lain. Selain itu semua timer / counter juga dapat difungsikan sebagai sumber interupsi.
Universitas Sumatera Utara
2.1.2
Pin-Pin Mikrokontroler ATmega8535
Gambar 2.2 Konfigurasi pin ATMega8535 (Data Sheet AVR) Konfigurasi pin ATMega8535 dapat dilihat pada gambar 2.2. Dari gambar di atas dapat dijelaskan fungsi dari masing-masing pin Atmega8535 sebagai berikut: 1. VCC merupakan pin yang berfungsi sebagai masukan catu daya. 2. GND merukan pin Ground. 3. Port A (PortA0 sampai PortA7) merupakan pin input/output dua arah dan pin masukan ADC. 4. Port B (PortB sampai PortB7) merupakan pin input/output dua arah dan dan pin fungsi khusus. 5. Port D (PortD0 sampai PortD7) merupakan pin input/output dua arah dan pin fungsi khusus. 6. RESET merupakan pin yang digunakan untuk me-reset mikrokontroler. 7. XTAL1 dan XTAL2 merupakan pin masukan clock eksternal.
Universitas Sumatera Utara
8. AVCC merupakan pin masukan tegangan untuk ADC. 9. AREFF merupakan pin masukan tegangan referensi ADC.
2.2
Pengenalan Pemrograman C Pengenalan
merupakan
sebuah
nama
yang
didefinisikan
oleh
pemrograman untuk menunjukkan identitas dan sebuah konstanta, variabel, fungsi, label atau tipe data khusus. Pemberian nama sebuah pengenalan dapat ditentukan bebas sesuai keinginan pemrogram tetapi harus memenuhi aturan berikut: 1. Karakter pertama tidak boleh menggunakan angka. 2. Karakter kedua dapat berupa huruf, angka, atau garis bawah. 3. Tidak boleh menggunakan spasi. 4. Bersifat case sensitif, yaitu huruf kapital dan huruf kecil dianggap berbeda. 5. Tidak boleh menggunakan kata-kata yang merupakan sintaks maupun operator dalam pemrograman C, misalnya: void, short, const, if, static, bit, long, case, do, switch, char, float, for, else, break, int, double, include, while. Contoh penamaan pengenal yang diperbolehkan yaitu nama, _nama, nama2, nama_pengenal_yang_panjang_juga_boleh. Contoh penamaan pengenal yang diperbolehkan yaitu: a. 2nama (tidak boleh diawali dengan angka) b. Nama+2 (tidak boleh menggunakan operator ‘+’) c. Nama panjang (tidak boleh menggunakan spasi).
Universitas Sumatera Utara
2.2.1
Tipe Data Berikut ini adalah tipe-tipe data yang ada dalam bahasa C dan yang
dikenali oleh Compiler CodeVisionAVR:
Tabel 2.4 Tipe Data Tipe Data
Ukuran
Jangkauan Nilai
Bit
1 bit
0 atau 1
Chart
1 byte
-128 s/d 127
Unsigned Char
1 byte
0 s/d 225
Signed Char
1 byte
-128 s/d 127
Int
2 byte
-32,768 s/d 32,767
Short Int
2 byte
-32,768 s/d 32,767
Unsigned Int
2 byte
0 s/d 65,535
Signed Int
2 byte
-32,768 s/d 32,767
Long Int
4 byte
-2,147,483,648 s/d 2,147,483,647
Unsigned Long Int
4 byte
0 s/d 4,294,967,295
Signed Long Int
4 byte
-2,147,483,648 s/d 2,147,483,647
Float
4 byte
1,2*10-38 s/d 3,4*10+38
Double
Ukuran
1,2*10-38 s/d 3,4*10+38
2.2.2
Konstanta Dan Variabel Konstanta dan variabel merupakan sebuah tempat untuk menyimpan data
yang berada dalam memori. Konstanta berisi data yang nilainya tetap dan tidak dapat diubah selama program dijalankan, sedangkan variabel berisi data yang bisa
Universitas Sumatera Utara
berubah nilainya pada saat prrogram dijalankan. Untuk membuat sebuah konstanta atau variabel maka kita harus mendeklarasikannya terlebih dahulu. Deklarasi Konstanta: Const [tipe_data] [nama_konstanta]=[nilai] Contoh: Const char konstantaku=0x10; Deklarasi Variabel: [tipe_data] [nama_variabel]=[nilai_awal] Contoh :
Char variabelku; Char variabelku=0x20; Bit variabel_bit; Bit variabel bit=1;
2.2.3
Variabel Bertanda (Signed) Dan Tak Bertanda (Unsigned) Untuk pendeklarasian tipe yang berupa bilangan bulat yaitu chart, int,
short dan long dapat ditambahkan signed atau unsigned. Signed digunakan untuk mendefinisikan bahwa data yang disimpan dalam variabel adalah bertanda sedangkan unsigned untuk data yang tidak bertanda. Contoh :
Unsigned char data1; Signed char data2;
2.2.4
Pengarah Preprosesor Pengarah preprosesor digunakan untuk mendefinisikan prosesor yang
digunakan, dalam hal ini adalah untuk mendefinisikan jenis mikrokontroler yang digunakan. Dengan pengarah preprosesor ini maka pendeklarasian registerregister dan penamaannya dilakukan pada file lain yang disisipkan dalam program utama dengan sintaks sebagai berikut: #include
Universitas Sumatera Utara
Contoh :
2.2.5
#include <mega8535.h>
Pernyataan Pernyataan adalah satu buah instruksi lengkap yang berdiri sendiri. Berikut
adalah contoh sebuah pernyataan: PORTC = 0x0F; Pernyataan diatas merupakan sebuah instruksi untuk mengeluarkan data 0x0F ke Port C.
2.2.6
Blok Pernyataan Kumpulan beberapa pernyataan yang berada dalam satu bagian program
disebut dengan blok pernyataan. Satu blok pernyataan ditandai dengan tanda ‘{‘ dan diakhiri dengan tanda ‘}’. Contoh sebuah blok pernyataan: { PORTA=0x00;
//pernyataan_1
PORTB=0x0F;
//pernyataan_2
PORTC=0xFF;
//pernyataan_2
}
2.2.7
Fungsi Pustaka Bahasa C memiliki sejumlah fungsi pustaka yang berada pada file-file
tertentu dan sengaja disediakan untuk menangani berbagai hal dengan cara memanggil fungsi-fungsi yang telah dideklarasikan di dalam file tersebut. Dalam banyak hal, pustaka-pustaka yang tersedia tidak berbentuk kode sumber melainkan dalam bentuk yang telah dikompilasi. Pada saat proses linking, kode-
Universitas Sumatera Utara
kode dari fungsi ini akan dikaitkan dengan kode-kode yang ditulis oleh pemrograman. Sintaks untuk menggunakan fungsi pustaka ini adalah sebagai berikut : #include Contoh : #include
2.2.8
Pernyataan if Pernyataan if digunakan untuk melakukan pengambilan keputusan
terhadap dua buah kemungkinan yaitu mengerjakan suatu blok pernyataan atau tidak. Bentuk pernyataan if adalah sebagai berikut: if (kondisi) { //blok pernyataan yang akan dikerjakan //jika kondisi if terpenuhi
} Contoh:
if (PINA>0x80) { dataku = PINA; PORTC=0x0FF }
Pernyataan if diatas akan mengecek apakah data yang terbaca pada Port A (PINA) nilainya lebih dari 0x80 atau tidak, jika ya maka variabel dataku diisi dengan nilai PINA dan data 0xFF dikeluarkan ke Port C. Apabila dalam blok pernyataan hanya terdapat satu pernyataan saja maka tanda { dan } dapat dihilangkan seperti contoh berikut:
if (PINA>0x80)
PORTC=0xFF;
Universitas Sumatera Utara
2.2.9
Pernyataan If..Else Pernyataan if..else hampir sama dengan pernyataan if diatas atau yaitu
digunakan untuk melakukan pengambilan keputusan terhadap dua buah kemungkinan, hanya yang berbeda adalah bahwa kedua kemungkinan tersebut berupa mengerjakan suatu blok pernyataan atau mengerjakan blok pernyataan yang lain. Bentuk pernyataan if..else adalah sebagai berikut: if (kondisi) { //blok pernyataan yang akan dikerjakan //jika kondisi if terpenuhi } Else { //blok pernyataan yang akan dikerjakan //jika kondisi if tidak terpenuhi } Contoh :
if (PIN.0x80) { dataku = ~PINA; PORTC=0x00; }
Pernyataan if..else diata akan mengecek apakah data yang terbaca pada Port A (PINA) nilainya lebih dari 0x80 atau tidak, jika ya maka variabel dataku disiisi dengan nilai PINA dan data 0xFF dikeluarkan ke port C tetapi jika tidak
Universitas Sumatera Utara
maka variabel dataku diisi dengan nilai komplemen dari PINA (~PINA) dan data 0x00 dikeluarkan ke port C.
2.2.10 Pernyataan While Pernyataan while digunakan untuk pengulangan sebuah pernyataan atau blok pernyataan secara terus menerus selama kondisi tertentu masih terpenuhi. Bentuk pernyataan while adalah sebagai berikut: while (kondisi) { //sebuah pernyataan atau blok pernyataan } Jika pernyataan yang akan diulang hanya berupa sebuah pernyataan saja maka tanda { dan } bisa dihilangkan. Contoh: unsigned char a=0; ..... while (a<10) { PORTC=a; a++; } Pernyataan diatas akan mengeluarkan data as ke port C secara berulangulang. Setiap kali pengulangan nilai a akan bertambah 1 dan sebuah nilai a mencapai 10 maka pengulangan selelsai.
Universitas Sumatera Utara
2.2.11 Bentuk Dasar Program C Sebuah program dalam bahasa C setidaknya harus memiliki sebuah fungsi. Fungsi dasar ini disebut dengan fungsi utama dan memiliki kerangka program sebagai berikut: void main (void) { //pernyataan-pernyataan } Jika kita memiliki beberapa fungsi yang lain maka fungsi utama inilah yang memiliki kedudukan paling tinggi dibandingkan fungsi-fungsi yang lain sehingga setiap kali program dijalankan akan selalu dimulai dari memanggil fungsi utama terlebih dahulu. Fungsi-fungsi yang lain dapat dipanggil setelah fungsi utama dijalankan melalui pernyataan-pernyataan yang berada di dalam fungsi utama. Contoh: //prototipe fungsi inisialisasi port void inisialisasi_port (char A, char B, char C, char D); //definisi fungsi inisialisasi port void inisialisasi_port (char A, char B, char C, char D) { DDRA = A; DDRB = B; DDRC = C; DDRD = D; }
Universitas Sumatera Utara
//fungsi utama void main (void) { inisialisasi_port 90xFF, 0xF0, 0x0F, 0x00); }
2.3 CodeVision AVR CodeVision AVR merupakan salah satu software kompiler yang khusus digunakan untuk mikrokontroler keluarga AVR. Meskipun CodeVision AVR termasuk software komersial, namun dapat menggunakannya dengan mudah karena terdapat versi evaluasi yang disediakan secara gratis walaupun dengan kemampuan yang dibatasi.
2.4 CodeVision AVR Chip Programmer Salah satu kelebihan dari CodeVision AVR adalah tersedianya fasilitas untuk mendownload program ke mikrokontroler yang telah terintegrasi sehingga dengan demikian CodeVision ini selain dapat berfungsi sebagai software kompiler juga dapat berfungsi sebagai software programmer atau downloader. Jadi dapat melakukan proses download program yang telah dikompiler dengan menggunakan software CodeVision AVR juga.
2.5 Sensor Jarak Ultrasonik PING Pada dasanya, Sensor PING terdiri dari sebuah chip pembangkit sinyal 40KHz, sebuah speaker ultrasonik dan sebuah mikropon ultrasonik. Speaker
Universitas Sumatera Utara
ultrasonik mengubah sinyal 40 KHz menjadi suara sementara mikropon ultrasonik berfungsi untuk mendeteksi pantulan suaranya.Sensor PING mendeteksi jarak obyek dengan cara memancarkan gelombang ultrasonik (40 KHz) selama tBURST (200 μs) kemudian mendeteksi pantulannya. Sensor ping memancarkan gelombang ultrasonik sesuai dengan kontrol dari mikrokontroler pengendali (pulsa trigger dengan t out minimal 2 μs).
Gambar 2.3 Sensor Jarak Ultrasonik Ping Sensor ping mendeteksi jarak objek dengan cara memancarkan gelombang ultrasonik ( 40 KHz ) selama t = 200 us kemudian mendeteksi pantulannya. Sensor PING memancarkan gelombang ultrasonik sesuai dengan kontrol dari mikrokontroller pengendali ( pulsa trigger dengan t out minimal 2 μs ). Gelombang ultrasonik melalui udara dengan kecepatan 344 meter per detik, mengenai obyek dan memantul kembali ke sensor. PING mengeluarkan pulsa output high pada pin SIG setelah memancarkan gelombang ultrasonik dan setelah gelombang pantulan terdeteksi PING akan membuat output low pada pin SIG. Lebar pulsa High (tIN) akan sesuai dengan lama waktu tempuh gelombang ultrasonik untuk 2 kali jarak ukur dengan obyek.
2.6 Buzzer Buzzer merupakan komponen elektronika yang berfungsi untuk mengubah getaran listrik menjadi getaran suara. Pada dasarnya prinsip kerja buzzer hampir
Universitas Sumatera Utara
sama dengan loud speaker, jadi buzzer juga terdiri dari kumparan yang terpasang pada diafragma dan kemudian kumparan tadi akan tertarik dalam atau keluar, tergantung dari arus dan polaritas magnetnya, karena kumparan dipasang pada diafragma maka setiap gerakan kumparan akan menggerakkan diafragma secara bolak-balik sehingga membuat udara bergetar yang akan menghasilkan suara. Buzzer biasa digunakan sebagai indikator bahwa proses telah selesai atau terjadi suatu kesalahan pada sebuah alat (alarm).
Gambar 2.5 Bentuk Buzzer
2.7 Catu Daya Catu daya digunakan untuk memberi kebutuhan arus dan tegangan pada rangkaian. Catu daya terdiri dari beberapa bagian, yaitu: Jala-Jala Listrik, Transformator, Rectifier, Filter, Regulator Beban. Rectifier (penyearah) akan menyearahkan tegangan bolak- balik (AC) dari keluaran transformator menjadi tegangan searah (DC). Filter pada catu daya akan meminimalisir tegangan kerut (ripple) pada tegangan keluaran penyearah. Regulator beban digunakan untuk mengatur tegangan keluaran kepada beban sehingga tegangan keluaran kepada beban tidak lagi tergantung pada arus yang mengalir dari tegangan jala-jala listrik.
Universitas Sumatera Utara
2.8 Transistor Transistor
merupakan
dioda
dengan
dua
sambungan
(junction).
Sambungan itu membentuk transistor PNP maupun NPN. Ujung-ujung terminalnya berturut-turut disebut emitor, base dan kolektor. Base selalu berada di tengah, di antara emitor dan kolektor. Beberapa fungsi transistor sebagai saklar (switch on/off) dan sebagai penguat (amplifier).
Universitas Sumatera Utara