Anda di halaman 1dari 59

BUKU PANDUAN MODUL MIKROKONTROLER ATMEGA 16

BUKU PANDUAN MODUL MIKROKONTROLER ATMEGA 16 TEKNIK KOMPUTER BINA SARANA INFORMATIKA AMIK BSI JAKARTA Email :

TEKNIK KOMPUTER

BINA SARANA INFORMATIKA

AMIK BSI JAKARTA

Email : fildesrobotik@yahoo.co.id, winnerparluhutan.blogspot.com

Teknik Komputer

AMIK BSI JAkarta

1

KATA PENGANTAR

Puji dan syukur saya panjatkan kepada Tuhan Yang Maha Esa, sehingga saya dapat menelesaikan penyusunan Buku Panduan Modul Mikrokontroler.

Untuk dapat memahami dasar-dasar Mikrokontroler serta pemogramannya, diperlukan pemahaman secara teori dan penerapan aplikasi. Keuntungan dalam memahami dasar – dasar Mikrokontroler ini untuk dapat memahami prinsip kerja IC Mikrokontroler serta dapat membuat kreatifitas berbagai macam Aplikasi.

Pada Buku Panduan Modul Mikrokontroler ini penulis memberikan beberapa penjelasan tentang Karakteristik atau fitur-fitur IC Mikrokontroler, Bahasa pemograman dan Software compiler serta software download program.

Penulis mengharapkan dengan Buku Panduan Modul Mikrokontroler ini dapat membatu para pemula atau pencinta elektronika (hobby), Modul Panduan ini diberikan secara Cuma-Cuma (Gratis), penulis mengarapkan tidak ada pihak lain untuk melakukan komersial atau kepentingan pribadi tanpa seijin penulis.

Terima kasih penulis sampaikan kepada semua pihak yang telah mendukung kelancaran dan penulis menerima saran dan kritikan dengan senang hati, agar dapat membuat penyempurnaan modul ini.

Semoga

pembacanya.

Mikrokontroler ini bermanfaat bagi

Buku

Panduan

Modul

Depok, September 2012

Penulis

Email : fildesrobotik@yahoo.co.id, winnerparluhutan.blogspot.com

Teknik Komputer

AMIK BSI JAkarta

2

Daftar Isi

Email : fildesrobotik@yahoo.co.id, winnerparluhutan.blogspot.com

Teknik Komputer

AMIK BSI JAkarta

3

Data Sheet MODUL PRATIKUM MIKROKONTROLER

Data Sheet MODUL PRATIKUM MIKROKONTROLER Gambar Blok Modul Rangkaian Atmel dan Atmega (MCS51 & AVR) NB:

Gambar Blok Modul Rangkaian Atmel dan Atmega (MCS51 & AVR)

NB: Sumber tanggangan 5 Volt Kaki Pin 9 dan Gound Kaki Pin 10 pada setiap kaki PORT mikrokontroler baik MCS51 dan Atmega16/32/8535.

Email : fildesrobotik@yahoo.co.id, winnerparluhutan.blogspot.com

Teknik Komputer

AMIK BSI JAkarta

4

Gambar Blok Aplikasi Rangkaian LED dan PUS BUTTON Gambar Blok Aplikasi Rangkaian Buzer dan Driver

Gambar Blok Aplikasi Rangkaian LED dan PUS BUTTON

Gambar Blok Aplikasi Rangkaian LED dan PUS BUTTON Gambar Blok Aplikasi Rangkaian Buzer dan Driver Motor

Gambar Blok Aplikasi Rangkaian Buzer dan Driver Motor DC L293

Email : fildesrobotik@yahoo.co.id, winnerparluhutan.blogspot.com

Teknik Komputer

AMIK BSI JAkarta

5

Gambar Blok Aplikasi Rangkaian 2 Digit Seven Segmen, Sensor IR & LDR dan Driver Tampilan

Gambar Blok Aplikasi Rangkaian 2 Digit Seven Segmen, Sensor IR & LDR dan Driver Tampilan LCD 2x16

Segmen, Sensor IR & LDR dan Driver Tampilan LCD 2x16 Gambar Blok Rangkaian Downloader USB Atmega8

Gambar Blok Rangkaian Downloader USB Atmega8 16PU/PI

Email : fildesrobotik@yahoo.co.id, winnerparluhutan.blogspot.com

Teknik Komputer

AMIK BSI JAkarta

6

BAB I PENDAHULLUAN

Mikrokontroler adalah merupakan komponen Tunggal Chip yang bersifat mengerjakan atau menjalankan program instruksi secara bergantian. Mikrokontroler gabungan dari IC Analog dan Digital, namun pada dasarnya IC Mikrokontroler prinsip kerjanya memerlukan instruksi atau bahasa mesin, bahasa mesin didapatkan dari compiler dari bahasa pemograman yang digunakan, adapun bahasa penulisan pemograman yang digunakan adalah :

1. Bahasa Pemograman Asembler/assembly

2. Bahasa Pemograman C/C++

3. Bahasa Pemograman Basic/Bascom

4. Bahasa Pemograman Java

Dengan menggunakan penulisan bahasa pemograman ini dapat mempermudah bagi si pembuat program, namun tidak dapat di pahami oleh Mikrokontroler karena IC Mikrokontroler dapat bekerja dengan menggunakan bahasa mesin yaitu dengan logika High(1) dan Low (0), bahasa mesin ini didapat dari hasil compiler bahasa penulisan yang digunakan dengan menggunakan software compiler. Untuk lebih mudah di pahami alurnya lihat gambar di bawah ini :

lebih mudah di pahami alurnya lihat gambar di bawah ini : User 5 6 (Downloader) Target

User

5 6
5
6

(Downloader)

Target

1 4 2 PC 3
1
4
2
PC
3
di bawah ini : User 5 6 (Downloader) Target 1 4 2 PC 3 Compiler (Hex)

Compiler (Hex)

ISP (Dwonload)

Gambar 1. Alur Compiler Pemograman Mikrokontroler

Email : fildesrobotik@yahoo.co.id, winnerparluhutan.blogspot.com

Teknik Komputer

AMIK BSI JAkarta

7

Pada pembelajaran praktek Mikrokontroler ini menggunakan IC mikrokontroler ATMEGA 16 atau ATMEGA 16A dengan bahasa pemograman C/C++, serta di dukung dengan software Codevision AVR, Prog ISP. 1.68 dan Proteus.

1.1 Fitur Mikrokontroler Atmega 16

Fitur –fitur yang di miliki atmega 16 sebagai berikut :

1. Mikrokontroler AVR (ATMEGA) 8 bit yang memiliki kemampuan tinggi, dengan daya rendah.

2. Memiliki Arsitektur RISC dengan throughput mencapai 16 MIPS pada frekuensi 16Mhz.

3. Atmega 16 Memiliki kapasitas memori terdiri 3 bagian yaitu :

1. Memiliki Flash Memori 16 Kbyte.

2. Memiliki EEPROM 512 Byte.

3. Memiliki SRAM 1 Kbyte.

4. Memiliki saluran Input dan output sebanyak 32 pin/bit. Yaitu di kaki PORTA, Kaki PORTB, Kaki PORTC dan Kaki PORTD.

5. CPU yang terdiri dari atas 32 buah register.

6. Memiliki unit interupsi internal dan eksternal.

7. Memiliki Port UAST untuk digunakan pada komunikasi serial (RX & TX).

8. Memiliki fitur peripheral yang terdiri dari :

a. Memiliki Tiga buah Timer/Counter dengan kemampuan pembandingan.

- 2 Buah timer / counter dengan kapasitas 8 bit.

- 1 buah timer / counter dengan kapasitas 16 bit.

b. Memiliki Real Time counter dengan oscillator (Frekuensi) tersendiri.

c. Memiliki 4 channel PWM (Pulsa Width Modulasi) di kaki PORTD pin 4

dan pin 5 (0C1B & 0C1A).

d. Memiliki 8 Channel saluran ADC (Analog Digital Conferter/merubah analog ke digital) di kaki PORTA.

e. Memiliki Antar muka dengan SPI.

f. Memiliki On-chip analog comperator.

9. Bekerja di sumber tegangan 4,5Volt s/d 5,5Volt.

10. Bekerja di Kristal/oscillator 0 s/d 16 MHZ.

Email : fildesrobotik@yahoo.co.id, winnerparluhutan.blogspot.com

Teknik Komputer

AMIK BSI JAkarta

8

1.2

Konfigurasi PIN ATMEGA16

Mikrokontroler atmega 16 memiliki 40 pin DIP (Dual Inline Package), dapat di lihat pada gambar 1.2, adapun fungsi masing – masing pin yaitu :

1. Kaki VCC yang merupakan masukan sumber tegangan terletak di PIN 10.

2. Kaki GND yang merupakan Ground terletak di kaki 11.

3. Kaki Xtal1 & Xtal2 yang merupakan pin masukan clock oscillator external di Pin 12 dan Pin 13.

4. Kaki AVCC merupakan Pin masukan tegangan untuk ADC yang langsung dihubungkan ke VCC.

5. Kaki AREF merupakan pin tegangan referensi atau nilai minimump ADC.

6. Kaki yang merupakan Interface PC ke Mikrokontroler (ISP) terletak pada kaki PORTB dengan Pin 5 (Mosi), Pin 6 (Miso) dan Pin 7 (SCK).

7. Untuk dapat menggunakan pengaturan PWM terdapat di kaki PORTD Pin 4 (0C1B) dan Pin 5 (0C1A).

8. Untuk dapat berkomunikasi serial terdapat di kaki PORTD Pin 0 (RX/penerima) dan Pin 1 (TX/pengirim).

9. Reset yang merupakan fungsi sebagai mereset mikrokontroler terdapat di kaki pin 9.

sebagai mereset mikrokontroler terdapat di kaki pin 9. Email : fildesrobotik@yahoo.co.id,
sebagai mereset mikrokontroler terdapat di kaki pin 9. Email : fildesrobotik@yahoo.co.id,
sebagai mereset mikrokontroler terdapat di kaki pin 9. Email : fildesrobotik@yahoo.co.id,

Email : fildesrobotik@yahoo.co.id, winnerparluhutan.blogspot.com

Teknik Komputer

AMIK BSI JAkarta

9

10.

Kaki PORTA terdapat pada kaki 33 s/d kaki 40 yang merupakan fungsi converter Analog ke Digital (ADC).

Port PIN

Fungsi

PA.0

PA0 ADC0 (ADC input channel 0)

 

PA.1

PA1 ADC1 (ADC input channel 1)

PA.2

PA2 ADC2 (ADC input channel 2)

 

PA.3

PA3 ADC3 (ADC input channel 3)

PORT KHUSUS

PA.4

PA4 ADC4 (ADC input channel 4)

Converter ADC

PA.5

PA5 ADC5 (ADC input channel 5)

 

PA.6

PA6 ADC6 (ADC input channel 6)

PA.7

PA7 ADC7 (ADC input channel 7)

Gambar 2. Alur perubahan analog ke Digital

11. Kaki PORTB terdapat pada kaki 1 s/d kaki 8 yang merupakan fungsi dua arah serta ad beberapa fungsi lainya yang dapat dilihat pada table dibawah ini.

Port PIN

Fungsi

PB.0

T0 T1 (Timer/Counter 0 External Counter Input) XCK (USART External Clock Input/Output

PB.1

T1 (Timer/Counter1 External Counter Input)

PB.2

AINO (Analog Comparator Positive Input / INT2 (External Interrup 2 Input)

PB.3

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

PB.4

SS (SPI Slave Select Input)

PB.5

MOSI (SPI Bus Master Input/Slave Output/sebagi interface ke PC )

PB.6

MISO (SPI Bus Master Input/Slave Output/ sebagai Interface ke PC)

PB.7

SCK (SPI Bus Serial Clock/sebagai Interface ke PC)

Email : fildesrobotik@yahoo.co.id, winnerparluhutan.blogspot.com

Teknik Komputer

AMIK BSI JAkarta

10

12.

Kaki PORTC terdapat pada kaki 22 s/d kaki 29 yang merupakan fungsi dua arah serta memiliki fungsi khusus.

Port PIN

Fungsi

 

PC.0

SCL (Two-Wire Serial Bus Clock Line)

PC.1

SDA ( Two – Wire Serial Bus Data Input/Output Line)

PC.2

TCK (JTAG Test Clock)

PC.3

TMS (JTAG Test Mode Select)

PC.4

TDO (JTAG Test Data Output)

PC.5

TD1 (JTAG Test Data Input)

PC.6

TOSC1 (Timer Oscilator Pin1) untuk pengaturan Clok external

PC.7

TOSC2 (Timer Oscilator Pin2) untuk pengaturan Clok external

13.

Kaki PORTD terdapat pada kaki 14 s/d kaki 22 yang merupakan fungsi dua arah serta memiliki beberapa fungsi khusus seperti PWM dan Komunikasi Serial.

Port PIN

Fungsi

PD.0

RDX ( serial input port ) Untuk menerima Data

PD.1

TDX (serial output port ) untuk mengirim Data

PD.2

_INT0 ( external interupt 0)

PD.3

_INT1 ( external interupt 1)

PD.4

OC1B (Timer/Counter1 output membandingkan output B )

PD.5

OC1A (Timer/Counter1 output membandingkan output A )

PD.6

_ICPI(Timer/Counter1 masukan menangkap Pin)

PD.7

_OC2 (timer / counter2 membandingkan mencocokkan output untuk PWM)

Gambar 3. Tampilan gelombang Pulsa Width Modulation

Email : fildesrobotik@yahoo.co.id, winnerparluhutan.blogspot.com

Teknik Komputer

AMIK BSI JAkarta

11

1.3.

Blok Diagram ATmega 16.

Blok diagram Merupakan gambaran bagian –bagian atau peta yang ada pada IC Mikrokontroler Atmega 16.

atau peta yang ada pada IC Mikrokontroler Atmega 16. Email : fildesrobotik@yahoo.co.id,
atau peta yang ada pada IC Mikrokontroler Atmega 16. Email : fildesrobotik@yahoo.co.id,

Email : fildesrobotik@yahoo.co.id, winnerparluhutan.blogspot.com

Teknik Komputer

AMIK BSI JAkarta

12

1.4

Arsitektur Mikrokontroler AVR RISC dan CISC.

1.4 Arsitektur Mikrokontroler AVR RISC dan CISC. 1.5. Bagian Blok Memori. Memori pada Atmega 16 terdapat

1.5. Bagian Blok Memori.

Memori pada Atmega 16 terdapat tiga bagain yaitu :

A. Status Register (SREG) merupakan status yang dihasilkan pada operasi yang dilakukan ketika suatu instruksi dieksekusi.

operasi yang dilakukan ketika suatu instruksi dieksekusi. B. Stack Pointer merupakan tempat penyimpan data sementara,

B. Stack Pointer merupakan tempat penyimpan data sementara, stack diimplementasikan mulai dari lokasi memori tertinggi ke lokasi memori terendah. (dengan instruksi PUSH).

13
13

Email : fildesrobotik@yahoo.co.id, winnerparluhutan.blogspot.com

Teknik Komputer

AMIK BSI JAkarta

C. Peta Memori Atmega16.

- Memori Program. Memori program berfungsi untuk menyimpan instruksi-instruksi program yang sifatnya hanya di baca/Read Only (ROM) dengan alamat $0000 hingga $1FFF.

- Memori Data.

Only (ROM) dengan alamat $0000 hingga $1FFF. - Memori Data. Memori Data berfungsi untuk keperluan program,

Memori Data berfungsi untuk keperluan program, memori data terbagi 3 bagian yaitu :

32 buah register umum, 64 buah

register I/O dan 1 Kbyte SRAM internal.

GPR(General Purpose Register )

Menepati alamat data yaitu :

$0000 s/d $001F, Memori I/O menempati

64 alamat $20 hingga $5F. Memori I/O

berkapasitas 1024 Byte merupakan Special Fungsi Register yang Khusus (SFR)

dengan Alamat $60 hingga $45F.

Register yang Khusus (SFR) dengan Alamat $60 hingga $45F. - Memori EEPROM. Memori Data EEPROM 8

- Memori EEPROM. Memori Data EEPROM 8 Bit (Electrically Erasable Programmable read only Memory (EEPROM):

merupakan memori nonvolatile tidak hilang ketika catu daya mati) yang menyerupai SRAM dalam fleksibilitas pemrogramannya. Memori jenis ini pada umumnya digunakan untuk menyimpan data–data permanen yang akan digunakan dalam program, jumlah EEPROM yang tersedia adalah 512 Byte dengan Alamat $000 hingga $1FF.

tersedia adalah 512 Byte dengan Alamat $000 hingga $1FF. Email : fildesrobotik@yahoo.co.id,

Email : fildesrobotik@yahoo.co.id, winnerparluhutan.blogspot.com

Teknik Komputer

AMIK BSI JAkarta

14

D. General Purpose Register AVR. Seluruh instruksi operasi register dalam AVR memiliki akses langsung ke semua register. Kecuali untuk lima instruksi arimatika-logika yang mengoperasikan register dengan konstanta (SBCI, SUBI, CPI, ANDI, dan ORI) dan LDI yang mengoperasikan pemuatan data konstan imediet. Instruksi-instruksi tersebut dioperasikan hanya pada separuh lokasi register terakhir GPR (R16 sampai R31). Instruksi untuk operasi umum seperti SBC, SUB, CP, AND, OR dan operasi lainnya yang mengoperasikan dua register atau satu register dapat dilakukan akses terhadap seluruh register

Email : fildesrobotik@yahoo.co.id, winnerparluhutan.blogspot.com

Teknik Komputer

AMIK BSI JAkarta

seluruh register Email : fildesrobotik@yahoo.co.id, winnerparluhutan.blogspot.com Teknik Komputer AMIK BSI JAkarta 15

15

BAB. II Mengenal Bahasa Pemograman C/C++ Pada Mikrokontroler ATMEGA16

Pemograman dengan Bahasa C yang merupakan bahasa pemograman tingkat tinggi dapat juga digunakan pada pengendalian perangkat keras dengan memberikan instrupsi/perintah baik ke Mikrokontroler seri ATMEL dan AVR.

Contoh penulisan program bahasa C :

#include <mega16.h> #include <delay.h>

main ()

{

………………. ;

………………. ;

………………. ;

}

};

Keterangan :

#include <mega16.h> merupakan awal inisialisasi jenis prosesor serta diakhiri dengan ekstensi h, termasuk dengan insisialisasi waktu tunda (#include<delay.h>.

main () yang di awali dengan buka kurung dan tutup kurung merupakan program di dalam tubuh program yang di sebut dengan blok program.

Tanda {………. dan di akhiri ……. } merupakan perintah yang harus dikerjakan oleh prosesor, dan setiap pernyataan diakhiri dengan tanda titik koma (;).

Tanda akhir ……

perintah looping atau berulang – ulang.

};

dengan disertakan titik koma meruapakan bagian instrupsi atau

2.1 Tipe Data

Tipe data merupakan bagian program yang paling penting karena tipe data mempengaruhi setiap instruksi yang akan dilaksanakan oleh computer.

Email : fildesrobotik@yahoo.co.id, winnerparluhutan.blogspot.com

Teknik Komputer

AMIK BSI JAkarta

16

Pemilihan tipe data yang tepat akan membuat proses operasi data menjadi lebih efisien dan efektif, untuk lebih jelasnya dapat dilihat di table tipe data.

No.

Tipe Data

Ukuran

 

Range (Jangkauan)

1.

Char

1

byte

-128 s/d 127

2.

Int

2

byte

-32768 s/d 32767

3.

Unsigned int

2

byte

0

s/d 65535

4.

Long Int

1

byte

-2147483648 s/d 2147483648

5.

Unsigned Long int

4

byte

0

s/d 4294967296

6.

Float

4

byte

-3.4E-38 s/d 3.4E+38

7.

Double

4

byte

1.7E-308 s/d 1.7E+308

8.

Long Double

10 byte

3.4E-4932 s/d 1.1E+4932

9.

Char

1 byte

-128 s/d 127

10.

Unsigned char

1 byte

0

s/d 255

2.2 Variabel

Variable adalah suatu pengenal yang digunakan untuk mewakili suatu nilai tertentu di dalam proses program. Nilai dalam suatu variable dapat berubah – ubah sesuai kebutuhan atau dalam penulisan program, Sehingga variable dapat ditentukan sendiri oleh si pemogram dengan melihat beberapa aturan yaitu :

- Penulisan instruksi perintah tidak boleh menggunakan spasi.

- Penulisan dalam satu instruksi tidak boleh besar kecil huruf penulisannya sebab penulisan bahasa C sangant sensitive dalam penulisannya.

- Tidak boleh menggunkan symbol khusus, terdiri dari : $, ?, %, #, &, !, *, +, @ dll. kecuali garis bawah ( underscore).

- Panjang bebas, tetapi hanya 32 karakter pertama di pakai.

2.3 Operator Aritmatika

Dalam bahasa C ada lima operator aritmatika atau symbol penulisan dalam tubuh program, dapat dilihat pada table di bawah ini :

Operator

Aritamtika

Keterangan

Contoh Program

Operator untuk Perkalian

#include <mega16.h> #include <delay.h> void main()

{

int bil1;

int bil2;

Email : fildesrobotik@yahoo.co.id, winnerparluhutan.blogspot.com

Teknik Komputer

AMIK BSI JAkarta

17

*

 

DDRA=0xFF;

PORTA=0xFF;

bil1=4;

bil2=2;

 

PORTA=bil1*bil2;

}

   

#include <mega16.h> #include <delay.h> void main()

 

{

// awal program

/

Operator untuk Pembagian

 

int bil1; int bil2;

DDRB=0xFF;

 

PORTB=0xFF;

bil1=10;

bil2=2;

PORTB=bil1 / bil2; // artinya jumlah nilai di PORTB = 5 Bit

 

}

// penutup program atau akhiran program

   

#include <mega16.h> #include <delay.h> void main()

 
 

{ // awal program

 

int bil1; int bil2;

untuk sisa pembagian

DDRC=0xFF;

%

PORTC=0xFF;

 

bil1=14;

bil2=2;

PORTC=bil1 % bil2;

// artinya

jumlah nilai di PORTC = 8 Bit

} // penutup program atau akhiran program

   

#include <mega16.h> #include <delay.h> void main()

 

{

// awal program

int bil1; int bil2;

untuk Penambahan

DDRD=0xFF;

+

PORTD=0xFF;

 

bil1=16;

bil2=6;

 

PORTD=bil1 + bil2; // artinya jumlah nilai di PORTD = 24 Bit } // penutup program atau akhiran program

   

#include <mega16.h> #include <delay.h> void main()

 

{

// awal program

 

int bil1;

int bil2;

untuk Pengurangan

DDRB=0xFF;

PORTB=0xFF;

Email : fildesrobotik@yahoo.co.id, winnerparluhutan.blogspot.com

Teknik Komputer

AMIK BSI JAkarta

18

-

bil1=12;

bil2=7;

PORTB=bil1 - bil2; // artinya jumlah nilai di PORTB = 5 Bit

}

2.4 Operator Hubungan (Perbandingan)

Operator Hubungan digunakan untuk melakukan Perbandingan hubungan antara dua buah operan atau sebuah nilai atau variable. Untuk lebih jelasnya lihat table di bawah ini :

Table Operan Hubungan

Operator

Arti

 

Contoh

<

Kurang dari

X<Y

Apakah X kurang dari Y

<=

Kurang dari sama dengan

X<=Y

Apakah X kurang dari sama dengan Y

>

Lebih Dari

X>Y

Apakah X Lebih dari Y

>=

Lebih dari sama dengan

X>=Y

Apakah X lebih dari sama dengan Y

==

Sama dengan

X==Y

Apakah X sama dengan Y

!=

Tidak sama dengan

X!=Y

Apakah X tidak sama dengan Y

Jika operator hubungan membandingkan hubungan antara dua buah operand, maka operator logika digunakan untuk membandingkan logika hasil dari operator - operator hubungan. Operator logika ada tiga macam, yaitu :

1. Simbol dalam C (&&) artinya Logika AND (DAN) pengertiannya Operasi AND akan bernilai benar jika dua ekspresi bernilai benar. Tabel Gerbang Logika AND

Input 1

Input 2

Output

0

0

0

0

1

0

1

0

0

1

1

1

2. Simbol dalam C (||) artinya Logika OR (ATAU) pengertiannya Operasi OR akan bernilai benar jika dan hanya jika salah satu ekspresinya bernilai benar.

Tabel Gerbang Logika OR

Input 1

Input 2

Output

0

0

0

0

1

1

1

0

1

1

1

1

Email : fildesrobotik@yahoo.co.id, winnerparluhutan.blogspot.com

Teknik Komputer

AMIK BSI JAkarta

19

3. Simbol dalam C (!) artinya Logika NOT (LINGKARAN) pengertiannya operasi NOT menghasilkan nilai benar jika ekspresinya bernilai salah, dan akan bernilai salah jika ekspresinya bernilai benar atau sebagai Inverter. Tabel Gerbang Logika NOT

Input 1

Output

1

0

0

1

2.5. OPERASI GESER KIRI (<<)

Operasi geser kiri merupakan operasi yang akan menggeser bit-bit kekiri sehingga bit 0 akan berpindah ke bit 1 kemudian bit 1 akan berpindah ke bit 2 dan seterusnya. Operasi geser kiri membutuhkan dua buah operan disebelah kiri tanda << merupakan nilai yang akan digeser sedangkan disebelah kanannya merupakan jumlah bit pergeseran.

Contoh Program melakukan pergeseran ke kiri

Void main ()

{

char a , led;

// led tersimpan didalam a // memakai alamat register di port B // Output pada kaki Port B // data led di mulai dari 1 // melakukan perulangan dari a =1 s/d a=7 dengan memakai symbol <<

DDRB=0xFF;

PORTB=0XFF;

led=0x1;

for (a=0;a<<7;a++)

{

PORTB=led;

// di jalankan di port B // melakukan pergeseran di mulai dari 1 sampai ke 7 // melakukan looping atau perulangan

led=led <<7;

};

}

// akhiran program

2.6 OPERASI GESER KANAN (>>) Operasi geser kiri merupakan operasi yang akan menggeser bit-bit kekanan sehingga bit 7 akan berpindah ke bit 6 kemudian bit 6 akan berpindah ke bit 5 dan seterusnya. Operasi geser kanan membutuhkan dua buah operan dengan member tanda >> merupakan nilai yang akan digeser sedangkan disebelah kanannya merupakan jumlah bit penggerseran.

Contoh Program melakukan pergeseran ke kanan

Void main ()

{

char a , led;

// led tersimpan didalam a // memakai alamat register di port A // Output pada kaki Port A

DDRA=0xFF;

PORTA=0XFF;

Email : fildesrobotik@yahoo.co.id, winnerparluhutan.blogspot.com

Teknik Komputer

AMIK BSI JAkarta

20

led=0x7;

for (a=7;a>>1;a++)

// data led di mulai dari 7 // melakukan perulangan dari a =7 s/d a=1 dengan memakai symbol >>

{

 

PORTA=led;

// di jalankan di port A

led=led >>1;

// melakukan pergeseran di mulai dari 7 sampai ke 1

 

};

// melakukan looping atau perulangan

}

// akhiran program

2.7 OPERASI BITWISE AND (&)

Operasi bitwise AND akan melakukan operasi AND pada masing-masing bit, sehingga bit 0 akan dioperasikan dengan bit 0 dan bit 1 dan seterusnya.

Contohnya:

Hasil = 0x03 & 0x31;

Operasinya 0x03 = 00000011 0x31 = 00110001

Hasil

0x01 = 00000001 = 1 H

#include <mega 16.h> #include <delay.h>

Void main ()

{

 

Char a =0x03;

//

data Input 1

Char b=0x31;

//

data Input 2

DDRB=0XFF;

// memakai alamat register B

PORTB=0xFF;

// memakai output di kaki PORTB

PORTB= a & b ;

// artinya data PORTB bernilai 1 H

}

2.8 OPERASI BITWISE OR (I)

Operasi bitwise OR akan melakukan operasi OR pada masing-masing bit, sehingga bit 0 akan dioperasikan dengan bit 0 dan bit 1 dan seterusnya. Contohnya :

Hasil = 0x05 I 0x31;

Operasinya 0x05 = 00000101

Hasil

0x31 = 00110001

0x35 = 00110101 = 35H

Email : fildesrobotik@yahoo.co.id, winnerparluhutan.blogspot.com

Teknik Komputer

AMIK BSI JAkarta

21

#include <mega 16.h> #include <delay.h> Void main ()

{

 

Char a =0x03; Char b=0x31;

// data input 1 // data input 2

DDRA=0xFF;

// Memakai Alamat register A

PORTA=0xFF;

// Output di kaki PORTA

PORTA= a I b ;

// artinya data di PORTA bernilai 35 H

}

2.9 OPERASI BITWISE XOR (^)

Operasi bitwise XOR akan melakukan operasi XOR pada masing-masing bit, sehingga bit 0 akan dioperasikan dengan bit 0 dan bit 1 dan seterusnya.

Contoh :

Hasil = 0x02 ^ 0xFA;

Operasinya

0x02 = 00000010 0XFA = 11111010

Hasil

0xF8 = 11111000 = F8H

#include <mega 16.h> #include <delay.h> Void main ()

{

 

Char a =0x02; Char b=0XFA;

// data input 1 // data input 2

DDRC=0XFF;

// memakai alamat register C

PORTC=0xFF;

// Ouput di kaki PORTC

PORTC= a ^ b ;

// artinya data di PORTC bernilai F8 H

}

2.10 OPERASI BITWISE (~)

Operasi bitwise akan melakukan operasi berupa NOT pada masing – masing bit, sehingga bit 0 akan dioperasikan 1, sebaliknya bit 1 akan bernilai 0

Contohnya : Hasil = ~0x31;

0x31 = 00110001

Hasil

~0x3E = 11001110

Email : fildesrobotik@yahoo.co.id, winnerparluhutan.blogspot.com

Teknik Komputer

AMIK BSI JAkarta

= 3EH

22

#include <mega 16.h> #include <delay.h> Void main ()

{

 

Char a = 0x31;

// data input 1

DDRB=0XFF;

// Memakai Alamat Register B

PORTB=0xFF;

// Output di kaki PORTB

PORTB= a ~ a;

// artinya data di PORTB bernilai 3EH

}

2.11 OPERASI MAJEMUK

Operator Majemuk terdiri dari dua operator yang digunakan untuk menyingkat penulisan program instruksi atau perintah. Operasi manajemuk dapat dilihat pada tabel dibawah ini :

Operator

Keterangan

 

Contoh

Majemuk

 

=

Untuk memasukan nilai

A

= 7

+ =

Untuk menambah nilai dari keadaan semula

A

= 2 + 2, A = 4

_=

Untuk mengurangi nilai dari keadaan semula

D

= 4 - 2, A = 2

* =

Untuk mengalikan nilai dari keadaan semula

C

= 6 x 2, A = 12

/ =

Untuk melakukan pembagian terhadap bilangan semula

F

= 16 / 2, F = 8

% =

Untuk memasukan nilai sisa bagi dari pembagian bilangan semula

 

<< =

Untuk memasukan pergeseran bilangan ke kiri

B

= 7<<1

>> =

Untuk memasukan pergeseran bilangan ke kanan

C

= 7>>1

& =

Untuk Memasukan operantor bitwise AND

D

= 1 && 1, D=1

^ =

Untuk Memasukan operantor bitwise XOR

D

= 1^1, D=0

\ =

Untuk Memasukan operantor bitwise OR

D

= 1 \ 0, D=1

2.12 KOMENTAR PROGRAM

Komentar program hanya diperlukan untuk memudahkan pembacaan dan pemahaman suatu program yang dibuat Dengan kata lain, komentar program hanya merupakan keterangan atau penjelasan program agar dapat dipahami. Untuk memberikan komentar atau penjelasan dalam bahasa C digunakan pembatas /* dan */ atau menggunakan tanda // untuk komentar yang hanya terdiri dari satu baris. Komentar program tidak akan ikut diproses dalam program (akan diabaikan).

23

Email : fildesrobotik@yahoo.co.id, winnerparluhutan.blogspot.com

Teknik Komputer

AMIK BSI JAkarta

Contoh Pertama :

// program ini dibuat oleh ….

Dibelakang tanda // tak akan diproses dalam kompilasi. Tanda ini hanya untuk satu baris kalimat.

Contoh kedua :

*/ program untuk memutar motor DC atau motor Stepper */

Bentuk ini berguna kalau pernyataan berupa kalimat yang panjang sampai beberapa baris.

2.13 PENYELEKSIAN KONDISI

Penyeleksian kondisi digunakan untuk mengarahkan perjalanan suatu proses. Penyeleksian kondisi dapat diibaratkan sebagai katup atau kran yang mengatur jalannya air. Bila katup terbuka maka air akan mengalir dan sebaliknya jika katup tertutup air tidak akan mengalir melalui tempat lain. Fungsi peenyeleksian kondisi penting artinya dalam penyusunan bahasa C, terutama untuk program yang kompleks.

A. STRUKTUR KONDISI “IF”….”

Struktur if dibentuk dari pernyataan if dan sering digunakan untuk menyeleksi suatu kondisi tunggal. Bila proses yang diseleksi terpenuhi atau bernilai benar, maka pernyataan yang ada di dalam blok if akan diproses atau dikerjakan.

#include <mega16.h> #include <delay.h> Void main()

{

 

char inp1;

DDRA=0xFF;

DDRB=0xFFF;

inp1=PORTB;

if(inp1==0x40)

{

 

PORTA=0x20

}

}

Email : fildesrobotik@yahoo.co.id, winnerparluhutan.blogspot.com

Teknik Komputer

AMIK BSI JAkarta

24

B. STRUKTUR KONDISI “IF….ELSE…”

Dalam struktur kondisi if…else minimal terdapat dua pernyataan. Jika kondisi yang diperiksa bernilai benar atau terpenuhi maka pernyataan pertama yang dilaksanakan dan jika kondisi yang diperiksa bernilai salah maka pernyataan yang kedua yang dilaksanakan. Bentuk umumnya adalah sebagai berikut:

if (kodisi)

Pernyataan-1

else

pernyataan-2

Contoh Program if(angka=fo)

/*bila angka sama dengan fo */

{

/*kerjakan berikut ini*/

 

for (k=0;k<4;k++)

{

 

i=table1(k);

PORTA=I

// pernyataan dalam blok ini bisa kosong

tunda 50(100);

// berarti tidak ada yang dikerjakan

 

}

}

 

else

// bila tidak sama kerjakan berikut ini

{

 

for (k=0;k<4;k++)

{

 

i=tabel2(k);

// pernyataan dalam blok ini bisa kosong

PORTA=I;

// berarti tidak ada yang dikerjakan

tunda(100);

 

}

}

#include <mega16.h> #include <delay.h> Void main ()

{

 

char inp1;

DDRA=0xFF;

DDRB=0xFF;

inp1=PORTB;

if (inp1==0x01)

{

 

PORTA = 0x20;

}

 

else

// bila tidak sama kerjakan berikut ini

{

Email : fildesrobotik@yahoo.co.id, winnerparluhutan.blogspot.com

Teknik Komputer

AMIK BSI JAkarta

25

PORTA=0x80;

}

}

C. STRUKTUR KONDISI “SWITCH…CASE… DEFAULT…”

Struktur kondisi swith …case…default digunakan untuk penyeleksian kondisi dengan kemungkinan yang terjadi cukup banyak. Struktur ini akan melaksanakan salah satu dari beberapa pernyataan ‘case’ tergantung nilai kondisi. Yang ada di dalam switch. Selanjutnya proses yang diteruskan hingga ditemukan pernyataan ‘break’. Jika tidak ada nilai pada case yang sesuai dengan kondisi, maka proses akan diteruskan kepada pernyataan yang ada di bawah atau berikutnya ‘default’.

SWITCH….CASE….

Contoh Program

Switch (fo

#include <mega16.h>

{

case 1:

#include <delay.h> Void main ()

for (k=0;k<4;k++)

{

char a;

{

DDRA=0xFF;

I=tabel 1(k);

PORTA=I;

tunda(100);

DDRB=0xFF;

a=PORTA;

swtch (a)

}

{

break;

Case 0: PORTB=5;break; Case 1: PORTB=10;break; Case 2: PORTB=15;break;

case 2:

for (k=0;k<4;k++)

{

Case 3: PORTB=20;break; Case 4: PORTB=40;break; Case 5: PORTB=60;break; Default: PORTB=0;break;

i=tabel2(k);

PORTA=I;

tunda(100);

}

Break;

}

}

2.14

PERULANGAN

Dalam pemograman bahasa C tersedia suatu fasilitas yang digunakan untuk melakukan proses yang berulang-ulang sebanyak keinginan kita. Misalnya saja, bila kita ingin menginput dan mencetak bilangan dari 1 sampai 100 bahkan 1000, tentunya akan merasa kesulitan dalam penulisan program.

Email : fildesrobotik@yahoo.co.id, winnerparluhutan.blogspot.com

Teknik Komputer

AMIK BSI JAkarta

26

Maka dengan struktur perulangan akan mempermudah dalam pembuatan program berulang ulang, ada beberapa struktur perulangan yaitu :

1. Struktur Perulangan “WHILE” Perulangan while banyak digunakan pada program yang terstruktur, proses perulangan akan terus berlanjut selama kondisinya bernilai benar (true) dan akan berhenti bila kondisinya bernilai salah.

while (perulangan)

Contoh Program

while (ekspresi)

{

Pernyataan_1

Pernyataan_2

}

# include <mega16.h>

# include <delay.h> Void main ()

{

char a=10;

DDRA=0xFF;

while (a>=0)

{

PORTA=a;

a--;

} }

2. STRUKTUR PERULANGAN “DO… WHILE… ’’

Pada dasarnya struktur perulangan do….while sama saja dengan struktur while,hanya saja pada proses perulangan dengan while , seleksi while berada di while yang letaknya di atas sementara pada perulangan do….while , seleksi while berada di bawah batas perulangan . Jadi dengan menggunakan struktur do….while sekurang-kurangnya akan terjadi satu kali perulangan.

Bentuk umum dari struktur kondisi ini adalah:

do…

while (Perulangan)

Contoh Program

do

#include <mega16.h>

{

Pernyataan_1

#include <delay.h> Void main ()

Pernyataan_2

{

Char a=10;

}

while (ekspresi)

DDRA=0xFF;

do

{

PORTA=a;

a--;

}

while (a>=0);

}

Email : fildesrobotik@yahoo.co.id, winnerparluhutan.blogspot.com

Teknik Komputer

AMIK BSI JAkarta

27

3.

STRUKTUR PERULANGAN “FOR”

Struktur perulangan for biasa digunakan untuk mengulang suatu proses yang telah diketahui jumlah perulangannya . Dari segi penulisannya,struktur perulangan for tampaknya lebih efisien karena susunannya lebih simpel dan sederhana . Bentuk umum perulangan for adalah sebagai berikut :

for (inisialisasi ; syarat ; penambahan)

Pernyataan;

Keterangan: Inisialisasi : penyataan untuk menyatakan keadaan awal dari variabel kontrol.

Syarat : ekspresi relasi yang menyatakan kondisi untuk keluar dari perulangan. Penambahan : pengatur perubahan nilai variabel kontrol.

#include <mega16.h> #include <delay.h> Void main ()

{

 

char a;

DDRA=0xFF;

for (a=10;a>=a>=0;a--) PORTA=a;

}

2.15 ARAY (LARIK)

Array merupakan kumpulan dari nilai-nilai data yang bertipe sama dalam urutan tertentu yang menggunakan nama yang sama. Letak atau posisi dari elemen array ditunjukkan oleh suatu index. Dilihat dari dimensinya array dapat dibagi menjadi Array dimensi satu, array dimensi dua dan array multi- dimensi.

A. ARRAY DIMENSI SATU

Setiap elemen array dapat diakses melalaui indeks. Indeks array secara default dimulai dari 0. Deklarasi Array bentuk umum:

Deklarasi array dimensi satu : [Tipe_array][nama_array][elemen1];

Email : fildesrobotik@yahoo.co.id, winnerparluhutan.blogspot.com

Teknik Komputer

AMIK BSI JAkarta

28

B. ARRAY DIMENSI DUA

Array dua dimensi merupakan array yang terdiri dari m buah baris dan n buah kolom. Bentuknya dapat berupa matriks atau tabel.

Deklarasi array dimensi dua: [Tipe_array][nama_array][elemen2];

C. ARRAY MULTI DIMENSI

Array multi-dimensi merupakan array yang mempunyai ukuran lebih dari dua. Bentuk pendeklarasian array sama saja dengan array dimensi satu maupun array dimensi dua. Bentuk umumnya yaitu:

[tipe_array][nama_array][elemen1][elemen2]…[elemenN];

2.16

FUNGSI

1. PENGERTIAN FUNGSI

Fungsi merupakan suatu bagian dari program yang dimaksudkan untuk mengerjakan suatu tugas tertentu dan letaknya terpisah dari program yang memanggilnya. Fungsi merupakan elemen utama dalam bahasa C karena bahasa C sendiri terbentuk dari kumpulan fungsi – fungsi. Dalam setiap program bahasa C, minimal terdapat satu fungsi yaitu fungsi main(). Keuntungan penggunaan fungsi dalam program yaitu program akan memiliki struktur yang jelas (mempunyai readability yang tinggi) dan juga akan menghindari penulisan bagian program yang sama.

2. PENDEFISIAN FUNGSI

Sebelum digunakan fungsi harus didefinisikan terlebih dahulu. Bentuk definisi fungsi adalah:

Tipe_Nilai_Balik nama_Fungsi (argumen1, argumen2)

{

 

Pernyataan 1 ; Pernyataan1 ; Return (ekspresi) ;

}

Contoh:

 

int jumlah(int bi11,int bi12) //definisi fungsi jumlah

{

Email : fildesrobotik@yahoo.co.id, winnerparluhutan.blogspot.com

Teknik Komputer

AMIK BSI JAkarta

29

int hasil; Hasil = bi11 + bi12 Return(hasil)

}

 

Keterangan

Contoh Program

   

#include <mega16.h> #include < delay.h>

int

jumlah

(int

bil1,int bil2)

1. Tipe nilai alik fungsi

int jumlah (int bil1, int bil2)

2. Merupakan nama fungsi { Return (bil1+bil2) ; } Void main ()
2. Merupakan nama fungsi { Return (bil1+bil2) ; } Void main ()
2. Merupakan nama fungsi { Return (bil1+bil2) ; } Void main ()

2. Merupakan nama fungsi

{

Return (bil1+bil2) ;

}

Void main ()

 

1

2

3

4

3. Tipe argument

 

4. Nama argumen

{

DDRA=0xFF ; PORTA=jumlah (20, 50)

}

3. PROTOTYPE FUNGSI

Ketentuan pendefinisian fungsi yang mendahului fungsi pemanggil dapat merpotkan untuk program yang komplek atau besar. Untuk mengatasi hal tersebut maka fungsi dapat dideklarasikan sebelum digunakan, terletak sebelum fungsi main. Deklarasi fungsi dikenal dengan prototype fungsi. Cara mendeklarasikan fungsi sama dengan header fungsi dan diakhiri tanda titik koma (;).

#include <mega16.h> #include < delay.h>

int jumlah (int bil1, int bil2) Void main ()

{

DDRA=0xFF ; PORTA=jumlah (20, 50)

}

int jumlah (int bil1, int bil2)

{

Return (bil1+bil2) ;

}

4. VARIABEL LOKAL DAN GLOBAL

Variabel lokal adalah variabel yang dideklarasikan di dalam suatu fungsi, variabel ini hanya dikenal fungsi tersebut. Setelah keluar dari fungsi

Email : fildesrobotik@yahoo.co.id, winnerparluhutan.blogspot.com

Teknik Komputer

AMIK BSI JAkarta

30

ini maka variabel ini akan hilang. Variabel global adalah variabel yang dideklarasikan di luar fungsi, sehingga semua fungsi dapat memakainya.

#include <mega16.h> #include < delay.h> int jumlah (int bil1, int bil2) int data1; void main ()

{

int data1; DDRA=0xFF ; data1=jumlah (20,50) ; PORTA = data1;

}

{

int

jumlah (int bil1,int bil2)

Return (bil1+bil2) ;

}

5. KATA KUNCI EXTERN DAN STATIC

Kata kunci extern dan static digunakan untuk menyatakan sifat dari variabel atau fungsi. Suatu variabel atau fungsi yang didepannya ditambah dengan kata kunci extern maka artinya variabel atau fungsi tersebut didefinisikan di luar file tersebut. Variabel global atau fungsi yang di depannya ditambah kata kunci static mempunyai arti bahwa variabel global atau fungsi tersebut bersifat pivate bagi file tersebut, sehingga tidak dapat diakses dari file yang lain.

6. FUNGSI TANPA NILAI BALIK

void

sedangkan fungsi yang tidak mempunyai argumen, setelah nama fungsi dalam kurung dapat kosong atau dengan menggunakan kata kunci void.

Fungsi

yang tidak mempunyai nilai balik merupakan kata kunci

Contoh Program :

void tunda (void)

{

for (i

}

=

0;

i

<

10

;

i++) ;

atau void tunda ()

Email : fildesrobotik@yahoo.co.id, winnerparluhutan.blogspot.com

Teknik Komputer

AMIK BSI JAkarta

31

{

for (i=0;<10;i++) ;

}

/* fungsi tunda_panjang

Void tunda_panjang (int n )

{

Int

i

;

for

(i=0;

i<n ;i++)

tunda () ;

7. FUNGSI DENGAN NILAI BALIK BALIK (RETURN VALUE)

Nilai balik yang dinyatakan delam pernyataan return. Tipe nilai balik dapat berupa char, int, short, long, atau float.

Contoh Program :

int jumlah (int bil1, int bil2)

{

Return (bil1+bil2)

}

8. ARGUMEN/ PARAMETER FUNGSI

Argumen dilewatkan kedalam fungsi terdiri atas dua macam, yaitu:

a. Pelewatan secara nilai Bentuk definisi pelewatan secaara nilai adalah:

tipe nama_fungsi (tipe argumen1, tipe argumen2,…)

{

………………………….

………………………….

}

#include <mega16.h> #include <delay.h> Void Tambahv(int A) { A=A+1; } Void main () { Int
#include <mega16.h>
#include <delay.h>
Void Tambahv(int A)
{
A=A+1;
}
Void main ()
{
Int B;
DDRA=0xFF;
B=4;
Tambahv (B);
PORTA=B;
}

Email : fildesrobotik@yahoo.co.id, winnerparluhutan.blogspot.com

Teknik Komputer

AMIK BSI JAkarta

32

b. Pelewatan secara pointer

Bentuk definisi pelewatan secara pointer adalah:

Tipe nama_fungsi (tipe *argumen1, tipe *argumen2,…)

{

…………………………….

…………………………….

}

#include <mega16.h> #include <delay.h> Void Tambahp (int *A) { *A=A+1; } Void main () {
#include <mega16.h>
#include <delay.h>
Void Tambahp (int *A)
{
*A=A+1;
}
Void main ()
{
Int B;
DDRA=0xFF;
B=4;
Tambahp (&B);
PORTA=B;
}

Email : fildesrobotik@yahoo.co.id, winnerparluhutan.blogspot.com

Teknik Komputer

AMIK BSI JAkarta

33

BAB. III Mengenal Program Codevision AVR (Compiler)

CodeVisionAVR merupakan sebuah cross compiler C, Integrated Development Environtment (IDE) dan Automatic Program Generator yang didesain untuk mikrokontroler buatan Atmel seri AVR. CodeVisionAVR dapat dijalankan pada sistem operasi Windows 95, 98, Me, NT4, 2000, XP dan Windows 7.

Cross - Compiler C mampu menerjemahkan hampir semua perintah dari bahasa ANSI C, sejauh yang diijinkan oleh arsitektur dari AVR, dengan tambahan beberapa fitur untuk mengambil kelebihan khusus dari arsitektur AVR dan kebutuhan pada sistem embedded.

Selain library standar C, CodeVisionAVR juga mempunyai library atau fitur –fitur Hardware yang terdiri dari :

library atau fitur –fitur Hardware yang terdiri dari : 1. Mempunyai Chip pendukung AVR. 2. Mempunyai

1. Mempunyai Chip pendukung AVR.

2. Mempunyai Input-Output pada kaki PORT.

3. Mempunyai Modul LCD.

4. BUS I2C dari Philip.

5. Mempunyai Timer internal dan external.

6. Mempunyai USART sebagai RX Interups dan TX Interups.

7. Memiliki Sensor Suhu LM75 dari National.

8. Real-Time Clock: PCF8563, PCF8583 dari Philips, DS1302 dan DS1307 dari Maxim/Dallas Semiconductor.

9. Konversi ke Kode Gray.

10.Sensor Suhu DS1820, DS18S20, dan DS18B20 dari Maxim/Dallas Semiconductor. Termometer/ Termostat DS1621 dari Maxim/Dallas Semiconductor. 11.Memiliki EEPROM DS2430 dan DS2433. dari Maxim/Dallas Semiconductor. 12.Memiliki SPI ( Buat Komunikasi Serial). 13.Memiliki Power Management Pengaturan Tegangan External.

14.Memiliki Delay atau waktu tunda. 15.Mempunyai Konverter Analog to Digital (ADC). 16.Protokol 1-Wire dari Maxim/Dallas Semiconductor.

Email : fildesrobotik@yahoo.co.id, winnerparluhutan.blogspot.com

Teknik Komputer

AMIK BSI JAkarta

34

3.1

Langkah – langkah dalam menggunakan software codevision AVR :

1. Download software Codevision AVR di link : http://atmel.com.;

www.fischl.de/usbasp/ ;

http://www.kelas-mikrokontrol.com/download;

2. Setelah selesai download lakukan install program tersebut dengan klik programnya.

lakukan install program tersebut dengan klik programnya. 3. Klik New lalu rubah Source dengan klik Project,
3. Klik New lalu rubah Source dengan klik Project, lalu klik OK lalu klik Yes
3. Klik New
lalu rubah Source dengan klik Project, lalu klik OK lalu klik Yes

4. Maka tampil untuk melakukan seting baik jenis tipe IC maupun Kristal/Xtall, karena menggunakan IC Atmega 16 atau Atmega 16A maka ubahlah Chip Atinny 13 dan clock 4.000000MHz. Klik pilih Atmega 16 atau Atmega 16A lalu klik di clock ketik 12.000000 MHz.

16 atau Atmega 16A lalu klik di clock ketik 12.000000 MHz. Seting Email : fildesrobotik@yahoo.co.id,
Seting
Seting
Atmega 16A lalu klik di clock ketik 12.000000 MHz. Seting Email : fildesrobotik@yahoo.co.id,

Email : fildesrobotik@yahoo.co.id, winnerparluhutan.blogspot.com

Teknik Komputer

AMIK BSI JAkarta

35

5.

Lalu klik PORT (tujuan untuk mengatifkan jenis port yang digunakan ) karena menggunakan skema gambar yang sudah di rangkai pada software simulasi proteus di alamat PORTC maka klik PORTC, lalu seting bit IN menjadi bit Out serta seting Pullup/Out T menjadi 1.

menjadi bit Out serta seting Pullup/Out T menjadi 1. Seting 6. Setelah selesai melakukan penyetingan lakukan
Seting
Seting
bit Out serta seting Pullup/Out T menjadi 1. Seting 6. Setelah selesai melakukan penyetingan lakukan

6. Setelah selesai melakukan penyetingan lakukan penyimpanan dengan cara klik File lalu pilih Generate, Save and Exit.

dengan cara klik File lalu pilih Generate, Save and Exit. 7. Maka tampil untuk menyimpan program

7. Maka tampil untuk menyimpan program yang dibuat sebanyak 3 kali melakukan penyimpanan seperti dibawah ini.

36
36

Email : fildesrobotik@yahoo.co.id, winnerparluhutan.blogspot.com

Teknik Komputer

AMIK BSI JAkarta

BAB. IV Mengenal Program Download (ISP Prog.1.68)

BAB. IV Mengenal Program Download (ISP Prog.1.68) 37 Email : fildesrobotik@yahoo.co.id, winnerparluhutan.blogspot.com
BAB. IV Mengenal Program Download (ISP Prog.1.68) 37 Email : fildesrobotik@yahoo.co.id, winnerparluhutan.blogspot.com

37

Email : fildesrobotik@yahoo.co.id, winnerparluhutan.blogspot.com

Teknik Komputer

AMIK BSI JAkarta

Cara Mendownload Program dengan Software ISP Prog (Ver 1.68)

Open File Hex Untuk Download

Menyimpan Data Program Hex Ke Memori External
Menyimpan Data
Program Hex Ke
Memori External
Download Menyimpan Data Program Hex Ke Memori External Klik Command Melihat menu Berikutnya Write Flash

Klik Command

Melihat menu

Berikutnya

Klik Command Melihat menu Berikutnya Write Flash Buat Download Program Ke IC

Write Flash Buat Download Program Ke IC

Program Fuse

Menetapkan Fuse

Bit

Lock Chip Untuk Mengunci Program yang sudah di download

Bit Lock Chip Untuk Mengunci Program yang sudah di download Select Chip Jenis IC Mikrokontroler Atmel

Select Chip Jenis IC Mikrokontroler Atmel Atmega AVR

ANT9

dll

Erase berfungsi Untuk Menghapus Program yang ada di IC Auto berfungsi Untuk membaca / Scanning
Erase berfungsi
Untuk Menghapus
Program yang ada di IC
Auto berfungsi
Untuk membaca /
Scanning IC
Mikrokontroler
Auto berfungsi Untuk membaca / Scanning IC Mikrokontroler NB : Software Prog ISP V 1.68 Merupakan
NB : Software Prog ISP V 1.68 Merupakan software Download program ke dalam IC Mikrokontroler
NB :
Software Prog ISP V 1.68 Merupakan software Download program ke
dalam IC Mikrokontroler melalui downloader USB, Software ini bisa
digunakan untuk mengisi ke berbagai jenis IC Mikrokontroler Baik ATMEL
(MCS51) dan AVR (ATMEGA, ANTY)

Email : fildesrobotik@yahoo.co.id, winnerparluhutan.blogspot.com

Teknik Komputer

AMIK BSI JAkarta

38

4.1

Langkah – Langkah dalam mendwonload program

1. Klik Program ProgISP

Langkah dalam mendwonload program 1. Klik Program ProgISP 2. Klik Command Untuk membuka menu lainnya Hasilnya

2. Klik Command Untuk membuka menu lainnya

ProgISP 2. Klik Command Untuk membuka menu lainnya Hasilnya 3. Bentuk Sebelum Di Pasang Downloader USB
ProgISP 2. Klik Command Untuk membuka menu lainnya Hasilnya 3. Bentuk Sebelum Di Pasang Downloader USB

Hasilnya

2. Klik Command Untuk membuka menu lainnya Hasilnya 3. Bentuk Sebelum Di Pasang Downloader USB Ke

3. Bentuk Sebelum Di Pasang

Downloader USB Ke Komputer PC/Laptop

Sebelum Di Pasang Downloader USB Ke Komputer PC/Laptop 4. Sesudah dipasang/dicolokan Downloader USB ke Komputer
Sebelum Di Pasang Downloader USB Ke Komputer PC/Laptop 4. Sesudah dipasang/dicolokan Downloader USB ke Komputer
Sebelum Di Pasang Downloader USB Ke Komputer PC/Laptop 4. Sesudah dipasang/dicolokan Downloader USB ke Komputer

4. Sesudah dipasang/dicolokan Downloader USB ke Komputer PC/Laptop

dipasang/dicolokan Downloader USB ke Komputer PC/Laptop 5. Di Select Chip Pilih jenis IC yang di gunakan,
dipasang/dicolokan Downloader USB ke Komputer PC/Laptop 5. Di Select Chip Pilih jenis IC yang di gunakan,

5. Di Select Chip Pilih jenis IC yang di gunakan, karena menggunakan Atmega 16 pilih jenis IC atmega 16.

karena menggunakan Atmega 16 pilih jenis IC atmega 16. 6. Setelah dirubah lakukan klik Read Untuk
karena menggunakan Atmega 16 pilih jenis IC atmega 16. 6. Setelah dirubah lakukan klik Read Untuk

6. Setelah dirubah lakukan klik Read Untuk membaca apakah bisa Membaca IC Atmega 16.

klik Read Untuk membaca apakah bisa Membaca IC Atmega 16. 7. Bila tidak bisa membaca atau
klik Read Untuk membaca apakah bisa Membaca IC Atmega 16. 7. Bila tidak bisa membaca atau

7. Bila tidak bisa membaca atau tidak terhubung ke IC Atmega 16 maka tampil.

membaca atau tidak terhubung ke IC Atmega 16 maka tampil. Email : fildesrobotik@yahoo.co.id,
membaca atau tidak terhubung ke IC Atmega 16 maka tampil. Email : fildesrobotik@yahoo.co.id,

Email : fildesrobotik@yahoo.co.id, winnerparluhutan.blogspot.com

Teknik Komputer

AMIK BSI JAkarta

39

8. Bila benar maka tampil succesfull read.

8. Bila benar maka tampil succesfull read. 9. Lakukan seting fuse bit dengan menggantikan lowValue =
8. Bila benar maka tampil succesfull read. 9. Lakukan seting fuse bit dengan menggantikan lowValue =

9. Lakukan seting fuse bit dengan menggantikan lowValue = E1 dan HighValue = 99 menjadi LowValue = EF & HighValue = D9

= 99 menjadi LowValue = EF & HighValue = D9 10. Setelah melakukan seting fuse bit,

10.

= 99 menjadi LowValue = EF & HighValue = D9 10. Setelah melakukan seting fuse bit,

Setelah melakukan seting fuse bit, sekarang klik Command dibagian atas atau samping

fuse bit, sekarang klik Command dibagian atas atau samping 11. Pilih Erase Chip lalu klik tujuannya

11. Pilih Erase Chip lalu klik tujuannya untuk menghapus program yang ada di IC Mikrokontroler ATmega16

menghapus program yang ada di IC Mikrokontroler ATmega16 Bentuk kegagalan atau tidak berhasil dihapus NB :
Bentuk kegagalan atau tidak berhasil dihapus
Bentuk kegagalan atau tidak
berhasil dihapus

NB : Penyebab tidak bisa dihapus atau gagal karena :

1. Salah memasang kabel ke IC Atmega 16 (terbalik memasangnya).

2. Kabel rusak

3. IC Rusak (bias dari toko atau salah seting fuse bit)

Email : fildesrobotik@yahoo.co.id, winnerparluhutan.blogspot.com

Teknik Komputer

AMIK BSI JAkarta

40

12. Setelah dihapus klik file pilih load flash atau klik load flash yang ada di
12. Setelah dihapus klik file pilih load flash atau klik load flash yang ada di
samping tampilan, pilih dimana anda menyimpan program yang sudah
disimpan di folder, bila sudah ketemu klik Exe, untuk membuka isi file hex
yang sudah di compiler tadi, lalu klik Open.

13. Maka tampil di bawah

di compiler tadi, lalu klik Open. 13. Maka tampil di bawah Tampilan Led yang siap untuk

Tampilan Led yang siap untuk di kirim ke iC Mikrokontroler ATMEGA 16

14. Klik Command klik Write Flash , karena masih dalam flash penyimpanan programnya jadi jangan klik Write EEPROM. Setelah itu klik lagi Command klik Program Fuse.

EEPROM. Setelah itu klik lagi Command klik Program Fuse. Bila berhasil mendownload program ke IC Mikrokontroler
EEPROM. Setelah itu klik lagi Command klik Program Fuse. Bila berhasil mendownload program ke IC Mikrokontroler
EEPROM. Setelah itu klik lagi Command klik Program Fuse. Bila berhasil mendownload program ke IC Mikrokontroler

Bila berhasil mendownload program ke IC Mikrokontroler ATmega 16 dan juga program fuse

Email : fildesrobotik@yahoo.co.id, winnerparluhutan.blogspot.com

Teknik Komputer

AMIK BSI JAkarta

41

15. Jangan Klik Lock Chip

15. Jangan Klik Lock Chip bila tidak ingin mengunci program download NB : Bila di lock

bila tidak ingin mengunci program download

NB : Bila di lock chip maka sulit untuk membuka atau mengisi lagi program ke IC Mikrokontroler Atmega

16. Bila sudah berhasil atau succesfuly dalam mendownload program ke dalam IC mikrokontroler, maka IC Siap dipakai dan lihat hasilnya.

IC mikrokontroler, maka IC Siap dipakai dan lihat hasilnya. NB : Terjadinya Error atau gagal download
NB : Terjadinya Error atau gagal download program ke IC dikarenakan 1. Salah Pasang IC
NB : Terjadinya Error atau gagal download program ke IC dikarenakan
1. Salah Pasang IC Mikrokontroler/terbalik
2. Kurang kencang atau longgar dalam pemasangan IC
3. Rusaknya Kabel data
4. Terlalu sering di lock chip, dll

Email : fildesrobotik@yahoo.co.id, winnerparluhutan.blogspot.com

Teknik Komputer

AMIK BSI JAkarta

42

BAB. V Aplikasi Rangkaian

Email : fildesrobotik@yahoo.co.id, winnerparluhutan.blogspot.com

Teknik Komputer

AMIK BSI JAkarta

43

PRAKTEK I APLIKASI INPUT/OUTPUT MENYALAKAN LED

#include <mega16.h> #include <delay.h>

void main(void)

{

DDRC=0x0FF;

PORTC=0x00;

while (1)

{

PORTC=0b11111111;

delay_ms(500);

PORTC=0b11111110;

delay_ms(500);

PORTC=0b11111101;

delay_ms(500);

PORTC=0b11111011;

delay_ms(500);

PORTC=0b11110111;

delay_ms(500);

PORTC=0b11101111;

delay_ms(500);

PORTC=0b11011111;

delay_ms(500);

PORTC=0b10111111;

delay_ms(500);

PORTC=0b01111111;

delay_ms(500);

};

}

delay_ms(500); PORTC=0b01111111; delay_ms(500); }; } 1. Buatlah tampilan led menyala kekanan dan kekiri? 2.
delay_ms(500); PORTC=0b01111111; delay_ms(500); }; } 1. Buatlah tampilan led menyala kekanan dan kekiri? 2.
1. Buatlah tampilan led menyala kekanan dan kekiri? 2. Buatlah tampilan led menyala secara acak?
1.
Buatlah tampilan led menyala kekanan dan kekiri?
2.
Buatlah tampilan led menyala secara acak?
3.
Buatlah tampilan led menyala dengan menggunakan instruksi?
timer/counter.
(jelaskan prinsip kerja dan perbedaan dari tugas diatas)
NB :
Dapat membuat tampilan led berbeda dari tugas yang ada diatas, tetap
jelaskan prinsip kerja tampilan led yang dibuat.

44

Email : fildesrobotik@yahoo.co.id, winnerparluhutan.blogspot.com

Teknik Komputer

AMIK BSI JAkarta

Tabel Bilangan Biner

Gambar

Angka

b7

b6

b5

b4

b3

b2

b1

b0

DATA

Seven Segment

 

Dp

G

F

e

D

c

b

A

HEX

0 1 1 0 0 0 0 0 0 C0H

0

1

1

0

0

0

0

0

0

C0H

1

1

1

1

1

1

0

0

1

F9H

2

1

0

1

0

0

1

0

0

A4H

3

1

0

1

1

0

0

0

0

B0H

4

1

0

0

1

1

0

0

1

99H

5

1

0

0

1

0

0

1

0

92H

6

1

0

0

0

0

0

1

0

82H

7

1

1

1

1

1

0

0

0

F8H

8

1

0

0

0

0

0

0

0

80H

9

1

0

0

1

0

0

0

0

90H

                   
A 1 0 0 0 1 0 0 0 88H

A

1

0

0

0

1

0

0

0

88H

B

1

0

0

0

0

0

1

1

83H

C

1

1

0

0

0

1

1

0

C6H

D

1

0

1

0

0

0

0

1

A1H

E

1

0

0

0

0

1

1

0

86H

F

1

0

0

0

1

1

1

0

8EH

Email : fildesrobotik@yahoo.co.id, winnerparluhutan.blogspot.com

Teknik Komputer

AMIK BSI JAkarta

45

PRAKTEK II Aplikasi Menyalakan Seven Segmen

#include <mega16.h> #include <delay.h>

void bin7seg(unsigned char data1)

{

switch (data1)

{

 

case 0: PORTA=0xc0; break; case 1: PORTA=0xf9; break; case 2: PORTA=0xa4; break; case 3: PORTA=0xb0; break; case 4: PORTA=0x99; break; case 5: PORTA=0x92; break; case 6: PORTA=0x82; break; case 7: PORTA=0xf8; break; case 8: PORTA=0x80; break; case 9: PORTA=0x90; break;

}

}

void main(void)

{

DDRA=0xff;

while (1)

{

bin7seg(0);

delay_ms(500);

bin7seg(1);

delay_ms(500);

bin7seg(2);

delay_ms(500);

bin7seg(3);

delay_ms(500);

bin7seg(4);

delay_ms(500);

bin7seg(5);

delay_ms(500);

bin7seg(6);

delay_ms(500);

bin7seg(7);

delay_ms(500);

bin7seg(8);

delay_ms(500);

bin7seg(9);

delay_ms(500);

}

};

bin7seg(9); delay_ms(500); } }; 1. Buatlah Tampilan seven segment menyala dari 0 s/d F ?
bin7seg(9); delay_ms(500); } }; 1. Buatlah Tampilan seven segment menyala dari 0 s/d F ?
1. Buatlah Tampilan seven segment menyala dari 0 s/d F ? 2. Buatlah Tampilan seven
1. Buatlah Tampilan seven segment
menyala dari 0 s/d F ?
2. Buatlah Tampilan seven segment
berupa ( b. s. i ) ?
3. Buatlah tampilan Seven segment
berupa ( A.Y.A.H) dan ( i.b.u) ?

NB :

Komponen yang digunakan dalam Modul Pratikum ini berjenis Seven Segmen Anoda atau berkutub Positif, sehigga untuk menyalakan membutuhkan kondisi low (Ground).

Email : fildesrobotik@yahoo.co.id, winnerparluhutan.blogspot.com

Teknik Komputer

AMIK BSI JAkarta

46

Aplikasi menyalakan Seven Segment 2 Digit

Email : fildesrobotik@yahoo.co.id, winnerparluhutan.blogspot.com

Teknik Komputer

AMIK BSI JAkarta

47

PRAKTEK III Aplikasi led dengan pus button

#include <mega16.h> #include <delay.h>

void main(void)

{

DDRC=0xff;

PORTC=0x00;

DDRD=0x00;

PORTD =0xff;

 

while(1)

{

 

if(PIND.0==0)

{

 

PORTC=0b1111110;

delay_ms(100);

//delay 100 ms

}

 

if (PIND.1==0)

{

 

PORTC=0b11111101;

delay_ms(100);

//delay 100 ms

}

 

if (PIND.2==0)

{

 

PORTC=0b11111011;

delay_ms(100);

}

 

if (PIND.3==0)

{

 

PORTC=0b11110111;

delay_ms(100);

}

 

if (PIND.4==0)

{

 

PORTC=0b11101111;

delay_ms(100);

}

 

if (PIND.5==0)

{

 

PORTC=0b11011111;

delay_ms(100);

}

 

if (PIND.6==0)

{

 

PORTC=0b10111111;

delay_ms(100);

}

 

if (PIND.7==0)

{

 

PORTC=0b01111111;

delay_ms(100);

}

}

//akhir looping

}

//Akhir program utama

} } //akhir looping } //Akhir program utama 1. Buatlah Tampilan led menyala kekiri setelah ditekan
} } //akhir looping } //Akhir program utama 1. Buatlah Tampilan led menyala kekiri setelah ditekan
1. Buatlah Tampilan led menyala kekiri setelah ditekan button ? 2. Buatlah Tampilan led menyala
1. Buatlah Tampilan led menyala
kekiri setelah ditekan button ?
2. Buatlah Tampilan led menyala
kekanan setelah ditekan button ?
3. Buatlah tampilan led secara acak
bila di tekan button ?
48

Email : fildesrobotik@yahoo.co.id, winnerparluhutan.blogspot.com

Teknik Komputer

AMIK BSI JAkarta

PRAKTEK IV Aplikasi Seven Segmen dengan Pus Button

#include <mega16.h> #include <delay.h>

void main(void)

{

DDRA=0xFF;

PORTA=0x00;

DDRD=0x00;

PORTD =0xFF;

while(1)

{

PORTA=0xC0;

If (PIND.0==0)

{

PORTA=0xF9;

}

If (PIND.1==0)

{

PORTA=0xA4;

}

if (PIND.2==0)

{

PORTA=0xB0;

}

if (PIND.3==0)

{

PORTA=0x99;

}

if (PIND.4==0)

{

PORTA=0x92;

}

if (PIND.5==0)

{

PORTA=0x82;

}

if (PIND.6==0)

{

PORTA=0xF8;

}

if (PIND.7==0)

{

PORTA=0x80;

}

 

};

//akhir looping

} //Akhir program utama

NB : Kaki Port yang digunakan adalah untuk Pus Button Kaki Port D, Sevent Segment pada kaki Port A

Pus Button Kaki Port D, Sevent Segment pada kaki Port A 1 Buatlah Tampilan seven segment
Pus Button Kaki Port D, Sevent Segment pada kaki Port A 1 Buatlah Tampilan seven segment
1 Buatlah Tampilan seven segment menyala dari A s/d F ? 2 Buatlah Tampilan seven
1 Buatlah Tampilan seven segment
menyala dari A s/d F ?
2 Buatlah Tampilan seven segment
berupa ( b.c .a
) ?
3 Buatlah tampilan Seven segment
berupa ( c.a.b.e) dan ( o.s.i.s ) ?

49

Email : fildesrobotik@yahoo.co.id, winnerparluhutan.blogspot.com

Teknik Komputer

AMIK BSI JAkarta

PRAKTEK V Aplikasi Sensor dengan BUZER

PRAKTEK V Aplikasi Sensor dengan BUZER #include <mega16.h> #include <delay.h> void main(void) {
PRAKTEK V Aplikasi Sensor dengan BUZER #include <mega16.h> #include <delay.h> void main(void) {

#include <mega16.h> #include <delay.h> void main(void)

{

 

PORTA=0b10000000; // data Port A.7 untuk sensor (input)

DDRA=0x00;

PORTC=0x00;

// data Port C.7 untuk buzer (output)

DDRC=0b10000000;

while (1)

{

{

PORTC=0b10000000;

// Kondisi Buzer tidak bunyi

delay_ms(100);

if (PINA.7==1)

// bila sensor terhalang maka buzer bunyi

PORTC=0b00000000;

// kondisi Buzer keadaan bunyi

delay_ms(200);

}

}

};

Port yang di gunakan untuk sensor Kaki PortA.7, untuk Buzer Kaki PortC.7,
Port yang di
gunakan untuk
sensor Kaki
PortA.7, untuk
Buzer Kaki
PortC.7,
untuk sensor Kaki PortA.7, untuk Buzer Kaki PortC.7, 1. Buatlah tampilan led mati hidup bersama buzzer

1. Buatlah tampilan led mati hidup bersama buzzer bunyi ketika sensor terhalangi

2. Buatlah buzzer berbunyi ketika sensor terhalang dan buzzer mati ketika sensor terhalang

50

Email : fildesrobotik@yahoo.co.id, winnerparluhutan.blogspot.com

Teknik Komputer

AMIK BSI JAkarta

PRAKTEK VI Aplikasi Sensor dengan Motor DC

#include <mega16.h> #include <delay.h> void main(void) { PORTA=0b10000000; DDRA=0x00; while (1) {
#include <mega16.h>
#include <delay.h>
void main(void)
{
PORTA=0b10000000;
DDRA=0x00;
while (1)
{
if (PINA.7==0) // Data untuk Sensor
{
PORTB.0=1; // data untuk motor DC
PORTB.1=0; // data untuk motor DC
}
if (PINA.7==0)
{
PORTB.0=0;
PORTB.1=1;
}
};
}
NB :
Sensor Kaki Port A.7,
Motor DC di kaki Port B.0 dan Port B.1

1. Buatlah tampilan ketika sensor terhalang motor dc berputar kekiri dan sensor terhalang lagi motor dc berputar kekanan

2. Buatlah motor dc ber henti berputar ketika sensor terhalang.

Email : fildesrobotik@yahoo.co.id, winnerparluhutan.blogspot.com

Teknik Komputer

AMIK BSI JAkarta

51

PRAKTEK VII Aplikasi sensor dengan motor DC dan Buzer #include <mega16.h> #include <delay.h> void
PRAKTEK VII
Aplikasi sensor dengan motor DC dan Buzer
#include <mega16.h>
#include <delay.h>
void main(void)
{
PORTA=0b10000000;
DDRA=0x00;
PORTB=0xFF; // data untuk port sensor (input)
DDRB=0x000;
PORTC=0x00;
// ouput Buzer
DDRC=0b10000000;
while (1)
{
{
PORTC=0b10000000;
delay_ms(100);
PORTB.0=0;
PORTB.1=0;
}
if (PINA.7==1) // bila sensor terhalang
{
PORTB.0=1;
PORTB.1=0;
delay_ms(100);
NB : sensor di kaki Port A.7
PORTC=0b00000000;
delay_ms(200);
}
};
}

1. Buatlah tampilan ketika sensor terhalang motor dc berputar kekiri dan sensor terhalang lagi motor dc berputar kekanan

2. Buatlah motor dc ber henti berputar ketika sensor terhalang.

Email : fildesrobotik@yahoo.co.id, winnerparluhutan.blogspot.com

Teknik Komputer

AMIK BSI JAkarta

52

PRAKTEK VIII Aplikasi sensor dan seven segmen

Email : fildesrobotik@yahoo.co.id, winnerparluhutan.blogspot.com

Teknik Komputer

AMIK BSI JAkarta

53

TABEL LAYAR LCD

TABEL LAYAR LCD Tabel 1 : Konfigurasi Pin LCD No. Nama Pin Deskripsi 1 GND 0V
TABEL LAYAR LCD Tabel 1 : Konfigurasi Pin LCD No. Nama Pin Deskripsi 1 GND 0V

Tabel 1 : Konfigurasi Pin LCD

No. Nama Pin Deskripsi

1 GND

0V

2 VCC

+5V

3 VEE

Kontras LCD

4 RS

Register Select

5 1 = Read ; 0 = Write

6 Enable LCD, 1=enable

R/W

EN

7 D0

Data Bus 0

8 D1

Data Bus 1

9 D2

Data Bus 2

10 D3

Data Bus 3

11 D4

Data Bus 4

12 D5

Data Bus 5

13 D6

Data Bus 6

14 D7

Data Bus 7

15 Anoda Backlight LED

16 Katoda Backlight LED

Anoda

Katoda

S e la m a t D a ta n g D i K a
S e la m a t
D a ta n g
D i
K a m p u s
B IN A
S A R A N A
IN F O R M A T IK A
5 V
5 V
10K
GND
1
VCC
2
VEE
3
RS
4
P
(A0)
R/W
P
(A1)
5
E
P
(A2)
6
DB0
7
DB1
8
DB2
9
DB3
10
DB4
P
(A4)
11
DB5
12
P
(A5)
DB6
13
P
(A6)
DB7
P
(A7)
14
10K
BPL
15
GND
16

Gambar Skema Rangkaian LCD 2 x16

Email : fildesrobotik@yahoo.co.id, winnerparluhutan.blogspot.com

Teknik Komputer

AMIK BSI JAkarta

54

PRAKTEK X Aplikasi Tampilan Layar LCD 2 x 16

#include <mega16.h> #include <delay.h> #asm

.equ

lcd_port=0x1B

;PORTA

#endasm

#include <lcd.h> void main(void)

{

lcd_init(16);

lcd_gotoxy(0,0);

lcd_putsf("selamat datang");

delay_ms(1000);

lcd_gotoxy(0,1);

lcd_putsf("di AMIK BSI");

delay_ms(1000);

lcd_gotoxy(0,5);

lcd_putsf(" JURUSAN ");

delay_ms(1000);

lcd_gotoxy(0,8);

lcd_putsf("T.Komputer");

delay_ms(1000);

while (1)

{

// Place your code here

}

};

Email : fildesrobotik@yahoo.co.id, winnerparluhutan.blogspot.com

Teknik Komputer

AMIK BSI JAkarta

55

PRAKTEK XI Aplikasi Tampilan Layar LCD dengan Pus Button

#include <mega16.h> #include <delay.h> #asm .equ lcd_port=0x1B ;PORTA #endasm #include
#include <mega16.h>
#include <delay.h>
#asm
.equ
lcd_port=0x1B
;PORTA
#endasm
#include <lcd.h>
void main(void)
{
DDRC=0xFF;
PORTC=0x00;
DDRD=0X00;
PORTD=0XFF;
lcd_init(16);
lcd_gotoxy(0,0);
lcd_putsf("Selamat Datang");
delay_ms(800);
while (1)
{
if(PIND.7==1)
{
lcd_gotoxy(0,1);
PORTC=0xff;
lcd_putsf("= Di Lab Teknik I =");
delay_ms(800);
}
else
{
lcd_gotoxy(0,0);
PORTC=0x00;
lcd_putsf("Pratikum Mikro");
delay_ms(800);
lcd_gotoxy(0,1);
PORTC=0x00;
lcd_putsf("**Terima Kasih**");
delay_ms(800);
}
};
}

Email : fildesrobotik@yahoo.co.id, winnerparluhutan.blogspot.com

Teknik Komputer

AMIK BSI JAkarta

56

PRAKTEK XII Aplikasi Tampilan Layar LCD, Sensor dan Buzer

#include <mega16.h> #include <delay.h> #asm .equ lcd_port=0x1B ;PORTA #endasm #include
#include <mega16.h>
#include <delay.h>
#asm
.equ
lcd_port=0x1B
;PORTA
#endasm
#include <lcd.h>
void main(void)
{
DDRC=0xFF;
PORTC=0x00;
DDRD=0X00;
PORTD=0XFF;
lcd_init(16);
while (1)
{
if(PIND.7==0)
{
lcd_gotoxy(0,0);
lcd_putsf("Selamat Datang");
delay_ms(800);
lcd_gotoxy(0,1);
PORTC=0xff;
lcd_putsf("=Silahkan Masuk=");
delay_ms(800);
}
else
{
lcd_gotoxy(0,0);
PORTC=0x00;
lcd_putsf("Silahkan Keluar");
delay_ms(800);
lcd_gotoxy(0,1);
PORTC=0x00;
lcd_putsf("**Terima Kasih**");
delay_ms(800);
}
};
}

Email : fildesrobotik@yahoo.co.id, winnerparluhutan.blogspot.com

Teknik Komputer

AMIK BSI JAkarta

57

BAB VI

Penutup

Email : fildesrobotik@yahoo.co.id, winnerparluhutan.blogspot.com

Teknik Komputer

AMIK BSI JAkarta

58

Daftar Referensi

Email : fildesrobotik@yahoo.co.id, winnerparluhutan.blogspot.com

Teknik Komputer

AMIK BSI JAkarta

59