BAB 2 LANDASAN TEORI - Moving Text Menggunakan Dot Matriks 8x8 Berbasis Mikrokontroler ATMEGA 32A

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

      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

      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 untuk driver baris yang dibantu oleh ULN2803 12 11 8 15 slx 14 13 14

  7 6 5 2 clock 1 latch 9 12 11 803 4 3 3 4 HC95 74 10 16 5 VOLT 15 N2 2 6 5 GND 13 L 1 7 9 8 7 6 5 4 3 2 1 15 7 6 5 4 3 2 1 15 7 6 5 4 3 2 1 15 7

6

5 4 3 2 1 15 TEST LED 18 17 16 9 U 9 8 13
  • + 74HC959
  • 16 10 11 12 14 9 8 13 74HC959 16 10 11 12 14 9 8 13 74HC959 16 10 11 12 14 9

    8

    74HC959 - 13 16 10 11 12 14 Gambar 2.4 Rangkaian Moving Text Mode Scan dengan IC TTL 74HC595

          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

          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

         

    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; } } }

          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 ).

         

         

      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.

    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.

          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.

         

      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.

         

    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.

         

         

      PA2 ADC2 (ADC input channel 2) PA1 ADC1 (ADC input channel 1) PA0 ADC0 (ADC input channel 0)

      MOSI port B, bit 5 Pin input data untuk downloading memory.

      c.

      MISO port B, bit 6 Pin output data untuk uploading memory.

      b.

      SCK port B, bit 7 Input pin clock untuk up/downloading memory.

      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.

    Tabel 2.1 Fungsi khusus port A 4.

      

    ADC3 (ADC input channel 3)

      Port Alternate Function PA7

      PA3

      

    ADC4 (ADC input channel 4)

      PA4

      

    ADC5 (ADC input channel 5)

      PA5

      

    ADC6 (ADC input channel 6)

      PA6

      

    ADC7 (ADC input channel 7)

      Fungsi-fungsi khusus pin-pin port B dapat ditabelkan seperti pada table.

         

      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) PB3

      AIN1 (Analog Comparator Negative Input) OCO (Timer/Counter0 Output Compare Match Output)

      PB2 AIN0 (Analog Comparator Positive Input)

      INT2 (External Interrupt 2 Input) PB1 T1 (Timer/Counter1 External Counter Input) PB0

      T0 (Timer/Counter External Counter Input) XCK (USART 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)

      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

         

    2.4.3 Blok Diagram ATMega32

    Gambar 2.10 Blok Diagram ATMega32

         

    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

          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.

         

      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

          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 dariHewlett- Packard.

      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

          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

          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.

         

    2.8 CodeVisionAVR

      CodeVisionAVR adalah sebuah cross-compiler

      C, Integrated Development Environtment (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

         

    • 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 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.

         

    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

         

       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 low- level.

      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.

          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);

          Memasukkan Data Dari Keyboard, Data dapat dimasukkan lewat keyboard saat eksekusi berlangsung. Fungsi yang digunakan diantaranya adalah: scanf ( ), getch ( ), dan getche ( ) .