Anda di halaman 1dari 57

Mata Kuliah : Mikrokontroler 2

Praktikum :1
Materi/ Bahasan : Pengenalan CodeVisionAVR dan Mikrokontroler ATmega8 (PDIP - SMD)
Waktu : 200 Menit
Mikrokontroler ATMEL AVR - ATMega8

Menggunakan Codevision AVR dan Khazama AVR

1
Codevision AVR C Compiler dapat digunakan editor sekaligus compiler untuk
mikrokontroler AVR bahkan juga terdapat fasilitas untuk melakukan injeksi (downloader)
program ke mikrokontroler. Untuk source Codevision AVR C Compiler dapat diunduh secara
gratis untuk versi evaluasi dengan kapasitas program 4 kB. Setelah diunduh dapat dilanjutkan
dengan instalasi dengan mengikuti petunjuk yang proses instalasi. Setelah terpasang pada OS
maka Codevision AVR C Compiler dapat digunakan dengan membuat program dengan
langkahlangkah seperti dijelaskan pada 1.1. Software untuk AVR downloader berbasis USBasp
menggunakan Khazama AVR Programmer yang juga tersedia gratis di dunia maya. Penggunaan
Khazama AVR Programmer dijelaskan pada 2.2.

1.1 Menggunakan CodeVision AVR

a. Buka CodeVision AVR


b. Pilih File – New pada Menu bar seperti pada gambar berikut

c. Maka akan keluar jendela seperti berikut. Kemudian pilih Project - OK

d. CodeVision akan menampilkan jendela konfirmasi apakah akan menggunakan


CodeWizardAVR atau tidak. Dalam mempermudah mengatur fungsi – fungsi
register dan library yang dibutuhkan, pilih Yes untuk menggunakan
CodeWizardAVR.

2
e. Dalam tampilan awal CodeWizardAVR akan muncul pilihan jenis chip AVR.
Terdapat 2 pilihan untuk jenis chip AVR yaitu AT90,ATtiny,ATmega,FPSLIC dan
XMEGA. Dikarenakan menggunakan ATmega8535, maka pilihan yang harus
ditentukan adalah AT90,ATtiny,ATmega,FPSLIC. Kemudian klik OK

f. Langkah berikutnya adalah dengan mengatur tipe AVR dan frekuensi crystal yang
digunakan. Tipe AVR yang digunakan adalah ATmega8535 dan frekuensi crystal
adalah 11,059200 MHz.

g. Setelah itu pilih Project – Generate, Save and Exit pada menu bar
CodeWizardAVR. Kemudian simpan dengan nama percobaan1 pada direktori
harddisk.

3
h. Ketikkan program yang di blok berikut pada jendela CodeVision lebih tepatnya di
dalam while(1). Note* setiap akhir program harus diakhiri dengan tanda titik koma
(;)

i. Langkah terakhir adalah me-build program tersebut dengan memilih Project – Build.
Atau dengan menekan keyboard Shift – F9.

Catatan :

Setelah program di build akan muncul jendela pop-up dan pastikan tidak ada error.

4
1.2 Menggunakan Khazama AVR

Setelah program dibuat menggunakan CodeVision AVR, untuk memasukkan program


tersebut menggunakan Khazama AVR.langkah – langkah memasukkan program pada
ATmega8535 dijelaskan sebagai berikut:
a. Hubungkan konektor dari USBasp (ISP PORT) dengan
minimum system
ATmega8535 (DOWNLOAD PORT) dengan konfigurasi seperti berikut

ISP PORT DOWNLOAD


PORT

b. Hubungkan USBasp dengan PC atau Laptop melalui kabel USB

5
c. Buka Khazama AVR. tampilan Khazama AVR adalah sebagai berikut

d. Pilih jenis AVR yang digunakan. Dalam hal ini pilih ATMEGA8535

e. Pilih File – Load FLASH file to buffer dan pilih file hasil build dari CodeVision.
File tersebut berupa file *.hex yang dapat di temukan pada direktori penyimpanan
project CodeVision.

f. Pilih File – Load EEPROM file to buffer. File yang diminta sama seperti pada
langkah c

6
g. Kemudian pilih Auto Program pada jendela utama Khazama AVR Programmer untuk
memulai pengisian program pada ATmega8535

Klik Disini

h. Untuk chip ATmega yang baru atau belum pernah diisikan program sebelumnya,
maka perlu dilakukan pengaturan fuse bit. Pengaturan fuse bit ini dilakukan hanya
sekali saja. Selanjutnya tidak perlu melakukan lagi pengaturan fuse bit. Untuk
mengatur fuse bit pilih Command – Fuses and Lock Bits… kemudian lakukan
konfigurasi seperti gambar berikut.

7
Kemudian pilih Write All.

Catatan* pengaturan Fuse Bits hanya dilakukan sekali saja pada ATmega baru (belum pernah
dipakai sama sekali).

8
Mata Kuliah : Mikrokontroler 2
Praktikum :2
Materi/ Bahasan : Pembuatan Modul Minimum Sistem
Waktu : 600 Menit
Bahan :
1. Komputer/PC 1x

Langkah-langkah :
1. Buatlah skematik rangkaian sesuai dengan gambar berikut.

Gambar 2.1 Skematik Rangkaian Modul Mikrokontroler 2

9
Gambar 2.2 Skematik Rangkaian Modul Driver

2. Buatlah Layout Rangkian seperti gambar berikut.

Gambar 2.3 Layout Rangkaian Modul Mikrokontroler 2

10
Gambar 2.4 Layout Rangkaian Modul Driver Mikrokontroler 2

11
Mata Kuliah : Mikrokontroler 2
Praktikum :3
Materi/ Bahasan : Pemrograman Input-Output

Waktu : 100 Menit


Bahan :
2. Komputer/PC 1x
3. Modul Mikrokontroler 2 1x
4. USB ASP 1x
Langkah – langkah :
1. Siapkan semua bahan praktikum yang sudah ditentukan.
2. Nyalakan Komputer/PC dan hubungkan Modul Mikrokontroler 2 menggunakan USB ASP.
3. Buka aplikasi codevisionAVR dan sesuaikan CodeWizardAVR seperti gambar berikut.

4. Ketik program di bawah ini : Percobaan 1


#include <mega8.h> //menyertakan library file atmega8
#include <delay.h> //library untuk delay
void main(void){ //Program Utama
PORTC=0x00; //Semua portC mengeluarkan logika 0, jadi LED mati
DDRC=0x3C; //Port C dikonfigurasi sebagai output, yaitu PC2-PC5
while (1)
{
// Place your code here
PORTC=0x04;
delay_ms(100);

12
PORTC=0x00;
delay_ms(100);
}; //akhir looping
} //akhir program utama
 Dari percobaan 1 apa yang dapat anda simpulkan? Jelaskan apa hasil dari program
tersebut!
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
.................................................................................................................................. .
.................................................................................................................................

Percobaan 2
#include <mega8.h> //menyertakan library file atmega8
#include <delay.h> //library untuk delay

unsigned char led[4]={0x04, 0x08, 0x10, 0x20}; //deklarasi untuk menghidupkan


led pada PC2-PC5 unsigned char x, data;
void main(void){ //Program Utama
PORTC=0x00; //Semua portC mengeluarkan logika 0, jadi LED mati
DDRC=0x3C; //Port C dikonfigurasi sebagai output, yaitu PC2-PC5 while
(1){ for(x=0; x<=4; x++){ data=led[x]; PORTC=data; delay_ms(100);
}
}; //akhir looping
} //akhir program utama

 Dari percobaan 2 apa yang dapat anda simpulkan? Jelaskan apa hasil dari program
tersebut!

13
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
............................................................................................................................
..................................................................................................................................
..................................................................................................................................
............................................................................................................................

Percobaan 3
#include <mega8.h> //menyertakan library file atmega8
#include <delay.h> //library untuk delay unsigned char led[4]={0x04, 0x08, 0x10,
0x20}; //deklarasi untuk menghidupkan led pada PC2-PC5 unsigned char x, data;
void main(void){ //Program Utama
PORTC=0x00; //Semua portC mengeluarkan logika 0, jadi LED mati
DDRC=0x3C; //Port C dikonfigurasi sebagai output, yaitu PC2-PC5
while (1){
// Place your code here
if(PINC.0==1)
{ for(x=0; x<=4; x++){
data=led[x];
PORTC=data;
delay_ms(100);
}

14
}
else{PORTC=0x00;}
};
}
 Dari ppercobaan 3 apa yang dapat anda simpulkan? Jelaskan apa hasil dari
program tersebut!
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
............................................................................................................................
Latihan

15
Mata Kuliah : Mikrokontroler 2
Praktikum :4
Materi/ Bahasan : Menampilkan Karakter pada LCD

Waktu : 100 Menit


Bahan :
1. Komputer/PC 1x
2. Modul Mikrokontroler 2 1x
3. Modul Dtriver 1x
4. USB ASP 1x

Langkah – langkah :
1. Siapkan semua bahan praktikum yang sudah ditentukan.
2. Nyalakan Komputer/PC dan hubungkan Modul Mikrokontroler 2 menggunakan USB ASP.
3. Buka aplikasi codevisionAVR dan sesuaikan CodeWizardAVR seperti gambar berikut.

4. Hubungkan mikrokontroler dengan pin LCD sesuai dengan port mikrokontroler yang
sudah diatur pada CodewizardAVR.
5. Ketik program di bawah ini :
Percobaan 1
#include <mega8.h>

#include <alcd.h>

void main(void)

16
{ lcd_init(16)
;

while (1)
{
// Place your code here lcd_gotoxy(0,0);
lcd_putsf("BELAJAR"); lcd_gotoxy(2,1);
lcd_putsf("MIKROKONTROLER");
}
}
 Dari percobaan 1 apa yang dapat anda simpulkan? Jelaskan apa hasil dari program
tersebut!
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
.................................................................................................................................
.............................................................................................................................

Percobaan 2
#include <mega8.h>
#include <alcd.h>
int i;

void main(void)
{ lcd_init(16)
; while (1)
{
// Place your code here for(i=0;i<16;i++)
{ lcd_clear(); lcd_gotoxy(i,0);

17
lcd_putsf("BELAJAR"); lcd_clear();
lcd_gotoxy(i,1);
lcd_putsf("MIKROKONTROLER");
delay_ms(200);
}
}
}
 Dari percobaan 2 apa yang dapat anda simpulkan? Jelaskan apa hasil dari program
tersebut!
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
...........................................................................................................................

Percobaan 3
#include <mega8.h>
#include <alcd.h>
void main(void)
{ lcd_init(16); lcd_gotoxy(4,0);
lcd_putsf("WELCOME"); lcd_clear();
while (1)
{
// Place your code here if(PINC.0==1)
{ lcd_gotoxy(0,0); lcd_putsf("Tombol1
ditekan"); lcd_clear();
}

18
if(PINC.1==1) {
lcd_gotoxy(0,0); lcd_putsf("Tombol2 ditekan");
lcd_clear();
}

else{
lcd_gotoxy(0,0); lcd_putsf("Tombol "); lcd_gotoxy(0,1);
lcd_putsf("Tidak Ditekan");
}
}
}
}
 Dari percobaan 3 apa yang dapat anda simpulkan? Jelaskan apa hasil dari program
tersebut!
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
.................................................................................................................................
. ................................................................................................................................ .
. ...............................................................................................................................
..............................................................................................................................
LATIHAN

19
Mata Kuliah : Mikrokontroler 2
Praktikum :5
Materi/ Bahasan : Timer, Counter

Waktu : 100 Menit


Bahan :
1. Komputer/PC 1x
2. Modul Mikrokontroler 2 1x
3. Modul Driver 1x
4. USB ASP 1x

Langkah – langkah :
1. Siapkan semua bahan praktikum yang sudah ditentukan.
2. Nyalakan Komputer/PC dan hubungkan Modul Mikrokontroler 2 menggunakan USB ASP.
3. Buka aplikasi codevisionAVR dan sesuaikan CodeWizardAVR seperti gambar berikut.

4. Setting port Atmega8 untuk mengaktifkan LCD 2x16 sesuai dengan praktikum 2.
5. Ketik program di bawah ini :
Percobaan 1
#include <mega8.h>
#include <stdio.h>

20
int data, nilai;
unsigned char lcd[16];

// Alphanumeric LCD Module functions


#include <alcd.h>

// Timer 0 overflow interrupt service routine


interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
// Reinitialize Timer 0 value
TCNT0=0x94; // Place
your code here data++;
}

// Declare your global variables here

void main(void)
{
// Global enable interrupts
#asm("sei")

while (1)
{
// Place your code here
if(data>=100) {nilai++;
data=0;} lcd_gotoxy(0,0);
lcd_putsf("Timer0");
sprintf(lcd,"%4d", nilai);
lcd_gotoxy(0,1); lcd_puts(lcd);
}
}
 Dari percobaan 1 apa yang dapat anda simpulkan? Jelaskan apa hasil dari program
tersebut!
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
21
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
.................................................................................................................................
. ................................................................................................................................ .
. ............................................................................................................................... ..
. ..............................................................................................................................
.... .............................................................................................................................
..... ............................................................................................................................ .
..... ........................................................................................................................... ..
..... .......................................................................................................................... ...
..... ......................................................................................................................... ....
..... ........................................................................................................................ .....
..... .......................................................................................................................
........... ...................................................................................................................... .
........... .....................................................................................................................
..................................................................................................................................
......

Percobaan 2
Pada percobaan 2 ini menggunakan Timer1, silahkan mengatur ulang pengaturan
CodeWizardAVR seperti gambar berikut:

22
Ketik program di bawah ini :

#include <mega8.h>
#include <stdio.h>

int data, nilai;


unsigned char lcd[16];
// Alphanumeric LCD Module functions
#include <alcd.h>

// 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 data++;
}

// Declare your global variables here


void main(void){
// Global enable interrupts
#asm("sei")
while (1)
{

23
// Place your code here
lcd_gotoxy(0,0);
lcd_putsf("Timer1");
sprintf(lcd,"%3d",data)
lcd_gotoxy(0,1);
lcd_puts(lcd);
}
}

 Dari percobaan 2 apa yang dapat anda simpulkan? Jelaskan apa hasil dari program
tersebut!
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
.................................................................................................................................
. ................................................................................................................................ .
. ............................................................................................................................... ..
. ..............................................................................................................................
.... .............................................................................................................................
..... ........................................................................................................................
.... ...............................................................................................................................
...
......

24
Percobaan 3
Pada percobaan 3 ini menggunakan Counter0, silahkan mengaktifkan LCD karakter
sesuai dengan praktikum 2 dan mengatur ulang pengaturan CodeWizardAVR seperti
gambar berikut:

Ketik program di bawah ini :

#include <mega8.h>
#include <stdio.h>

int data; unsigned


char lcd[16];

// Alphanumeric LCD Module functions


#include <alcd.h>

// Timer 0 overflow interrupt service routine


interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
// Place your code here
data++;
}
void main(void)
{

25
// Global enable interrupts
#asm("sei")
while (1)
{
// Place your code here
sprintf(lcd,"TCNT0%3d",TCNT0);
lcd_gotoxy(0,0);
lcd_puts(lcd);
sprintf(lcd,"%3d",data);
lcd_gotoxy(0,1);
lcd_puts(lcd);
}
}
 Dari percobaan 3 apa yang dapat anda simpulkan? Jelaskan apa hasil dari program
tersebut!
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
.................................................................................................................................
. ................................................................................................................................ .
. ............................................................................................................................... ..
. .............................................................................................................................. ...

26
. ........................................................................................................................
.....

..... ............................................................................................................................
..................................................................................................................................
......
Latihan

27
Mata Kuliah : Mikrokontroler 2
Praktikum :6
Materi/ Bahasan : Pulse Width Modulution

Waktu : 100 Menit


Bahan :
1. Komputer/PC 1x
2. Modul Mikrokontroler 2 1x
3. USB ASP 1x
Langkah – langkah :
1. Siapkan semua bahan praktikum yang sudah ditentukan.
2. Nyalakan Komputer/PC dan hubungkan Modul Mikrokontroler 2 menggunakan USB ASP.
3. Setting port Atmega8 untuk mengaktifkan LCD 2x16 sesuai dengan praktikum 2.
4. Buka aplikasi codevisionAVR dan sesuaikan CodeWizardAVR (mengatur Timer0) seperti
gambar berikut.

5. Ketik program di bawah ini :


Percobaan 1
#include <mega8.h>
#include <delay.h>
unsigned char pwm,a;
// Timer 0 overflow interrupt service routine
interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{

28
// Place your code here a++;
if(a<=pwm) {PORTC.2=0;}
else {PORTC.2=255;}
}
void main(void)
{
// Global enable interrupts
#asm("sei")
while (1)
{
// Place your code here
pwm=0; delay_ms(1000);
pwm=50; delay_ms(1000);
pwm=150; delay_ms(1000);
pwm=255; delay_ms(1000);
}
}

 Dari percobaan 1 apa yang dapat anda simpulkan? Jelaskan apa hasil dari program
tersebut!
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
.................................................................................................................................
..................................................................................................................................
..................................................................................................................................
.................................................................................................................................. .
.................................................................................................................................
.................................................................................................................................. .
.................................................................................................................................
.
..................................................................................................................................
...........................................................................................................................

29
Percobaan 2
Pada percobaan 2 ini kita mengatur pwm led menggunakan potensiometer.
Silahkan sesuaikan CodeWizardAVR (mengatur Timer0) seperti percobaan 1 dan silahkan
mengaktifkan PORTC sebagai ADC sesuai gambar berikut.

Ketik program di bawah ini :

#include <mega8.h>
#include <delay.h>

unsigned char a, pwm;


// Timer 0 overflow interrupt service routine
interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
// Place your code here a+
+; if(a<=pwm)
{PORTC.2=0;}
else {PORTC.2=255;}
}
#define ADC_VREF_TYPE 0x20
// 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);

30
// Delay needed for the stabilization of the ADC input voltage
delay_us(10);
// Start the AD conversion
ADCSRA|=0x40;
// Wait for the AD conversion to complete
while ((ADCSRA & 0x10)==0); ADCSRA|
=0x10; return ADCH;
}
void main(void)
{

// Global enable interrupts


#asm("sei")
while (1)
{
// Place your code here
pwm=read_adc(5);
}
}
 Dari percobaan 2 apa yang dapat anda simpulkan? Jelaskan apa hasil dari program
tersebut!
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
.................................................................................................................................
..................................................................................................................................
..................................................................................................................................
.................................................................................................................................. .
.................................................................................................................................
.................................................................................................................................. .
.................................................................................................................................
.
..................................................................................................................................
...........................................................................................................................

31
Percobaan 3
Pada percobaan 3 ini kita mencoba menampilkan nilai ADC menggunakan
potensiometer. Silahkan sesuaikan CodeWizardAVR (mengatur
Timer0) seperti percobaan 1, mengaktifkan PORTC sebagai ADC dan mengaktifkan
PORT untuk LCD. Ketik program di bawah ini :

#include <mega8.h>
#include <stdio.h>
#include <delay.h>

unsigned char lcd[16];


unsigned char a, pwm;

// Alphanumeric LCD Module functions


#include <alcd.h>

// Timer 0 overflow interrupt service routine


interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
// Place your code here a++;
if(a<=pwm) {PORTC.2=0;}
else {PORTC.2=255;}
}
#define ADC_VREF_TYPE 0x20
// 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);
// Start the AD conversion
ADCSRA|=0x40;
// Wait for the AD conversion to complete
while ((ADCSRA & 0x10)==0); ADCSRA|
=0x10; return ADCH;
}

32
void main(void)
{
// Global enable interrupts
#asm("sei")

while (1)
{
// Place your code here
pwm=read_adc(5);
sprintf(lcd,"%d",pwm);
lcd_gotoxy(0,0);
lcd_puts(lcd);
lcd_clear();
}
}

 Dari percobaan 3 apa yang dapat anda simpulkan? Jelaskan apa hasil dari program
tersebut!
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
.................................................................................................................................
..................................................................................................................................
..................................................................................................................................
.................................................................................................................................. .
.................................................................................................................................
..................................................................................................................................
..................................................................................................................................
. ................................................................................................................................
..................................................................................................................................
..
..................................................................................................................................
...........................................................................................................................

33
Mata Kuliah : Mikrokontroler 2
Praktikum :7
Materi/ Bahasan : Interupsi
Waktu : 100 Menit
Bahan :
1. Komputer/PC 1x
2. Modul Mikrokontroler 2 1x
3. USB ASP 1x
Langkah – langkah :
1. Siapkan semua bahan praktikum yang sudah ditentukan.
2. Nyalakan Komputer/PC dan hubungkan Modul Mikrokontroler 2 menggunakan USB ASP.
3. Hubungkan Push Button 2 ke PORTD.2 menggunakan kabel jumper.
4. Buka aplikasi codevisionAVR dan sesuaikan CodeWizardAVR (PORTD.2 sebagai interupsi)
seperti gambar berikut.

6. Ketik program di bawah ini :


Percobaan 1
#include <mega8.h>

unsigned char data;


unsigned char lcd[16]; // External Interrupt
0 service routine interrupt [EXT_INT0] void
ext_int0_isr(void)
{
// Place your code here data+
+;
}

34
void main(void)
{
// Global enable interrupts
#asm("sei")

while (1)
{
// Place your code here
lcd_gotoxy(0,0);
lcd_putsf("INT0");
sprintf(lcd,"%i",data);
lcd_gotoxy(0,0);
lcd_puts(lcd);
}
}
 Dari percobaan 1 apa yang dapat anda simpulkan? Jelaskan apa hasil dari program
tersebut!
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
.................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
. ................................................................................................................................ .
. ............................................................................................................................... ..
. ..............................................................................................................................
.................................................................................................................................. .
.................................................................................................................................
....

35
Percobaan 2
#include <mega8.h>
#define LED PORTC.2

// External Interrupt 0 service routine


interrupt [EXT_INT0] void ext_int0_isr(void)
{
// Place your code here
LED=1;
}
void main(void)
{
// Global enable interrupts
PORTC=0x00;
DDRC=0x04;
#asm("sei")

while (1)
{
// Place your code here
}
}
 Dari percobaan 2 apa yang dapat anda simpulkan? Jelaskan apa hasil dari program
tersebut!
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
.................................................................................................................................
..................................................................................................................................
. ................................................................................................................................ .
. ............................................................................................................................... ..
. ..............................................................................................................................
.................................................................................................................................. .
.................................................................................................................................

36
....

Latihan
Mata Kuliah : Mikrokontroler 2
Praktikum :8
Materi/ Bahasan : Komunikasi Serial (Rx Tx)
Waktu : 100 Menit
Bahan :
1. Komputer/PC 1x
2. Modul Mikrokontroler 2 1x
3. USB ASP 1x
Langkah – langkah :
1. Siapkan semua bahan praktikum yang sudah ditentukan.
2. Nyalakan Komputer/PC dan hubungkan Modul Mikrokontroler 2 menggunakan USB ASP.
3. Buka aplikasi codevisionAVR dan sesuaikan CodeWizardAVR (mengaktifkan port serial rx
tx) seperti gambar berikut.

7. Ketik program di bawah ini :


#include <mega8.h>
#include<delay.h>
void main(void)
{
// Declare your local variables here

37
// Global enable interrupts
#asm("sei")
while (1)
{
// Place your code here printf("Serial
Siap /n"); delay_ms(200);
}
}
 Dari percobaan 1 apa yang dapat anda simpulkan? Jelaskan apa hasil dari program
tersebut!
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
................................................................................................................................. .......................
...........................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
. ................................................................................................................................ .
. ...............................................................................................................................
.................................................................................................................................. .
.................................................................................................................................
...
..................................................................................................................................
...........................................................................................................................

Percobaan 2
Pada percobaan 2 ini kita mencoba menyalakan LED menggunakan tombol "o"
dan mematikan LED menggunakan tombol "f" pada keyboard PC. Silahkan aktifkan
PORTC.2 sebagai output dan aktifkan komunikasi serial sesuai dengan percobaan 1.

38
Ketik program di bawah ini :
#include <mega8.h> int a;
void main(void)
{
// Declare your local variables here
PORTC=0x00;
DDRC=0x04;

// Global enable interrupts


#asm("sei")
putsf("Serial Siap");
while (1)
{
// Place your code here
a=getchar();
if(a='o') {PORTC.2=1;}
else if(a='f') {PORTC.2=0;}
}
}
 Dari percobaan 2 apa yang dapat anda simpulkan? Jelaskan apa hasil dari program
tersebut!
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
.................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
. ................................................................................................................................ .
. ...............................................................................................................................

39
.................................................................................................................................. .
.................................................................................................................................
...

Mata Kuliah : Mikrokontroler 2


Praktikum :9
Materi/ Bahasan : EEPROM
Waktu : 100 Menit
Bahan :
1. Komputer/PC 1x
2. Modul Mikrokontroler 2 1x
3. USB ASP 1x
Langkah – langkah :
1. Siapkan semua bahan praktikum yang sudah ditentukan.
2. Nyalakan Komputer/PC dan hubungkan Modul Mikrokontroler 2 menggunakan USB ASP.
3. Buka aplikasi codevisionAVR dan aktifkan LCD seperti pengaturan di praktikum ke-5.
4. Ketik program di bawah ini : Percobaan 1 :
#include <mega8.h>
#include <delay.h>
#include <stdlib.h>

int eeprom *data; int


jumlah; unsigned char
lcd[16];

// Alphanumeric LCD Module functions


#include <alcd.h>

// Declare your global variables here


void tulis_data_ke_eeprom()
{ *data=jumlah; }

void baca_data_ke_eeprom()
{ jumlah=*data; }

void tampil_lcd()

40
{ lcd_gotoxy(0,0);
lcd_putsf("data=");
itoa(jumlah,lcd);
lcd_gotoxy(0,1);
lcd_puts(lcd);
}

void main(void)
{
PORTC=0x00;
DDRC=0x00;

// Characters/line: 16
lcd_init(16);

while (1)
{
// Place your code here
if(PINC.0==1)
{
jumlah++;
delay_ms(200);
tulis_data_ke_eeprom();
}
else { jumlah=jumlah; }

if(PINC.1==1)
{
jumlah--;
delay_ms(200);
tulis_data_ke_eeprom()
;
}
else { jumlah=jumlah; }

41
baca_data_ke_eeprom()
; lcd_clear();
tampil_lcd();
}
}

 Dari percobaan 1 apa yang dapat anda simpulkan? Jelaskan apa hasil dari program
tersebut!
..................................................................................................................................
.................................................................................................................................
..................................................................................................................................
. ................................................................................................................................
..................................................................................................................................
.................................................................................................................................. .
.................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
.. ............................................................................................................................... .
.. ..............................................................................................................................
.................................................................................................................................. .
.................................................................................................................................
....

Latihan

42
Mata Kuliah : Mikrokontroler 2
Praktikum : 10
Materi/ Bahasan : Motor Servo

Waktu : 100 Menit


Bahan :
1. Komputer/PC 1x
2. Modul Mikrokontroler 2 1x
3. Motor Servo 1x
4. USB ASP 1x

Langkah – langkah :
1. Siapkan semua bahan praktikum yang sudah ditentukan.
2. Nyalakan Komputer/PC dan hubungkan Modul Mikrokontroler 2 menggunakan USB ASP.
3. Hubungkan motor servo pada PORTD.4.
4. Ketik program di bawah ini :
Percobaan 1
#include <mega8.h>
#include <delay.h>
void main(void)
while (1)
{
// Place your code here
for(i=0;i<=200;i++)
{ PORTC.7=1;
delay_us(2000);
PORTC.7=0;
delay_us(1000);
}
for(i=0;i<=100;i++)
{ PORTC.7=1;
delay_us(1000);
PORTC.7=0;
delay_us(2000);
}
}
}

43
 Dari percobaan 1 apa yang dapat anda simpulkan? Jelaskan apa hasil dari program
tersebut!
..................................................................................................................................
.................................................................................................................................
..................................................................................................................................
. ................................................................................................................................ ............
......................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
.. ...............................................................................................................................
.................................................................................................................................. .
.................................................................................................................................
...

Percobaan 2
#include <mega8.h>
#include <stdio.h>
#include <delay.h>

#define servo1PORTB.0 int


serpo1, a=0;
// Timer 0 overflow interrupt service routine
interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
// Reinitialize Timer 0 value
TCNT0=0x01;
// Place your code here
a++;
if(a==867)

44
{ a=0; PORTB=255; }
if (22<a && a<109)
{ if(a==serpo1)servo1 = 0; }
}
// Declare your global variables here

void main(void)
{
// Declare your local variables here
// Global enable interrupts
#asm("sei")
while (1)
{
// Place your code here
serpo1=23;
delay_ms(1000);
serpo1=65;
delay_ms(1000);
serpo1=108;
delay_ms(1000);
};
}
 Dari percobaan 2 apa yang dapat anda simpulkan? Jelaskan apa hasil dari program
tersebut!
..................................................................................................................................
.................................................................................................................................
..................................................................................................................................
. ................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................

45
.. ............................................................................................................................... .
.. ..............................................................................................................................
.................................................................................................................................. .
.................................................................................................................................
....

Latihan

Mata Kuliah : Mikrokontroler 2


Praktikum : 11
Materi/ Bahasan : Motor DC

Waktu : 100 Menit


Bahan :
1. Komputer/PC 1x
2. Modul Mikrokontroler 2 1x
3. Modul Driver 1x
4. Motor DC 1x
5. USB ASP 1x
Langkah – langkah :
1. Siapkan semua bahan praktikum yang sudah ditentukan.
2. Nyalakan Komputer/PC dan hubungkan Modul Mikrokontroler 2 menggunakan USB ASP.
3. Hubungkan data driver motor yang ada pada Modul Driver dengan
Modul Mikrokontroler 2 di PORTB.0 - PORTB.2 menggunakan kabel jumper dan
hubungkan Motor DC dengan driver motor tersebut.
4. Ubah register PORTB sebagai Output.
5. Sesuaikan timer0 pada CodeWizardAVR seperti berikut.

46
5. Ketik program di bawah ini :
Percobaan 1
#include <mega8.h>
#include <delay.h>

#define DIRA PORTB.0


#define DIRB PORTB.1 #define
ENABLE1 PORTB.2

void main(void)
{
// Declare your local variables here
PORTB=0x00;
DDRB=0xFF;

// Global enable interrupts


#asm("sei")

while (1)
{

47
// Place your code here
DIRA=0; DIRB=1; ENABLE1=1;
delay_ms(1000);
DIRA=1; DIRB=0; ENABLE1=1;
delay_ms(1000);
DIRA=0; DIRB=0; ENABLE1=0;
delay_ms(1000);
}
}
 Dari percobaan 1 apa yang dapat anda simpulkan? Jelaskan apa hasil dari program
tersebut!
..................................................................................................................................
.................................................................................................................................
..................................................................................................................................
. ................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
.. ............................................................................................................................... .
.. ..............................................................................................................................
.................................................................................................................................. .
.................................................................................................................................
....

Percobaan 2
#include <mega8.h>
#include <delay.h>

48
#define DIRA PORTB.0 #define
DIRB PORTB.1 #define
ENABLE1 PORTB.2 unsigned
char a, pwm;

// Timer 0 overflow interrupt service routine


interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
// Place your code here a+
+; if(a<=pwm)
{ENABLE1=0;} else
{ENABLE1=1;}

}
void main(void)
{
// Declare your local variables here
PORTB=0x00;
DDRB=0xFF;

// Global enable interrupts


#asm("sei")

while (1)
{
// Place your code here
DIRA=0; DIRB=1; pwm=255;
delay_ms(1000); DIRA=0;
DIRB=1; pwm=50;
delay_ms(1000); DIRA=0;
DIRB=0; pwm=0;
delay_ms(1000);
}
}
 Dari percobaan 2 apa yang dapat anda simpulkan? Jelaskan apa hasil dari program
tersebut!

49
..................................................................................................................................
.................................................................................................................................
..................................................................................................................................
. ................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
.. ............................................................................................................................... .
.. ..............................................................................................................................
.... .............................................................................................................................
..... ............................................................................................................................ .
..... ...........................................................................................................................
..................................................................................................................................
.......

Percobaan 3
#include <mega8535.h>
#include <delay.h>
// Alphanumeric LCD functions
#include <alcd.h>
#include <stdio.h>

unsigned char lcd[16];


unsigned char data,pwm,a;
// Timer 0 overflow interrupt service routine
interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{

50
// Place your code here a+
+; if(a<=pwm){PORTC.1=0;}
else {PORTC.1=1;}
}

Void main()
{
PORTB=0x00;
DDRB=0xFF;
while (1)
{
// Place your code here data=read_adc(0);
if(data>=138) {pwm=(data-
128)*2+1;PORTC.0=0;} else if(data<=118)
{pwm=255-(data*2);PORTC.0=1;} else {pwm=0;}
sprintf(lcd,"PWM = %3d",pwm); lcd_gotoxy(0,0);
lcd_puts(lcd); sprintf(lcd,"ADC = %3d",data);
lcd_gotoxy(0,1); lcd_puts(lcd);

 Dari percobaan 3 apa yang dapat anda simpulkan? Jelaskan apa hasil dari program
tersebut!
.................................................................................................................................. ......................
...........................................................................................................
..................................................................................................................................
. ................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
.. ............................................................................................................................... .
.. ..............................................................................................................................
.... .............................................................................................................................

51
..... ............................................................................................................................ .
..... ........................................................................................................................... ..
..... .......................................................................................................................... ...
..... ......................................................................................................................... ....
..... ........................................................................................................................
..................................................................................................................................
.......... .......................................................................................................................
........... ......................................................................................................................
..................................................................................................................................
............

Latihan

52
Mata Kuliah : Mikrokontroler 2
Praktikum : 12
Materi/ Bahasan : Motor Stepper
Waktu : 100 Menit
58
Ba
ha
n:
1. Komputer/PC 1x
2. Modul Mikrokontroler 2 1x
3. Modul Driver 1x
4. Motor Stepper 1x
5. USB ASP 1x
Langkah – langkah :
1. Siapkan semua bahan praktikum yang sudah ditentukan.
2. Nyalakan Komputer/PC dan hubungkan Modul Mikrokontroler 2 menggunakan USB ASP.
3. Hubungkan data driver motor yang ada pada Modul Driver dengan
Modul Mikrokontroler 2 di PORTB.0 - PORTB.3 menggunakan kabel jumper dan
hubungkan Motor Dc dengan driver motor tersebut.
4. Ubah register PORTB sebagai Output.
5. Ketik program di bawah ini :
Percobaan 1
#include <mega8535.h> #include <delay.h> unsigned char
hit,step[]={0x01,0x03,0x02,0x06,0x04,0x0C,0x08,0x09};

void ccw()
{ for(hit=0;hit<8;hit++)
{ PORTC=step[hit];
delay_ms(30);
}
}
void cw()
{ for(hit=8;hit>0;--hit)
{ PORTC=step[hit];
delay_ms(30);
}
}
void main(void)
{
// Declare your local variables here
PORTB=0x00;
DDRB=0xFF;
while (1)
{
// Place your code here
cw(); ccw();
}
}

 Dari percobaan 1 apa yang dapat anda simpulkan? Jelaskan apa hasil dari program
tersebut!
..................................................................................................................................
.................................................................................................................................
..................................................................................................................................
. ................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
.. ............................................................................................................................... .
.. ..............................................................................................................................
.... .............................................................................................................................
..... ............................................................................................................................ .
..... ...........................................................................................................................
..................................................................................................................................
.......
Latihan

54
Mata Kuliah : Mikrokontroler 2
Praktikum : 13
Materi/ Bahasan : LDR (Light Dependent Resistor)
Waktu : 100 Menit

Bahan :
1. Komputer/PC 1x
2. Modul Mikrokontroler 2 1x
3. Modul Driver 1x
4. Motor DC 1x
5. USB ASP 1x
Langkah – langkah :
1. Siapkan semua bahan praktikum yang sudah ditentukan.
2. Nyalakan Komputer/PC dan hubungkan Modul Mikrokontroler 2 menggunakan USB ASP.
3. Ketik program di bawah ini :
Percobaan 1
#include <mega8.h>
#include <delay.h>
#include <stdlib.h>
#include <stdio.h>

#define DIRA PORTB.0


#define DIRB PORTB.1
#define ENABLE1 PORTB.2

unsigned char lcd[16];


unsigned char data,pwm,a;
// Alphanumeric LCD Module functions
#include <alcd.h>

// Timer 0 overflow interrupt service routine


interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
// Place your code here a+
+; if(a<=pwm)
{ENABLE1=0;} else
{ENABLE1=1;}
}
55
#define ADC_VREF_TYPE 0x20

// 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); // Start the AD conversion
ADCSRA|=0x40;
// Wait for the AD conversion to complete
while ((ADCSRA & 0x10)==0); ADCSRA|
=0x10; return ADCH;
}

void main(void)
{
PORTB=0x00;
DDRB=0xFF;
// Global enable interrupts
#asm("sei")

while (1)
{
// Place your code here data=read_adc(0); if
(data>150) {DIRA=0; DIRB=1; pwm=255;}
else if (data<100) {DIRA=0; DIRB=1;
pwm=50; } else {pwm=0;} sprintf(lcd,"ADC =
%3d",data); lcd_gotoxy(0,1); lcd_puts(lcd);
}
}
 Dari percobaan 1 apa yang dapat anda simpulkan? Jelaskan apa hasil dari program
tersebut!
..................................................................................................................................
.................................................................................................................................
..................................................................................................................................
. ................................................................................................................................

56
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
.. ............................................................................................................................... .
.. ..............................................................................................................................
.... .............................................................................................................................
..... ............................................................................................................................
..................................................................................................................................
...... ........................................................................................................................... .
...... ..........................................................................................................................
..................................................................................................................................
........

Latihan

57

Anda mungkin juga menyukai