LANDASAN TEORI
Landasan teori sangat membantu untuk dapat memahami suatu system.
Selain dari pada itu dapat juga dijadikan sebagai bahan acuan dalam
merencanakan suatu system. Dengan pertimbangan hal-hal tersebut, maka
landasan teori merupakan bagian yang harus dipahami untuk pembahasan
selanjutnya.
2.1. Mikrokontroler
Mikrokontroler merupakan suatu terobosan teknologi mikroprosesor dan
mikrokomputer yang merupakan teknologi semikonduktor dengan kandungan
transistor yang lebih banyak namun hanya membutuhkan ruang yang sangat kecil.
Lebih lanjut, mikrokontroler merupakan system computer yang mempunyai satu
atau beberapa tugas yang sangat spesifik, berbeda dengan PC (Personal Computer
) yang memiliki beragam fungsi.
Tidak seperti sistem komputer yang mampu menangani berbagai macam
program aplikasi, mikrokontroler hanya bisa digunakan untuk suatu aplikasi
tertentu saja, perbedaan lainnya terletak pada perbandingan RAM dan ROM. Pada
sistem komputer perbandingan RAM dan ROM nya besar, artinya
program-program pengguna disimpan dalam ruang RAM yang relative besar, sedangkan
rutin-rutin antar muka perangkat keras disimpan dalam ruang ROM yang kecil,
Sedangkan pada mikrokontroler, perbandingan ROM dan RAM –nya yang besar,
artinya program kontrol disimpan dalm ROM (bisa Masked ROM atau Flash
tempat penyimpanan sementara, termasuk register-register yang digunakan pada
mikrokontroler yang bersangkutan.
Mikrokontroler adalah satu 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 suatu
kemasan. Penggunaan mikrokontroler dalam bidang kontrol sangat luas dan
populer. Ada beberapa vendor yang membuat mikrokotroler diantaranya Intel,
Microchip, Windbond, Atmel, Philips, Xemics dan lain-lain buatan Atmel.
Mikrokontroler merupakan sebuah sistem komputer yang mempunyai satu
atau beberapa tugas yang sangat spesifik, berbeda dengan personal computer yang
memiliki beragam fungsi. Mikrokontroler dapat dikelompokan dalam beberapa
jenis, masing–masing mikrokontroler memiliki spesifikasi tersendiri namun cocok
dalam pemrogramannya.
Salah satu arsitektur mikrokontroler yang terdapat di pasaran adalah jenis
AVR (Advanced Virtual RISC). Arsitektur mikrokontroler jenis AVR ini pertama
kali dikembangkan pada tahun 1996 oleh dua orang mahasiswa Norwegian
Institute of Technology yaitu Alf-Egil Bogen dan Vegard Wollan. Pemrograman
mikrokontroler AVR dapat menggunakan low level language (assembly) dan high
level language (C, Basic, Pascal, JAVA, dll) tergantung compiler yang digunakan.
Pada pembahasan ini mikrokontroler yang digunakan adalah AVR ATmega32.
Mikrokontroller Atmega32 adalah mikrokontroler yang diproduksi oleh
Atmel. mikrokontroler ini memiliki clock dan kerjanya tinggi sampai 16 MHz,
ukuran flash memorinya cukup besar, kapasistas SRAM sebesar 2 KiloByte, Flash
32 KiloByte dan 32 buah port input/output yang sangat memadai untuk
berinteraksi dengan perangkat lainya. Sebuah mikrokontroler adalah sebuah
komputer kecil di satu sirkuit terpadu yang berisi inti prosesor, memory dan
Input/Output.
ATmega32 tergolong Mikrokontroler jenis AVR yang memiliki arsitektur
RISC (Reduced Instruction Set Computing) 8 bit, dimana semua instruksi
dikemas dalam kode 16 bit dan sebagian besar instruksi dikemas berbeda dengan
instruksi MCS51 yang membutuhkan 12 siklus clock. Arsitektur AVR ini
menggabungkan perintah secara efektif dengan 32 register umum. Semua register
tersebut lagsung terhubung dengan arithmetic Logic Unit (ALU) yang
memugkinkan 2 register terpisah diproses dengan satu perintah tunggal dalam satu
clock cycle. Hal ini meghasilkan kode yang efektif dalam kecepatan prosesnya 10
kali lebih cepat daripada mikrokontroler CISC biasa. Berikut ini adalah gambar
mikrokotroler atmega 32:
7. Pin 14 sampai 21 (port D) adalah 8 bit dua arah (bi-directional I/O) port dengan
internal pull-up resistors di gunaka untuk general purpose dan special feature.
8. Pin 22 sampai 29 (port C) adalah 8 bit dua arah (bi-directional I/O) port dengan
internal pull-up resistors di gunaka untuk general purpose dan special feature.
9. Pin 30 adalah Avcc pin penyuplai daya untuk port A dan A/D converter dan di
hubungkan ke Vcc.jika ADC di gunakan maka pin ini di hubungkan ke Vcc.
10.Pin 32 adalah A REF pin yang berfungsi sebagai referensi untuk pin analog jika
A/D converter di gunakan.
11.Pin 33 sampai 40 (port A) adalah 8 bit dua arah arah (bi-directional I/O) port
dengan internal pull-up resistors di gunaka untuk general purpose.
Penjelasan konfigurasi pin pada mikrokontroler AVR ATmega32 yang
mempunyai fungsi khusus yaitu:
a. pin 33 sampai 40 dapat di gunakan sebagai:
Tabel 2.1 Tabel Fungsi Khusus Port A
PA0 Input ADC PA0
PA1 Input ADC PA1
PA2 Input ADC PA2
PA3 Input ADC PA3
PA4 Input ADC PA4
PA5 Input ADC PA5
PA6 Input ADC PA6
b. pin 1 sampai 8 (port B) di gunakan sebagai :
Tabel 2.2 Tabel Fungsi Khusus Port B
PB7 SCK (SPI Bus Serial Clock)
PB6 MISO (SPI Bus Master Input /Slave Output)
PB5 MOSI (SPI Bus Master Output /Slave Input)
PB4 SS (SPI Slave Select Input)
PB3 AIN1(Analog Comparator Negative Input),OC0(Timer/Counter0
Output Compare Match Output).
PB2 AIN0 (Analog Comparator Positive Input),INT2(External Interrup 2
Input)
PB1 TI (Timer/Counter 1 External Counter Input)
PB0 T0 (Timer/Counter0 External Counter Input),XCK(USART External
Clock Input/Output).
c. pin 22 sampai 29 (port C) dapat di gunakan sebagai:
Tabel 2.3 Tabel Fungsi Khusus Port C
PC7 TOSC2 (Timer Oscillator Pin 2)
PC6 TOSC1 (Timer Oscillator Pin 1)
PC5 TDI (JTAG Test Data In)
PC4 TDO (JTAG Test Data Out)
PC3 TMS (JTAG Test Mode Select)
PC2 TCK (JTAG Test Clock)
PC1 SDA (Two-Wire Serial Bus Data Input/Output Line)
d. pin 14 sampai 21 (port D) dapat di gunakan sebagai:
Tabel 2.4 Tabel Fungsi Khusus Port D
PD7 OC2 (Timer/Counter2 Output Compare Match Output)
PD6 ICPI (Timer/Couter1 Input Capture Pin)
PD5 OC1A (Timer/Counter1 Output Compare A Match Output )
PD4 OC1B (Timer/Counter1 Output Compare A Match Output)
PD3 INT1 (External Interrupt 1 Input)
PD2 INT0 (External Interrupt 0 Input)
PD1 TXD (USART Output pin)
PD0 RXD (USART Input pin)
2.1.3. Fitur Mikrokontroler ATMega32
Fitur-fitur yang dimiliki ATmega32 sebagai berikut:
1. Frekuensi clock maksimum 16 MHz
2. Jalur I/O 32 buah, yang terbagi dalam PortA, PortB, PortC dan PortD
3. Analog to Digital Converter 10 bit sebanyak 8 input, 4 chanel PWM
4. Timer/Counter sebanyak 3 buah
5. CPU 8 bit yang terdiri dari 32 register
6. Watchdog Timer dengan osilator internal
7. SRAM sebesar 2K Byte
8. Memori Flash sebesar 32K Byte dengan kemampuan read while write
9. Interrupt internal maupun eksternal
10. Port komunikasi SPI
11. EEPROM sebesar 512 byte yang dapat diprogram saat operasi
12. Analog Comparator
2.1.4. Arsitektur AVR ATmega32
Untuk meningkatkan kemampuan, mikrokontroler AVR ATmega32
menggunakan teknologi RISC(Reduced Instruction Set Computer) di mana set
instruksi dikurangi lebarnya sehingga semua instruksi mempunyai panjang 16 bit
dan sebagian besar instruksi dieksekusi dalam single clock,serta pengurangan
kompleksitas pengalamatan.Mikrokontroler AVR menggunakan arsitektur
harvard dengan memisahkan memori dan jalur bus untuk program dan data agar
meningkatkan kemampuan karena dapat mengakses program memori dan data
memori secara bersamaan.Mikrokontroler AVR memiliki fast accessregister file
dengan 32 register x 8 bit.Dengan 32 register AVR dapat mengeksekusi beberapa
instruksi sekali jalan (single cycle). 6 dari 32 register yang ada dapat di gunakan
sebagai indirect address register pointer 16 bit untuk pengalamatan data space,
2.2. Dot Matriks
Pada dasarnya DOT matriks adalah Display LED yg disusun sedemikian
rupa sehingga untuk menghidupkan led ke (x,x) dibutuhkan kombinasi tegangan
antara Pin baris & kolom
Kemudian untuk mempermudah kontrol dan menghemat pin diperlukan
proses scanning ( biasanya kolom...) sedangkan pada baris diberikan bit sesuai
huruf/karakter yang akan ditampilkan yang bersesuaian dengan posisi scanning.
Scanning untuk kolom dimaksud memberikan "1" high ( untuk common
katoda) atau"0" untuk common anoda , untuk kolom lainnya diberi nilai negasi
dari kolom yg diberi nilai 1 tadi ...begitu selanjutnya untuk kolom berikutnya
sampai kolom terakhir dari rangkaian led matrix..dan berulang dari depan lagi.
Proses ini dilakukan sangat cepat sehingga melihatnya tetap sebagai suatu
karakter yg diam. misalnya ingin menampilkan huruf A , secara umum
digambarkan sebagai berikut:
000
0
000
00
0
0
0
00
0
0
000
0
0
0
00000
0
0000000
0
00000
0
0
00000
0
dari gambar diatas logikanya seperti ini :
- saat kolom pertama ( scan kolom 1 = 1 / high/2.4 v) maka bit yg diberi pada
baris berupa "1110000", sehingga jika ketemu 1 - 1 tidak ada arus mengalir, jadi
- begitu juga untuk kolom kedua, ketika kolom kedua diberi tegangan maka pada
baris bit yg diberikan adalah "1101011"
- Dan seterusnya, ketika kolom nya mencapai ujung maka akan diulang ke kolom
1 lagi
- Untuk melakukan scanning biasanya dilakukan dengan memanfaatkan shift
register, atau paling sederhana dengan menggunakan IC 4017 yang di cascade
menjadi led berjalan yang panjang.
2.3. RTC (Real Time Clock)
RTC yang dimaksud disini adalah real time clock biasanya berupa IC yang
mempunyai clock sumber sendiri dan internal battery untuk menyimpan data
waktu dan tanggal. Sehingga jika system komputer / microcontroller mati waktu
dan tanggal di dalam memori RTC tetap up to date.
Salah satu RTC yang sudah popular dan mudah penggunaanya adalah
DS1307, apalagi pada Codevision sudah tersedia fungsi-fungsi untuk mengambil
data waktu dan tanggal untuk RTCDS1307 ini
Fitur-fitur DS1307:
Real-time clock (RTC) menghitung detik, menit, jam, tanggal, bulan dan
hari serta tahun valid sampai tahun 2100
Ram 56-byte, non volatile untuk menyimpan data.
2 jalur serial interface (I2C).
Output gelombang kotak yang diprogram.
Automatic power-fail detect and switch
Konsumsi arus hanya 500nA pada batery internal.
mode dg oscillator running.
temperature range: -40°C sampai +85°C
Untuk membaca data tangal dan waktu yang tersimpan di memori RTC
Ds1307 dapat dilakukan melalu komunikasi serial I2C seperti tampak pada
gambar berikut:
Cara pembacaan
DS1307 beropersai sebagai slave pada bus I2C. Cara Access pertama mengirim
sinyal START diikuti device address dan alamat sebuah register yang akan
dibaca. Beberapa register dapat di baca sampai STOP condition dikirim.
Gambar 2.7 Address Map Ds1307
Data waktu dan tanggal tersimpan dalam memori masing-masing 1 byte , mulai
dari alamat 00H sampai 07H. Sisanya (08H ~ 3FHalamat RAM yang bias
digunakan). Codevision sudah menyediakan fungsi-fungsi khusus untuk
mengakses data DS1307 jadi kita tingga menggunakanya. Apalagi dengan fasilitas
codewizard pemrograman RTC menjadi mudah.
2.4. CodeVisionAVR
CodeVisionAVR pada dasarnya merupakan perangkat lunak pemrograman
microcontroller keluarga AVR berbasis bahasa C. Ada tiga komponen penting
yang telah diintegrasikan dalam perangkat lunak ini: Compiler C, IDE dan
Berdasarkan spesifikasi yang dikeluarkan oleh perusahaan
pengembangnya, Compiler C yang digunakan hampir mengimplementasikan
semua komponen standar yang ada pada bahasa C standar ANSI (seperti struktur
program, jenis tipe data, jenis operator, dan library fungsi standar-berikut
penamaannya). Tetapi walaupun demikian, dibandingkan bahasa C untuk aplikasi
komputer, compiler C untuk microcontroller ini memiliki sedikit perbedaan yang
disesuaikan dengan arsitektur AVR tempat program C tersebut ditanamkan
(embedded).
Khusus untuk library fungsi, disamping library standar (seperti
fungsi-fungsi matematik, manipulasi String, pengaksesan memori dan sebagainya),
CodeVisionAVR juga menyediakan fungsi-fungsi tambahan yang sangat
bermanfaat dalam pemrograman antarmuka AVR dengan perangkat luar yang
umum digunakan dalam aplikasi kontrol. Beberapa fungsi library yang penting
diantaranya adalah fungsi-fungsi untuk pengaksesan LCD, komunikasi I2C, IC
RTC (Real time Clock), sensor suhu LM75, SPI (Serial Peripheral Interface) dan
lain sebagainya.
CodeVisionAVR 1.2.4.9 adalah suatu kompiler berbasis bahasa C, yang
terintegrasi untuk memprogram dan sekaligus compiler aplikasi AVR (Alf and
Vegard’s Risc processor) terhadap mikrokontroler dengan sistem berbasis
window. CodeVisionAVR ini dapat mengimplematasikan hampir semua interuksi
bahasa C yang sesuai dengan arsitektur AVR, bahkan terdapat beberapa
keunggulan tambahan untuk memenuhi keunggulan spesifikasi dari
Integrated Development Environtment (IDE) telah diadaptasikan pada chip
AVR yaitu In-System Programmer software, memungkinkan programmer untuk
mentransfer program ke chip mikrokontroler secara otomatis setelah proses
assembly/kompilasi berhasil. In-System Programmer software didesign untuk
bekerja dan dapat berjalan dengan perangkat lunak lain seperti AVR Dragon,
AVRISP, Atmel STK500, dan lain sebagainya.
Gambar 2.8. Tampilan CodeVision AVR
Contoh cara kerja sebelum melakukan pemograman di AVR, dimana
contoh disini adalah contoh pengaturan program agar mikrokontroler dapat
berkomunikasi dengan komputer:
a. Memilih project baru dan melakukan penyetingan komponen yang digunakan
pada board.
b. Pengaturan IC/Chip, pada chip yang kita harus dilakukan adalah IC apa yang
kita gunakan, dalam hal ini ATMEGA8535l dengan Clock 16 MHz. Clock ini
harus di atur dengan ukuran 16 MHz, karena pada komponen oksilator yang
digunakan sebesar 16 MHz.
c. Pengaturan ADC, pada ADC ini ada beberapa pilihan yang harus dipilih.
di check list (v) dan Volt Ref dipilih ‘AVCC PIN’. AVCC PIN berguna
sebagai referensi tegangan pada ADC untuk nilainya sebesar 5 volt.
d. Pengaturan USART, usart ini yang nantinya menghubungkan rangkaian
mikrokontroler dengan PC (komputer). Langkah-langkah yang dilakukan
dengan adanya pilihan Receiver di check list(v) dan Transmitter di check
list(v).
Pengaturan receiver berfungsi apakah serial itu sebagai penerima data,
sedangkan transmitter berfungsi serial bisa digunakan sebagai pengiriman data.
Untuk lebih jelas tampilan pengaturan yang disediakan oleh AVR dapat dilihat
pada gambar dibawah ini :
2.9 Gambar Form Pegaturan CodeVisionAVR
Selain bentuk konfigurasi hadware yang nantinya secara otomatis akan
membentuk sebuah instruksi layaknya perintah program ke IC/Chip, adapula
Selain itu, CodeVisionAVR juga menyediakan sebuah tool yang
dinamakan dengan Code Generator atau CodeWizardAVR. Secara praktis, tool ini
sangat bermanfaat membentuk sebuah kerangka program (template), dan juga
memberi kemudahan bagi programmer dalam peng-inisialisasian register-register
yang terdapat pada microcontroller AVR yang sedang diprogram. Dinamakan
Code Generator, karena perangkat lunak CodeVision ini akan membangkitkan
kode-kode program secara otomatis setelah fase inisialisasi pada jendela
CodeWizardAVR selesai dilakukan. Secara teknis, penggunaan tool ini pada
dasarnya hampir sama dengan application wizard pada bahasa-bahasa
pemrograman Visual untuk komputer (seperti Visual C, Borland Delphi, dan
sebagainya).
2.5. Bahasa C
Bahasa C adalah bahasa pemrograman yang dapat dikatakan berada
diantara bahasa tingkat rendah dan tingkat tinggi. Bahasa tingkat rendah artinya
bahasa yang berorientasi pada mesin dan bahasa tinggi berorientasi pada manusia.
Bahasa tingkat rendah, misalnya bahasa assembler, bahasa ini ditulis dengan sandi
yang dimengerti oleh mesin saja, oleh karena itu hanya digunakan bagi yang
memprogram mikroprosesor. Bahasa tingkat rendah merupakan bahasa yang
membutuhkan kecermatan yang teliti bagi pemrogram karena perintahnya harus
rinci, ditambah lagi masing-masing pabrik mempunyai sandi perintah sendiri.
Bahasa tinggi relatif mudah digunakan, karena ditulis dengan bahasa manusia
sehingga mudah dimengerti dan tidak tergantung mesinnya. Bahasa tingkat tinggi
Pencipta bahasa C adalah Brian W. Kernighan dan Denis M. Ritchi,
sekitar tahun 1972. Penulisan program dalam bahasa C dilakukan dengan
membagi dalam blok-blok, sehingga bahasa C disebut dengan bahasa terstruktur.
Bahasa C dapat digunakan di berbagai mesin dengan mudah, mulai dari PC
sampai dengan mainframe, dengan berbagai sistem operasi misalnya DOS, UNIX,
VMS dan lain-lain.
2.5.1. Penulisan Program Bahasa C
Program Bahasa C tidak mengenal aturan penulisan di kolom tertentu, jadi
bisa dimulai dari kolom manapun. Namun demikian, untuk mempermudah
pembacaan program dan untuk keperluan dokumentasi, sebaiknya penulisan
bahasa C diatur sedemikian rupa sehingga mudah dibaca.
Berikut contoh penulisan Program Bahasa C:
#include <at89c51.h>
main ()
{
………
………
}
Program dalam bahasa C selalu berbentuk fungsi seperti ditunjukkan
dalam main (). Program yang dijalankan berada di dalam tubuh program yang
dimulai dengan tanda kurung buka { dan diakhiri dengan tanda kurung tutup }.
Semua yang tertulis di dalam tubuh program ini disebut dengan blok. Tanda ()
digunakan untuk mengapit argumen suatu fungsi. Argumen adalah suatu nilai
argumen, sehingga tak ada data dalam (). Dalam tubuh fungsi antara tanda { dan
tanda } ada sejumlah pernyataan yang merupakan perintah yang harus dikerjakan
oleh prosesor.
Setiap pernyataan diakhiri dengan tanda titik koma ; Baris pertama
#include <…> bukanlah pernyataan, sehingga tak diakhiri dengan tanda titik
koma (;). Baris tersebut meminta kompiler untuk menyertakan file yang namanya
ada di antara tanda <…> dalam proses kompilasi. File-file ini (ber-ekstensi .h)
berisi deklarasi fungsi ataupun variable. File ini disebut header. File ini digunakan
semacam perpustakaan bagi pernyataan yang ada di tubuh program.
2.6 Keypad
Salah satu jenis perangkat antar muka yang umum dijumpai pada sistem
embedded (atau sistem microcontroller) adalah Keypad matrik 4x4 atau 3x4.
Walaupun penggunaannya sangat intensive, tetapi kenyataannya sangat jarang
perangkat lunak pengembang yang menyediakan fungsi standar untuk
pengaksesan keypad tersebut.
Walaupun terlihat sepele, tetapi fungsi pengaksesan keypad ini justru
menjadi faktor kunci kenyamanan pengguna sistem embedded yang kita rancang.
Fungsi pengaksesan keypad disusun dengan bahasa C (compiler:
CodeVisionAVR) untuk microcontroller AVR. Jika menggunakan
microcontroller, compiler dan jenis keypad yang berbeda, maka fungsinya tinggal
dimodifikasi sedikit. Interkoneksi keypad dan microcontroller juga dapat
2.7. Power Supply 5V
Power Supply adalah pengubah arus (Adaptor) dari arus AC menjadi
DC. Power supply bekerja pada 2 buah tegangan DC yaitu 5 Volt dan 12 Volt.
Dan menyuplai tegangan listik ke alat elektronika. Dalam sebuah power supply,
tegangan 12 Volt biasanya di tandai dengan kabel berwarna merah. Sedangkan
tegangan 5 Volt ditandai dengan kabel berwarna hitam dan ground warna hitam.
Dalam sistem pengubahan daya, terdapat empat jenis proses yang telah
dikenal yaitu sistem pengubahan daya AC ke DC, DC ke DC, DC ke AC, dan AC
ke AC. Masing masing sistem pengubahan memiliki aplikasi tersendiri, tetapi ada
dua yang kita ketahui atau di kenal kemudian berkembang pesat dan luas yaitu
sistem pengubahan AC ke DC (DC power supply)
Power Supply adalah perangkat keras yang berfungsi untuk menyuplai
tegangan langsung kekomponen dalam casing yang membutuhkan tegangan,
misalnya motherboard, hardisk, kipas, dll. Input power supply berupa arus
balik (AC) sehingga power supply harus mengubah tegangan AC (arus
bolak-balik) menjadi DC (arus searah).