Modul Praktikum Mikroprosessor Dan Teknik Antarmuka

53
PRAKTIKUM MIKROPROSESSOR DAN TEKNIK ANTARMUKA PTI-494 PRODI S1 PENDIDIKAN TEKNIK INFORMATIKA PETUNJUK PRAKTIKUM DYAH LESTARI LABORATORIUM MIKROPROSESSOR JURUSAN TEKNIK ELEKTRO-FAKULTAS TEKNIK UNIVERSITAS NEGERI MALANG 2012

Transcript of Modul Praktikum Mikroprosessor Dan Teknik Antarmuka

Page 1: Modul Praktikum Mikroprosessor Dan Teknik Antarmuka

PRAKTIKUM MIKROPROSESSOR DAN TEKNIK ANTARMUKA

PTI-494

PRODI S1 PENDIDIKAN TEKNIK INFORMATIKA

PETUNJUK PRAKTIKUM

DYAH LESTARI

LABORATORIUM MIKROPROSESSOR

JURUSAN TEKNIK ELEKTRO-FAKULTAS TEKNIK

UNIVERSITAS NEGERI MALANG

2012

Page 2: Modul Praktikum Mikroprosessor Dan Teknik Antarmuka

PRAKTIKUM MIKROPROSESSOR DAN TEKNIK ANTARMUKA

PTI-494

PRODI S1 PENDIDIKAN TEKNIK INFORMATIKA

PETUNJUK PRAKTIKUM

Dosen Pembina

Dyah Lestari

Asisten Praktikum

Daniel Wijaya

Frebu Trilangga

Ahmad Ganjar Baiquni

Ian Hadinata

LABORATORIUM MIKROPROSESSOR

JURUSAN TEKNIK ELEKTRO-FAKULTAS TEKNIK

UNIVERSITAS NEGERI MALANG

2012

Page 3: Modul Praktikum Mikroprosessor Dan Teknik Antarmuka

i

KATA PENGANTAR

Puji syukur ke hadirat Tuhan YME, perbaikan-perbaikan petunjuk

praktikum yang sebelumnya merupakan salah satu titik lemah prodi telah selesai.

Perbaikan yang telah dilakukan harus menjadi satu sistem perbaikan yang

berkelanjutan.

Perubahan yang dilakukan dalam penyusunan materi Petunjuk Praktikum

ini dari Petunjuk Praktikum tahun lalu merupakan perubahan atau perbaikan

layout serta penambahan tugas-tugas yang bersifat eksplorasi.

Pada kesempatan ini, kami ingin menyampaikan terima kasih yang besar-

besarnya pada semua pihak yang telah terlibat dalam penyusunan petunjuk

praktikum ini. Secara khusus untuk dosen pembina Praktikum Mikroprosessor

dan Teknik Antarmuka, Ibu Dyah Lestari, yang sudah memberikan tenaga, pikiran

dan waktunya untuk perbaikan praktikum dalam Program Studi S1 Pendidikan

Teknik Informatika ini. Ucapan terima kasih juga disampaikan untuk dukungan

rekan-rekan teknisi dan asisten praktikum di Laboratorium Mikroprosessor. Akhir

kata, semoga semua usaha yang telah dilakukan berkontribusi pada

dihasilkannya lulusan Program Studi S1 Pendidikan Teknik Informatika yang

berkompeten.

Malang, September 2012

Tim Penyusun

Page 4: Modul Praktikum Mikroprosessor Dan Teknik Antarmuka

ii

DAFTAR ISI

Halaman KATA PENGANTAR ............................................................................................ i DAFTAR ISI ........................................................................................................ ii MODUL I ANTARMUKA MIKROKONTROLLER DENGAN LED ....................... 1 MODUL II ANTARMUKA MIKROKONTROLLER DENGAN TOGGLE SWITCH . 6 MODUL III ANTARMUKA MIKROKONTROLLER DENGAN SEVEN SEGMENT . 10 MODUL IV ANTARMUKA MIKROKONTROLLER DENGAN KEYPAD ............... 15 MODUL V ANTARMUKA MIKROKONTROLLER DENGAN LCD ...................... 20 MODUL VI MENGGUNAKAN ANALOG TO DIGITAL CONVERTER (ADC)

DALAM MIKROKONTROLLER ATMEGA8535 .............................. 26 MODUL VII MENGGUNAKAN INTERRUPT DALAM MIKROKONTROLLER

ATMEGA8535 ............................................................................. 34 MODUL VIII MENGGUNAKAN TIMER, COUNTER dan PWM DALAM MIKRO-

KONTROLLER ATMEGA8535 ...................................................... 39 DAFTAR RUJUKAN ........................................................................................... 49

Page 5: Modul Praktikum Mikroprosessor Dan Teknik Antarmuka

1

MODUL I

ANTARMUKA MIKROKONTROLER DENGAN LED

TUJUAN

Mengetahui dan memahami cara mengantarmukakan mikrokontroler dengan

rangkaian LED.

Mengetahui dan memahami bagaimana memrogram mikrokontroler untuk

menyalakan LED.

LED

Sebuah LED (Light Emitting Diode) adalah sebuah sumber cahaya yang terbuat dari

semikonduktor. Biasanya LED digunakan sebagai lampu indikator dalam beberapa piranti,

dan mulai banyak digunakan sebagai penerangan/lampu. Gambar 1 memperlihatkan bentuk

fisik LED dan simbol rangkaiannya.

(a) Bentuk fisik LED (b) Simbol elektronik

Untuk menyalakan sebuah LED perlu

rangkaian tambahan yang dapat dilihat pada

gambar disamping. Rangkaian tersebut berupa

sebuah transistor yang difungsikan sebagai

saklar dan dua buah resistor untuk pembatas

arus. Dalam modul I/O yang dipakai dalam

praktikum, kedelapan rangkaian LED tersebut

dihubungkan ke sebuah soket jumper bernama

OUTPUT.

Page 6: Modul Praktikum Mikroprosessor Dan Teknik Antarmuka

2

PERINTAH DASAR MENGELUARKAN DATA

Sebelum mulai menulis program dengan bahasa C, perlu diketahui bahwa

mikrokontroler ATmega8535 perlu diset isi register DDR dan PORT agar bisa digunakan

sebagaimana mestinya, seperti yang terlihat dalam Tabel 1.

Tabel 1 Konfigurasi Pengaturan Port I/O

DDR bit = 1 DDR bit = 0

PORT bit = 1 Output ; High Input; R pull up

PORT bit = 0 Output; Low Input, Floating

Untuk mengirim data byte dalam bentuk bilangan desimal ke PORTX (X=A, B, C, D) digunakan

statement

PORTX = desimal; PORTB = 128;

Untuk mengirim data byte dalam bentuk bilangan biner ke PORTX (X=A, B, C, D) digunakan

statement

PORTX = 0bdata; PORTB = 0b10101010;

Untuk mengirim data per bit ke PORTX.Y (X=A, B, C, D, dan Y=0, 1, 2 , 3, 4, 5, 6, 7) digunakan

statement

PORTX.Y = data; PORTB.1 = 0;

Dimana data bisa berupa 0 atau 1.

ALAT DAN BAHAN YANG DIGUNAKAN

1 set PC/Laptop yang sudah berisi program Code Vision dan Khazama

1 buah catu daya DC +5V

1 buah multimeter

1 buah ISP Downloader AVR

1 buah sistem minimum AVR

1 buah I/O

1 buah kabel printer USB

1 buah kabel pita hitam

Page 7: Modul Praktikum Mikroprosessor Dan Teknik Antarmuka

3

PROSEDUR

1. Rangkailah peralatan yang diperlukan seperti pada gambar dibawah. Hubungkan

soket jumper PORTB pada minimum system dengan soket jumper OUTPUT pada I/O.

I/OISP Downloader

Kabel USBKabel

downloader Minimum

system AVR

Kabel pita

hitam

Catu Daya + 5V

2. Buka program Code Vision AVR

3. Buatlah project baru dengan inisialisasi PORTA sebagai output (DDRA = FFH) dan

output value = 0 (PORTA=00H) sehingga pada program bagian inisialisasi PORTA

terlihat sebagai berikut:

PORTA=0x00;

DDRA=0xff;

4. Tambahkan file header

#include <delay.h>

5. Tuliskan dalam program utama sebagai berikut:

// Program LED1

PORTA=0x0f;

delay_ms(1000);

PORTA=0xf0;

delay_ms(1000);

6. Amati nyala LED dan gambarkan nyala LED tersebut.

7. Ulangi langkah 3-6 untuk program-program berikut:

//Program LED2

PORTA=0b00001111;

delay_ms(1000);

PORTA=0b11110000;

delay_ms(1000);

Page 8: Modul Praktikum Mikroprosessor Dan Teknik Antarmuka

4

//Program LED3

PORTA=0x55;

delay_ms(1000);

PORTA=0xaa;

delay_ms(1000);

//Program LED4

PORTA=0b11100111;

delay_ms(1000);

PORTA=0b11011011;

delay_ms(1000);

PORTA=0b10111101;

delay_ms(1000);

PORTA=0b01111110;

delay_ms(1000);

PORTA=0b10111101;

delay_ms(1000);

PORTA=0b11011011;

delay_ms(1000);

//Program LED5

PORTA=0b00000001; PORTA.2=1;

delay_ms(1000);

PORTA=0b00000010; PORTA.1=1;

delay_ms(1000);

PORTA=0b00000100;

delay_ms(1000);

PORTA=0b00001000;

delay_ms(1000);

PORTA=0b00010000;

delay_ms(1000);

PORTA=0b00100000;

delay_ms(1000);

PORTA=0b01000000;

delay_ms(1000);

PORTA=0b10000000;

delay_ms(1000);

Page 9: Modul Praktikum Mikroprosessor Dan Teknik Antarmuka

5

DATA HASIL PERCOBAAN

1. Tampilan nyala LED Program LED1

2. Tampilan nyala LED Program LED2

3. Tampilan nyala LED Program LED3

4. Tampilan nyala LED Program LED4

5. Tampilan nyala LED Program LED5

ANALISA DATA

1. Analisa Program LED1 – LED5!

2. Apakah persamaan dan perbedaan PROGRAM LED1 dan PROGRAM LED2?

3. Instruksi apa yang digunakan untuk mengeluarkan data ke LED?

4. Mengapa ada jeda waktu sekitar 1 detik antara tampilan LED yang pertama dengan

yang berikutnya?

Page 10: Modul Praktikum Mikroprosessor Dan Teknik Antarmuka

6

MODUL II

ANTARMUKA MIKROKONTROLER DENGAN TOGGLE SWITCH

TUJUAN

Mengetahui dan memahami cara mengantarmukakan mikrokontroler dengan

rangkaian input saklar toggle.

Mengetahui dan memahami bagaimana memrogram mikrokontroler untuk membaca

data input dari saklar toggle.

SAKLAR TOGGLE

Saklar toggle adalah salah satu saklar elektrik yang digerakkan secara manual oleh batang

mekanik. Saklar toggle tersedia dalam berbagai bentuk dan ukuran, serta digunakan dalam

berbagai aplikasi. Gambar dibawah memperlihatkan bentuk fisik dan symbol saklar toggle.

(b) Salah satu toggle switch (b) Simbol elektronik

Dalam modul I/O yang dipakai dalam

praktikum, saklar toggle yang digunakan diberi

rangkaian tambahan berupa rangkaian LED

untuk melihat secara langsung logika yang ada

pada saklar. Rangkaian LED sama dengan

rangkaian dalam Modul I. Kedelapan rangkaian

saklar tersebut dihubungkan ke sebuah soket

jumper bernama INPUT.

Page 11: Modul Praktikum Mikroprosessor Dan Teknik Antarmuka

7

PERINTAH DASAR MEMBACA DATA

Sebelum membaca data, perlu dibuat deklarasi variabel untuk data yang dimasukkan.

Data bisa bertipe char. Deklarasi variabel diletakkan di variabel lokal pada main

program.

void main (void)

{

//Declare your local variables here

unsigned char data_in;

Untuk membaca data byte ke PORTX (X=A, B, C, D) digunakan statement

data_in = PINX;

contoh: data_in = PINB;

Untuk membaca data bit ke PORTX.Y (X=A, B, C, D dan Y=0, 1, 2 , 3, 4, 5, 6, 7)

digunakan statement

data_in = PINX.Y;

contoh: data_in = PINB.1;

ALAT DAN BAHAN YANG DIGUNAKAN

1 set PC/Laptop yang sudah berisi program Code Vision dan Khazama

1 buah catu daya DC +5V

1 buah multimeter

1 buah ISP Downloader AVR

1 buah sistem minimum AVR

1 buah I/O

1 buah kabel printer USB

2 buah kabel pita hitam

PROSEDUR

1. Hubungkan soket jumper PORTB pada minimum system dengan soket jumper

OUTPUT pada I/O dan soket jumper PORTC pada minimum system dengan soket

jumper INPUT pada I/O

2. Buka program Code Vision AVR

Page 12: Modul Praktikum Mikroprosessor Dan Teknik Antarmuka

8

3. Buatlah project baru dengan inisialisasi PORTB sebagai output (DDRB = FFH) dan

output value = 0 (PORTB=00H), dan PORTC sebagai input (DDRC = 00H) dan resistor

pullup dihubungkan (PORTC=FFH) sehingga pada program bagian inisialisasi PORTB

dan PORTC terlihat sebagai berikut:

PORTB=0x00;

DDRB=0xff; //portb sebagai output, 0b11111111, nilai awal 0

PORTC=0xff;

DDRC=0x00; // portc sebagai input, 0b00000000, pull up

4. Tambahkan deklarasi variabel lokal dalam program utama

unsigned char data_in;

5. Tuliskan dalam program utama sebagai berikut:

// Program Saklar1

data_in=PINC; //baca saklar di PORTC

PORTB=data_in; //tampilkan logika saklar ke LED di PORTB

6. Pindahkan saklar sesuai tabel 2.1 dibawah, amati dan catat nyala LED.

Tabel 2.1 Program Saklar1

No. Saklar LED

7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0

1 0 0 0 0 0 0 0 1

2 0 0 0 0 0 0 1 1

3 0 0 0 0 0 1 0 1

4 0 0 0 0 1 0 0 1

5 0 0 0 1 0 0 0 1

6 0 0 1 0 0 0 0 1

7 0 1 0 0 0 0 0 1

8 1 0 0 0 0 0 0 1

9 1 1 1 1 1 1 1 1

7. Ulangi langkah 3-4 untuk program berikut:

//Program Saklar2

data_in = PINC.0; // baca saklar bit ke 0

PORTB.7 = data_in; // tampilkan logika saklar pada LED bit ke 7

8. Pindah saklar sesuai tabel 3.1 dibawah, Amati dan catat nyala LED. Tabel 3.1 Program Saklar2

No. Saklar LED

7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0

1 0 0 0 0 0 0 0 1

2 0 0 0 0 0 0 1 1

3 0 0 0 0 0 1 0 0

4 0 0 0 0 1 0 0 1

5 0 0 0 1 0 0 0 0

6 0 0 1 0 0 0 0 1

7 0 1 0 0 0 0 0 0

Page 13: Modul Praktikum Mikroprosessor Dan Teknik Antarmuka

9

9. Buat program untuk masing–masing algoritma berikut dengan menggunakan if :

a) Jika switch bit 0 berlogika 1 maka LED bit 4 menyala.

b) Jika switch bit 1 berlogika 1 maka LED bit 7 menyala.

10. Buat satu program untuk masing–masing algoritma berikut dengan menggunakan if-

else.

a) Jika switch bit 0 berlogika 1 maka LED bit 4 menyala.

b) Jika switch bit 1 berlogika 1 maka LED bit 7 menyala.

c) Jika switch bit 2 berlogika 1 maka LED menyala dengan konfigurasi

ON-OFF-ON-OFF-ON-OFF-ON-OFF (bit7-bit0).

d) Jika switch bit 3 berlogika 1 maka LED menyala dengan konfigurasi

OFF-ON-OFF-ON-OFF-ON-OFF-ON (bit7-bit0).

e) Jika switch bit 4 berlogika 1 maka LED menyala semua.

f) JIka switch bit 5 berlogika 1 maka LED mati semua.

g) Jika switch bit 6 berlogika 1 maka LED menyala berurutan mulai dari bit0 ke bit7

lalu kembali lagi ke bit0 dengan delay 1 detik

h) Jika switch bit 7 berlogika 1 maka LED akan menyala dengan nilai sama dengan

dua digit terakhir NIM anda.

DATA HASIL PERCOBAAN

1. Tabel 2.1

2. Tabel 3.1

3. Source code program pada percobaan langkah 9

4. Source code program pada percobaan langkah 10

ANALISA DATA

1. Analisa Program Saklar1 dan Saklar2

2. Instruksi apa yang digunakan untuk membaca data input?

3. Apakah perbedaan program yang menggunakan if dan if-else?

Page 14: Modul Praktikum Mikroprosessor Dan Teknik Antarmuka

10

MODUL III

ANTARMUKA MIKROKONTROLER DENGAN SEVEN SEGMEN

TUJUAN

Mengetahui dan memahami cara mengantarmukakan mikrokontroler dengan

rangkaian seven segment.

Mengetahui dan memahami bagaimana memrogram mikrokontroler untuk

menampilkan karakter ke seven segment.

SEVEN SEGMENT

Penampil seven segment adalah sebuah piranti penampil untuk menampilkan angka

desimal. Penampil seven segment banyak digunakan dalam jam digital, meter elektronik,

dan piranti elektronik yang lain. Gambar 3.1 memperlihatkan bentuk fisik dan layout dasar

penampil seven segment. Penampil seven segment terdiri atas 8 LED yang disusun seperti

dalam Gambar 3.1(b). Setiap LED diidentifikasi sebagai huruf a, b, c, d, e, f, g, yang dimulai

dari huruf a di sebelah atas. Di sebelah kanan terdapat satu LED tambahan yang digunakan

sebagai koma (dp).

(a) Penampil seven segment (b) Layout LED

Gambar 3.1 Seven segment

Untuk menampilkan sebuah karakter, minimal 2 LED harus dinyalakan. Tabel 3.1

memperlihatkan kode heksadesimal untuk menampilkan angka 0 sampai 9.

Dalam modul I/O yang dipakai dalam praktikum, seven segment yang digunakan ada

2 buah, semuanya bertipe common anoda. Kedua seven segment tersebut dimultipleks

sehingga data diperoleh dari satu kaki (D0-D7), sedangkan untuk menyalakannya digunakan

kaki kontrol yang berbeda (DO1 dan DO2). Rangkaian lengkap seven segment dapat dilihat

dalam Gambar 3.2.

Page 15: Modul Praktikum Mikroprosessor Dan Teknik Antarmuka

11

Tabel 3.1 Kode heksadesimal untuk angka 0-9

Digit gfedcba g f e d c b a

0 0x3F off on on on on on on

1 0x06 off off off off on on off

2 0x5B on off on on off on on

3 0x4F on off off on on on on

4 0x66 on on off off on on off

5 0x6D on on off on on off on

6 0x7D on on on on on off on

7 0x07 off off off off on on on

8 0x7F on on on on on on on

9 0x6F on on off on on on on

Gambar 3.2 Rangkaian penampil seven segment

Dalam Gambar 3.2, kaki a, b, c, d, e, f, g, dp dihubungkan ke soket jumper DATA 7S,

sedangkan kaki kontrol (DO1 dan DO2 dihubungkan dengan soket jumper I/P S KEY.

Page 16: Modul Praktikum Mikroprosessor Dan Teknik Antarmuka

12

ALAT DAN BAHAN YANG DIGUNAKAN

1 set PC/Laptop yang sudah berisi program Code Vision dan Khazama

1 buah catu daya DC +5V

1 buah multimeter

1 buah ISP Downloader AVR

1 buah sistem minimum AVR

1 buah I/O

1 buah kabel printer USB

2 buah kabel pita hitam

PROSEDUR

1. Hubungkan soket jumper PORTB pada minimum system dengan soket jumper

DATA7S pada I/O dan soket jumper PORTC pada minimum system dengan soket

jumper I/P S KEY pada I/O.

2. Buka program Code Vision AVR

3. Buatlah project baru dengan inisialisasi PORTB sebagai output (DDRB = FFH) dan

output value = 0 (PORTB=00H), dan PORTC.0-PORTC.3 sebagai input, PORTC.4-

PORTC.7 sebagai output (DDRC = F0H) dan (PORTC=F0H) sehingga pada program

bagian inisialisasi PORTB dan PORTC terlihat sebagai berikut:

PORTB=0x00;

DDRB=0xff; //portb sebagai output, 0b11111111

//untuk data 7s

PORTC=0xf0;

DDRC=0xf0; //portc sebagai input dan output, 0b11110000

//untuk kontrol DO1, DO2

4. Tuliskan dalam program utama sebagai berikut:

PROGRAM SEGMEN1

//Menampilkan angka 8 pada seven segmen sebelah kanan.

while (1)

{

PORTC.7=1; //nonaktifkan seven segment kiri

PORTC.6=0; //aktifkan seven segmen kanan

PORTB=0x7f; //tampilkan data angka 8

delay_ms(10);

}

Page 17: Modul Praktikum Mikroprosessor Dan Teknik Antarmuka

13

5. Amati nyala seven segment.

6. Ulangi langkah 3-5 untuk program berikut:

PROGRAM SEGMEN2

//Menampilkan angka 4 pada seven segmen sebelah kiri.

while (1)

{

PORTC.7=0; //aktifkan seven segment kiri

PORTC.6=1; //nonaktifkan seven segmen kanan

PORTB=0x66; //tampilkan data angka 4

delay_ms(10);

}

7. Gabungkan kedua program di atas dan lihat nyala seven segmen.

8. Ubah nilai delay untuk masing-masing seven segment menjadi 100 ms dan amati

tampilan seven segmen.

9. Ulangi langkah 3-5 untuk program berikut:

PROGRAM SEGMEN3

//Membuat counter 0-9 di segmen sebelah kanan

// Declare your global variables here

unsigned char bil[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; // Declare your local variables here

int kanan;

while (1)

{

// Place your code here

kanan=0;

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

{

PORTC.7=1;

PORTC.6=0;

PORTB=bil[kanan];

delay_ms(1000);

}

}

10. Ubah nilai delay untuk program SEGMEN3 menjadi 100 ms dan amati tampilan seven

segmen.

11. Buat program SEGMEN4 untuk menampilkan 00-99 di kedua seven segmen sehingga

kedua angka tampil bersamaan.

12. Buat program SEGMEN5 untuk menampilkan 00 hingga dua digit terakhir NIM anda

(counter up) lalu menghitung mundur dari dua digit NIM terakhir anda ke 00 (counter

down). (kedua seven segment menyala bersamaan).

Page 18: Modul Praktikum Mikroprosessor Dan Teknik Antarmuka

14

DATA HASIL PERCOBAAN

5. Program SEGMEN1

6. Program SEGMEN2

7. Gabungan SEGMEN1 dan SEGMEN2 delay 100ms

8. Program SEGMEN3

9. Program SEGMEN3 delay 100ms

10. Source code Program SEGMEN4

11. Source code Program SEGMEN5

ANALISA DATA

1. Analisa Program SEGMEN1 sampai SEGMEN5

2. Instruksi apa yang digunakan untuk mengeluarkan data ke seven segment?

3. Instruksi apa yang digunakan untuk mengontrol nyala seven segment?

4. Jika nilai delay pada Gabungan Program SEGMEN1 dan SEGMEN2 diperbesar, apa

yang terjadi pada tampilan seven segment?

5. Jika nilai delay pada program SEGMEN3 diperkecil, apa yang terjadi pada tampilan

seven segment?

Page 19: Modul Praktikum Mikroprosessor Dan Teknik Antarmuka

15

MODUL IV

ANTARMUKA MIKROKONTROLER DENGAN KEYPAD

TUJUAN

Mengetahui dan memahami cara mengantarmukakan mikrokontroler dengan

keypad.

Mengetahui dan memahami bagaimana memrogram mikrokontroler untuk membaca

masukan dari keypad.

KEYPAD

Keypad merupakan tombol push button yang disusun sebagai baris dan kolom sehingga

membentuk matriks. Keypad banyak digunakan sebagai piranti masukan dalam piranti

elektronik. Gambar 4.1 memperlihatkan bentuk fisik keypad. Keypad ini memiliki 16 tombol

yaitu 0,1,2,3,4,5,6,7,8,9,A,B,C, D,* dan #.

Gambar 4.1 Keypad 4x4

Dalam modul I/O yang di Dalam gambar 4.2 keypad dihubungkan ke PORTB

mikrokontroler dengan posisi baris (b1-b4) terhubung ke PORTB.0-PORTB.3 dan posisi kolom

(c1-c4) terhubung ke PORTB.4-PORTB.7. Sedangkan untuk mengetahui tombol apa yang

ditekan oleh user, 8 buah LED yang terdapat dalam MODUL I/O dihubungkan ke PORTC.

Gambar 4.2

Rangkaian keypad dan LED

Page 20: Modul Praktikum Mikroprosessor Dan Teknik Antarmuka

16

ALAT DAN BAHAN YANG DIGUNAKAN

1 set PC/Laptop yang sudah berisi program Code Vision dan Khazama

1 buah catu daya DC +5V

1 buah multimeter

1 buah ISP Downloader AVR

1 buah sistem minimum AVR

1 buah modul I/O

1 buah keypad

1 buah kabel printer USB

2 buah kabel pita hitam

PROSEDUR

1. Hubungkan soket jumper PORTB pada minimum system dengan soket jumper

KEYPAD dan soket jumper PORTC pada minimum system dengan soket jumper

OUTPUT pada I/O.

2. Buka program Code Vision AVR

3. Buatlah project baru dengan inisialisasi PORTB.0-PORTB.3 sebagai output dengan

kondisi awal berlogika HIGH dan PORTB.4-PORTB.7 sebagai input dengan pull-up

(DDRB = 0FH dan PORTB=FFH), serta PORTC sebagai output dan kondisi awal LOW

(DDRC = FFH dan PORTC=00H), sehingga pada program bagian inisialisasi PORTB dan

PORTC terlihat sebagai berikut:

PORTB=0xff; //0b11111111

DDRB=0x0f; //PORTB sebagai input dan output, 0b00001111

PORTC=0x00;

DDRC=0xff; //PORTC sebagai output

4. Deklarasikan fungsi keypad() dengan bilangan yang dikembalikan ke program utama

sebagai bilangan integer pada global variabel.

unsigned char keypad();

5. Tuliskan script berikut dalam program utama:

while (1)

{

PORTC=keypad();

//menampilkan hasil yang dikembalikan oleh fungsi ke LED

}

Page 21: Modul Praktikum Mikroprosessor Dan Teknik Antarmuka

17

6. Tambahkan fungsi berikut di bawah program utama (di luar fungsi void) :

unsigned char keypad()

{

PORTB = 0b11111110; //aktifkan baris1 (memberi logika 0 ke baris1) delay_ms(100);

if(PINB.7==0) return (10);

if(PINB.6==0) return (3);

if(PINB.5==0) return (2);

if(PINB.4==0) return (1);

//========================

PORTB = 0b11111101; //aktifkan baris2 delay_ms(100);

if(PINB.7==0) return (11);

if(PINB.6==0) return (6);

if(PINB.5==0) return (5);

if(PINB.4==0) return (4);

//========================

PORTB = 0b11111011; //aktifkan baris3 delay_ms(100);

if(PINB.7==0) return (12);

if(PINB.6==0) return (9);

if(PINB.5==0) return (8);

if(PINB.4==0) return (7);

//========================

PORTB = 0b11110111; //aktifkan baris4 delay_ms(100);

if(PINB.7==0) return (13);

if(PINB.6==0) return (15);

if(PINB.5==0) return (0);

if(PINB.4==0) return (14);

}

7. Tekan tombol keypad, amati nyala LED dan isi Tabel 4.1.

8. Ubah program utama untuk algoritma berikut:

a. Jika tombol 0 ditekan semua LED mati.

b. Jika tombol 1 ditekan semua LED menyala.

9. Buatlah satu program dengan algoritma sebagai berikut:

a. Jika tombol 0 ditekan LED bit 0 menyala.

b. Jika tombol 1 ditekan LED bit 1 menyala.

c. Jika tombol 2 ditekan LED bit 2 menyala.

d. Jika tombol 3 ditekan LED bit 3 menyala.

e. Jika tombol 4 ditekan LED bit 4 menyala.

f. Jika tombol 5 ditekan LED bit 5 menyala.

g. Jika tombol 6 ditekan LED bit 6 menyala.

h. Jika tombol 7 ditekan LED bit 7 menyala.

Page 22: Modul Praktikum Mikroprosessor Dan Teknik Antarmuka

18

i. Jika tombol 8 ditekan LED menyala sesuai gambar dibawah ini ber urutan dari atas kebawah dengan delay 1 detik. (Gunakan perulangan for ...)

j. Jika tombol 9 ditekan LED menyala sesuai gambar dibawah ini ber urutan dari

atas kebawah dengan delay 1 detik. (Gunakan perulangan for ...)

k. Jika tombol A ditekan LED bit 0,2,4,6 menyala dan bit 1,3,5,7 mati.

l. Jika tombol B ditekan LED bit 0,2,4,6, mati dan bit 1,3,5,7 menyala.

m. Jika tombol C ditekan ditekan algoritma k dan l dilaksanakan bergantian dengan

delay 1 detik.

n. Jika tombol D ditekan ditekan maka LED menyala menunjukkan nilai biner dua

digit terakhir NIM anda.

o. Jika tombol * semua LED mati.

p. Jika tombol # semua LED menyala.

LED Menyala

LED Mati

LED Menyala

LED Mati

Page 23: Modul Praktikum Mikroprosessor Dan Teknik Antarmuka

19

DATA HASIL PERCOBAAN

1. Tabel 4.1

2. Source code program pada langkah percobaan nomor 8

3. Source code program pada langkah percobaan nomor 9

ANALISA DATA

1. Analisa hasil percobaan pada tabel 4.1!

2. Instruksi apa yang digunakan untuk mebaca tombol keypad yang ditekan?

3. Instruksi yang digunakan untuk menyalakan LED sesuai keypad yang ditekan?

4. Buatlah flowchart instruksi pada nomor 3 dan jelaskan algoritmanya!

No Tombol keypad yang

ditekan Tampilan LED Nilai tampilan LED (dalam desimal)

1 0 0

2 1 1

3 2 2

4 3 3

5 4 4

6 5 5

7 6 6

8 7 7

9 8 8

10 9 9

11 A 10

12 B 11

13 C 12

14 D 13

15 * 14

16 # 15

Page 24: Modul Praktikum Mikroprosessor Dan Teknik Antarmuka

20

MODUL V

ANTARMUKA MIKROKONTROLER DENGAN PENAMPIL LCD (Liquid Crystal Display)

TUJUAN

Mengetahui dan memahami cara mengantarmukakan mikrokontroler dengan modul

penampil LCD.

Mengetahui dan memahami bagaimana memrogram mikrokontroler untuk

menampilkan karakter ke penampil LCD.

LCD M1632

Modul LCD M1632 seperti dalam Gambar 5.1 merupakan modul LCD dengan tampilan

16 x 2 baris dengan konsumsi daya yang rendah. Modul ini dilengkapi dengan mikrokontroler

yang didisain khusus untuk mengendalikan LCD. Mikrokontroler HD44780 buatan Hitachi

yang berfungsi sebagai pengendali LCD ini mempunyai CGROM (Character Generator Read

Only Memory), CGRAM (Character Generator Random Access Memory), dan DDRAM

(Display Data Random Access Memory).

Gambar 5.1 Modul LCD M1632

LCD ini memiliki 16 kaki, sebagaimana ditunjukkan dalam Tabel 6.1. Tabel 5.1 Konfigurasi Pin LCD M1632

No Kaki Deskripsi

1 Vss 0V (GND)

2 Vcc +5V

3 VLC LCD Contrast Voltage

4 RS Register Select; H: Data Input; L: Instruction Input

5 RD H:Read; L: Write

6 EN Enable Signal

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 V+BL Positive Backlight Voltage

16 V-BL Negative Backlight Voltage

Page 25: Modul Praktikum Mikroprosessor Dan Teknik Antarmuka

21

DDRAM

DDRAM adalah merupakan memori tempat karakter yang ditampilkan berada.

Contoh, untuk karakter ‘A’ atau 41H yang ditulis pada alamat 00, maka karakter tersebut

akan tampil pada baris pertama dan kolom pertama dari LCD. Apabila karakter tersebut

ditulis di alamat 40, maka karakter tersebut akan tampil pada baris kedua kolom

pertama dari LCD. Posisi ini ditunjukkan dalam Gambar 5.2.

Gambar 5.2 Posisi DDRAM

CGRAM

CGRAM adalah merupakan memori untuk menggambarkan pola sebuah karakter

di mana bentuk dari karakter dapat diubah-ubah sesuai keinginan. Namun memori ini

akan hilang saat power supply tidak aktif, sehingga pola karakter akan hilang.

CGROM

CGROM adalah merupakan memori untuk menggambarkan pola sebuah karakter

di mana pola tersebut sudah ditentukan secara permanen dari HD44780 sehingga

pengguna tidak dapat mengubah lagi. Namun karena ROM bersifat permanen, maka

pola karakter tersebut tidak akan hilang walaupun power supply tidak aktif. Pada

Gambar 6.3, tampak terlihat pola-pola karakter yang tersimpan dalam lokasi-lokasi

tertentu dalam CGROM. Pada saat HD44780 akan menampilkan data 41H ke DDRAM,

maka HD44780 akan mengambil data di alamat 41H (0100 0001) yang ada pada CGROM

yaitu pola karakter A.

Dalam Gambar 5.4 modul LCD dihubungkan ke PORTB mikrokontroler dimana kaki RS,

RD, EN terhubung ke PORTB.0-PORTB.2 dan D4, D5, D6, D7 terhubung ke PORTB.4-PORTB.7.

Page 26: Modul Praktikum Mikroprosessor Dan Teknik Antarmuka

22

Gambar 5.3 pola Karakter dalam CGROM

Gambar 5.4 Rangkaian LCD

Page 27: Modul Praktikum Mikroprosessor Dan Teknik Antarmuka

23

ALAT DAN BAHAN YANG DIGUNAKAN

1 set PC/Laptop yang sudah berisi program Code Vision dan Khazama

1 buah catu daya DC +5V

1 buah multimeter

1 buah ISP Downloader AVR

1 buah sistem minimum AVR

1 buah LCD

1 buah kabel printer USB

PROSEDUR

1. Rangkailah peralatan yang diperlukan seperti dalam Gambar 6.5. Hubungkan soket

jumper PORTB pada minimum system dengan soket jumper pada LCD.

LCDISP Downloader

Kabel USBKabel

downloader Minimum

system AVR

Kabel LCD

Gambar 5.5 Rangkaian antarmuka mikrokontroler dengan LCD

2. Buka program Code Vision AVR

3. Buatlah project baru. Pada saat mengeset chip dan clock, set juga bagian LCD seperti

Gambar 5.6. Kemudian simpanlah file tersebut.

Gambar 5.6 Setting LCD

Page 28: Modul Praktikum Mikroprosessor Dan Teknik Antarmuka

24

4. Blok berikut merupakan bagian inisialisasi LCD pada awal program.

// LCD module initialization lcd_init(16);

5. Tuliskan script berikut dalam program utama:

while (1)

{

lcd_gotoxy(0,0); //menempatkan kursor di kolom 0 baris 0

lcd_putchar(0x41); //menampilkan string ‘A’

}

6. Tambahkan delay dalam langkah 6:

while (1)

{

lcd_gotoxy(0,0); //menempatkan kursor di kolom 0 baris 0

lcd_putchar(0x41);//menampilkan string ‘A’

delay_ms(1000);

lcd_clear();

lcd_gotoxy(0,1);

lcd_putchar(0x30);

delay_ms(1000);

}

7. Tuliskan script berikut dalam program utama:

while (1)

{

lcd_gotoxy(0,0);//menempatkan kursor di baris 0 kolom 0

lcd_putsf("Saya belajar");//menampilkan string “Saya belajar”

}

8. Ganti script pada langkah 8 menjadi seperti berikut:

while (1)

{

lcd_gotoxy(0,1); //menempatkan kursor di kolom 0 baris 1

lcd_putsf("Antarmuka LCD");//menampilkan string “Antarmuka LCD”

}

9. Gabungkan script pada langkah 8 dan 9 menjadi seperti berikut: while (1)

{

lcd_gotoxy(0,0); //menempatkan kursor di baris 0 kolom 0

lcd_putsf("Saya belajar");//menampilkan string “Saya belajar”

lcd_gotoxy(0,1);//menempatkan kursor di baris 1 kolom 0

lcd_putsf("Antarmuka LCD");//menampilkan string “Antarmuka LCD”

}

10. Buatlah tampilan nama anda berjalan dari kiri ke kanan pada baris 0 dan NIM anda

berjalan dari kanan ke kiri pada baris 1 (tampidlan di baris 0 dan 1 muncul secara

bersamaan).

11. Ubahlah nilai dalam lcd_init(16) menjadi lcd_init(40) dan lihat perbedaannya.

Page 29: Modul Praktikum Mikroprosessor Dan Teknik Antarmuka

25

DATA HASIL PERCOBAAN

1. Tampilan LCD pada langkah percobaan nomor 6

2. Tampilan LCD pada langkah percobaan nomor 7

3. Tampilan LCD pada langkah percobaan nomor 8

4. Tampilan LCD pada langkah percobaan nomor 9

5. Tampilan LCD pada langkah percobaan nomor 10

6. Source code program pada langkah percobaan nomor 11

7. Tampilan LCD pada langkah percobaan nomor 12

ANALISA DATA

1. Analisa data hasil percobaan pada langkah percobaan nomor 6 sampai dengan nomor

10!

2. Jelaskan program anda pada langkah percobaan nomor 11!

3. Apakah fungsi sintaks lcd_init() dan jelaskan perbedaan antara menggunakan

lcd_init(16) menjadi lcd_init(40)?

Page 30: Modul Praktikum Mikroprosessor Dan Teknik Antarmuka

26

MODUL VI

MENGGUNAKAN ANALOG TO DIGITAL CONVERTER (ADC)

DALAM MIKROKONTROLLER ATMEGA8535

TUJUAN

Mengetahui dan memahami cara menggunakan ADC yang ada di dalam

mikrokontroler.

Mengetahui dan memahami bagaimana memrogram mikrokontroler untuk

mengonversi data analog menjadi data digital.

ANALOG TO DIGITAL CONVERTER (ADC)

Penggunaan ADC sebagai pengonversi data analog menjadi data digital merupakan

sesuatu hal yang diperlukan jika data yang masuk ke dalam mikrokontroler, biasanya data

dari sensor berupa sinyal analog.

Fitur ADC dalam ATMega8535 adalah sebagai berikut:

Resolusi 10 bit.

Waktu konversi 65-260 μs.

Input 8 kanal.

Input ADC 0-5Vcc.

3 Mode pemilihan tegangan referensi.

Ada beberapa langkah yang harus dilakukan untuk inisialisasi ADC, yaitu penentuan

clock, tegangan referensi, format data output dan mode pembacaan. Inisialisasi ini dilakukan

pada register-register berikut:

ADMUX (ADC Multiplexer Selection Register)

ADMUX merupakan register yang mengatur tegangan referensi yang digunakan ADC,

format data output dan saluran ADC.

Page 31: Modul Praktikum Mikroprosessor Dan Teknik Antarmuka

27

REFS0-1 (Reference Selection Bits)

REFS0-1 adalah bit-bit pengatur mode tegangan referensi ADC.

ADLAR (ADC Left Adjust Result)

ADLAR adalah bit keluaran ADC. Jika ADC telah selesai konversi, maka data ADC akan

diletakkan di 2 register, yaitu ADCH dan ADCL dengan format sesuai ADLAR.

Format data ADC jika ADLAR=0

Format data ADC jika ADLAR=1

Page 32: Modul Praktikum Mikroprosessor Dan Teknik Antarmuka

28

MUX0-4 (Analog Channel and Gain Selection Bits)

MUX0-4 adalah bit-bit pemilih saluran pembacaan ADC.

ADCSRA (ADC Control and Status Register A)

ADCSRA adalah register 8 bit yang berfungsi untuk melakukan manajemen sinyal kontrol dan

status ADC.

ADEN (ADC Enable)

ADEN merupakan bit pengatur aktivasi ADC. Jika bernilai 1 maka ADC akan aktif.

Page 33: Modul Praktikum Mikroprosessor Dan Teknik Antarmuka

29

ADCS (ADC Start Conversion)

ADCS merupakan bit penanda dimulainya konversi ADC. Selama konversi berlogika 1

dan akan berlogika 0 jika selesai konversi.

ADATE (ADC Auto Trigger Enable)

ADATE merupakan bit pengatur aktivasi picu otomatis. Jika bernilai 1 maka konversi

ADC akan dimulai pada saat tepi positif pada sinyal trigger yang digunakan.

ADIF (ADC Interrupt Flag)

ADIF merupakan bit penanda akhir konversi ADC. Jika bernilai 1 konversi ADC pada

suatu saluran telah selesai dan siap diakses.

ADIE (ADC Interrupt Enable)

ADIE merupakan bit pengatur aktivasi interupsi. Jika bernilai 1 maka interupsi

penandaan telah selesai. Konversi ADC diaktifkan.

ADPS0-2 (ADC Prescaler Select Bit)

ADPS0-2 merupakan bit pengatur clock ADC.

SFIOR (Special Function IO Register)

SFIOR adalah register 8 bit yang mengatur sumber pemicu ADC. Jika bit ADATE pada register

ADCSRA bernilai 0 maka ADTS0-2 tidak berfungsi.

Page 34: Modul Praktikum Mikroprosessor Dan Teknik Antarmuka

30

Rangkaian yang digunakan untuk mempelajari ADC dapat dilihat dalam Gambar dibawah.

Rangkaian ini merupakan rangkaian pembagi tegangan dimana tegangan keluaran dapat

dihitung dengan rumus:

Vout = R2 x Vcc R1+R2

ALAT DAN BAHAN YANG DIGUNAKAN

1 set PC/Laptop yang sudah berisi program Code Vision dan Khazama

1 buah catu daya DC +5V

1 buah multimeter

1 buah ISP Downloader AVR

1 buah sistem minimum AVR

1 buah I/O

1 buah kabel printer USB

1 buah kabel pita hitam

1 buah potensiometer

Page 35: Modul Praktikum Mikroprosessor Dan Teknik Antarmuka

31

PROSEDUR

1. Rangkailah peralatan yang diperlukan seperti dalam Gambar diatas. Hubungkan soket

jumper PORTC pada minimum system dengan soket jumper pada OUTPUT LED. Vout

pada rangkaian potensiometer dihubungkan pada PORTA.0 (ADC channel 0).

I/OISP Downloader

Kabel USBKabel

downloader Minimum

system AVR

Kabel hitam

Potensio

meter

2. Buka program Code Vision AVR

3. Buatlah project baru. Pada saat mengeset chip dan clock, set juga bagian PORTC

untuk LED dan ADC seperti Gambar 7.3. Kemudian simpanlah file tersebut.

Gambar 7.3 Setting LED dan ADC

4. Perhatikan blok program berikut. Arti dari blok instruksi tersebut adalah setting ADC

di PORTA dan inisialisasi ADC.

#define ADC_VREF_TYPE 0x60

// Read the 8 most significant bits

// of the AD conversion result

unsigned char read_adc(unsigned char adc_input)

{

ADMUX=adc_input | (ADC_VREF_TYPE & 0xff);

// Delay needed for the stabilization of the ADC input voltage

delay_us(10);

Page 36: Modul Praktikum Mikroprosessor Dan Teknik Antarmuka

32

// Start the AD conversion

ADCSRA|=0x40;

// Wait for the AD conversion to complete

while ((ADCSRA & 0x10)==0);

ADCSRA|=0x10;

return ADCH;

}

// ADC initialization

// ADC Clock frequency: 31.250 kHz

// ADC Voltage Reference: AVCC pin

// ADC High Speed Mode: Off

// ADC Auto Trigger Source: Free Running

// Only the 8 most significant bits of

// the AD conversion result are used

ADMUX=ADC_VREF_TYPE & 0xff;

ADCSRA=0xA7;

SFIOR&=0x0F;

5. Blok berikut merupakan deklarasi variabel hasil konversi ADC.

// Declare your local variables here

unsigned char adcdt;

6. Tuliskan script berikut dalam program utama:

while (1)

{ // Place your code here adcdt=read_adc(0); //mengambil hasil konversi PORTC=adcdt; //ditampilkan ke LED } }

7. Ukur tegangan potensiometer (kaki tengah) sebesar 0-5V (sesuai tabel).

8. Lepas probe AVO Meter lalu perhatikan dan catat nyala LED dan konversi nilai dalam

desimal.

9. Hitung perhotungan nilai digital dalam desimal dengan rumus berikut:

Vdigital = Vukur / Vcc *255

Contoh: misal tegangan analog yang diukur 1 V, maka tegangan digital adalah:

V = 1/5 *255 = 51 desimal, atau 33H atau 00110011B

Page 37: Modul Praktikum Mikroprosessor Dan Teknik Antarmuka

33

DATA HASIL PERCOBAAN

Tabel ADC

No Tegangan analog (0-5V)

Tampilan LED (bit7-bit0)

Nilai digital LED (decimal)

Nilai digital perhitungan (desimal)

1 0

2 0.5

3 1

4 1.5

5 2

6 2.5

7 3

8 3.5

9 4

10 4.5

11 5

ANALISA DATA

1. Analisa data hasil pada Tabel ADC

Page 38: Modul Praktikum Mikroprosessor Dan Teknik Antarmuka

34

MODUL VII

MENGGUNAKAN INTERRUPT DALAM MIKROKONTROLLER ATMEGA8535

TUJUAN

Mengetahui dan memahami cara menggunakan INTERRUPT yang ada di dalam

mikrokontroler.

Mengetahui dan memahami bagaimana memrogram mikrokontroler untuk

menjalankan interupsi pada saat program utama dijalankan

INTERUPSI

Kondisi di mana pada saat program utama dieksekusi/dikerjakan oleh CPU kemudian

tiba-tiba berhenti untuk sementara waktu karena ada rutin lain yang harus ditangani terlebih

dahulu oleh CPU. Setelah selesai mengerjakan rutin tersebut, CPU kembali mengerjakan

instruksi pada program utama.

PORT yang berfungsi sebagai Interrupt

PORTD.2 (PD2) External Interrupt 0 Input (INT0)

PORTD.3 (PD3) External Interrupt 1 Input (INT1)

PORTB.2 (PB2) External Interrupt 2 Input (INT2)

Register-register Interrupt

Page 39: Modul Praktikum Mikroprosessor Dan Teknik Antarmuka

35

a. MCU Control Register-MCUCR

b. MCU Control and Status Register-MCUCSR

ISC2 = 0, a falling edge on INT2 activates the interrupt

ISC2 = 1, a rising edge on INT2 activates the interrupt

Lebar pulsa minimum: 50 ns

c. Status Register-SREG

Page 40: Modul Praktikum Mikroprosessor Dan Teknik Antarmuka

36

d. General Interrupt Control Register-GICR

Bit 7 - INT1:eksternal interrupt request 1 enable

Bit 6 – INT0 :eksternal interrupt request 0 enable

Bit 5 – INT2 : eksternal interrupt request 2 enable

e. General Interrupt Flag Register-GIFR

Bit 7 - INT1:eksternal interrupt flag 1 enable

Bit 6 – INT0 :eksternal interrupt flag 0 enable

Bit 5 – INT2 : eksternal interrupt flag 2 enable

ALAT DAN BAHAN YANG DIGUNAKAN

1 set PC/Laptop yang sudah berisi program Code Vision dan Khazama

1 buah catu daya DC +5V

1 buah multimeter

1 buah ISP Downloader AVR

1 buah sistem minimum AVR

1 buah I/O

1 buah kabel printer USB

2 buah kabel pita hitam

Page 41: Modul Praktikum Mikroprosessor Dan Teknik Antarmuka

37

PROSEDUR

1. Hubungkan PORTC pada minimum system dengan soket jumper OUTPUT pada trainer

dan PORTD.2 (INT0) dari minimum sistem ke soket IS1 pada trainer.

2. Buka program Code Vision AVR

3. Buatlah project baru. Pada tap External IRQ centang INT0 lalu pilih Mode Falling edge

dan set PORTC sebagai OUTPUT

4. Ketik program interrupt pada blok Interrupt seperti sintaks dibawah ini.

#include <mega8535.h>

#include <delay.h>

// External Interrupt 0 service routine

interrupt [EXT_INT0] void ext_int0_isr(void)

// disini hanya menggunakan 1 interrup saja

{

// Place your code here

PORTC = 0b10101010;

delay_ms(1000);

PORTC = 0b11111111;

delay_ms(1000);

}

5. Ketik dalam program utama (main program)

while (1) // program utama

{

PORTC = 0b11110000;

}

6. Amati nyala LED sebelum dan sesudah anda menekan tombol interupsi

7. Ulangi langkah 3-6 untuk mode interupsi (Interrupt Sense Control) Rising Edge, Any

Change dan Low Level.

Page 42: Modul Praktikum Mikroprosessor Dan Teknik Antarmuka

38

DATA HASIL PERCOBAAN

Tabel Interupsi

No Mode Interupsi

Program yang dijalankan (Interrupt / Main Program)

Saat tombol IS1 belum ditekan

(Low)

Saat tombol IS1 ditekan dan ditahan

(Raising)

Saat tombol IS1 dilepaskan

(Falling)

1 Falling Edge

2 Rising Edge

3 Any Change

4 Low Level

ANALISA DATA

1. Analisa data hasil pada Tabel Interupsi

Page 43: Modul Praktikum Mikroprosessor Dan Teknik Antarmuka

39

MODUL VIII

MENGGUNAKAN TIMER, COUNTER dan PWM

DALAM MIKROKONTROLLER ATMEGA8535

TUJUAN

Mahasiswa mampu menggunakan fitur timer/counter mikrokontroler.

Mahasiswa mampu menggunakan mikrokontroler untuk membuat timer.

Mahasiswa mampu menggunakan mikrokontroler untuk menghitung banyaknya

pulsa yang masuk.

TIMER/COUNTER

Timer/counter dalam Atmega8535 ada 3 yaitu:

Timer/counter 0

Timer/counter 1

Timer/counter 2

Interrupt timer berasal dari dua sumber yaitu:

Overflow interrupt, dimana interrupt terjadi jika TCNTn mencapai 255 untuk timer 8

bit dan 65535 untuk timer 16 bit.

Compare match interrupt, dimana interrupt terjadi jika nilai OCR sama dengan

TCNTn.

Pada dasarnya Timer hanya menghitung pulsa clock. Frekuensi pulsa clock yang

dihitung tersebut bisa sama dengan frekuensi kristal yang digunakan atau dapat diperlambat

menggunakan prescaler dengan faktor 8, 64, 256, atau 1024.

Contohnya jika sebuah sistem mikrokontroler menggunakan kristal dengan frekuensi 4 MHz

dan timer yang digunakan adalah timer 8 bit, maka maksimum waktu timer yang bisa

dihasilkan adalah:

𝑡𝑀𝐴𝑋 = 1

𝑓𝐶𝐿𝐾 𝑥 (𝐹𝐹ℎ + 1)

= 1/4.000.000 x (255+1)

= 0,000064 s

Page 44: Modul Praktikum Mikroprosessor Dan Teknik Antarmuka

40

Untuk menghasilkan timer yang lebih lama dapat digunakan prescaler, misalnya

1024, maka maksimum waktu timer yang bisa dihasilkan adalah:

𝑡𝑀𝐴𝑋 = 1

𝑓𝐶𝐿𝐾 𝑥 (𝐹𝐹ℎ + 1) 𝑥 𝑁

= 1/4.000.000 x (255+1) x 1024

= 0,065536 s

Untuk menghitung nilai TCNT supaya menghasilkan waktu timer tertentu dipergunakan

rumus berikut:

𝑇𝐶𝑁𝑇 = (1 + 𝐹𝐹ℎ) – (𝑇𝑡𝑖𝑚𝑒𝑟 𝑥 𝑓𝐶𝐿𝐾)

𝑁

Dimana:

TCNT = nilai Timer (Heksadesimal)

fCLK = Frekuensi clock kristal yang digunakan (Hz)

Ttimer = Waktu timer yang diinginkan (detik)

N = prescaler (1,8,64,256,1024)

1+FFh = nilai maksimum timer adalah FFh dan overflow saat FFh ke 00h

ALAT DAN BAHAN YANG DIGUNAKAN

1 set PC/Laptop yang sudah berisi program Code Vision dan Khazama

1 buah catu daya DC +5V

1 buah multimeter

1 buah ISP Downloader AVR

1 buah sistem minimum AVR

1 buah I/O

1 buah kabel printer USB

2 buah kabel pita hitam

Page 45: Modul Praktikum Mikroprosessor Dan Teknik Antarmuka

41

PROSEDUR

TIMER

1. Rangkailah peralatan yang diperlukan seperti gambar dibawah. Hubungkan soket

jumper PORTC pada minimum system dengan soket jumper pada OUTPUT Trainer

I/O.

I/OISP Downloader

Kabel USBKabel

downloader Minimum

system AVR

Kabel hitam

2. Buka program Code Vision AVR

3. Buatlah project baru. Pada saat mengeset chip dan clock, set juga bagian PORTC

untuk LED serta Timer seperti gambar dibawah. Kemudian simpanlah file tersebut.

Nilai Clock Value adalah Nilai Clock Frequency Chip (Fclock) dibagi dengan

prescaller dimana prescaller tersebuat bernilai 1, 8, 64, 256, atau 1024

Contoh jika nilai Fclock = 4 Mhz maka jika kita ingin menggunakan prescaller 1024

setting Clock Value nya adalah 4Mhz/1024=3,906 Khz

4. Perhatikan blok program berikut.

// Timer/Counter 0 initialization

// Clock source: System Clock

// Clock value: Timer 0 Stopped

// Mode: Normal top=FFh

// OC0 output: Disconnected

TCCR0=0x05;

TCNT0=0x50;

OCR0=0x00;

Page 46: Modul Praktikum Mikroprosessor Dan Teknik Antarmuka

42

// Timer(s)/Counter(s) Interrupt(s) initialization TIMSK=0x01; // Global enable interrupts #asm("sei")

5. Tuliskan script berikut dalam interrupt:

// Timer 0 overflow interrupt service routine

interrupt [TIM0_OVF] void timer0_ovf_isr(void) {

// Reinitialize Timer 0 value TCNT0=0x50;

// Place your code here

if (PINC==0)

{PORTC=0xFF;}

else

{PORTC=0x00;}

}

6. Perhatikan dan catat nyala LED.

7. Ubah nilai TCCR0 menjadi 0x04 dan 0x03. Perhatikan perbedaan nyala LED dengan

nilai TCCR yang berbeda-beda.

8. Ulangi langkah 3-7 untuk Timer2 dengan TCNT=0x80;

9. Buat Project baru untuk Timer1 dengan TCNT = 0xd5d0

10. Perhatikan blok berikut

// Timer/Counter 1 initialization

// Clock source: System Clock

// Clock value: 3,906 kHz

// Mode: Normal top=0xFFFF

// OC1A output: Discon.

// OC1B output: Discon.

// Noise Canceler: Off

// Input Capture on Falling Edge

// Timer1 Overflow Interrupt: On

Page 47: Modul Praktikum Mikroprosessor Dan Teknik Antarmuka

43

// Input Capture Interrupt: Off

// Compare A Match Interrupt: Off

// Compare B Match Interrupt: Off

TCCR1A=0x00;

TCCR1B=0x05;

TCNT1H=0xD5;

TCNT1L=0xD0;

ICR1H=0x00;

ICR1L=0x00;

OCR1AH=0x00;

OCR1AL=0x00;

OCR1BH=0x00;

OCR1BL=0x00;

// Timer(s)/Counter(s) Interrupt(s) initialization

TIMSK=0x04;

// Global enable interrupts

#asm("sei")

11. Tuliskan script berikut dalam blok interrupt

// Timer1 overflow interrupt service routine

interrupt [TIM1_OVF] void timer1_ovf_isr(void)

{

// Reinitialize Timer1 value

TCNT1H=0xD5D0 >> 8;

TCNT1L=0xD5D0 & 0xff;

// Place your code here

if (PINC==0)

{PORTC=0xFF;}

else

{PORTC=0x00;}

}

12. Ubah nilai TCCR1B sehingga menjadi 0x04, 0x03, 0x02, 0x01. Perhatikan perbedaan

nyala LED dengan nilai TCCR yang berbeda-beda.

13. Menggunakan Timer 16bit (Timer1) dengan nilai TCCR1B=0x05, Ubah nilai TCNT

sehingga menghasilkan timer 1 detik.

Page 48: Modul Praktikum Mikroprosessor Dan Teknik Antarmuka

44

COUNTER

1. Rangkailah peralatan yang diperlukan seperti dalam gambar dibawah. Hubungkan

soket jumper PORTC pada minimum system dengan soket jumper pada OUTPUT LED.

Hubungkan kaki IS1 ke PORTB.0 (T0).

I/OISP Downloader

Kabel USBKabel

downloader Minimum

system AVR

Kabel hitam

2. Buka program Code Vision AVR

3. Buatlah project baru. Pada saat mengeset chip dan clock, set juga bagian PORTC

untuk LED serta Timer seperti gambar dibawah. Kemudian simpanlah file tersebut.

4. Perhatikan blok program berikut.

// Timer/Counter 0 initialization

// Clock source: T0 pin Falling Edge

// Mode: Normal top=FFh

// OC0 output: Disconnected TCCR0=0x06;

TCNT0=0xFB;

OCR0=0x00;

// Timer(s)/Counter(s) Interrupt(s) initialization

TIMSK=0x01;

// Global enable interrupts #asm("sei")

5. Tuliskan script berikut dalam interrupt:

Page 49: Modul Praktikum Mikroprosessor Dan Teknik Antarmuka

45

// Timer 0 overflow interrupt service routine

interrupt [TIM0_OVF] void timer0_ovf_isr(void)

{

// Reinitialize Timer 0 value

TCNT0=0xFB;

// Place your code here

if (PINC==0)

{PORTC=0xFF;}

else

{PORTC=0x00;}

}

6. Tekan push button IS1 Perhatikan dan catat nyala LED.

7. Lakukan hal serupa dengan Timer dengan mengganti nilai TCNT0 menjadi 0xFC dan

0xF0.

Page 50: Modul Praktikum Mikroprosessor Dan Teknik Antarmuka

46

PULSE WIDTH MODULATION (PWM)

1. Rangkailah peralatan yang diperlukan seperti dalam Gambar 1.2. Hubungkan soket

jumper PORTC pada minimum system dengan soket jumper pada OUTPUT LED.

Hubungkan kaki IS1 ke PORTB.0 (T0).

I/OISP Downloader

Kabel USBKabel

downloader Minimum

system AVR

Kabel hitam

2. Buka program Code Vision AVR

3. Buatlah project baru. Pada saat mengeset chip dan clock, set juga bagian PORTB

untuk LED serta Timer. Kemudian simpanlah file tersebut.

4. Klik Yes jika muncul dialog diatas

5. Perhatikan blok program berikut.

Page 51: Modul Praktikum Mikroprosessor Dan Teknik Antarmuka

47

// Port B initialization

// Func7=In Func6=In Func5=In Func4=In Func3=Out Func2=In Func1=In Func0=In

// State7=T State6=T State5=T State4=T State3=0 State2=T State1=T State0=T

PORTB=0x00;

DDRB=0x08;

// Timer/Counter 0 initialization

// Clock source: System Clock

// Clock value: 4000,000 kHz

// Mode: Phase correct PWM top=FFh

// OC0 output: Non-Inverted PWM

TCCR0=0x65;

TCNT0=0x00;

OCR0=0x50;

6. Jalankan program dan lihat nyala LED di PORTB.3.

7. Lihat sinyal di kaki OC0 (PORTB.3) dengan osiloskop.

8. Ulang langkah 3-6 jika diubah PWM mode Fast PWM.

DATA HASIL PERCOBAAN

TIMER

No TIMER TCCRx TCNTx Kondisi Led Delay

1 Timer0 0x05 0x50

2 Timer0 0x04 0x50

3 Timer0 0x03 0x50

6 Timer2 0x05 0x80

7 Timer1 0x05 0xD5D0

8 Timer1 0x04 0xD5D0

9 Timer1 0x03 0xD5D0

10 Timer1 0x02 0xD5D0

11 Timer1 0x01 0xD5D0

8 Timer1 00000000 11111111 1 s

Counter

No TIMER TCCRx TCNTx Jumlah Penekanan Tombol IS1 Hingga

LED Menyala

Jumlah Penekanan Tombol IS1 Hingga

LED Mati

1 Timer0 0x06 0xFB

2 Timer0 0x06 0xFC

3 Timer0 0x06 0xF0

PWM

1. Nyala LED dan gambar sinyal kaki OC0 (PORTB.3) untuk mode Phase Correct PWM

2. Nyala LED dan gambar sinyal kaki OC0 (PORTB.3) untuk mode Fast PWM

Page 52: Modul Praktikum Mikroprosessor Dan Teknik Antarmuka

48

ANALISA DATA

TIMER

1. Analisa data hasil pada tabel Timer dengan menggunakan rumus :

𝑇𝑡𝑖𝑚𝑒𝑟0 =((1 + 255) − 𝑇𝐶𝑁𝑇0) ∙ 𝑃𝑟𝑒𝑠𝑐𝑎𝑙𝑒𝑟

𝑓𝑐𝑙𝑜𝑐𝑘

𝑇𝑡𝑖𝑚𝑒𝑟1 =((1 + 65535) − 𝑇𝐶𝑁𝑇1) ∙ 𝑃𝑟𝑒𝑠𝑐𝑎𝑙𝑒𝑟

𝑓𝑐𝑙𝑜𝑐𝑘

Hitung Nilai Ttimer :

TIMER TCCRx TCNTx Fclock (Hz) Prescaler 8 / 16 bit T (s) Keterangan

Timer0 0x05 0x50 4.000.000 1.024 255 0,05 Delay tidak terlihat

Timer0 0x04 0x50

Timer0 0x03 0x50

Timer2 0x05 0x80

Timer1 0x05 0xD5D0

Timer1 0x04 0xD5D0

Timer1 0x03 0xD5D0

Timer1 0x02 0xD5D0

Timer1 0x01 0xD5D0

2. Bagaimana anda mendapatkan timer dengan Ttimer 1 detik dengan menggunakan

Timer1?

COUNTER

1. Analisa data hasil pada tabel counter

PWM

1. Analisa data hasil dari output PWM pada LED dan gambar sinyal

Page 53: Modul Praktikum Mikroprosessor Dan Teknik Antarmuka

49

DAFTAR PUSTAKA

Andrianto, Heri. 2007. Pemrograman Mikrokontroler AVR Atmega 16. Jakarta: Informatika.

Atmel Corporation. Atmega 8535 Datasheet (Complete).

Gadre, Dhananjay V. 2001. Programming and Customizing the AVR Microcontroller. New York: Mc

Graw Hill.

Ibrahim, Dogan. 2002. Microcontroller Based Temperature Monitoring & Control. Newnes

Heryanto, M Ary. 2007. Pemrograman Bahasa C untuk Mikrokontroler Atmega 8535. Yogyakarta;

Penerbit Andi.

John Crisp. Introduction to Microprocessors and microcontrollers. OXFORD: Newnes