BAB 2 LANDASAN TEORI
2.1 Dot Matriks atau Matriks LED Matriks LED adalah sejumlah LED yang disusun dalam kolom dan baris. LED-LED ini kemudian digunakan untuk menampilkan gambar-gambar atau tulisan yang biasanya ditampilkan dengan efek animasi tertentu. Oleh karena itu, matriks LED sering disebut sebagai Running Text atau Moving Sign.
Gambar 2.1 Dot Matriks MXLED merupakan simulator dari rangkaian matriks LED. Dengan simulator ini, kita bisa mencoba program pengendali matriks LED walaupun tanpa hardware. MXLED membuat matriks LED dengan cara menyusun LED pada jalur-jalur vertikal dan jalur-jalur horisontal. Kita harus menyediakan jalur horisontal sebanyak jumlah baris (kita buat delapan baris). Kemudian, kita juga
Universitas Sumatera Utara
membuat jalur vertikal sebanyak jumlah kolom. Susunan jalur-jalur vertikal dan horisontal tersebut adalah seperti gambar berikut:
Gambar 2.2 Susunan Jalur-Jalur Vertikal Dan Horisontal Jalur-jalur vertikal dan horisontal tersebut tidak saling terhubung. Kemudian, pada setiap titik pertemuan antara jalur vertikal dan horisontal tersebut, pasanglah sebuah LED dengan cara menghubungkan anoda ke jalur horisontal dan katoda ke jalur vertikal. Pemasangan LED tersebut adalah seperti gambar berikut:
Gambar 2.3 Cara Pemasangan LED
Universitas Sumatera Utara
Dengan memasang LED seperti di atas, LED yang menyala adalah LED dimana anodanya terhubung pada jalur horisontal yang tinggi (1) dan katodanya terhubung pada jalur vertikal yang rendah (0). Hanya ada satu jalur vertikal yang rendah pada satu waktu, sedangkan jalur-jalur lainnya harus tetap tinggi. Jalur vertikal yang rendah ini kita sebut sebagai kolom aktif. Berbeda dengan jalur vertikal, jalur horisontal yang terdiri dari delapan baris ini boleh bernilai tinggi atau rendah tanpa harus memperhatikan jalur-jalur horisontal lainnya.
2.2 Moving text dengan IC 74HC595 Moving text dengan mode scanning lebih banyak digunakan untuk tujuan komersil dibanding dengan mode static, tetapi masing-masing ada kelemahan dan kelebihannya. Berikut ini adalah gambar rangkaian atau skema dari moving text mode scan dengan menggunakan IC TTL 74HC595, untuk driver kolom juga
74HC959
9 8 13 16 10 1112 14
7 6 5 4 3 2 1 15
ULN2803
14 15 16
slx latch clock 5 VOLT GND
18
17
8 7 6 5 4 3 2 1
13
12
11
untuk driver baris yang dibantu oleh ULN2803
9
TEST LED 7
6
5
4
3
2
1 15 7
74HC959 9
8 13 16 10 11 12 14
6
5
4
3
2
1 15 7
74HC959 9
8 13 16 10 11 12 14 9
6
5
4
3
2
1 15 7
74HC959 8 13 16 10 11 12 14
6
5
4
3
2
1 15
74HC959 9
8 13 16 10 11 12 14
+ -
Gambar 2.4 Rangkaian Moving Text Mode Scan dengan IC TTL 74HC595
Universitas Sumatera Utara
Salah satu kelebihan dari rangkaian ini adalah jumlah kabel hanya 5 1 . Vcc 2. GND 3. DATA 4. Clock 5. Latch Prinsip pemrogramannya adalah sebagai berikut, kirim baris dan kirim kolom secara serentak sebanyak jumlah kolom atau kirim kolom dan kirim baris secara serentak sebanyak jumlah baris. Kalau eeprom bawaan dari atmega32 masih terasa kurang, dapat ditambahkan memory eeprom external seperti 24c64, demikian juga jika RTC bawaan atmega32 kurang memuaskan, dapat ditambahkan DS1307 sebagai RTC external. Display dapat juga disusun dengan led sehingga berbentuk matriks. IC 74HS595 dipasang pada bagian belakang PCB untuk menghemat PCB sbb:
Gambar 2.5 Rangkaian Belakang PCB
Universitas Sumatera Utara
Pemasangan kabel dan pengujian dot matriks dapat dilakukan dengan cara menguhubungkan kabel pada dot matriks tersebut. Agar kita dapat membuktikan antara kolom dan baris hidup atau tidak. Atau menggunakan MATRIX LED 8X8 yang sudah jadi, sbb:
Gambar 2.6 Rangkaian Kabel yang dipasang Ke Dot Matriks Selanjutnya kita menguji kolom dan baris, dengan ATmega32 untuk membuktikan atau mengetes kolom dan baris pada dot matriks menyala atau tidak led pada kordinat..
Gambar 2.7 Rangkaian Moving Text Menggunakan Dot Matriks
Universitas Sumatera Utara
2.2.1
Program Menyalanya Led Pada Kordinat
kol = 0x01;
// posisi kolom scanning
while (1) { // Place your code here kar = 0x55;
// data yang mau dikirim (baris)
while (1) { soe = 0; shift_out(kar); // kirim baris shift_out(kol); // kirim kolom soe = 1; delay_ms(150); kol = kol << 1; if (kol == 0) kol = 0x01; } } }
Universitas Sumatera Utara
Berikut ini adalah tampilan dari program diatas pada display led
Gambar 2.8 Tampilan Program Baris Dan Kolom
2.3 Mikrokontroler Mikrokontroler adalah piranti elektronik berbentuk IC (integrated circuit) yang memiliki kemampuan manipulasi data (informasi) berdasarkan suatuurutan instruksi (program) yang dibuat oleh programmer. Mikrokontroler merupakan contoh suatu sistem komputer sederhana yang masuk kedalam kategori embedded system (sistem tertanam). Dalam sebuah struktur mikrokontroler akan kita temukan juga kompunen – komponen seperti : processor, memory, clock dll. Jika berbicara tentang mikrokontroler maka tidak terlepas dengan pengertian atau definisi tentang komputer, ada beberapa kesamaan antara mikrokontroler dengan komputer antara lain : 1. sama – sama memiliki unit pengolah pusat atau yang lebih dikenal dengan Central Processing Unit (CPU). 2. CPU tersebut sama – sama menjalankan program dari suatu lokasi atau tempat, biasanya dari ROM ( Read Only Memory ) atau RAM (Random Access Memory ).
Universitas Sumatera Utara
3. Sama – sama memiliki RAM yang digunakan untuk menyimpan data– data sementara atau yang lebih dikenal dengan variabel. 4. Sama – sama memiliki beberapa masukan dan keluaran yang berfungsi sebagai jalur komunikasi timbal balik dengan dunia luar. Yang
membedakan
antara
mikrokontroler
dan
komputer
atau
mikrokomputer yaitu komputer atau mikrokomputer merupakan komputer serbaguna (general purpose computer) yang bisa dimanfaatkan untuk berbagai macam aplikasi atau perangkat lunak sedangkan mikrokontroler adalah komputer berkemampuan khusus (special purpose computer) yang hanya dapat menjalankan satu macam aplikasi saja sesuai dengan program atau aplikasi yang telah dibuat oleh programmer. Selain perbedaaan tersebut, mikrokontroler juga memiliki ciri khas tersendiri diantaranya adalah: 1. Mikrokontroler bersifat tertanam (embedded ) pada satu atau beberapa piranti yang dikenal dengan istilah embedded system atau sistem tertana. 2. Berfungsi untuk satu macam fungsi saja, dimana dalam laporan ini berfungsi hanya untuk memantau kondisi mobil dan tidak dapat digunakan untuk memutar musik atau aplikasi lainnya. 3. Hanya membutuhkan daya yang rendah (bisa dibawah 1 watt) bila dibandingkan dengan komputer atau mikrokomputer yang menggunakan daya yang besar (bisa diatas 10 watt bahkan lebih). 4. Memiliki beberapa jalur masukan (input) dan keluaran (output) yang memiliki fungsi – fungsi khusus. 5. Berukuran kecil dan berharga relatif murah.
Universitas Sumatera Utara
6. Beberapa jenis IC seringkali tahan banting khususnya untuk aplikasi otomotif atau mesin dan militer. Selain dengan komputer atau mikrokomputer, mikrokontroler juga memiliki perbedaan dengan mikroprosesor. Salah satu perbedaan yang cukup penting adalah jika mikroprosesor hanya merupakan sebuah CPU tanpa adanya jalur input – output dan memori sedangkan mikrokontroler seperti dijelaskan diatas umumnya memiliki CPU, memori, jalur input – output dan beberapa fungsi atau fitur tertentu seperti ADC (Analog to Digital Converter) yang sudah terintegrasi dalam IC mikrokontroler tersebut. Kelebihan utama dari mikrokontroler adalah tersedianya RAM, jalur input – output dan fitur – fitur pendukung dalam satu IC sehingga dalam aplikasinya memiliki rangkaian yang ringkas dan dapat diminimalisir ukuran board atau rangkaiannya. Terdapat berbagai jenis mikrokontroler dari berbagai vendor yang beredar luas di dunia, diantaranya yang terkenal adalah Intel, Maxim, Motorolladan Atmel. Pada pembuatan Interface ini menggunakan mikrokontroler produksi Atmel yaitu Atmel AVR ATMEGA32.
2.4 Atmel AVR ATMega32 Atmel AVR adalah salah satu jenis mikrokontroler yang sering digunakan dalam bidang elektronik dan instrumentasi. Mikrokontroler ini memiliki arsitektur RISC (Reduce Instruction Set Computing) delapan bit, dimana semua instruksi dikemas dalam kode 16-bit (16 bits word ) dan sebagian besar instruksi dieksekusi dalam satu siklus clock.
Universitas Sumatera Utara
Nama AVR sendiri berasal dari “Alf and Vegard RISC processor ” dimana Alf Egil Bogen dan Vegard Wollan adalah dua penemu berkebangsaan Norwegia yang menemukan mikrokontroler AVR yang kemudian diproduksi oleh Atmel. Untuk menulis program pada AVR dapat mempergunakan beberapa jenis software yaitu yang disediakan oleh Atmel sendiri yaitu AVR Studio dan beberapa software buatan pihak ketiga diantaranya AVR GCC, WinAVR, Flowcode AVR, CodeVisionAVR, BASCOM AVR dan lainnya. Dalam pembuatan interface ini penulis menggunakan CodeVisionAVR C Compiler versi2.03.9 standar.
2.4.1
Fitur ATMega32 ATMega32 adalah mikrokontroler keluarga AVR produksi Atmel dengan
fitur sebagai berikut : 1. Mikrokontroler AVR 8 bit yang memiliki kemampuan tinggidengan daya rendah. 2. Arsitektur RISC dengan throughput mencapai 16 MIPS padafrekuensi 16 MHz. 3. Memiliki kapasitas Flash memori 32 Kbyte , EEPROM 1Kbyte, dan SRAM 2 KByte. 4. Saluran I/O sebanyak 32 buah yaitu Port A, Port B, Port C dan Port D. 5. CPU yang terdiri atas 32 buah register. 6. Unit interupsi internal dan eksternal. 7. Port USART untuk komunikasi serial. 8. Satu buah Timer/Counter 16 bit dengan Prescalerterpisah, mode Compare dan mode Capture.
Universitas Sumatera Utara
9. Dua buah Timer/Counter 8 bit dengan Prescaler terpisah dan mode Compare. 10. Real Time Counter dengan Oscillator tersendiri. 11. 4 Channel PWM. 12. 8 Channel 10 bit ADC.
2.4.2
Konfigurasi ATMega 32A Mikrokontroler merupakan suatu device yang di dalamnya sudah
terintegrasi dengan I/O port, RAM, ROM, sehingga dapat digunakan untuk berbagai keperluan kontroler. Mikrokontroler AVR ATmega32 merupakan low power CMOS mikrokontroler 8 bit yang di kembangkan oleh atmel dengan arsitektur RISC(Reduced Instruction SET Computer) sehingga dapat mencapai troughput eksekusi instruksi 1 MIPS(Million Instruction Per Second). Mikrokontroler AVR dapat dikelompokkan menjadi 4 kelas yaitu kelas ATtiny,kelas AT90xx,keluarga ATmega,dan kelas AT86RFxx.pada dasarnya yang membedakan masing-masing kelas adalah memori,peripheral,spedd.operasi tegangan dan fungsinya sedangkan dari segi arsitektur dan instruksi yang di gunakan bisa di katakan hampir sama.
Universitas Sumatera Utara
Gambar 2.9 konfigurasi pin ATMega32 Secara fungsional konfigurasi pin ATMega32 adalah sebagai berikut: 1.
VCC Sumber Tegngan
2.
GND (Ground) Ground
3.
Port A (PA7 – PA0) Port A adalah 8-bit port I/O yang bersifat bi-directional dan setiap pin memilki internal pull-up resistor. Output buffer port A dapat mengalirkan arus sebesar 20 mA. Ketika port A digunakan sebagai input dan di pull-up secara langsung, maka port A akan mengeluarkan arus jika internal pull-up resistor diaktifkan. Pin-pin dari port A memiliki fungsi khusus yaitu dapat berfungsi sebagai channel ADC (Analog to Digital Converter) sebesar 10 bit. Fungsi-fungsi khusus pin-pin port A dapat ditabelkan seperti yang tertera pada table.
Universitas Sumatera Utara
Port
Alternate Function
PA7
ADC7 (ADC input channel 7)
PA6
ADC6 (ADC input channel 6)
PA5
ADC5 (ADC input channel 5)
PA4
ADC4 (ADC input channel 4)
PA3
ADC3 (ADC input channel 3)
PA2
ADC2 (ADC input channel 2)
PA1
ADC1 (ADC input channel 1)
PA0
ADC0 (ADC input channel 0) Tabel 2.1 Fungsi khusus port A
4.
Port B (PB7 – PB0) Port B adalah 8-bit port I/O yang bersifat bi-directional dan setiap pin mengandung internal pull-up resistor. Output buffer port B dapat mengalirkan arus sebesar 20 mA. Ketika port B digunakan sebagai input dan di pull-down secara external, port B akan mengalirkan arus jika internal pull-up resistor diaktifkan. Pin-pin port B memiliki fungsi-fungsi khusus, diantaranya : a. SCK port B, bit 7 Input pin clock untuk up/downloading memory. b. MISO port B, bit 6 Pin output data untuk uploading memory. c. MOSI port B, bit 5 Pin input data untuk downloading memory.
Fungsi-fungsi khusus pin-pin port B dapat ditabelkan seperti pada table.
Universitas Sumatera Utara
Port
Alternate Function
PB7
SCK (SPI Bus Serial Clock)
PB6
MISO (SPI Bus Master Input/Slave Output)
PB6
MOSI (SPI Bus Master Output/Slave Input)
PB5
SS (SPI Slave Select Input) AIN1 (Analog Comparator Negative Input)
PB3 OCO (Timer/Counter0 Output Compare Match Output) AIN0 (Analog Comparator Positive Input) PB2 INT2 (External Interrupt 2 Input) PB1
T1 (Timer/Counter1 External Counter Input) T0 (Timer/Counter External Counter Input) XCK (USART
PB0 External Clock Input/Output) Tabel 2.2 Fungsi khusus port B 5.
Port C (PC7 – PC0) Port C adalah 8-bit port I/O yang berfungsi bi-directional dan setiap pin memiliki internal pull-up resistor. Output buffer port C dapat mengalirkan arus sebesar 20 mA. Ketika port C digunakan sebagai input dan di pull-down secara langsung, maka port C akan mengeluarkan arus jika internal pull-up resistor diaktifkan. Fungsi-fungsi khusus pin-pin port C dapat ditabelkan seperti yang tertera pada tabel dibawah ini. Port
Alternate Function
PC7
TOSC2 (Timer Oscillator Pin 2)
PC6
TOSC1 (Timer Oscillator Pin 1)
Universitas Sumatera Utara
PC6
TD1 (JTAG Test Data In)
PC5
TD0 (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)
PC0
SCL (Two-wire Serial Bus Clock Line) Tabel 2.3 Fungsi khusus port C
6.
Port D (PD7 – PD0) Port D adalah 8-bit port I/O yang berfungsi bi-directional dan setiap pin memiliki internal pull-up resistor. Output buffer port D dapat mengalirkan arus sebesar 20 mA. Ketika port D digunakan sebagai input dan di pull-down secara langsung, maka port D akan mengeluarkan arus jika internal pull-up resistor diaktifkan. Fungsi-fungsi khusus pin-pin port D dapat ditabelkan seperti yang tertera pada tabel dibawah ini. Port
Alternate Function
PD7
OC2 (Timer / Counter2 Output Compare Match Output)
PD6
ICP1 (Timer/Counter1 Input Capture Pin)
PD6
OCIB (Timer/Counter1 Output Compare B Match Output)
PD5
TD0 (JTAG Test Data Out)
PD3
INT1 (External Interrupt 1 Input)
PD2
INT0 (External Interrupt 0 Input)
PD1
TXD (USART Output Pin)
PD0
RXD (USART Input Pin) Tabel 2.4 Fungsi khusus port D
Universitas Sumatera Utara
2.4.3
Blok Diagram ATMega32
Gambar 2.10 Blok Diagram ATMega32
Universitas Sumatera Utara
2.4.4
Peta Memori AVR ATMega32 Arsitektur AVR mempunyai dua memori utama, yaitu memori datadan
memori program. Selain itu ATMega32 memiliki memori EEPROMuntuk menyimpan
data.
ATMega32
memiliki
32
Kbyte
On-chip
In-
system Reprogrammable Flash Memory untuk menyimpan program. Karenasemua instruksi AVR memiliki format 16 atau 32 bit, Flash diatur dalam8K x 16 bit. Untuk keamanan program, memori program, flash dibagi kedalam dua bagian yaitu bagian program boot dan aplikasi. Bootloader adalah program kecil yang bekerja pada saat start up time yang dapatmemasukan seluruh program aplikasi kedalam memori prosesor.
Gambar 2.11 Peta Memori Program AVR ATMega32 Memori data AVR ATMega32 terbagi menjadi 3 bagian yaitu 32buah register umum, 64 buah register I/O dan 2 Kbyte SRAM internal. General purpose register menempati alamat data terbawah, yaitu$00sampai $1F. Sedangkan memori I/O menempati 64 alamat berikutnyamulai dari $20 hingga $5F. Memori I/O
Universitas Sumatera Utara
merupakan register yang khususdigunakan untuk mengatur fungsi terhadap berbagai peripheral mikrokontroler seperti control register, Timer/Counter, fungsi – fungsi I/Odam sebagainya
Gambar 2.12 Peta Memori Data AVR ATMega32 ATMega32 terdiri dari 1024 byte memori data EEPROM 8 bit, datadapat tulis/baca dari memori ini. Ketika catu daya dimatikan, data terakhiryang ditulis pada memori EEPROM masih tersimpan pada memori ini,atau dengan kata lain memori EEPROM bersifat non-volatile atau tidak menguap.
Universitas Sumatera Utara
2.5 General Purpose Register AVR
Gambar 2.13 General Purpose Register AVR
Gambar diatas menunjukan struktur 32 general purpose register yang terdapat dalam CPU, masing – masing register ditentukan juga dalam alamat memori data, dipetakan kedalam 32 lokasi pertama data user . Walaupun tidak secara fisik diimplementasikan sebagai lokasi SRAM, namun pengaturan ini memberikan fleksibilitas dalam mengakses register, seperti register pointer X, Y dan Z dapat diset menuju index dari register file manapun.
2.6 RISC (Reduce Instruction Set Computing) RISC (Reduce Instruction Set Computing) yang jika diterjemahkan berarti “komputasi kumpulan instruksi yang disederhanakan” merupakan sebuah arsitektur komputer dengan instruksi – instruksi dan jenis eksekusi yang paling sederhana. Arsitektur ini digunakan pada komputer dengan kinerja tinggi seperti komputer vektor. Selain pada komputer vektor, desain ini juga diimplementasikan
Universitas Sumatera Utara
pada prosessor komputer lain seperti pada beberapa mikroprosesor Intel 960, Itanium (IA64) dari IntelCorporation, Alpha AXP dari DEC, R4x00 dari MIPS Corporation, PowerPC dan Arsitektur POWER dari International Business Machine. Selain itu, RISC juga umum dipakai pada Advanced RISC Machine(ARM) dan StrongARM (termasuk di antaranya adalah Intel XScale), SPARC dan UltraSPARC dari Sun Microsystems, serta PA-RISC dariHewlettPackard. Desain RISC pertama kali digagas oleh John Cocke, peneliti dariIBM di Yorktown, New York pada tahun 1974 saat ia membuktikanbahwa sekitar 20% instruksi pada sebuah prosesor ternyata menangani sekitar 80% dari keseluruhan kerjanya. Komputer pertama yangmenggunakan konsep RISC ini adalah IBM PC/XT pada era 1980-an.Istilah RISC sendiri pertama kali dipopulerkan oleh David Patterson,pengajar pada University of California di Berkely.
2.6.1
Arsitektur Mikrokontroler AVR RISC
Gambar 2.14 Arsitektur Mikrokontroler AVR RISC
Universitas Sumatera Utara
Dari gambar diatas, AVR menggunakan arsitektur Harvard dengan memisahkan
antara
memori
dan
bus
untuk
program
dan
data
untuk memaksimalkan kemampuan dan kecepatan. Instruksi dalam memori program dieksekusi dengan pipelining single level. Dimana ketika satu instruksi dieksekusi, instruksi berikutnya diambil dari memori program.Konsep ini mengakibatkan instruksi dieksekusi setiap clock cycle. CPUterdiri dari 32x8 bit general purpose register yang dapat diakses dengancepat dalam satu clock cycle, yang mengakibatkan operasi Arithmetic Logic Unit (ALU) dapat dilakukan dalam satucycle. Pada operasi ALU dua operand berasal dari register , kemudian operasi dieksekusi danhasilnya disimpan kembali pada register dalam satu clock cycle. Operasi aritmatik dan logic pada ALU akan mengubah bit – bit yang terdapat pada Status Register (SREG). Proses pengambilan instruksi dan pengeksekusian instruksi berjalan secara parallel, dapat dilihat pada gambar dibawah ini :
Gambar 2.15 Pengambilan instruksi dan pengeksekusian secara parallel
2.7 Variabel Variabel adalah tempat untuk menyimpan dan mengakses datayang mewakili memori dalam mikrokontroler. Variabel harusdideklarasikan dengan tipe data beserta nama variabel yang akandigunakan. Tiap tipe data mempunyai
Universitas Sumatera Utara
jangkauan bilangan yang dapat disimpan, hal ini akibat dari byte memori yang dipesan dan bentuk bilangan bertanda atau tidak. Misalnya unsigned char oleh kompilerdisediakan 1 byte memori RAM sehingga hanya bisa menampung bilangan dari 0 sampai dengan 255 sedangkan jika bertanda dari -128sampai dengan 127. Tipe Data Sebetulnya tidak ada bilangan negatif pada mikrokontroler namunhanya kesepakatan saja, perbedaan bilangan negatif dengan positif dan mikrokontroler terletak pada bit msb atau bit paling kanan tipe data yangdigunakan dimana msb=0 jika bilangan itu positif dan sebaliknya msb=1 jika bilangan itu adalah negatif.Pada variabel dikenal sebuah variabel yang bernama variabel global, variabel global adalah variabel yang dapat diakses oleh seluruhblok
fungsi
dalam
program.
Pendeklarasian
variabel
gobal
ini
biasanyadiletakan diatas semua program, nilai variabel global berubah tiap kalivariabel itu diakses dan variabelnya tidak hilang (menetap). Nilai yang sedang terjadi adalah nilai terakhir ketika variabel itu diakses baik oleh fungsi main maupun fungsi – fungsi yang lain.Selain variabel global, ada juga variabel lokal. Variabel lokal adalah variabel yang hanya dapat diakses oleh blok fungsi yangbersangkutan atau terbatas didalam tanda {} deklarasi fungsi itu berada. Pendeklarasian variabel lokal ini berada pada bagian atas didalam blok fungsi yang menggunakan variabel tersebut. Variabel lokal akandihilangkan jika eksekusi program keluar dari fungsi yang bersangkutandan nilainya pun hilang. Jika menghendaki nilai variabel lokal tidak hilangmaka dalam deklarasi variabel harus ditambahkan static diikuti tipe datadan nama variabelnya.
Universitas Sumatera Utara
2.8 CodeVisionAVR CodeVisionAVR Environtment
adalah
sebuah
cross-compiler C,
Integrated Development
(IDE) dan Automatic Program Generator yangdidesain untuk
milrokontroler buatan Atmel seri AVR. CodeVisionAVR dapat dijalankan pada sistem operasi Windows 95, 98, ME, NT4, 2000 dan XP. Mikrokontroler AVR diproduksi menggunakan teknologi high density nonvolatile memory on-chip ISP flash yang memungkinkan program yang ada di dalam memori dapat di reprogram in-sistem melalui serial interface SPI dengan menggunakan konvensional nonvolatile memory programmer atau on-chip boot program yang berjalan pada inti AVR. Boot program dapat menggunakan interface apa saja untuk mendownload program pada memori flash. Software pada boot sistem akan tetap bekerja ketika flash aplikasi ini sedang di update, hal ini merupakan operasi “read-while-write”. Dengan mengkombinasikan CPU 8-bit RISC bersama in-system self programmable flash pada chip monolithic, ATmega32 merupakan mikrokontroler powerfull yang fleksibel dan merupakan solusi efektif untuk berbagai aplikasi pengontrolan. Adapun komponen-komponen yang dapat diamati melalui I/O pada workspace sebagai berikut : 1.
Isi register - R0 sampai dengan R15 - R16 sampai dengan R13
2.
Processor - Stack pointer - Program counter
Universitas Sumatera Utara
- Cycle pointer - X_register - Y_register - Z_register - Frequency - Stop Watch 3.
I/O AVR
Adapun Instruksi I/O adalah sebagai berikut :
in; membaca data I/O Port atau internal peripheral register{Timers,UART, kedalam register}
Out; menulis data sebuah register ke I/O Port atau internal peripheral register.
Idi (load immediate); untuk menulis konstanta ke register sebelum konstanta itu dituliskan ke I/O port.
Sbi (set bit in I/O); untuk membuat logika high satu bit I/O register.
Cbi ( clear bit in I/O); untuk membuat logika low satu bit I/O register.
Sbic (skip if bit in I/O is cleared); untuk mengecek apakah bit I/O register clear.Jika ya, skip satu perintah dibawahnya.
Sbis (skip if bit in I/O is set); untuk mengecek apakah bit I/O register set. Jika ya, skip satu perintah dibawahnya.
2.8.1
Program Code-Vision AVR Untuk mengaktifkan micro sistem akuisisi data, penerima sinyal control
dan sistem transmisi data maka terlebih dahulu mikrokontroller tersebut diberi
Universitas Sumatera Utara
program dengan cara mendownload program yang terlebih dahulu kita buat dengan bahasa C pada CodeVisionAVR.
Gambar 2.16 Form pembuatan program micro chip (CodeVisionAVR).
2.8.2 Cara Menjalakn Code-Vision AVR Software CodeVision AVR merupakan C Compiler untuk mikrokontroler AVR. Pada CodeVision telah disediakan editor yang berfungsi untuk membuat program dalam bahasa C, setela melakukan proses kompilasi kita dapat mengisikan program yang telah dibuat ke dalam memory pada mikrokontroler menggunakan programmer yang telah disediakan oleh CodeVision AVR. Programmer yang didukung oleh CodeVision Programmer Cable dapat diintegrasik dengan CodeVision AVR, terlebih dahulu harus dilakukan konfigurasi sebagai berikut: -Jalankan Software CodeVision AVR. -Pilih menu Setting . Programmer. -Pilih tipe programmer -Lalu klik tombol OK.
Universitas Sumatera Utara
2.9 Pemrograman RTC DS1307 dengan Codevision. RTC yang dimaksud disini adalah real time clock (bukan real time computing), biasanya berupa IC yg mempunyai clock sumber sendiri dan internal batery untuk menyimpan data waktu dan tanggal. Sehingga jika system komputer / microcontroller mati waktu dan tanggal didalam memori RTC tetap uptodate. Salah satu RTC yang sudah populer dan mudah penggunaanya adalah DS1307, apalagi pada Codevision sudah tersedia fungsi-fungsi untuk mengambil data waktu dan tanggal untuk RTCDS1307 ini.
2.17 Gambar Fitur-Fitur DS1307
2.9.1 Fitur-fitur DS1307:
Real-time clock (RTC) menghitung detik, menit, jam,tanggal,bulan dan hari dan tahun valid sampai tahun 2100
Ram 56-byte, nonvolatile untuk menyimpan data.
2 jalur serial interface (I2C).
output gelombang kotak yg diprogram.
Automatic power-fail detect and switch
Universitas Sumatera Utara
Konsumsi arus hanya 500nA pada batery internal.
mode dg oscillator running.
temperature range: -40°C sampai +85°C Codevision sudah menyediakan fungsi-fungsi khusu untuk mengakses data
DS1307 jadi kita tinggal menggunakanya. Apalagi dengan fasilitas codewizard pemrograman RTC menjadi mudah.
2.10 Pemrograman Bahasa C Standard (ANSI C) Bahasa C adalah bahasa pemrograman yang dapat dikatakan berada antara bahasa tingkat rendah (berorientase mesin) dan bahasa tingkat tinggi (bahasa berorientase pada manusia). Bahasa C berada satu tingkat di atas bahasa yang berorientasi pada mesin, namun tetap satu tingkat dibawah sebagian besar bahasa yang berorientasi persoalan. Bahasa C cukup dekat dengan komputer untuk memberikan kendali yang besar terhadap detil implementasi pemakaian, namun cukup jauh untuk mengabaikan detil hardware. Karena itulah bahasa C suatu ketika dipandang sebagai bahasa high-level dan pada saat yang lain dilihat sebagai bahasa lowlevel. Bahasa C merupakan bahasa pemrograman terstruktur, yang membagi program kedalam bentuk sebuah blok. Tujuannya adalah untuk memudahkan dalam pembuatan dan pengembangan program. Program yang ditulis dengan bahasa C mudah sekali untuk dipindahkan dari satu jenis mesin ke jenis mesin lainnya.
Universitas Sumatera Utara
Hal ini berkat adanya standarisasi bahasa C yaitu berupa standar ANSI (American National Standards Institute) yang dijadikan acuan oleh para pembuat kompiler C. Memasukkan data dan menampilkan data/informasi merupakan tindakan yang sering dilakukan dalam pemrograman. Penampilan data/informasi biasanya ditujukan ke piranti layar (monitor), sedangkan pemasukan data biasanya dilakukan melalui keyboard. Untuk keperluan penampilan data/informasi, Turbo C menyediakan sejumlah fungsi, diantaranya adalah PRINTF ( ), PUTS ( ) dan PUTCHAR ( ). PRINTF ( ) Merupakan fungsi yang paling umum digunakan dalam menampilkan data. Berbagai jenis data dapat ditampilkan ke layar dengan fungsi ini. Bentuk penulisan : printf(“string kontrol”, argumen1, argumen2, …); - String kontrol dapat berupa keterangan yang akan ditampilkan pada layar beserta penentu format seperti %d, %f. Penentu format dipakai untuk memberi tahu kompiler
mengenai
jenis
data
yang
akan
ditampilkan
- Argumen adalah data yang akan ditampilkan ke layar. Argumen ini dapatr berupa variabel, konstanta atau ungkapan PUTS ( ) Fungsi ini digunakan khusus untuk menampilkan data string ke layar. Sifat fungsi ini, string yang ditampilkan secara otomatis akan diakhiri dengan \n (pindah baris). Dibandingkan dengan printf(), perintah ini mempunyai kode mesin yang lebih pendek. PUTCHAR ( ) Digunakan khusus untuk menampilkan sebuah karakter ke layar. Penampilan karakter tidak diakhiri dengan perpindahan baris, misalnya : putchar(‘A’); sama dengan printf(“%c”, A);
Universitas Sumatera Utara
Memasukkan Data Dari Keyboard, Data dapat dimasukkan lewat keyboard saat eksekusi berlangsung. Fungsi yang digunakan diantaranya adalah: scanf ( ), getch ( ), dan getche ( ) .
Universitas Sumatera Utara