Anda di halaman 1dari 30

i

BUKU PANDUAN PRAKTIKUM MIKROKONTROLER AVR ATMEGA8535

Tahan Prahara

TEKNIK ELEKTRO UNIVERSITAS NEGERI SEMARANG 2010

ii

Kata Pengantar
Assalamualaykum warrahmatullahi wabarakatuh, Puji syukur kami panjatkan ke hadirat Allah SWT, Tuhan Yang Maha Esa atas terselesaikannya Buku Panduan Praktikum Mikrokontroler AVR ATmega8535 ini. Buku panduan ini ditujukan sebagai suatu bahan pegangan bagi mahasiswa-mahasiswa Teknik Elektro Universitas Negeri Semarang. Sangat disadari bahwa praktikum adalah salah satu komponen penting dalam proses belajar-mengajar, terutama dalam kaitannya dengan pengembangan keahlian praktis dan kemampuan analitis yang sangat dibutuhkan bagi para lulusan pada saat terjun ke dalam dunia kerja sebagai seorang sarjana teknik elektro. Target utama yang ingin dicapai dengan penyelengaraan praktikum ini adalah agar mahasiswa mampu memahami cara memprogram dan menggunakan mikrokontroler. Sehingga pada akhirnya para mahasiswa mampu menjelaskan dengan baik bagaimana memprogram mikrokontroler yang dapat diterapkan dalam aplikasi praktis di dalam industri dan masyarakat. Tak lupa saya sampaikan ucapan terima kasih kepada semua pihak yang telah membantu.

Wassalamualaykum warrahmatullahi wabarakatuh. Semarang, Febuari 2010

Tahan Prahara HP : 08-1234567-301 Email : tahan.prahara@gmail.com

iii

DAFTAR ISI
1. PENJELASAN PERANGKAT PRAKTIKUM ........................................................................ 1 1.1 Perangkat Keras ..................................................................................................... 1 1.2 Cara Menghubungkan Perangkat Keras ................................................................ 2 2. BASIC OUTPUT DENGAN LED PADA PORTC.................................................................. 3 2.1 Tujuan Praktikum ................................................................................................... 3 2.2 Prosedur Percobaan .............................................................................................. 3 2.3 Pengamatan ........................................................................................................... 7 3. BASIC INPUT KEYPAD.................................................................................................... 8 3.1 Tujuan Praktikum ................................................................................................... 8 3.2 Prosedur Percobaan .............................................................................................. 8 3.3 Pengamatan ......................................................................................................... 10 4. SERIAL KOMUNIKASI (USART) .................................................................................... 11 4.1 Tujuan Praktikum ................................................................................................. 11 4.2 Prosedur Percobaan ............................................................................................ 11 4.3 Pengamatan ......................................................................................................... 12 5. LCD.............................................................................................................................. 13 5.1 Tujuan Praktikum ................................................................................................. 13 5.2 Prosedur Percobaan ............................................................................................ 13 5.3 Pengamatan ......................................................................................................... 14 6. ADC ............................................................................................................................. 15 6.1 Tujuan Praktikum ................................................................................................. 15 6.2 Prosedur Percobaan ............................................................................................ 15 6.3 Pengamatan ......................................................................................................... 17 7. PWM ........................................................................................................................... 18 7.1 Tujuan Praktikum ................................................................................................. 18 7.2 Prosedur Percobaan ............................................................................................ 18 7.3 Pengamatan ......................................................................................................... 20 8. EEPROM...................................................................................................................... 21 8.1 Tujuan Praktikum ................................................................................................. 21

iv

8.2 Prosedur Percobaan ............................................................................................ 21 8.3 Pengamatan ......................................................................................................... 24 9. INTERUPSI SERIAL ....................................................................................................... 25 9.1 Tujuan Praktikum ................................................................................................. 25 9.2 Prosedur percobaan ............................................................................................ 25 9.3 Pengamatan ......................................................................................................... 26

1. PENJELASAN PERANGKAT PRAKTIKUM


1.1 Perangkat Keras

UNNES AVR V.1 adalah board modul media pembelajaran untuk mikrokontroler Atmel keluarga AVR seperti Atmga8535, ATmega 16, ATmega32. UNNES AVR V.1 mempunyai fitur yang cukup lengkap seperti: 1. 8 channel general purpose I/O pada PORT C 2. 8 channel ADC pada PORT A 3. 1 buah LCD dan 4 buah tombol serbaguna pada PORT B. 4. 2 channel motor DC driver PWM enable pada PORT D 5. 1 Port Serial Komunikasi 6. 1 Port ISP programmer untuk memudahkan dalam proses downloading program.

Gambar 1. 1

Layout PCB UNNES AVR V.1

Diharapkan dengan tersedianya fitur-fitur yang cukup lengkap dapat mempermudah mahasiswa dalam belajar menguasai mikrokontroler AVR itu sendiri. Untuk memasukkan program ke dalam mikrokontroler diperlukan sebuah alat yaitu downloader. Berikut adalah Serial Downloader AVR910.

Gambar 1. 2

Layout PCB Downloader AVR910

1.2

Cara Menghubungkan Perangkat Keras

Langkah-langkah yang harus dilakukan adalah : 1. Hubungkan baterai ke soket VCC 2. Hubungkan serial programmer AVR910 ke port serial pada komputer. Kemudian hubungkan port ISP serial programmer AVR910 tersebut ke port ISP pada board UNNES AVR V.1 3. Pindahkan saklan On/Off pada board UNNES AVR V.1 pada posisi On. 4. Board siap untuk diprogram.

2. BASIC OUTPUT DENGAN LED PADA PORTC


2.1 Tujuan Praktikum

Mampu membuat program untuk menampilkan LED berjalan pada PORT C ATmega8535.

Gambar 2. 1

LED Berjalan ke Kiri

2.2

Prosedur Percobaan

Langkah-langkah praktikum : 1. Buka program CodevisionAVR. 2. Kemudian klik File New, maka akan muncul 2 pilihan maka pilih Project.

Gambar 2. 2

Jendela Pembuatan File Baru

3. Muncul jendela konfirmasi penggunaan fasilitas CodeWizardAVR, maka klik tombol Yes.

Gambar 2. 3

Jendela Konfirmasi Penggunaan Fitur CodeWizardAVR

4. Konfigurasikan CodeWizardAVR sebagai berikut:

Gambar 2. 4

Konfigurasi CodeWizardAVR pada Project LED

5. Klik menu File Generate, Save and Exit. Buatlah folder baru, simpanlah file-file project di folder tersebut. 6. Klik menu Project Configure, klik tab After Build. Beri tanda pada After Build. Kemudian klik OK.

Gambar 2. 5

Konfigurasi Project Setting

7. Klik menu Settings Progammer, pilih Atmel AVRProg (AVR910), sesuaikan Communacation Port dan Baud Ratenya. Setelah selesai klik OK.

Gambar 2. 6

Programmer Setting

8. Tambahkan kode program (tercetak tebal) sebagai berikut:


#include <mega8535.h> #include <delay.h> // Declare your global variables here void main(void) { // Declare your local variables here unsigned char i,LED;. . . while (1) { // Place your code here LED=0b00000001; //isi LED dengan 1; for(i=0;i<8;i++) { PORTC=~LED; //LED di notkan, kemudian dikeluarkan ke delay_ms(100); //Port C LED<<=1; // LED digeser ke kiri 1bit } };

9. Tekan tombol Ctrl + F9 untuk mengkompile. Jika ditemukan kesalahan maka tombol Program the Chip tidak akan muncul. Tetapi jika tidak ditemukan kesalahan tombol Program the Chip, cek kembali Configure Project Setting pada langkah no. 6.

Gambar 2. 7

Informasi hasil Kompiler

10. Klik tombol Program the Chip, tunggu sampai proses downloading selesai. Lihatlah apa yang akan terjadi pada board UNNES AVR V.1.

Gambar 2. 8

Proses Flash Programming

2.3

Pengamatan

Jika Tidak terdapat kesalahan maka rangkaian LED yang terhubung pada PORTC akan menyala bergeser bergantian memberikan efek nyala LED berjalan.

3. BASIC INPUT KEYPAD


3.1 Tujuan Praktikum Mampu membuat program untuk menampilkan LED berjalan ke kiri pada PORTC apa bila tombol A ditekan, dan LED berjalan ke kanan bila tombol B ditekan ATmega8535.

3.2

Prosedur Percobaan Langkah-langkah praktikum pada basic input keypad ini sama seperti pada

praktikum basic output LED hanya berbeda pada langkah no.4 yaitu pada pengkofigurasian fasilitas CodeWizardAVR dan pada langkah no.8 yaitu pada penambahan baris program. Konfigurasikan CodeWizardAVR sebagai berikut:

Gambar 3. 1

Konfigurasi CodeWizardAVR pada Project KeyPad

Tambahkan kode program (tercetak tebal) sebagai berikut:


#include <mega8535.h> #include <delay.h> #define Key_A PINB.6 #define Key_B PINB.7 // Declare your global variables here void main(void) { // Declare your local variables here unsigned char LED; . . . while (1) { // Place your code here while(Key_A==0) //ketika tombol A di tekan maka: { if(LED==0b10000000) { LED=0b00000001; } else { LED<<=1; PORTC=~LED; delay_ms(100); } } while(Key_B==0) //ketika tombol B di tekan maka: { if(LED==0b00000001) { LED=0b10000000; } else { LED>>=1; PORTC=~LED; delay_ms(100); } } }

10

3.3

Pengamatan

Jika tidak terdapat kesalahan dalam pemprograman maka ketika tombol pada PINB.6 ditekan, LED pada PORTC akan menyala bergeser ke kiri. Ketika tombol pada PINB.7 ditekan, LED pada PORTC akan menyala bergeser ke kanan.

11

4. SERIAL KOMUNIKASI (USART)


4.1 Tujuan Praktikum

Mampu membuat program menerima data serial dari komputer, kemudian mengirimkannya kembali data tersebut ke komputer secara USART.

4.2

Prosedur Percobaan

Konfigurasikan CodeWizardAVR sebagai berikut:

Gambar 4. 1

Konfigurasi CodeWizardAVR pada Project Serial Komunikasi

12

Tambahkan kode program (tercetak tebal) sebagai berikut:


#include <mega8535.h> #include <delay.h> // Standard Input/Output functions #include <stdio.h> // Declare your global variables here void main(void) { // Declare your local variables here char k; . . . . while (1) { // Place your code here delay_ms(10); printf("tekan sembarang tombol \r"); k=getchar(); //menerima data printf("\r"); delay_ms(10); printf("tombol yang anda tekan:"); putchar(k); //mengirimkan data printf("\r"); };

4.3

Pengamatan

Jika tidak terdapat kesalahan dalam pemprograman maka mikrokontroler akan mengirimkan tulisan tekan sembarang tombol ke komputer melalui serial komunikasi. Kemudian setelah kita menekan tombol keyboard pada komputer, mikrokontroller menerima data yang di kirimkan komputer sesuai dengan tombol yang ditekan. Kemudian mengirimkan tulisan tombol yang anda tekan: dan data yang diterima tadi di kirimkan kembali ke komputer.

13

5. LCD
5.1 Tujuan Praktikum

Mampu membuat program menuliskan tulisan pada LCD. Tulisan yang akan ditampilkan adalah SEMALAT BELAJAR berkedip tiap detiknya.

5.2

Prosedur Percobaan

Konfigurasikan CodeWizardAVR sebagai berikut:

Gambar 5. 1

Konfigurasi CodeWizardAVR pada Project LCD

14

Tambahkan kode program (tercetak tebal) sebagai berikut:


#include <mega8535.h> #include <delay.h> // Alphanumeric LCD Module functions #asm .equ __lcd_port=0x18 ;PORTB #endasm #include <lcd.h> // Declare your global variables here void main(void) { // Declare your local variables here . . . while (1) { // Place your code here lcd_gotoxy(0,0); //menulis LCD pada kolom 0, baris 0 lcd_putsf("Selamat Belajar"); lcd_gotoxy(0,1); //menulis LCD pada kolom 0, baris 1 lcd_putsf("By Tahan Prahara"); delay_ms(800); lcd_clear(); delay_ms(200); };

5.3

Pengamatan

Jika tidak terjadi kesalahan dalam pemprograman, maka LCD akan menampilkan tulisan Selamat Belajar By Tahan Prahara berkedip-kedip.

15

6. ADC
6.1 Tujuan Praktikum

Mampu membuat program untuk membaca ADC internal mikrokontroler, kemudian menuliskannya pada LCD dan juga menampilkannya di LED yang tehubung pada PORTC. 6.2 Prosedur Percobaan

Konfigurasikan CodeWizardAVR sebagai berikut:

Gambar 6. 1

Konfigurasi CodeWizardAVR Chip, PORTC dan LCD

16

Gambar 6. 2

Konfigurasi CodeWizardAVR ADC dan PI

Tambahkan kode program (tercetak tebal) sebagai berikut:


#include <mega8535.h> #include <stdio.h> #include <delay.h> // Alphanumeric LCD Module functions #asm . . . // Declare your global variables here /* LCD display buffer */ char lcd_buffer[33]; char TEMP;. . . while (1) { // Place your code here TEMP=read_adc(3); PORTC=~TEMP; sprintf(lcd_buffer,"ADC3=%3d", TEMP); lcd_clear();

17

lcd_puts(lcd_buffer); delay_ms(100); }

6.3

Pengamatan

Jika tidak terjadi kesalahan dalam pemprograman, mikrokontroler membaca sensor garis paling tengah yang terhubung dengan ADC(3) kemudian menampilkannya di LED yang terhubung pada PORTC dan juga menampilkannya pada LCD dalam bentuk tulisan angka.

18

7. PWM
7.1 Tujuan Praktikum

Mampu membuat program untuk mengeluarkan sinyal PWM pada pin OC1A (PORTD.4) dan pada OC1B(PORTD.5)

7.2

Prosedur Percobaan

Konfigurasikan CodeWizardAVR sebagai berikut:

Gambar 7. 1

Konfigurasi CodeWizardAVR Chip dan PORTD

19

Gambar 7. 2

Konfigurasi CodeWizardAVR LCD dan TIMER1

Tambahkan kode program (tercetak tebal) sebagai berikut:


// Alphanumeric LCD Module functions #include <mega8535.h> #include <delay.h> #include <stdio.h> // Alphanumeric LCD Module functions #asm .equ __lcd_port=0x18 ;PORTB #endasm #include <lcd.h> // Declare your global variables here /* LCD display buffer */ char lcd_buffer[33]; void main(void) { // Declare your local variables here unsigned char i;

20

// LCD module initialization lcd_init(16); PORTD.6 = 1; PORTD.7 = 0; PORTD.2 = 0; PORTD.3 = 1; OCR1AL = 0; OCR1BL = 50; while (1) { // Place your code here for(i=0; i<255; i++) { sprintf(lcd_buffer, "PWM_kanan=%d OCR1AL, OCR1BL); lcd_clear(); lcd_puts(lcd_buffer); OCR1AL=i; delay_ms(50); } } } //MOTOR KANAN

//MOTOR KIRI

PWM_kiri=%3d",

7.3

Pengamatan

Jika tidak terdapat kesalahan dalam pemprograman, motor kiri robot akan berputar dengan kecepatan tetap, sedangkan motor kanan akan mengalami percepatan hingga kecepatan maksimum kemudian kembali berhenti. Besarnya nilai PWM ditampil di layar LCD.

21

8. EEPROM
8.1 Tujuan Praktikum

Mampu membuat program untuk membaca dan menulis EEPROM. Kemudian menuliskannya ke LCD. 8.2 Prosedur Percobaan

Konfigurasikan CodeWizardAVR sebagai berikut:

Gambar 8. 1

Konfigurasi CodeWizardAVR Chip dan PORTC

22

Gambar 8. 2

Konfigurasi CodeWizardAVR LCD dan PI

Tambahkan kode program (tercetak tebal) sebagai berikut:


#include <mega8535.h> #include <delay.h> #include <stdio.h> // Alphanumeric LCD Module functions #asm .equ __lcd_port=0x18 ;PORTB #endasm #include <lcd.h> #define Up PINC.0 #define Down PINC.1 #define Set PINC.2 void setting(); // Declare your global variables here eeprom unsigned char EE_nilai=100; char lcd_buffer[33]; unsigned char x; unsigned int nilai; void main(void) { // Declare your local variables here

23

. . PORTC=0xff; DDRC=0b11111000; . // LCD module initialization lcd_init(16); sprintf(lcd_buffer,"EE_Nilai: %d",EE_nilai); tulis ke RAM ditampilkan ke LCD lcd_puts(lcd_buffer); delay_ms(1000); lcd_clear(); nilai = EE_nilai; while (1) { // Place your code here while(Set) { PORTC.7=0; delay_ms(nilai*2); PORTC.7=1; delay_ms(nilai*2); } setting(); }; } void setting() { sprintf(lcd_buffer,"Nilai : %d",nilai); lcd_clear(); lcd_puts(lcd_buffer); while (!Set); //tunggu tombol dilepas delay_ms(500); while(Set) { if (!Up) { nilai++; sprintf(lcd_buffer,"Nilai: %d",nilai); lcd_clear(); lcd_puts(lcd_buffer); delay_ms(200); } else if (!Down) { nilai--; sprintf(lcd_buffer,"Nilai: %d",nilai); lcd_clear(); lcd_puts(lcd_buffer); delay_ms(200); //baca EEPROM

24

} } lcd_clear(); lcd_gotoxy(0,0); lcd_putsf("Tulis EEPROM >>>"); EE_nilai = nilai; //tulis dari RAM ke EEPROM delay_ms(1000); for (x=0;x<3;x++) { lcd_clear(); sprintf(lcd_buffer,"EE_Nilai: %d",EE_nilai); ke RAM kemudian tulis ke LCD lcd_puts(lcd_buffer); delay_ms(1000); lcd_clear(); delay_ms(1000); } }

//baca EEPROM

8.3

Pengamatan

Jika tidak terjadi kesalahan dalam pemprograman, LED yang terhubung pada PORTC.7 akan berkedip. Kecepatan kedip sesuai dengan nilai yang terdapat pada EEPROM. Settingan ini tidak akan berubah walaupun catu daya di matikan. Karena nilai di simpan di EEPROM sebagai backupnya.

25

9. INTERUPSI SERIAL

9.1

Tujuan Praktikum

Mampu membuat program interupsi serial. Mampu membedakan antara sistem kerja interupsi dan polling.

9.2

Prosedur percobaan

Konfigurasikan CodeWizardAVR sebagai berikut:

Gambar 9. 1

Konfigurasi CodeWizardAVR Chip, USART dan PORTC.

26

Tambahkan kode program (tercetak tebal) sebagai berikut:


#include <mega8535.h> #include <stdio.h> #include <delay.h> . . . // USART Receiver interrupt service routine interrupt [USART_RXC] void usart_rx_isr(void) { char status,data; status=UCSRA; data=UDR; if ((status & (FRAMING_ERROR | PARITY_ERROR | DATA_OVERRUN))==0) { rx_buffer[rx_wr_index]=data; if (++rx_wr_index == RX_BUFFER_SIZE) rx_wr_index=0; if (++rx_counter == RX_BUFFER_SIZE) { rx_counter=0; rx_buffer_overflow=1; }; }; printf("Tombol yang anda tekan: "); putchar(data); printf("\r"); delay_ms(100); } . . . while (1) { // Place your code here PORTC=0b00000000; delay_ms(500); PORTC=0b11111111; delay_ms(500); }; }

9.3

Pengamatan

Jika tidak terjadi kesalahan dalam pemprograman, LED pada PORTC akan berkedip. Dan setiap keyboard pada komputer ditekan maka mikrokontroler mengirimkan kembali data keyboard tadi ke komputer kembali.