BAB II LANDASAN TEORI 2.1 Mikrokontroler ATMega 8535 Mikrokontroler, sesuai namanya adalah suatu alat atau komponen pengontrol atau pengendali yang berukuran mikro atau kecil. Sebelum ada mikrokontroler, telah ada terlebih dahulu muncul mikroprosesor. Bila dibandingkan dengan mikroprosesor, mikrokontroler jauh lebih unggul karena terdapat berbagai alasan, diantaranya : 1. Tersedianya I/O I/O dalam mikrokontroler sudah tersedia sementara pada mikroprosesor dibutuhkan IC tambahan untuk menangani I/O tersebut. IC I/O yang dimaksud adalah PPI 8255. 2. Memori Internal Memori merupakan media untuk menyimpan program dan data sehingga mutlak harus ada. Mikroprosesor belum memiliki memori internal sehingga memerlukan IC memori eksternal. Dengan kelebihan-kelebihan di atas, ditambah dengan harganya yang relatif murah sehingga banyak penggemar elektronika yang kemudian beralih kemikrokontroler. Namun demikian, meski memiliki berbagai kelemahan, mikroprosesortetap digunakan sebagai dasar dalam mempelajari mikrokontroler. Inti kerja dari keduanya adalah sama, yakni sebagai pengendali suatu sistem. Universitas Sumatera Utara
29
Embed
BAB II LANDASAN TEORI 2.1 Mikrokontroler ATMega 8535 ...
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
BAB II
LANDASAN TEORI
2.1 Mikrokontroler ATMega 8535
Mikrokontroler, sesuai namanya adalah suatu alat atau komponen pengontrol atau
pengendali yang berukuran mikro atau kecil. Sebelum ada mikrokontroler, telah ada
terlebih dahulu muncul mikroprosesor. Bila dibandingkan dengan mikroprosesor,
mikrokontroler jauh lebih unggul karena terdapat berbagai alasan, diantaranya :
1. Tersedianya I/O
I/O dalam mikrokontroler sudah tersedia sementara pada mikroprosesor
dibutuhkan IC tambahan untuk menangani I/O tersebut. IC I/O yang dimaksud adalah
PPI 8255.
2. Memori Internal
Memori merupakan media untuk menyimpan program dan data sehingga mutlak harus
ada. Mikroprosesor belum memiliki memori internal sehingga memerlukan IC
memori eksternal. Dengan kelebihan-kelebihan di atas, ditambah dengan harganya
yang relatif murah sehingga banyak penggemar elektronika yang kemudian beralih
kemikrokontroler. Namun demikian, meski memiliki berbagai kelemahan,
mikroprosesortetap digunakan sebagai dasar dalam mempelajari mikrokontroler. Inti
kerja dari keduanya adalah sama, yakni sebagai pengendali suatu sistem.
Universitas Sumatera Utara
Mikrokontroler merupakan komputer di dalam chip yang digunakan untuk
mengontrol peralatan elektronik, yang menekankan efisiensi dan efektifitas biaya.
Secara harfiahnya bisa disebut “pengendali kecil“ dimana sebuah sistem elektronik yang
sebelumnya banyak memerlukan komponen-komponen pendukung seperti IC TTL dan
CMOS dapat direduksi / diperkecil dan akhirnya terpusat serta dikendalikan oleh
mikrokontroler ini. Dengan menggunakan mikrokontroler ini maka:
1. Sistem elektronik akan menjadi lebih ringkas.
2. Rancang bangun sistem elektronik akan lebih cepat karena sebagian besar dari
sistem adalah perangkat lunak yang mudah dimodifikasi.
3. Pencarian gangguan lebih mudah ditelusuri karena sistemnya yang kompak. Namun
demikian tidak sepenuhnya mikrokontroler bisa mereduksi komponen IC TTL dan
CMOS yang seringkali masih diperlukan untuk aplikasi kecepatan tinggi atau sekedar
menambah jumlah saluran input dan output (I/O). dengan kata lain, mikrokontroler
adalah versi mini atau mikro dari sebuah komputer karena mikrokontroler sudah
mengandung beberapa bagian yang langsung bisa dimanfaatkan, misalnya port
paralel, port serial, komparator, konversi digital ke analog (DAC), konversi analog
ke digital (ADC), dan sebagainya hanya menggunakan Minimum System yang
tidak rumit atau kompleks.
Mikrokontroler adalah otak dari suatu sistem elektronika seperti halnya mikroprosesor
sebagai otak komputer. Namun mikrokontroler memiliki nilai tambah karena didalamnya
sudah terdapat memori dan sistem input/output dalam suatu kemasan IC. Mikrokontroler
AVR (Alf and Vegard’s RISC processor) standar memiliki arsitektur 8-bit, dimana semua
instruksi dikemas dalam kode 16- bit dan sebagian besar instruksi dieksekusi dalam satu
siklus clock. Berbeda dengan instruksi MCS-51 yang membutuhkan 12 siklus clock karena
memiliki arsitektur CISC (seperti komputer).
Secara umum, AVR dapat dikelompokkan menjadi 4 kelas, yaitu keluarga ATTiny,
keluarga AT90Sxx, keluarga ATMega dan AT89RFxx. Pada dasarnya yang membedakan
masing-masing kelas adalah memori, peripheral, dan fungsinya. Dari segi arsitektur dan
instruksi yang digunakan, mereka bisa dikatakan hampir sama. Oleh karena itu, dipergunakan
salah satu AVR produk Atmel, yaitu ATMega 8535. Selain mudah didapatkan dan lebih
murah ATMega 8535 juga memiliki fasilitas yang lengkap. Untuk tipe AVR ada 3 jenis
Universitas Sumatera Utara
yaitu ATTiny, AVR klasik, dan ATMega. Perbedaannya hanya pada fasilitas dan I/O
yang tersedia serta fasilitas lain seperti ADC, EEPROM, dan lain sebagainya. Salah satu
contohnya adalah ATMega 8535. Memiliki teknologi RISC dengan kecepatan maksimal 16
MHz membuat ATMega 8535 lebih cepat bila dibandingkan dengan varian MCS51. Dengan
fasilitas yang lengkap tersebut menjadikan ATMega 8535 sebagai mikrokontroler yang
powerfull. Adapun blok diagramnya sebagai berikut :
Universitas Sumatera Utara
Gambar 2.1 Blok Diagram ATMega 8535
Universitas Sumatera Utara
Dari gambar tersebut dapat dilihat bahwa ATMega 8535 memiliki bagian
sebagai berikut :
1. Saluran I/O sebanyak 32 buah, yaitu Port A, Port B, Port C, Port D.
2. ADC 10 bit sebanyak 8 saluran.
3. Tiga buah Timer/Counter dengan kemampuan pembandingan.
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 sebesar 512 byte yang dapat diprogram saat operasi.
11. Antarmuka komparator analog..
12. Port USART untuk komunikasi serial.
Kapabilitas detail dari ATMega8535 adalah sebagai berikut :
1. Sistem mikroprosesor 8 bit bebrbasis RISC dengan kecepatan maksimal 16 MHz.
2. Kapabiltas memori flash 8 Kb, SRAM sebesar 512 byte, dan EEPROM (Electrically
Erasable Programmable Read Only Memory) sebesar 512 byte.
3. ADC internal dengan fidelitas 10 bit sebanyak 8 channel.
4. Portal komunikasi serial (USART) dengan kecepatan maksimal 2,5 Mbps.
5. Enam pilihan mode sleep menghemat penggunaan daya listrik.
2.1.1 Konfigurasi PIN ATMega8535
Mikrokontroler ATMega8535 mempunyai jumlah pin sebanyak 40 buah, dimana 32
pin digunakan untuk keperluan port I/O yang dapat menjadi pin input/output sesuai
konfigurasi. Pada 32 pin tersebut terbagi atas 4 bagian (port), yang masing-masingnya terdiri
atas 8 pin. Pin-pin lainnya digunakan untuk keperluan rangkaian osilator, supply tegangan,
reset, serta tegangan referensi untuk ADC. Untuk lebih jelasnya, konfigurasi pin
ATMega8535 dapat dilihat pada gambar 2.9..
Universitas Sumatera Utara
Berikut ini adalah susunan pin-pin dari ATMega8535;
• VCC merupakan pin yang berfungsi sebagai pin masukkan catu daya
• GND merupakan pin ground
• Port A (PA0..PA7) merupakan pin I/O dua arah dan pin masukan ADC
• Port B (PB0..PB7) merupakan pin I/O dua arah dan pin fungsi khusus, yaitu
Timer/Counter, Komparator Analog, dan SPI
• Port C (PC0..PC7) merupakan pin I/O dua arah dan pin fungsi khusus, yaitu TWI,
Komparator Analog, dan Timer Oscilator
• Port D (PD0..PD7) merupakan pin I/O dua arah dan pin fungsi khusus, yaitu
Komparator Analog, Interupsi Iksternal dan komunikasi serial USART
• Reset merupakan pin yang digunakan untuk mereset mikrokontroler
• XTAL1 dan XTAL2 merupakan pin masukkan clock eksternal (osilator menggunakan
kristal, biasanya dengan frekuensi 11,0592 MHz)
Gambar 2.2 Konfigurasi Pin ATMega8535
Universitas Sumatera Utara
2.1.2 Peta Memori ATMega8535 ATMega8535 memiliki dua jenis memori yaitu Data Memory dan Program Memory
ditambah satu fitur tambahan yaitu EEPROM Memory untuk penyimpan data.
2.1.3 Program Memory
ATMEGA8535 memiliki On-Chip In-System Reprogrammable Flash Memory untuk
menyimpan program. Untuk alasan keamanan, program memory 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 pertama kali diaktifkan.
Gambar 2.3 Peta Memori Program
Application Flash Section digunakan untuk menyimpan program aplikasi yang dibuat
user. AVR tidak dapat menjalakan program aplikasi ini sebelum menjalankan program Boot
Loader. Besarnya memori Boot Flash Section dapat deprogram 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.
Universitas Sumatera Utara
2.1.4 Data Memory
Gambar berikut menunjukkan peta memori SRAM pada ATMEGA8535. Terdapat
608 lokasi address data memori. 96 lokasi address digunakan untuk Register File dan I/O
Memory sementara 512 likasi address lainnya digunakan untuk internal data SRAM. Register
file terdiri dari 32 general purpose working register, I/O register terdiri dari 64 register.
Gambar 2.4 Peta Memori Data
2.1.5 EEPROM Data Memory
ATMEGA8535 memiliki EEPROM 8 bit sebesar 512 byte untuk menyimpan data.
Loaksinya terpisah dengan system address register, data register dan control register yang
dibuat khusus untuk EEPROM. Alamat EEPROM dimulai dari $000 sampai $1FF.
Universitas Sumatera Utara
Gambar 2.5 EEPROM Data Memori
2.2 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.
Universitas Sumatera Utara
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.6 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
Universitas Sumatera Utara
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.3 Dasar Pemrograman Atmega 8535 dengan Bahasa C
2.3.1 Pendahuluan
C adalah bahasa pemrograman yang dapat dikatakan berada antara bahasa tingkat
rendah (bahasa yang berorientasi pada mesin) dan bahasa tingkat tinggi (bahasa yang
berorientasi pada manusia). Seperti yang diketahui, bahasa tingkat tinggi mempunyai
kompatibilitas antara platform. Karena itu, amat mudah untuk membuat program pada
berbagai mesin. Berbeda halnya dengan menggunakan bahasa mesin, sebab setiap
perintahnya sangat bergantung pada jenis mesin.
Pembuat bahasa C adalah Brian W. Kernighan dan Dennis M. Ritchie pada tahun
1972. C adalah bahasa pemrograman terstruktur, yang membagi program dalam bentuk blok.
Universitas Sumatera Utara
Tujuannya untuk memudahkan dalam pembuatan dan pengembangan program. Program yang
ditulis dengan bahasa C mudah sekali dipindahkan dari satu jenis program ke bahasa program
lain. Hal ini karena adanya standarisasi bahasa C yaitu berupa standar ANSI ( American
National Standar Institut) yang dijadikan acuan oleh para pembuat kompiler.
2.3.2 Bahasa Pemograman Mikrokontroler
Pengembangan sebuah sistem menggunakan mikrokontroler AVR buatan ATMEL
menggunakan software AVR STUDIO dan CodeVisionAVR. AVR STUDIO merupakan
software yang digunakan untuk bahasa assembly yang mempunyai fungsi yang sangat
lengkap, yaitu digunakan untuk menulis program, kompilasi, simulasi dan download program
ke IC mikrokontroler AVR. Sedangkan CodeVisionAVR merupakan software C-cross
Compiler, dimana program dapat ditulis dalam bahasa C, CodeVision memiliki IDE
(Integrated development Environment) yang lengkap, dimana penulisan program, compile,
link, pembuatan kode mesin (assembler) dan download program ke chip AVR dapat
dilakukan dengan CodeVision, selain itu ada fasilitas terminal, yaitu melakukan komunikasi
serial dengan mikrokontroler yang sudah di program. Proses download program ke IC
mikrokontroler AVR dapat menggunakan System programmable Flash on-Chip mengizinkan
memori program untuk diprogram ulang dalam sistem menggunakan hubungan serial SPI.
2.3.3 Pengenal pada bahasa C
Pengenal merupakan sebuah nama yang didefinisikan oleh program untuk
menunjukkan sebuah konstanta, variabel, fungsi, label, atau tipe data khusus. Pemberian
pengenal pada program harus memenuhi syarat-syarat di bawah ini:
1. Karakter pertama tidak menggunakan angka;
2. Karakter kedua berupa huruf, angka, garis bawah,;
3. Tidak menggunakan spasi;
4. Bersifat case sensitive, yaitu huruf kapital dan huruf kecil dianggap berbeda;
5. Tidak boleh menggunakan kata-kata yang merupakan sintaks atau operator dari
bahasa C.
Universitas Sumatera Utara
Contoh menggunakan pengenal yang diperbolehkan:
1. Nama
2. _nama
3. Nama2
4. Nama_pengenal
Contoh penggunaan pengenal yang tidak diperbolehkan:
1. 2nama
2. Nama+2
3. Nama pengenal
2.3.4 Tipe Data
Pemberian signed dan unsigned pada tipe data menyebabkan jangkauan dari tipe
berubah. Pada unsigned menyebabkan tipe data akan selalu bernilai positif sedangkan signed
menyebabkan nilai tipe data bernilai negatif dan memungkinkan data bernilai positif.
Perbedaan nilai tipe data dapat kita lihat pada tabel di bawah ini,
Universitas Sumatera Utara
Tabel 2.1 Tipe Data
Pemodifikasi Tipe Persamaan Jangkauan Nilai
Signed char Char -128 s/d 127
Signed int Int -32.768 s/d 32.767
Signed short int Short, signed short -32.768 s/d 32.767
Signed long int Long, long int, signed long -2.147.483.648 s/d
2.147.483.647
Unsigned char Tidak ada 0 s/d 255
Unsigned int Unsigned 0 s/d 65.535
Unsigned short int Unsigned short 0 s/d 65.535
Unsigned long int Unsigned long 0 s/d 4.294.967.295
Contoh program yang menunjukkan pengaruh signed dan unsigned pada hasil
program,
#include <mega.8535> #include <delay.h> Void main (void) { int a, b; // pengenal unsigned d, e; a = 50; b = 40; d = 50; e = 40; PORTC = 0x00; DDRC = 0Xff; //set PORTC sebagai output PORTB = 0x00; DDRB = 0Xff; // set PORTB sebagai output While(1)
{ PORTB = a – b; PORTC = d – e; delay_ms(100);
};
}
Universitas Sumatera Utara
Program di atas akan memberikan data di PORTB = 10 (desimal) sedangkan PORTC
= -10 (desimal) karena PORT mikrokontroler tidak dapat mengeluarkan nilai negatif maka
PORTB dan PORTC akan memiliki keluaran 0x0A tapi pada kenyataannya PORTC lebih
banyak memakan memori karena tanda negatif tersebut disimpan dalam memori.
Pada program di atas terdapat tulisan //set PORTB sebagai output yang berguna
sebagai komentar yang mana komentar ini tidak mempengaruhi hasil dari program. Ada dua
cara penulisan komentar pada pemrograman bahasa C, yaitu dengan mengawali komentar
dengan tanda “ // “ ( untuk komentar yang hanya satu baris ) dan mengawali komentar dengan
tanda “ /* “ dan mengakhiri komentar dengan tanda “ */ “.
Contoh:
// ini adalah komentar
/* ini adalah komentar
Yang lebih panjang
Dan lebih panjang lagi */
2.3.5 Statement
Statement adalah setiap operasi dalam pemrograman, harus diakhiri dengan [ ; ] atau [
} ]. Statement tidak akan dieksekusi bila diawali dengan tanda [ // ] untuk satu baris. Lebih
dari 1 baris gunakan pasangan [ /* ] dan [ */ ]. Statement yang tidak dieksekusi disebut juga
comments / komentar.
2.3.6 Fungsi
Function adalah bagian program yang dapat dipanggil oleh program utama. Penulisan :
[tipe data hasil] [nama function]([tipe data input 1],[tipe data input 2])
{
[statement] ;
}
Universitas Sumatera Utara
2.3.7 Pernyataan berkondisi dan pengulangan
a. Pernyataan if
Pernyataan if digunakan untuk pengambilan keputusan terhadap 2 atau lebih
pernyataan dengan menghasilkan pernyataan benar atau salah. Jika pernyataan benar maka
akan di jalankan instruksi pada blok-nya, sedangkan jika pernyataan tidak benar maka
instruksi yang pada blok lain yang dijalankan ( sesuai dengan arah programnya).