OLEH :
Defi Pujianto., M.KOM
Alhamdulillah. Penulis memanjatkan puji syukur kehadirat Allah SWT, Sang Maha
Pencipta yang telah memberikan rahmat dan hidayah pada semua makhluk ciptaan-Nya,
Modul ini disusun untuk membantu para mahasiswa dalam mempelajari matakuliah
Microcontroler dan Robotika. Modul ini juga dapat dijadikan sebagai literatur guna
Penulis mengharap kritik dan saran yang membangun dalam rangka perbaikan kualitas,
baik untuk diri pribadi maupun untuk perbaikan dan penyempurnaan modul ini di masa yang
akan datang.
Penulis
A. SOFTWARE BASCOM-AVR
Software BASCOM-AVR adalah salah satu software yang dapat gunakan untuk belajar
memprogram mikrokontroler AVR. BASCOM-AVR adalah merupakan software IDE (integrated
development environment), karena dalam software tersebut telah dilengkapi dengan text (source
code) editor dan compiler. Aplikasi Bascom AVR dapat dipakai secara gratis dengan ukuran file
program maksimal 4 kilobyte.Untuk dapat mengikuti tutorial ini, pastikan software BASCOM-AVR
telah ter-install di komputer anda.
Start>>All Program>>MCS electronics>> BASCOM-AVR.Atau dapat juga dengan double click icon
software BASCOM-AVR yang tersedia di desktop.
Untuk membuka jendela text editor baru, pilih opsi toolbar File>>New.
Setelah itu maka akan terbuka sebuah halaman baru yang dapat digunakan untuk membuat
(mengetik) program.
Buatlah program dalam bahasa BASIC pada jendela text-editor yang telah kita buka sebelumnya.
Misalnya ketik program berikut ini:
Cara menyimpan file program adalah sebagai berikut. Pilih opsi toolbar File>>Save (Ctrl+S).
Jika program sudah selesai dibuat maka langkah selanjutnya adalah mengkompilasi (compile)
program tersebut sehingga didapatkan file-file baru yang kita butuhkan. Langkahnya adalah pada
toolbar pilih Program>>compile atau cukup tekan tombol shortcut F7.
Jika di dalam program masih ada kesalahan, maka akan muncul pesan error.
Jika hal itu terjadi, perbaiki terlebih dahulu kesalahan yang diinformsikan pada jendela Error. Jika
perbaikan telah selesai dilakukan, maka selanjutnya lakukan kompilasi program kembali. Apabila
langkah ini berhasil maka akan diperoleh beberapa file baru, salah satunya adalah file berekstensi
*hex (heksa) yang akan kita download kedalam IC mikrokontroler AVR. Berikut ini hasil kompilasi
program dalam file *.hex.
10 | M o d u l M i c r o c o n t r o l e r & R o b o t i k a
BAB II
PROGRAM LAMPU LED
Listing Program :
'*************************************
'Program 1: Menghidupkan LED
’Modul Praktek AMIK AKMI Baturaja
'*************************************
$regfile = "m8535.dat"
$crystal = 16000000
Ddrb = &B11111111
Portb = &B11111111
End
11 | M o d u l M i c r o c o n t r o l e r & R o b o t i k a
C. Program Lampu Berjalan Listing Program
'*************************************
'Program 3: LED Berjalan
'MODUL AMIK AKMI BATURAJA
'*************************************
$regfile = "m8535.dat"
$crystal = 16000000
Ddrb = &B11111111
Do
Portb = &B00000001
Wait 1
Portb = &B00000010
Wait 1
Portb = &B00000100
Wait 1
Portb = &B00001000
Wait 1
Portb = &B00010000
Wait 1
Portb = &B00100000
Wait 1
Portb = &B01000000
Wait 1
Portb = &B10000000
Wait 1
Loo
p
End
12 | M o d u l M i c r o c o n t r o l e r & R o b o t i k a
BAB III
PEMROGRMAN 7 SEGMEN
A. Program Angka 0
Rangkaian Elektronika
Listing Program :
'*************************************
'Program 4: seven segment angka 0
'Mosul AMIK AKMI Baturaja
'*************************************
$regfile = "m8535.dat"
$crystal = 16000000
Ddra = &B11111111
Porta = &B11000000
End
13 | M o d u l M i c r o c o n t r o l e r & R o b o t i k a
B. Program Counting Down dari 9 sampai 0
Listing Program
'*************************************
'Program 5: seven segment counting down
'Modul AMIK AKMI Baturaja
'*************************************
$regfile = "m8535.dat"
$crystal = 16000000
Ddra = &B11111111
Do
Porta =
&B00010000 Wait 1
Porta =
&B00000000 Wait 1
Porta =
&B00000111 Wait 1
Porta =
&B00000010 Wait 1
Porta =
&B00010010 Wait 1
Porta =
&B00011001 Wait 1
Porta = &B00110000
Wait 1
Porta =
&B00100100 Wait 1
Porta =
&B01111001 Wait 1
Porta =
&B01000000 Wait 1
Loo
p
End
14 | M o d u l M i c r o c o n t r o l e r & R o b o t i k a
$crystal = 16000000
DDRA = &B11111111
DDRB = &B11111111
Do
PortB=& B00000001
Porta = &B00010000
Wait 1
Porta = &B00000000
Wait 1
Porta = &B00000111
Wait 1
Porta = &B00000010
Wait 1
Porta = &B00010010
Wait 1
Porta = &B00011001
Wait 1
Porta = &B00110000
Wait 1
Porta = &B00100100
Wait 1
Porta = &B01111001
Wait 1
Porta = &B01000000
Wait 1
PortB=& B00000010
Porta = &B00010000
Wait 1
Porta = &B00000000
Wait 1
Porta = &B00000111
Wait 1
Porta = &B00000010
Wait 1
Porta = &B00010010
Wait 1
Porta = &B00011001
Wait 1
Porta = &B00110000
Wait 1
Porta = &B00100100
15 | M o d u l M i c r o c o n t r o l e r & R o b o t i k a
Wait 1
Porta = &B01111001
Wait 1
Porta = &B01000000
Wait 1
PortB=& B00000100
Porta = &B00010000
Wait 1
Porta = &B00000000
Wait 1
Porta = &B00000111
Wait 1
Porta = &B00000010
Wait 1
Porta = &B00010010
Wait 1
Porta = &B00011001
Wait 1
Porta = &B00110000
Wait 1
Porta = &B00100100
Wait 1
Porta = &B01111001
Wait 1
Porta = &B01000000
Wait 1
PortB=& B00010000
Porta = &B00010000
Wait 1
Porta = &B00000000
Wait 1
Porta = &B00000111
Wait 1
Porta = &B00000010
Wait 1
Porta = &B00010010
Wait 1
Porta = &B00011001
Wait 1
Porta = &B00110000
Wait 1
16 | M o d u l M i c r o c o n t r o l e r & R o b o t i k a
Porta = &B00100100
Wait 1
Porta = &B01111001
Wait 1
Porta = &B01000000
Wait 1
Loop
End
17 | M o d u l M i c r o c o n t r o l e r & R o b o t i k a
BAB IV
PROGRAM KEYPAD DENGAN LED
Listing Program
'*************************************
'Program 7: digital input 2
'Modul AMIK AKMI Baturaja
'*************************************
$regfile = "m8535.dat"
$crystal = 16000000
Ddrb = &B11111111
Ddrd = &B00000000
Portd = &B11111111
Do
If Pind.0 = 0 Then
Portb = &B00000001
Elseif Pind.1 = 0 Then
Portb = &B00000010
Elseif Pind.2 = 0 Then
Portb = &B00000100
Elseif Pind.3 = 0 Then
Portb = &B00001000
18 | M o d u l M i c r o c o n t r o l e r & R o b o t i k a
Elseif Pind.4 = 0 Then
Portb = &B00010000
Elseif Pind.5 = 0 Then
Portb = &B00100000
Elseif Pind.6 = 0 Then
Portb = &B01000000
Elseif Pind.7 = 0 Then
Portb = &B10000000
End If
Loop
End
19 | M o d u l M i c r o c o n t r o l e r & R o b o t i k a
Elseif Pind.5 = 0 Then
Portb = &B00100000
PortA = &B00010010
Elseif Pind.6 = 0 Then
Portb = &B01000000
PortA = &B00000010
Elseif Pind.7 = 0 Then
Portb = &B00000111
End If
Loop
End
20 | M o d u l M i c r o c o n t r o l e r & R o b o t i k a
BAB V
PEMROGRAMAN LCD
Listing Program
'*************************************
'Program 9: LCD 1
'Modul AMIK AKMI Baturaja
'*************************************
$regfile = "m8535.dat"
$crystal = 16000000
Config Lcdpin = Pin , Rs = Portc.0 , E = Portc.2 , Db4 = Portc.4 ,
Config Lcdpin = Pin , Db5 = Portc.5 , Db6 = Portc.6 , Db7 = Portc.7
Config Lcd = 16 * 2
Cursor Off
Cls
Lcd "AMIK AKMI Baturaja"
21 | M o d u l M i c r o c o n t r o l e r & R o b o t i k a
Lowerline
Lcd "Kampus Lokal"
End
'*************************************
'Program 10 : LCD geser kiri
'Modul AMIK AKMI Baturaja
'*************************************
$regfile = "m8535.dat"
$crystal = 16000000
Dim I As Byte
Config Lcdpin = Pin , Rs = Portc.0 , E = Portc.2 , Db4 = Portc.4 ,
Config Lcdpin = Pin , Db5 = Portc.5 , Db6 = Portc.6 , Db7 = Portc.7
Config Lcd = 16 * 2
Wait 1
Cursor Off
Cls
Lcd "AMIK AKMI Baturaja"
Lowerline
Lcd "Kampus Lokal Kualitas Global"
Wait 1
Do
For I = 0 To 16
Shiftlcd Left
Waitms 50
Next
Loo
p
End
22 | M o d u l M i c r o c o n t r o l e r & R o b o t i k a
$crystal = 16000000
Dim I As Byte
Config Lcdpin = Pin , Rs = Portc.0 , E = Portc.2 , Db4 = Portc.4 ,
Config Lcdpin = Pin , Db5 = Portc.5 , Db6 = Portc.6 , Db7 = Portc.7
Config Lcd = 16 * 2
Wait 1
Cursor Off
Cls
Lcd "AMIK AKMI Baturaja"
Lowerline
Lcd "Kampus Lokal Kualitas Global"
Wait 1
Do
For I = 0 To 16
Shiftlcd Right
Waitms 50
Next
Loop
End
'*************************************
'Program 10 : Animasi LCD Berkedip 'Modul
AMIK AKMI Baturaja
'*************************************
$regfile = "m8535.dat"
$crystal = 16000000
Dim I As Byte
Config Lcdpin = Pin , Rs = Portc.0 , E = Portc.2 , Db4 = Portc.4 ,
Config Lcdpin = Pin , Db5 = Portc.5 , Db6 = Portc.6 , Db7 = Portc.7
Config Lcd = 16 * 2
Cursor Off
Cls
Do Cls
Waitms 50
Locate 1 , 2
23 | M o d u l M i c r o c o n t r o l e r & R o b o t i k a
Lcd "Baturaja"
Waitms 500
Loop
End
Listing Program
'*************************************
'Program 11 : LCD Locate
'Modul Microcontroler
'*************************************
$regfile = "m8535.dat"
$crystal = 16000000
Config Lcdpin = Pin , Rs = Portc.0 , E = Portc.2 , Db4 = Portc.4 ,
Config Lcdpin = Pin , Db5 = Portc.5 , Db6 = Portc.6 , Db7 = Portc.7
Config Lcd = 16 * 2
Cursor Off
Cls Locate
1,5
Lcd "Row 1 Col 5"
Locate 2 , 2
Lcd "Row 2 Col 2"
End
24 | M o d u l M i c r o c o n t r o l e r & R o b o t i k a
BAB VI
IMPLEMENTASI PRORAM DAN HARDWARE
Listing Program
Dim D As Word , V As Word , T As Word
Config Adc = Single , Prescaler = Auto , Reference = Avcc
Config Lcdpin = Pin , Rs = Portc.0 , E = Portc.2 , Db4 = Portc.4 ,
Config Lcdpin = Pin , Db5 = Portc.5 , Db6 = Portc.6 , Db7 = Portc.7
Config Lcd = 16 * 2
Cls
Cursor Off
Lcd "Dig Thermometer"
Lowerline
Lcd "Temp="
Start Adc
Do
25 | M o d u l M i c r o c o n t r o l e r & R o b o t i k a
D = Getadc(1)
V=D*5
T=V/10
Locate 2 , 6
Lcd T
Lcd " Celcius "
Waitms 200
Loop
End
B. Pemrograman ADC
Rangkaian Program
Listing Program
'**************************************
'Program 22 : ADC digital voltmeter 'Modul
Microkontroler
'**************************************
$regfile = "m8535.dat"
$crystal = 16000000
Dim D As Word , V As Word
Config Adc = Single , Prescaler = Auto , Reference = Avcc Config
Lcdpin = Pin , Rs = Portc.0 , E = Portc.2 , Db4 = Portc.4, Config
Lcdpin = Pin , Db5 = Portc.5 , Db6 = Portc.6 , Db7 = Portc.7 Config
Lcd = 16 * 2
26 | M o d u l M i c r o c o n t r o l e r & R o b o t i k a
Cls
Cursor Off
Lcd "Dig Voltmeter"
Lowerline
Lcd "Tegangan="
Start Adc
Do
D = Getadc(0)
V=D*5
Locate 2 , 10
Lcd V
Lcd " mV "
Waitms 200
Loop
End
C. Pemrograman Timer
Rangkaian Hardware Timer
Listing Program
'**************************************
'Program 14 : Timer 1 detik 'Modul
Microcontroler
'**************************************
$regfile = "m8535.dat"
$crystal = 16000000
Config Timer1 = Timer , Prescale = 1024
27 | M o d u l M i c r o c o n t r o l e r & R o b o t i k a
Ddrb = &HFF
Portb = 0
Do
Timer1 = 49910
Start Timer1
Do
Loop Until Tifr.2 = 1
Stop Timer1
Tifr.2 = 1
Portb = Not Portb
Loop
End
D. Pemrograman Counter
Rangkain Program
Listing Program
'**************************************
'Program 15 : counter 0 sebagai pencacah pulsa
‘Modul Microcontroler
'**************************************
$regfile = "m8535.dat"
$crystal = 16000000
Config Lcdpin = Pin , Rs = Portc.0 , E = Portc.2 , Db4 = Portc.4
Config Lcdpin = Pin , Db5 = Portc.5 , Db6 = Portc.6 , Db7 = Portc.7
Config Lcd = 16 * 2
Cursor Off
28 | M o d u l M i c r o c o n t r o l e r & R o b o t i k a
Cls
Config Timer0 = Counter , Edge = Falling
Portb.0 = 1
Lcd "Counter 0="
Start Counter0
Do
Locate 1 , 11
Lcd Counter0
Loop
End
29 | M o d u l M i c r o c o n t r o l e r & R o b o t i k a
BAB VII
ROBOT SEDERHANA
B. Listing Program
// PROGRAM LINE FOLLOWER
// OLEH : FAHMIZAL
// DIPLOMA TEKNIK ELEKTRO UGM
2007 #include<mega8535.h>
#include<delay.h>
30 | M o d u l M i c r o c o n t r o l e r & R o b o t i k a
OCR1B=0x03FF;
TIFR=0;
//------------------------//
while (1)
{
// PORTA=0xff;// tambahan, jangan dipakai dlam
sebenarnya sensor=PINA;
sensor&=0b11111111;
switch(sensor)
{
case 0b11100111: maju (); // maju lurus
break;
case 0b11100011: kanan_dikit (); // nyalakan kanan (dikit)
break;
case 0b11110001: kanan_banyak (); // nyalakan kanan (banyak)
break;
case 0b11100001: kanan_banyaki (); // nyalakan kanan (banyak)
break;
case 0b11111000: kanan_banyak2 (); // nyalakan kanan (banyak)
break;
case 0b11110000: kanan_banting (); // nyalakan kiri (banyak)
break;
case 0b11000111: kiri_dikit (); // nyalakan kiri (dikit)
break;
case 0b10001111: kiri_banyak (); // nyalakan kiri (banyak)
break;
case 0b00011111: kiri_banyak2 (); // nyalakan kiri (banyak)
break;
case 0b00001111: kiri_banting (); // nyalakan kiri (banyak)
break;
case 0b00000000: ada_garis (); // nyalakan kiri (banyak)
break;
case 0b11000011: cabang (); // nyalakan kiri (banyak)
break;
case 0b11111111: henti();
break;// pilih orientasi kanan
}
};
}
//---maju---//
void maju ()
{PORTB=0b00001010;
OCR1A=0x3ff; //KANAN OCR1A
OCR1B=0x3ff;
}
//---kanan dikit---//
void kanan_dikit ()
{PORTB=0b00001010;
OCR1A=0x200;
OCR1B=0x2ee;
}
//---kanan banyak---//
void kanan_banyak ()
{PORTB=0b00001010;
OCR1A=0x100;
OCR1B=0x3ff;
}
void kanan_banyaki ()
{PORTB=0b00001010;
OCR1A=0x100;
OCR1B=0x3ff;
}
//---kanan banyak2---//
void kanan_banyak2 ()
31 | M o d u l M i c r o c o n t r o l e r & R o b o t i k a
{PORTB=0b00001001;
OCR1A=0x3ff;
OCR1B=0x3ff;
}
//---kanan banyak2---//
void kanan_banting ()
{PORTB=0b00001001;
OCR1A=0x3ff;
OCR1B=0x3ff;
}
//---kiri dikit---//
void kiri_dikit ()
{PORTB=0b00001010;
OCR1A=0x2ee;
OCR1B=0x200;
}
//---kiri banyak---//
void kiri_banyak ()
{PORTB=0b00001010;
OCR1A=0x2ee;
OCR1B=0x100;
}
void kiri_banyak2 ()
{PORTB=0b00000110;
OCR1A=0x3ff;
OCR1B=0x3ff;
}
//---kanan banyak2---//
void kiri_banting ()
{PORTB=0b00000110;
OCR1A=0x3ff;
OCR1B=0x3ff;
}
//---ada garis---
void ada_garis ()
{PORTB=0b00001010;
OCR1A=0x03ff;
OCR1B=0x03ff;
}
//---cabang---//
void cabang ()
{PORTB=0b00001010;
OCR1A=0x03ff;
OCR1B=0x0020;
}
//---henti
void henti ()
{PORTB=0b00000101;
OCR1A=0x03ff; //KANAN OCR1A
OCR1B=0x03ff;
32 | M o d u l M i c r o c o n t r o l e r & R o b o t i k a
DAFTAR PUSTAKA
[1] http://blog.akmi-baturaja.ac.id/dhelphie
[2] www.inkubator-teknologi.com , Master Micro “Gampang Belajar Sediri Micro AVR,
33 | M o d u l M i c r o c o n t r o l e r & R o b o t i k a