• Tidak ada hasil yang ditemukan

PRAKTIKUM MIKROPROSESSOR PTE-408 PRODI S1 PENDIDIKAN TEKNIK ELEKTRO PETUNJUK PRAKTIKUM DYAH LESTARI

N/A
N/A
Protected

Academic year: 2021

Membagikan "PRAKTIKUM MIKROPROSESSOR PTE-408 PRODI S1 PENDIDIKAN TEKNIK ELEKTRO PETUNJUK PRAKTIKUM DYAH LESTARI"

Copied!
49
0
0

Teks penuh

(1)

PTE-408

PRODI S1 PENDIDIKAN TEKNIK ELEKTRO

PETUNJUK PRAKTIKUM

DYAH LESTARI

LABORATURIUM MIKROPROSESSOR JURUSAN TEKNIK ELEKTRO-FAKULTAS TEKNIK

UNIVERSITAS NEGERI MALANG 2012

(2)

PRAKTIKUM MIKROPROSESSOR PTE-408

PRODI S1 PENDIDIKAN TEKNIK ELEKTRO

PETUNJUK PRAKTIKUM Dosen Pembina Dyah Lestari Asisten Praktikum Daniel Wijaya Frebu Trilangga Ahmad Ganjar Baiquni

Ian Hadinata

LABORATURIUM MIKROPROSESSOR JURUSAN TEKNIK ELEKTRO-FAKULTAS TEKNIK

UNIVERSITAS NEGERI MALANG 2012

(3)

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,

Ibu Dyah Lestari, yang sudah memberikan tenaga, pikiran dan waktunya untuk

perbaikan praktikum dalam Program Studi S1 Pendidikan Teknik Eletro 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 Elektro yang berkompeten.

Malang, September 2012

(4)

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 DAN COUNTER DALAM

MIKROKON-TROLLER ATMEGA8535 ... 39

(5)

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.

(6)

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

(7)

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/O ISP Downloader

Kabel USB downloaderKabel

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;

(8)

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

(9)

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?

(10)

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.

(11)

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

(12)

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

(13)

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?

(14)

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.

(15)

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.

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

(17)

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

(18)

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?

(19)

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

(20)

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

(21)

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.

(22)

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

(23)

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

(24)

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

(25)

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.

(26)

Gambar 5.3 pola Karakter dalam CGROM

(27)

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.

LCD ISP Downloader

Kabel USB downloaderKabel

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.

(28)

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

(29)

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

(30)

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.

(31)

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

(32)

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)

(33)

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

(34)

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

(35)

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/O ISP Downloader

Kabel USB Kabel

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

(36)

// 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. Perhatikan dan catat nyala LED dan konversi nilai dalam desimal.

(37)

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

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

(38)

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

(39)

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

(40)

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

(41)

PROSEDUR

1. Hubungkan PORTD.2 (INT0) dari minimum sistem ke soket INT0 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

(42)

DATA HASIL PERCOBAAN

Tabel Interupsi

No Mode

Interupsi Perubahan tampilan LED

1 Falling Edge 2 Rising Edge 3 Any Change 4 Low Level

ANALISA DATA

(43)

MODUL VIII

MENGGUNAKAN TIMER/COUNTER 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

(44)

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

(45)

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/O ISP Downloader

Kabel USB Kabel

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: System Clock // Clock value: Timer 0 Stopped // Mode: Normal top=FFh

// OC0 output: Disconnected

TCCR0=0x05; TCNT0=0x50; OCR0=0x00;

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

TIMSK=0x01;

// Global enable interrupts

(46)

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. Lakukan hal serupa dengan Timer1 dengan TCNT = 0xd5d0 dan Timer2 dengan TCNT = 0x80;

8. Ubah nilai TCCRn sehingga menjadi 0x04, 0x03, 0x02, 0x01. Perhatikan perbedaan nyala LED dengan nilai TCCR yang berbeda-beda.

9. Ubah nilai TCNT sehingga menghasilkan timer 1 detik dengan Timer 16 bit(Timer1).

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/O ISP Downloader

Kabel USB Kabel

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. Kemudian simpanlah file tersebut.

(47)

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:

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

(48)

DATA HASIL PERCOBAAN TIMER

No TIMER TCCRx TCNTx Kondisi Led Delay

1 Timer0 0x05 0x50 2 Timer1 0x05 0xD5D0 3 Timer2 0x05 0x80 4 Timer1 0x04 0xD5D0 5 Timer1 0x03 0xD5D0 6 Timer1 0x02 0xD5D0 7 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 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 50 4.000.000 1.024 255 0,05 Delay tidak terlihat

Timer2 0x05 80 Timer1 0x05 D5D0 Timer1 0x04 D5D0 Timer1 0x03 D5D0 Timer1 0x02 D5D0 Timer1 0x01 D5D0

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

Timer1?

COUNTER

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

Gambar

Tabel 2.1 Program Saklar1
Tabel 3.1 Kode heksadesimal untuk angka 0-9  Digit  gfedcba  g  f  e  d  c  b  a
Gambar 4.1 Keypad 4x4
Gambar 5.1 Modul LCD M1632
+6

Referensi

Dokumen terkait

Sebagai petugas rumah sakit, dalam melaksanakan tugas sebagai pemberi jasa pelayanan maka sangat terkait dengan komunikasi.. Informasi yang diberikan

cq Dinas Pekerjaan Umum Program Peningkatan Sarana dan Prasarana Aparatur pada Tahun Anggaran 2010 ini melaksanakan Kegiatan berupa Pembangunan Gedung Kantor yang tersebar

Sebagai pelabuhan pengumpan lokal, pelabuhan yang berada di Kabupaten Kayong Utara ini diharapkan dapat menjadi pintu masuk melalui laut untuk daerah-daerah sekitar yang

Proses produksi asetilen yang akan dibahas ada empat proses, yakni produksi dari reaksi kalsium karbida-air , proses BASF (partial combustion) , produksi asetilen

 Botol penampung urin berwarna coklat, karen untuk menghindari pengaruh sinar, sehinnga bilirubin belum teroksidasi menjadi biliverdin. Fungsi reagen Fouchet

(5) Untuk menghindari penurunan kemampuan produktivitas barang agar dapat berfungsi sebagaimana mestinya, maka Kepala BAU mengalokasikan biaya pemeliharan

a) Evaluasi kuantitatif dan/atau kualitatif dilakukan pada 14 zona sewerage untuk setiap indikator. b) Untuk setiap indikator, ditetapkan zona yang menjadi prioritas (contoh:

Baswedan mengumpulkan pemuda-pemuda Arab baik dari kalangan sayid maupun nonsayid, diadakanlah sebuah pertemuan atau rapat besar yang dihadiri oleh peranakan Arab, dan