Anda di halaman 1dari 84

MODUL PRAKTIKUM

SISTEM MIKROKONTROLER

DYAH LESTARI

LABORATORIUM MIKROPROSESSOR
JURUSAN TEKNIK ELEKTRO
FAKULTAS TEKNIK
UNIVERSITAS NEGERI MALANG
2015

KATA PENGANTAR
Puji syukur ke hadirat Tuhan YME, revisi petunjuk praktikum
yang kedua telah selesai. Perubahan yang dilakukan dalam
Modul Praktikum Sistem Mikrokontroler ini dari modul praktikum
sebelumnya merupakan perubahan berkaitan dengan model
pembelajaran yang diterapkan. Untuk meningkatkan kemampuan
mahasiswa dalam menulis program sampai dengan menganalisis
program tersebut, langkah-langkah praktikum diarahkan pada
penyelesaian problem solving dimana menuntut mahasiswa
untuk menulis program dari awal sampai akhir tanpa bantuan
wizard yang ada dalam editor bahasa pemrograman yang
digunakan yaitu Code Vision AVR.
Harapannya, pemahaman mahasiswa semakin baik, mahir
menulis program untuk mikrokontroler, dan mampu menjelaskan
algoritma program tersebut. Akan tetapi, perbaikan yang telah
dilakukan
akan
selalu
berkelanjutan
sesuai
dengan
perkembangan serta masukan dari berbagai pihak.
Kami menyampaikan terima kasih yang besar-besarnya
pada semua pihak yang telah terlibat dalam penyusunan modul
praktikum ini, yaitu teknisi dan asisten praktikum di
Laboratorium Digital dan Mikroprosessor. Akhir kata, semoga
semua usaha yang telah dilakukan berkontribusi pada
kompetensi lulusan program Studi yang ada di Jurusan Teknik
Elektro Fakultas Teknik Universitas Negeri Malang.
Malang, Agustus 2015
Penulis

DAFTAR ISI
Halaman
KATA PENGANTAR....................................................................
i
DAFTAR ISI............................................................................... ii
MODUL I ANTARMUKA MIKROKONTROLLER DENGAN LED......
1
MODUL II ANTARMUKA MIKROKONTROLLER DENGAN TOGGLE
SWITCH ..................................................................
6
MODUL III ANTARMUKA MIKROKONTROLLER DENGAN SEVEN
SEGMENT................................................................ 10
MODUL IV ANTARMUKA MIKROKONTROLLER DENGAN KEYPAD
15
MODUL V ANTARMUKA MIKROKONTROLLER DENGAN LCD .... 20
MODUL VI MENGGUNAKAN ANALOG TO DIGITAL CONVERTER
(ADC)
DALAM MIKROKONTROLLER ATMEGA8535
26
MODUL VIIMENGGUNAKAN INTERRUPT DALAM MIKROKONTROLLER ATMEGA8535 .......................................... 34
MODUL VIII
................................................................................
MENGGUNAKAN TIMER, COUNTER dan PWM DALAM
MIKROKONTROLLER ATMEGA8535 ......................... 39
MODUL IX ANTARMUKA MIKROKONTROLLER DENGAN MOTOR DC
50
DAFTAR RUJUKAN .................................................................... 55

1
MODUL I
ANTARMUKA MIKROKONTROLER DENGAN LED
TUJUAN

Menjelaskan rangkaian antarmuka mikrokontroler dengan LED.


Mempraktekkan pemrograman mikrokontroler untuk menyalakan
LED.

LED
Sebuah LED (Light Emitting Diode) adalah sebuah sumber cahaya
yang terbuat dari semikonduktor. Biasanya LED digunakan sebagai lampu
indikator dalam beberapa piranti, dan mulai banyak digunakan sebagai
penerangan/lampu. Gambar 1.1 memperlihatkan bentuk fisik LED dan
simbol rangkaiannya.

(a) Bentuk fisik LED

(b) Simbol elektronik


Untuk menyalakan sebuah LED
perlu rangkaian tambahan yang dapat
dilihat
pada
gambar
disamping.
Rangkaian tersebut berupa sebuah
transistor yang difungsikan sebagai
saklar dan dua buah resistor untuk
pembatas arus. Dalam modul I/O yang
dipakai dalam praktikum, kedelapan
rangkaian LED tersebut dihubungkan
ke sebuah soket jumper bernama
OUTPUT.

PERINTAH DASAR MENGELUARKAN DATA


Sebelum mulai menulis program dengan bahasa C, perlu diketahui
bahwa mikrokontroler ATmega8535 perlu diset isi register DDR dan PORT
agar bisa digunakan sebagaimana mestinya, seperti yang terlihat dalam
Tabel 1.
Tabel 1 Konfigurasi Pengaturan Port I/O
DDR bit = 1 DDR bit = 0
PORT bit = Output ;
Input; R pull
1
High
up
PORT bit = Output;
Input,
0
Low
Floating
Untuk mengirim data byte dalam bentuk bilangan desimal ke PORTX (X=A,
B, C, D) digunakan statement
PORTX = desimal;
PORTB = 128;
Untuk mengirim data byte dalam bentuk bilangan biner ke PORTX (X=A, B,
C, D) digunakan statement
PORTX = 0bdata;
PORTB = 0b10101010;
Untuk mengirim data per bit ke PORTX.Y (X=A, B, C, D, dan Y=0, 1, 2 , 3,
4, 5, 6, 7) digunakan statement
PORTX.Y = data;
PORTB.1 = 0;
Dimana data bisa berupa 0 atau 1.
ALAT DAN BAHAN YANG DIGUNAKAN

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


Khazama
1 buah catu daya DC +5V
1 buah multimeter
1 buah ISP Downloader AVR
1 buah sistem minimum AVR
1 buah I/O
1 buah kabel printer USB
1 buah kabel pita hitam

PROSEDUR
1.

Rangkailah peralatan yang diperlukan seperti pada gambar dibawah.


Hubungkan soket jumper PORTA pada minimum system dengan
soket jumper OUTPUT pada I/O.

2.
3.

Buka program Code Vision AVR


Buat file baru dengan cara klik File>>New, atau klik icon Create a
New File or Project, atau ketik Ctrl + N. Kemudian muncul dialog box,
pilih Project pada File Type, kemudian klik OK.

4.

Kemudian klik No ketika muncul dialog box untuk menanyakan


apakah ingin menggunakan CodeWizardAVR

5.

Kemudian pilih lokasi penyimpanan file dan buat folder baru dengan
nama praktikum 1 untuk menyimpan file.
Kemudian simpan file pada folder tersebut dan berinama file dengan
nama led dan klik Save.

6.

7.

Kemudian muncul dialog box Configure Project. Pada subtab Code


Generation pada tab C Compiler pilih chip ATmega8535 dan ubah
Clock menjadi 4 Mhz. Kemudian klik OK

8.

Buat file Source baru dengan cara klik File>>New, atau klik icon
Create a New File or Project, atau ketik Ctrl + N. Kemudian muncul
dialog box, pilih Source pada File Type, kemudian klik OK. Kemudian
Save as file Source itu dengan nama led dan simpan di dalam
direktori yang sama yaitu di dalam folder praktikum 1.

9.

Hubungkan file Project dengan File Source dengan Cara klik


Project>> Configure

10.

Pada dialog box, klik Add pada tab Input Files. Kemudian pilih file
yang sudah anda simpan tadi dan klik Open. Kemudian klik OK.

11.

Jika sudah ditambahkan, maka pada Code Navigator akan terlihat


led.c.

12.

Tambahkan file header

13.

Buat program utama dan inisialisasikan PORTA sebagai output dan


output value = 0

14.

Tuliskan program led 1 pada program utama tepatnya tuliskan


program tersebut di dalam while (1):
// Program LED1

15.
16.
17.
18.

19.
20.

21.
22.
23.

Compile program tersebut dengan cara klik Project>> Compile atau


ketik F9.
Jika ada error , koreksi program yang error dan perbaiki. Jika sudah
tidak ada yang error build program tersebut dengan cara klik
Project>> Build atau klik Shift + F9.
Hubungkan kabel usb printer antara PC/ Laptop dengan trainer.
Buka aplikasi Khanzama AVR Programmer. Pilih ATmega8535 pada
pilihan chip AVR. Kemudian buka program kompilasi led.hex
biasanya terdapat pada folder atau sub derektori..\Exe yang terdapat
pada folder praktikum 1 dengan cara klik file>> Load Flash File to
Bufferatau ketik Ctrl + L kemudian klik Open.
Klik Auto Program kemudian amati nyala LED dan gambarkan nyala
LED tersebut.
Hapus program led 1, kemudian tuliskan program led 2 pada
program utama tepatnya tuliskan program tersebut didalam while
(1):
Program LED2

Compile dan Build program, jika ada yang error perbaiki program.
Masukkan file hex menggunakan Khanzama AVR Programer. Klik
auto program.
Amati nyala LED dan gambarkan nyala LED tersebut.
Hapus program led 2, kemudian tuliskan program led 3 pada
program utama tepatnya tuliskan program tersebut didalam while
(1):
Program LED3

7
24.
25.

26.

Compile dan Build program, jika ada yang error perbaiki program.
Masukkan file hex menggunakan Khanzama AVR Programer. Klik
auto program.
Amati nyala LED dan gambarkan nyala LED tersebut.

Hapus program led 3, kemudian tuliskan program led 4 pada


program utama tepatnya tuliskan program tersebut didalam while
(1):
Program LED4

27.
28.
29.

Compile dan Build program, jika ada yang error perbaiki program.
Masukkan file hex menggunakan Khanzama AVR Programer. Klik
auto program.
Amati nyala LED dan gambarkan nyala LED tersebut.
Hapus program led 4, kemudian tuliskan program led 5 pada
program utama tepatnya tuliskan program tersebut didalam while
(1):
Program LED5

30.
31.

Compile dan Build program, jika ada yang error perbaiki program.
Masukkan file hex menggunakan Khanzama AVR Programer. Klik
auto program.
Amati nyala LED dan gambarkan nyala LED tersebut.

DATA HASIL PERCOBAAN


1.
2.
3.
4.
5.

Tampilan
Tampilan
Tampilan
Tampilan
Tampilan

nyala
nyala
nyala
nyala
nyala

LED
LED
LED
LED
LED

Program
Program
Program
Program
Program

LED1
LED2
LED3
LED4
LED5

ANALISA DATA
1.
2.
3.
4.

Analisa Program LED1 LED5!


Apakah persamaan dan perbedaan PROGRAM LED1 dan PROGRAM
LED2?
Instruksi apa yang digunakan untuk mengeluarkan data ke LED?
Mengapa ada jeda waktu sekitar 1 detik antara tampilan LED yang
pertama dengan yang berikutnya?

9
6.
7.
8.

5.
MODUL II
ANTARMUKA MIKROKONTROLER DENGAN TOGGLE SWITCH

TUJUAN
9.
Mengetahui dan memahami cara mengantarmukakan mikrokontroler
dengan rangkaian input saklar toggle.
Mengetahui dan memahami bagaimana memrogram mikrokontroler
untuk membaca data input dari saklar toggle.
10.
11. SAKLAR TOGGLE
12.
13. Saklar toggle adalah salah satu saklar elektrik yang
digerakkan secara manual oleh batang mekanik. Saklar toggle
tersedia dalam berbagai bentuk dan ukuran, serta digunakan dalam
berbagai aplikasi. Gambar dibawah memperlihatkan bentuk fisik dan
symbol saklar toggle.
14.
15.
16.
17.
18.
19.
20.
(b)Salah satu toggle switch
(b) Simbol elektronik
21.
22. Dalam
modul
I/O
yang
dipakai dalam praktikum,
saklar toggle yang digunakan
diberi rangkaian tambahan
berupa rangkaian LED untuk
melihat
secara
langsung
logika yang ada pada saklar.
Rangkaian LED sama dengan
rangkaian dalam Modul I.
Kedelapan rangkaian saklar
tersebut
dihubungkan
ke
sebuah
soket
jumper
bernama INPUT.
23.

10
24. PERINTAH DASAR MEMBACA DATA
25.
Sebelum membaca data, perlu dibuat deklarasi variabel untuk data
yang dimasukkan. Data bisa bertipe char. Deklarasi variabel
diletakkan di variabel lokal pada main program.
26. void main (void)
27. {
28. //Declare your local variables here
29. unsigned char data_in;
30.
Untuk membaca data byte ke PORTX (X=A, B, C, D) digunakan
statement
31.
data_in = PINX;
32.
contoh: data_in = PINB;
Untuk membaca data bit ke PORTX.Y (X=A, B, C, D dan Y=0, 1, 2 , 3,
4, 5, 6, 7) digunakan statement
33.
data_in = PINX.Y;
34.
contoh: data_in = PINB.1;
35.
36. ALAT DAN BAHAN YANG DIGUNAKAN
37.
1 set PC/Laptop yang sudah berisi program Code Vision dan
Khazama
1 buah catu daya DC +5V
1 buah multimeter
1 buah ISP Downloader AVR
1 buah sistem minimum AVR
1 buah I/O
1 buah kabel printer USB
2 buah kabel pita hitam
38.
39.
40. PROSEDUR
41.
1.
Hubungkan soket jumper PORTB pada minimum system dengan
soket jumper OUTPUT pada I/O dan soket jumper PORTC pada
minimum system dengan soket jumper INPUT pada I/O
2.
Buka program Code Vision AVR
3.
Buat file baru dengan cara klik File>>New, atau klik icon Create a
New File or Project, atau ketik Ctrl + N. Kemudian muncul dialog box,
pilih Project pada File Type, kemudian klik OK.

42.
43.
44.

11
4.

Kemudian klik No ketika muncul dialog box untuk menanyakan


apakah ingin menggunakan CodeWizardAVR
45.

46.
5.
6.
7.

47.
Kemudian pilih lokasi penyimpanan file dan buat folder baru dengan
nama praktikum 2 untuk menyimpan file.
Kemudian simpan file pada folder tersebut dan berinama file dengan
nama saklar dan klik Save.
Kemudian muncul dialog box Configure Project. Pada subtab Code
Generation pada tab C Compiler pilih chip ATmega8535 dan ubah
Clock menjadi 4 Mhz. Kemudian klik OK

48.
8.

49.
Buat file Source baru dengan cara klik File>>New, atau klik icon
Create a New File or Project, atau ketik Ctrl + N. Kemudian muncul
dialog box, pilih Source pada File Type, kemudian klik OK. Kemudian
Save as file Source itu dengan nama saklar dan simpan di dalam
direktori yang sama yaitu di dalam folder praktikum 2.
50.

51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.

12
9.

Hubungkan file Project dengan File Source dengan Cara klik


Project>> Configure

62.

63.
10.

11.

64.
Pada dialog box, klik Add pada tab Input Files. Kemudian pilih file
yang sudah anda simpan tadi dan klik Open. Kemudian klik OK.
65.

66.
67.
Jika sudah ditambahkan, maka pada Code Navigator akan terlihat
saklar.c.
68.

69.
70.
71.
72.
73.
74.
75.
76.

13
12.
13.

14.
15.

77.
Tambahkan file header
78.
Buat program utama dan inisialisasikan PORTB sebagai output
(DDRB = FFH) dan output value = 0 (PORTB=00H), dan PORTC
sebagai input (DDRC = 00H) dan resistor pullup dihubungkan
(PORTC=FFH) sehingga pada program bagian inisialisasi PORTB dan
PORTC terlihat sebagai berikut:
79.

80.
Tambahkan deklarasi variabel lokal di bawah ini dalam program
utama.
81.
Tuliskan dalam program utama tepatnya tuliskan program didalam
while (1)

82.
16. Compile program tersebut dengan cara klik Project>> Compile atau
ketik F9.
17. Jika ada error , koreksi program yang error dan perbaiki. Jika sudah
tidak ada yang error build program tersebut dengan cara klik
Project>> Build atau klik Shift + F9.
18. Hubungkan kabel usb printer antara PC/ Laptop dengan trainer.
19. Buka aplikasi Khanzama AVR Programmer. Pilih ATmega8535 pada
pilihan chip AVR. Kemudian buka program kompilasi saklar.hex
biasanya terdapat pada folder atau sub derektori..\Exe yang terdapat
pada folder praktikum 2 dengan cara klik file>> Load Flash File to
Buffer atau ketik Ctrl + L kemudian klik Open.
20. Klik Auto Program kemudian pindahkan saklar sesuai tabel 2.1
dibawah, amati dan catat nyala LED.
83.
84.
85.
86.
87.

14
88.
89.
90.
91.
92.
93.
94. Tabel 2.1 Program Saklar1
96. Saklar
97. LED

95.
N
98.

99.

101. 102.
1
104. 105.
2
107. 108.
3
110. 111.
4
113. 114.
5
116. 117.
6
119. 120.
7
122. 123.
8
125. 126.
9
128.
129.
21. Hapus program
dalam while (1)
130.

7
0
0
0
0
0
0
0
1
1

6
2
0
0
0
0
0
1
0
0
0
0
0
0
1
0
0
0
1
1

5
1
0
0
0
1
0
0
0
0
0
0
1
0
0
0
0
0
1
1

4
0
0
1
0
1
0
1
0
1
1
1
0
1
0
1
0
1
1
1

100. 7

6 5
2 1
103.

106.

109.

112.

115.

118.

121.

124.

127.

4
0

yang ada pada program utama tepatnya program di


kemudian tuliskan program di dalam while(1).

131.
132.
133.
22. Compile dan Build program, jika ada yang error perbaiki program.
Masukkan file hex menggunakan Khanzama AVR Programer. Klik
auto program.
23.
Pindahkan saklar sesuai tabel 3.1 dibawah, amati dan catat nyala
LED.
134.
135.
Tabel 3.1 Program Saklar2

15
136.
N

137. Saklar

139.

140. 7

142.
1
145.
2
148.
3
151.
4
154.
5
157.
6
160.
7

143. 0
146. 0
149. 0
152. 0
155. 0
158. 0
161. 0

6
2
0
0
0
0
0
1
0
0
0
0
0
0
1
0

5
1
0
0
0
1
0
0
0
0
0
0
1
0
0
0

4
0
0
1
0
1
0
0
0
1
1
0
0
1
0
0

138. LED
3

141. 7

6 5
2 1
144.

147.

150.

153.

156.

159.

162.

4
0

163.
164.
165.
166.
167.
168.
169.
170.
171.
24. Buat program untuk masingmasing algoritma berikut dengan
menggunakan if :
a) Jika switch bit 0 berlogika 1 maka LED bit 4 menyala.
b) Jika switch bit 1 berlogika 1 maka LED bit 7 menyala.
25. Buat satu program untuk masingmasing algoritma berikut dengan
menggunakan if-else.
a) Jika switch bit 0 berlogika 1 maka LED bit 4 menyala.
b) Jika switch bit 1 berlogika 1 maka LED bit 7 menyala.
c) Jika switch bit 2 berlogika 1 maka LED menyala dengan konfigurasi
172.
ON-OFF-ON-OFF-ON-OFF-ON-OFF (bit7-bit0).
d) Jika switch bit 3 berlogika 1 maka LED menyala dengan konfigurasi
173.
OFF-ON-OFF-ON-OFF-ON-OFF-ON (bit7-bit0).
e) Jika switch bit 4 berlogika 1 maka LED menyala semua.
f) JIka switch bit 5 berlogika 1 maka LED mati semua.
g) Jika switch bit 6 berlogika 1 maka LED menyala berurutan mulai dari
bit0 ke bit7 lalu kembali lagi ke bit0 dengan delay 1 detik
h) Jika switch bit 7 berlogika 1 maka LED akan menyala dengan nilai
sama dengan dua digit terakhir NIM anda.
174.
175.
176. DATA HASIL PERCOBAAN
177.
1.
Tabel 2.1

16
2.
3.
4.

Tabel 3.1
Source code program pada percobaan langkah 9
Source code program pada percobaan langkah 10
178.
179. ANALISA DATA
180.
1.
Analisa Program Saklar1 dan Saklar2
2.
Instruksi apa yang digunakan untuk membaca data input?
3.
Apakah perbedaan program yang menggunakan if dan if-else?

17
181.
182. MODUL III
183. ANTARMUKA MIKROKONTROLER DENGAN SEVEN SEGMEN
184.
185. TUJUAN
186.
Mengetahui dan memahami cara mengantarmukakan mikrokontroler
dengan rangkaian seven segment.
Mengetahui dan memahami bagaimana memrogram mikrokontroler
untuk menampilkan karakter ke seven segment.
187.
188. SEVEN SEGMENT
189.
190. Penampil seven segment adalah sebuah piranti penampil
untuk menampilkan angka desimal. Penampil seven segment banyak
digunakan dalam jam digital, meter elektronik, dan piranti elektronik yang
lain. Gambar 3.1 memperlihatkan bentuk fisik dan layout dasar penampil
seven segment. Penampil seven segment terdiri atas 8 LED yang disusun
seperti dalam Gambar 3.1(b). Setiap LED diidentifikasi sebagai huruf a, b,
c, d, e, f, g, yang dimulai dari huruf a di sebelah atas. Di sebelah kanan
terdapat satu LED tambahan yang digunakan sebagai koma (dp).
191.
192.
193.
194.
195.
196.
197.
198.
199.
200.
(a) Penampil seven segment
(b) Layout LED
201.
202. Gambar 3.1 Seven segment
203.
204. Untuk menampilkan sebuah karakter, minimal 2 LED harus
dinyalakan. Tabel 3.1 memperlihatkan kode heksadesimal untuk
menampilkan angka 0 sampai 9.
205. Dalam modul I/O yang dipakai dalam praktikum, seven
segment yang digunakan ada 2 buah, semuanya bertipe common anoda.
Kedua seven segment tersebut dimultipleks sehingga data diperoleh dari
satu kaki (D0-D7), sedangkan untuk menyalakannya digunakan kaki
kontrol yang berbeda (DO1 dan DO2). Rangkaian lengkap seven segment
dapat dilihat dalam Gambar 3.2.
206.
207.
208.
209.
210.
211.
212.

18
213.
214. Tabel 3.1 Kode heksadesimal untuk angka 0-9
215. 216.
217.
218.
219.
220.
221.
222.
223.
Di
gfe
G F E d c b a
224.
0
233.
1
242.
2
251.
3
260.
4
269.
5
278.
6
287.
7
296.
8
305.
9

225.
0x3

226.
227.
228.
229.
230.
231.
232.
o o o o o o o

234.
0x0

235.
236.
237.
238.
239.
240.
241.
o o o o o o o

243.
0x5

244.
245.
246.
247.
248.
249.
250.
O o o o o o o

252.
0x4

253.
254.
255.
256.
257.
258.
259.
O o o o o o o

261.
0x6

262.
263.
264.
265.
266.
267.
268.
O o o o o o o

270.
0x6

271.
272.
273.
274.
275.
276.
277.
O o o o o o o

279.
0x7

280.
281.
282.
283.
284.
285.
286.
O o o o o o o

288.
0x0

289.
290.
291.
292.
293.
294.
295.
o o o o o o o

297.
0x7

298.
299.
300.
301.
302.
303.
304.
O o o o o o o

306.
0x6

307.
308.
309.
310.
311.
312.
313.
O o o o o o o
314.

19

315.
316.
Gambar 3.2 Rangkaian penampil seven segment
317.
Dalam Gambar 3.2, kaki a, b, c, d, e, f, g, dp dihubungkan ke
soket jumper DATA 7S, sedangkan kaki kontrol (DO1 dan DO2 dihubungkan
dengan soket jumper I/P S KEY.
318.
319. ALAT DAN BAHAN YANG DIGUNAKAN
320.
1 set PC/Laptop yang sudah berisi program Code Vision dan
Khazama
1 buah catu daya DC +5V
1 buah multimeter
1 buah ISP Downloader AVR
1 buah sistem minimum AVR
1 buah I/O
1 buah kabel printer USB
2 buah kabel pita hitam
321.
322. PROSEDUR
323.
1.
Hubungkan soket jumper PORTB pada minimum system dengan
soket jumper DATA7S pada I/O dan soket jumper PORTC pada
minimum system dengan soket jumper I/P S KEY pada I/O.
2.
Buka aplikasi Code Vision AVR
3.
Buatlah file project (.prj) kemudian pilih IC yang digunakan
(ATmega8535) dan atur clock 4.000 Mhz. (seperti praktikum
sebelumnya)
4.
Buatlah file source (.c) kemudian hubungkan file project dengan file
source seperti pada praktikum sebelumnya.
5.
Tambahkan file header
324.

20
6.

7.

Buatlah program utama dan inisialisasikan PORTB sebagai output


(DDRB = FFH) dan output value = 0 (PORTB=00H), dan PORTC.0PORTC.3 sebagai input, PORTC.4-PORTC.7 sebagai output (DDRC =
F0H) dan (PORTC=F0H) sehingga inisialisasi PORTB dan PORTC
terlihat sebagai berikut:
325.

326.
327.
Tuliskan program seven segmen 1 dalam program utama tepatnya di
dalam while (1).
328.

329.
330.
8.
Compile dan Build program jika ada yang error perbaiki program.
Masukkan file hex menggunakan Khanzama AVR Programer. Klik
auto program, amati nyala seven segment.
331.
332.
333.
334.
335.
336.
9.
Hapus program seven segmen 1 dan tuliskan program seven
segmen 2 dalam program utama tepatnya di dalam while (1).
337.

338.

21
10.
11.
12.
13.
14.
15.

16.

17.

18.
19.
20.
21.
22.

Compile dan Build program jika ada yang error perbaiki program.
Masukkan file hex menggunakan Khanzama AVR Programer. Klik
auto program, amati nyala seven segment.
Hapus program seven segmen 2. Gabungkan program seven
segmen 1 dan seven segmen 2.
Compile dan Build program jika ada yang error perbaiki program.
Masukkan file hex menggunakan Khanzama AVR Programer. Klik
auto program, amati nyala seven segment.
Ubah nilai delay untuk masing-masing program seven segment
menjadi 100 ms
Compile dan Build program jika ada yang error perbaiki program.
Masukkan file hex menggunakan Khanzama AVR Programer. Klik
auto program, amati nyala seven segment.
Hapus gabungan program seven segmen 1 dan program seven
segmen 2
339. Masukkan variabel berikut diluar program utama.
340.
Masukkan variabel berikut di dalam program utama.
341.
Tuliskan program seven segmen 3 pada program utama tepatnya di
dalam while (1)
342.

343.
Compile dan Build program jika ada yang error perbaiki program.
Masukkan file hex menggunakan Khanzama AVR Programer. Klik
auto program, amati nyala seven segment.
Ubah nilai delay untuk program SEGMEN3 menjadi 100 ms
Compile dan Build program jika ada yang error perbaiki program.
Masukkan file hex menggunakan Khanzama AVR Programer. Klik
auto program, amati nyala seven segment.
Buat program SEGMEN4 untuk menampilkan 00-99 di kedua seven
segmen sehingga kedua angka tampil bersamaan.
Buat program SEGMEN5 untuk menampilkan 00 hingga dua digit
terakhir NIM anda (counter up) lalu menghitung mundur dari dua

22

1.
2.
3.
4.
5.

digit NIM terakhir anda ke 00 (counter down). (kedua seven segment


menyala bersamaan).
344.
345. DATA HASIL PERCOBAAN
346.
1. Program SEGMEN1
2. Program SEGMEN2
3. Gabungan SEGMEN1 dan SEGMEN2 delay 100ms
4. Program SEGMEN3
5. Program SEGMEN3 delay 100ms
6. Source code Program SEGMEN4
7. Source code Program SEGMEN5
347.
348. ANALISA DATA
349.
Analisa Program SEGMEN1 sampai SEGMEN5
Instruksi apa yang digunakan untuk mengeluarkan data ke seven
segment?
Instruksi apa yang digunakan untuk mengontrol nyala seven
segment?
Jika nilai delay pada Gabungan Program SEGMEN1 dan SEGMEN2
diperbesar, apa yang terjadi pada tampilan seven segment?
Jika nilai delay pada program SEGMEN3 diperkecil, apa yang terjadi
pada tampilan seven segment?

23
350. MODUL IV
351. ANTARMUKA MIKROKONTROLER DENGAN KEYPAD
352.
353. TUJUAN
354.
Mengetahui dan memahami cara mengantarmukakan mikrokontroler
dengan keypad.
Mengetahui dan memahami bagaimana memrogram mikrokontroler
untuk membaca masukan dari keypad.
355.
356. KEYPAD
357.
358. Keypad merupakan tombol push button yang disusun sebagai
baris dan kolom sehingga membentuk matriks. Keypad banyak digunakan
sebagai piranti masukan dalam piranti elektronik. Gambar 4.1
memperlihatkan bentuk fisik keypad. Keypad ini memiliki 16 tombol yaitu
0,1,2,3,4,5,6,7,8,9,A,B,C, D,* dan #.
359.
360.
361.
362.
363.
364.
365.
366.
367.
368.
369.
370. Gambar 4.1 Keypad 4x4
371. Dalam modul I/O yang di Dalam gambar 4.2 keypad
dihubungkan ke PORTB mikrokontroler dengan posisi baris (b1-b4)
terhubung ke PORTB.0-PORTB.3 dan posisi kolom (c1-c4) terhubung ke
PORTB.4-PORTB.7. Sedangkan untuk mengetahui tombol apa yang ditekan
oleh user, 8 buah LED yang terdapat dalam MODUL I/O dihubungkan ke
PORTC.
372.
373.
374.
375.
376.
377.
378.
379.
380.
381.
382.
383.
384.
385.
386. Gambar 4.2
387. Rangkaian keypad dan LED

24
388.
389.

25

1
2
3
4
5

390.
391. ALAT DAN BAHAN YANG DIGUNAKAN
392.
1 set PC/Laptop yang sudah berisi program Code Vision dan
Khazama
1 buah catu daya DC +5V
1 buah multimeter
1 buah ISP Downloader AVR
1 buah sistem minimum AVR
1 buah modul I/O
1 buah keypad
1 buah kabel printer USB
2 buah kabel pita hitam
393.
394. PROSEDUR
395.
Hubungkan soket jumper PORTB pada minimum system dengan
soket jumper KEYPAD dan soket jumper PORTC pada minimum
system dengan soket jumper OUTPUT pada I/O.
Buat program dengan menggunakan aplikasi Code Vision AVR
Buatlah file project (.prj) kemudian pilih IC yang digunakan
(ATmega8535) dan atur clock 4.000 Mhz. (seperti praktikum
sebelumnya)
Buatlah file source (.c) kemudian hubungkan file project dengan file
source seperti pada praktikum sebelumnya.
Tambahkan file header
396.
Buatlah program utama dan inisialisasikan PORTB.0-PORTB.3 sebagai
output dengan kondisi awal berlogika HIGH dan PORTB.4-PORTB.7
sebagai input dengan pull-up (DDRB = 0FH dan PORTB=FFH), serta
PORTC sebagai output dan kondisi awal LOW (DDRC = FFH dan
PORTC=00H), sehingga inisialisasi PORTB dan PORTC terlihat sebagai
berikut:
397.

398.
399.
Deklarasikan fungsi keypad() dengan bilangan yang dikembalikan ke
program utama sebagai bilangan integer pada global variabel
( diluar program utama).
400.
401.
402.
403.
404.
405.
406.

26

407.
408.
409.
Tambahkan fungsi keypad berikut di luar program utama :
410.

411.
412.

413.
414.
Tuliskan program berikut pada program utama tepatnya di dalam
while(1).

415.
416.
10
Compile dan Build program jika ada yang error perbaiki program.
Masukkan file hex menggunakan Khanzama AVR Programer. Klik
auto program, tekan tombol keypad, amati nyala LED dan isi Tabel
4.1.
11
Ubah program utama untuk algoritma berikut:
a Jika tombol 0 ditekan semua LED mati.
b Jika tombol 1 ditekan semua LED menyala.

27
12

Buatlah satu program dengan algoritma sebagai berikut:


a Jika tombol 0 ditekan LED bit 0 menyala.
b Jika tombol 1 ditekan LED bit 1 menyala.
c Jika tombol 2 ditekan LED bit 2 menyala.
d Jika tombol 3 ditekan LED bit 3 menyala.
e Jika tombol 4 ditekan LED bit 4 menyala.
f Jika tombol 5 ditekan LED bit 5 menyala.
g Jika tombol 6 ditekan LED bit 6 menyala.
h Jika tombol 7 ditekan LED bit 7 menyala.
i Jika tombol 8 ditekan LED menyala sesuai gambar dibawah ini
ber urutan dari atas kebawah dengan delay 1 detik. (Gunakan
perulangan for ...)
417.
1
418.
1
LED Menyala
419.
0
LED Mati
420.
421.
422.
423.
424.
425.
426.
j Jika tombol 9 ditekan LED menyala sesuai gambar dibawah ini
ber urutan dari atas kebawah dengan delay 1 detik. (Gunakan
perulangan for ...)
427.
LED Menyala
428.
LED Mati
429.
430.
431.
432.
433.
k Jika tombol A ditekan LED bit 0,2,4,6 menyala dan bit 1,3,5,7
mati.
l Jika tombol B ditekan LED bit 0,2,4,6, mati dan bit 1,3,5,7
menyala.
m Jika tombol C ditekan ditekan algoritma k dan l dilaksanakan
bergantian dengan delay 1 detik.
n Jika tombol D ditekan ditekan maka LED menyala menunjukkan
nilai biner dua digit terakhir NIM anda.
o Jika tombol * semua LED mati.
p Jika tombol # semua LED menyala.
434.
435.
436.
437.
438.
439.

28
440. DATA HASIL PERCOBAAN
441.
1
Tabel 4.1
2.
1. N
o
5.
1
9.
2
13.
3
17.
4
21.
5
25.
6
29.
7
33.
8
37.
9
41.
1

Tombol
keypad
yang
diteka
n

3.

Tamp
ilan
LED
7.

4.

Nilai tampilan
LED (dalam
desimal)

6.

10.

14.

15.

16.

18.

19.

20.

22.

23.

24.

26.

27.

28.

30.

31.

32.

34.

35.

36.

38.

39.

40.

42.

43.

44.

46.

47.

48.

50.

51.

52.

54.

55.

56.

58.

59.

60.

62.

63.

64.

66.

67.

68.

11.

8.
12.

45.
1
49.
1
53.
1
57.
1
61.
1
65.
1
2
3

442.
Source code program pada langkah percobaan nomor 8
Source code program pada langkah percobaan nomor 9

29

1
2
3
4

443.
444. ANALISA DATA
445.
Analisa hasil percobaan pada tabel 4.1!
Instruksi apa yang digunakan untuk mebaca tombol keypad yang
ditekan?
Instruksi yang digunakan untuk menyalakan LED sesuai keypad yang
ditekan?
Buatlah flowchart instruksi pada nomor 3 dan jelaskan algoritmanya!
446.

30
447. MODUL V
448. ANTARMUKA MIKROKONTROLER DENGAN PENAMPIL LCD
(Liquid Crystal Display)
449.
450.
451. TUJUAN
452.
Mengetahui dan memahami cara mengantarmukakan mikrokontroler
dengan modul penampil LCD.
Mengetahui dan memahami bagaimana memrogram mikrokontroler
untuk menampilkan karakter ke penampil LCD.
453.
454. LCD M1632
455.
456. Modul LCD M1632 seperti dalam Gambar 5.1 merupakan
modul LCD dengan tampilan 16 x 2 baris dengan konsumsi daya yang
rendah. Modul ini dilengkapi dengan mikrokontroler yang didisain khusus
untuk mengendalikan LCD. Mikrokontroler HD44780 buatan Hitachi yang
berfungsi sebagai pengendali LCD ini mempunyai CGROM (Character
Generator Read Only Memory), CGRAM (Character Generator Random
Access Memory), dan DDRAM (Display Data Random Access Memory).

458.
459.
460.
Tabel 6.1.

457.
Gambar 5.1 Modul LCD M1632

LCD ini memiliki 16 kaki, sebagaimana ditunjukkan dalam


462.
463. 464.
N
K

461.
Tabel 5.1 Konfigurasi Pin LCD M1632
465. Deskripsi

466. 467.
1
Vs

468. 0V (GND)

469. 470.
2
Vc

471. +5V

472. 473.
3
VL

474. LCD Contrast Voltage

475. 476.
4
RS
478. 479.
5
R

477. Register Select; H: Data Input;


L: Instruction Input
480. H:Read; L: Write

31
481. 482.
6
E

483. Enable Signal

484. 485.
7
D

486. Data Bus 0

487. 488.
8
D

489. Data Bus 1

490. 491.
9
D

492. Data Bus 2

493. 494.
1
D

495. Data Bus 3

496. 497.
1
D

498. Data Bus 4

499. 500.
1
D

501. Data Bus 5

502. 503.
1
D

504. Data Bus 6

505. 506.
1
D

507. Data Bus 7

508. 509.
1
V

510. Positive Backlight Voltage

511. 512.
1
V-

513. Negative Backlight Voltage

514.
DDRAM
515.
DDRAM adalah merupakan memori tempat karakter
yang ditampilkan berada. Contoh, untuk karakter A atau 41H yang
ditulis pada alamat 00, maka karakter tersebut akan tampil pada baris
pertama dan kolom pertama dari LCD. Apabila karakter tersebut ditulis
di alamat 40, maka karakter tersebut akan tampil pada baris kedua
kolom pertama dari LCD. Posisi ini ditunjukkan dalam Gambar 5.2.
516.
517.

518.
Gambar 5.2 Posisi DDRAM
CGRAM
519.
CGRAM
adalah
merupakan
memori
untuk
menggambarkan pola sebuah karakter di mana bentuk dari karakter

32
dapat diubah-ubah sesuai keinginan. Namun memori ini akan hilang
saat power supply tidak aktif, sehingga pola karakter akan hilang.
520.
CGROM
521.
CGROM
adalah
merupakan
memori
untuk
menggambarkan pola sebuah karakter di mana pola tersebut sudah
ditentukan secara permanen dari HD44780 sehingga pengguna tidak
dapat mengubah lagi. Namun karena ROM bersifat permanen, maka
pola karakter tersebut tidak akan hilang walaupun power supply tidak
aktif. Pada Gambar 6.3, tampak terlihat pola-pola karakter yang
tersimpan dalam lokasi-lokasi tertentu dalam CGROM. Pada saat
HD44780 akan menampilkan data 41H ke DDRAM, maka HD44780
akan mengambil data di alamat 41H (0100 0001) yang ada pada
CGROM yaitu pola karakter A.
522.
523.
Dalam Gambar 5.4 modul LCD dihubungkan ke PORTB
mikrokontroler dimana kaki RS, RD, EN terhubung ke PORTB.0-PORTB.2
dan D4, D5, D6, D7 terhubung ke PORTB.4-PORTB.7.
524.

525.
526.
Gambar 5.3 pola Karakter dalam CGROM

33

527.
528.
Gambar 5.4 Rangkaian LCD

529.
530.
531.
532. ALAT DAN BAHAN YANG DIGUNAKAN
533.
1 set PC/Laptop yang sudah berisi program Code Vision dan
Khazama
1 buah catu daya DC +5V
1 buah multimeter
1 buah ISP Downloader AVR
1 buah sistem minimum AVR
1 buah LCD
1 buah kabel printer USB
534.
535. PROSEDUR
536.
1.
Rangkailah peralatan yang diperlukan seperti dalam Gambar 6.5.
Hubungkan soket jumper PORTB pada minimum system dengan
soket jumper pada LCD.
537.

538.
539.

Gambar 5.5 Rangkaian antarmuka mikrokontroler dengan LCD


540.
2.
Buka program Code Vision AVR
3.
Buatlah file project (.prj) kemudian pilih IC yang digunakan
(ATmega8535) dan atur clock 4.000 Mhz. (seperti praktikum
sebelumnya)
541.
542.
543.

34
544.
545.
4.
Klik sub tab Libraries>>Alphanumeric LCD (alcd.h). Centang Enable
Alphanumeric LCD Support kemudian sesuaikan pada gambar di
bawah ini. Kemudian klik OK
546.

547.
5.
Buatlah file source (.c) kemudian hubungkan file project dengan file
source seperti pada praktikum sebelumnya.
548.
6.
Tuliskan file header

7.

8.

9.

549.
550.
Buatlah program utama dan tuliskan program berikut di dalam
program utama .
551.
Tuliskan program berikut dalam program utama tepatnya di dalam
while(1).

552.
Compile dan Build program jika ada yang error perbaiki program.
Masukkan file hex menggunakan Khanzama AVR Programer. Klik
auto program, amati tampilan LCD.
553.
554.
555.

35
556.
557.
558.
559.
560.
561.
10. Hapus program yang ada di dalam while. Tuliskan program berikut di
dalam while(1).

11.
12.

13.
14.

15.
16.

562.
Compile dan Build program jika ada yang error perbaiki program.
Masukkan file hex menggunakan Khanzama AVR Programer. Klik
auto program, amati tampilan LCD.
Hapus program yang ada di dalam while. Tuliskan program berikut di
dalam while(1).
563. while (1)
564. {
565. lcd_gotoxy(0,0);//menempatkan kursor di baris 0 kolom 0
566. lcd_putsf("Saya belajar");//menampilkan string Saya
belajar
567. }
Compile dan Build program jika ada yang error perbaiki program.
Masukkan file hex menggunakan Khanzama AVR Programer. Klik
auto program, amati tampilan LCD.
Hapus program yang ada di dalam while. Tuliskan program berikut di
dalam while(1).
568.

Compile dan Build program jika ada yang error perbaiki program.
Masukkan file hex menggunakan Khanzama AVR Programer. Klik
auto program, amati tampilan LCD.
Hapus program yang ada di dalam while. Tuliskan program berikut di
dalam while(1).

36

569.
17. Compile dan Build program jika ada yang error perbaiki program.
Masukkan file hex menggunakan Khanzama AVR Programer. Klik
auto program, amati tampilan LCD.
18. Buatlah tampilan nama anda berjalan dari kiri ke kanan pada baris 0
dan NIM anda berjalan dari kanan ke kiri pada baris 1 (tampidlan di
baris 0 dan 1 muncul secara bersamaan).
19. Ubahlah nilai dalam lcd_init(16) menjadi lcd_init(40) dan lihat
perbedaannya.
570.
571.
572.
573.
574.
575. DATA HASIL PERCOBAAN
576.
1.
Tampilan LCD pada langkah percobaan nomor 6
2.
Tampilan LCD pada langkah percobaan nomor 7
3.
Tampilan LCD pada langkah percobaan nomor 8
4.
Tampilan LCD pada langkah percobaan nomor 9
5.
Tampilan LCD pada langkah percobaan nomor 10
6.
Source code program pada langkah percobaan nomor 11
7.
Tampilan LCD pada langkah percobaan nomor 12
577.
578. ANALISA DATA
579.
1.
Analisa data hasil percobaan pada langkah percobaan nomor 6
sampai dengan nomor 10!
2.
Jelaskan program anda pada langkah percobaan nomor 11!
3.
Apakah fungsi sintaks lcd_init() dan jelaskan perbedaan antara
menggunakan lcd_init(16) menjadi lcd_init(40)?
4.
580.

37
581.
582. MODUL VI
583. MENGGUNAKAN ANALOG TO DIGITAL CONVERTER (ADC)
584. DALAM MIKROKONTROLLER ATMEGA8535
585.
586. TUJUAN
587.
Mengetahui dan memahami cara menggunakan ADC yang ada di
dalam mikrokontroler.
Mengetahui dan memahami bagaimana memrogram mikrokontroler
untuk mengonversi data analog menjadi data digital.
588.
589. ANALOG TO DIGITAL CONVERTER (ADC)
590.
591. Penggunaan ADC sebagai pengonversi data analog menjadi
data digital merupakan sesuatu hal yang diperlukan jika data yang masuk
ke dalam mikrokontroler, biasanya data dari sensor berupa sinyal analog.
592. Fitur ADC dalam ATMega8535 adalah sebagai berikut:
Resolusi 10 bit.
Waktu konversi 65-260 s.
Input 8 kanal.
Input ADC 0-5Vcc.
3 Mode pemilihan tegangan referensi.
593. Ada beberapa langkah yang harus dilakukan untuk inisialisasi
ADC, yaitu penentuan clock, tegangan referensi, format data output dan
mode pembacaan. Inisialisasi ini dilakukan pada register-register berikut:
594.
595. ADMUX (ADC Multiplexer Selection Register)
596. ADMUX merupakan register yang mengatur tegangan referensi
yang digunakan ADC,
597. format data output dan saluran ADC.
598.

599.
600.
601.
REFS0-1 (Reference Selection Bits)
602. REFS0-1 adalah bit-bit pengatur mode tegangan referensi ADC.

38
603.

604.
ADLAR (ADC Left Adjust Result)
605. ADLAR adalah bit keluaran ADC. Jika ADC telah selesai
konversi, maka data ADC akan diletakkan di 2 register, yaitu ADCH
dan ADCL dengan format sesuai ADLAR.
606. Format data ADC jika ADLAR=0
607.

608.
609. Format data ADC jika ADLAR=1
610.

611.
MUX0-4 (Analog Channel and Gain Selection Bits)
612. MUX0-4 adalah bit-bit pemilih saluran pembacaan ADC.

39

613.
614. ADCSRA (ADC Control and Status Register A)
615. ADCSRA adalah register 8 bit yang berfungsi untuk melakukan
manajemen sinyal kontrol dan status ADC.
616.

ADEN (ADC Enable)


617. ADEN merupakan bit pengatur aktivasi ADC. Jika bernilai 1
maka ADC akan aktif.
ADCS (ADC Start Conversion)
618. ADCS merupakan bit penanda dimulainya konversi ADC.
Selama konversi berlogika 1 dan akan berlogika 0 jika selesai
konversi.
ADATE (ADC Auto Trigger Enable)
619. ADATE merupakan bit pengatur aktivasi picu otomatis. Jika
bernilai 1 maka konversi ADC akan dimulai pada saat tepi positif
pada sinyal trigger yang digunakan.
ADIF (ADC Interrupt Flag)
620. ADIF merupakan bit penanda akhir konversi ADC. Jika bernilai
1 konversi ADC pada suatu saluran telah selesai dan siap diakses.
ADIE (ADC Interrupt Enable)
621. ADIE merupakan bit pengatur aktivasi interupsi. Jika bernilai 1
maka interupsi penandaan telah selesai. Konversi ADC diaktifkan.

40

ADPS0-2 (ADC Prescaler Select Bit)


622. ADPS0-2 merupakan bit pengatur clock ADC.
623.

624.
625. SFIOR (Special Function IO Register)
626. SFIOR adalah register 8 bit yang mengatur sumber pemicu ADC.
Jika bit ADATE pada register ADCSRA bernilai 0 maka ADTS0-2
tidak berfungsi.
627.

628.

629.
630. Rangkaian yang digunakan untuk mempelajari ADC dapat dilihat
dalam Gambar dibawah. Rangkaian ini merupakan rangkaian
pembagi tegangan dimana tegangan keluaran dapat dihitung
dengan rumus:
631. Vout = R2 x Vcc
632.
R1+R2

41
633.
634.
635.
636.
637.
638.
639.
640.
641. ALAT DAN BAHAN YANG DIGUNAKAN
642.
1 set PC/Laptop yang sudah berisi program Code Vision dan
Khazama
1 buah catu daya DC +5V
1 buah multimeter
1 buah ISP Downloader AVR
1 buah sistem minimum AVR
1 buah I/O
1 buah kabel printer USB
1 buah kabel pita hitam
1 buah potensiometer
643.
644.
645.
646.
647.
648.
649.
650.
651.
652.
653. PROSEDUR
654.
1.
Rangkailah peralatan yang diperlukan seperti dalam Gambar diatas.
Hubungkan soket jumper PORTC pada minimum system dengan
soket jumper pada OUTPUT LED. Vout pada rangkaian potensiometer
dihubungkan pada PORTA.0 (ADC channel 0).

655.
Buka program Code Vision AVR
Buat program dengan menggunakan aplikasi Code Vision AVR
Buatlah file project (.prj) kemudian pilih IC yang digunakan
(ATmega8535) dan atur clock 4.000 Mhz. (seperti praktikum
sebelumnya)
5.
Buatlah file source (.c) kemudian hubungkan file project dengan file
source seperti pada praktikum sebelumnya.
6.
Tambahkan file header
2.
3.
4.

42

7.

656.
Program berikut merupakan deklarasi variabel hasil konversi ADC.
Tuliskan variabel berikut di luar program utama.

8.

657.
Buatlah program utama dan inisialisasikan PORT C sebagai output
dengan kondisi awal LOW.

658.
659.
9.
Tuliskan inisialisasi ADC berikut di dalam program utama.

660.
661.
662.
663.
664.
665.
666.
667.
668.
669.
10. Perhatikan blok program berikut. Arti dari blok instruksi tersebut
adalah setting ADC di PORTA dan inisialisasi ADC. Tuliskan fungsi
berikut di luar program utama.

43

11.

670.
671.
Tuliskan program berikut dalam program utama tepatnya di dalam
while(1).

672.
12. Compile dan Build program jika ada yang error perbaiki program.
Masukkan file hex menggunakan Khanzama AVR Programer. Klik
auto program.
13. Hubungkan output potensiometer pada PORTA.0.
14. Ukur tegangan potensiometer (kaki tengah) sebesar 0-5V (sesuai
tabel).
15. Lepas probe AVO Meter lalu perhatikan dan catat nyala LED dan
konversi nilai dalam desimal.
673.
16. Hitung perhitungan nilai digital dalam desimal dengan rumus
berikut:
674. Vdigital = Vukur / Vcc *255
675. Contoh: misal tegangan analog yang diukur 1 V, maka
tegangan digital adalah:
676. V = 1/5 *255 = 51 desimal, atau 33H atau 00110011B
677.
678.
679.
680.
681.
682.
683.
684.
685.
686.
687.

44
688.
689.
690.
691. DATA HASIL PERCOBAAN
692.
693. Tabel ADC
694. 695. Te
696. Ta
697. Nila
N
ga
mpi
i
ng
lan
digi
an
LED
tal
an
(bit
LED
alo
7(de
g
bit0
cim
(0)
al)
5V
)
699.
701. 000
1
700. 0
000
702.
00
704.
706. 000
2
705. 0.5
110
707.
11
709.
711. 001
3
710. 1
101
712.
11
714.
716. 010
4
715. 1.5
100
717.
01
719.
721. 011
5
720. 2
011
722.
01
724.
726. 100
6
725. 2.5
010
727.
01
729.
731. 101
7
730. 3
001
732.
00
734.
736. 101
8
735. 3.5
111
737.
11
739.
741. 110
9
740. 4
110
742.
11
744.
746. 111
1
745. 4.5
101
747.
10
749.
751. 111
1
750. 5
111
752.
11
754.
755. ANALISA DATA

698. Nilai
digital
perhitun
gan
(desimal
)

703.
708.
713.
718.
723.
728.
733.
738.
743.
748.
753.

45
1.

756.
Analisa data hasil pada Tabel ADC
757.
758.
759.
760.

46
761. MODUL VII
762. MENGGUNAKAN INTERRUPT DALAM MIKROKONTROLLER
ATMEGA8535
763.
764.
765. TUJUAN
766.
Menjelaskan fitur interrupt dalam mikrokontroler.
Mengetahui dan memahami bagaimana memrogram mikrokontroler
untuk menjalankan interupsi pada saat program utama dijalankan
767.
768. INTERRUPT
769.
770. Interrupt adalah kondisi di mana pada saat program utama
dieksekusi/dikerjakan oleh CPU kemudian tiba-tiba berhenti untuk
sementara waktu karena ada rutin lain yang harus ditangani terlebih
dahulu oleh CPU. Setelah selesai mengerjakan rutin tersebut, CPU kembali
mengerjakan instruksi pada program utama. Port yang berfungsi sebagai
interrupt eksternal adalah:
771. PORTD.2 (PD2) External Interrupt 0 Input (INT0)
772. PORTD.3 (PD3) External Interrupt 1 Input (INT1)
773. PORTB.2 (PB2) External Interrupt 2 Input (INT2)
774. Di dalam mikrokontroler AVR terdapat 21 interrupt baik eksternal
maupun internal. Interrupt tersebut dapat dilihat dalam tabel
berikut.

775.
776.
777. Register-register yang digunakan untuk interrupt meliputi:
a MCU Control Register-MCUCR

47

778.
Bit 3,2 ISC11, ISC10: Interrupt Sense Control 1 Bit 1 dan Bit 0

779.
Bit 1,0 ISC01, ISC00: Interrupt Sense Control 0 Bit 1 dan Bit 0

780.
b MCU Control and Status Register-MCUCSR

781.
ISC2 = 0, a falling edge on INT2 activates the interrupt
ISC2 = 1, a rising edge on INT2 activates the interrupt
Lebar pulsa minimum: 50 ns
c Status Register-SREG

782.
Bit 7 I: Global Interrupt Enable

783.
d General Interrupt Control Register-GICR

784.
Bit 7 - INT1:eksternal interrupt request 1 enable
Bit 6 INT0 :eksternal interrupt request 0 enable

48
Bit 5 INT2 : eksternal interrupt request 2 enable
785.
786.
787.
788.
789.
e General Interrupt Flag Register-GIFR

A.
1.
2.
3.

790.
Bit 7 - INT1:eksternal interrupt flag 1 enable
Bit 6 INT0 :eksternal interrupt flag 0 enable
Bit 5 INT2 : eksternal interrupt flag 2 enable
791.
792. ALAT DAN BAHAN YANG DIGUNAKAN
793.
1 set PC/Laptop yang sudah berisi program Code Vision dan
Khazama
1 buah catu daya DC +5V
1 buah multimeter
1 buah ISP Downloader AVR
1 buah sistem minimum AVR
1 buah I/O
1 buah kabel printer USB
2 buah kabel pita hitam
794.
795. PROSEDUR
796.
MENGGUNAKAN 1 INTERRUPT
Hubungkan PORTC pada minimum system dengan soket jumper
OUTPUT pada trainer dan PORTD.2 (INT0) dari minimum sistem ke
soket IS1 pada trainer.
Buka program Code Vision AVR
Buatlah project baru. Pada tap External IRQ centang INT0 lalu pilih
Mode Falling edge dan set PORTC sebagai OUTPUT

797.
798.
799.
800.
801.

49

4.

802.
803.
804.
805.
806.
807.
808.
809.
Ketik sub routine interrupt seperti sintaks dibawah ini.

5.

810.
Ketik dalam program utama (main program)

6.
7.
8.
B.
1.
2.
3.

811.
Compile dan Build program, jika ada yang error perbaiki program.
Masukkan file hex menggunakan Khanzama AVR Programer. Klik
auto program.
Amati nyala LED sebelum dan sesudah anda menekan tombol
interupsi (lihat tabel interupsi pada data hasil percobaan)
Ulangi langkah 3-9 untuk mode interupsi (Interrupt Sense Control)
Rising Edge, Any Change dan Low Level.
812.
MENGGUNAKAN 3 INTERRUPT SECARA BERSAMAAN
Hubungkan PORTC pada minimum system dengan soket jumper
OUTPUT pada trainer, PORTD.2 (INT0), PORTD.3 (INT1) dan PORTB.2
(INT2) dari minimum sistem ke soket IS1 pada trainer.
Buka program Code Vision AVR.
Buatlah project baru. Pada tap External IRQ centang INT0 Enabled,
INT1 Enabled dan INT2 Enabled. Kemudian pilih Mode Falling Edge
untuk semua interrupt dan set PORTC sebagai OUTPUT.
813.

50

814.
815.
816.
817.
818.
819.
820.
4.

821.
Ketik sub routine interrupt seperti sintaks dibawah ini.

5.

822.
823.
Ketik dalam program utama (main program)

51

824.
Compile dan Build program jika ada yang error perbaiki program.
Masukkan file hex menggunakan Khanzama AVR Programer. Klik
auto program.
7.
Hubungkan INT0, INT1, dan INT2 menjadi satu dengan IS1 pada
trainer
8.
Amati nyala LED sebelum dan sesudah anda menekan tombol
interupsi tombol IS1
825.
826.
827.
828.
829.
830.
831.
832.
833. DATA HASIL PERCOBAAN
834.
835. Tabel Interupsi
836. 837. Mo
838. Program yang dijalankan (Interrupt /
N
de
Main Program)
Int
842. Saat
844. Saat
841. Saat
er
tombol
tom
tomb
up
IS1
bol
ol IS1
si
diteka
IS1
belu
n dan
dilep
m
ditaha
aska
ditek
n
n
an
843. (Raisin
845. (Falli
(Low)
g)
ng)
846. 847. Fall
849.
850.
1
ing
848.
Ed
ge
851. 852. Risi
854.
855.
2
ng
853.
Ed
ge
856. 857. An
859.
860.
3
y
Ch
858.
an
ge
861. 862. Lo
864.
865.
4
w
863.
Lev
el
6.

52
866. 867.
868.
869.
870.
871.
872. ANALISA DATA
873.
1.
Analisa data hasil pada Tabel Interupsi
2.
Ketika ke tiga interupt diaktifkan secara bersamaan tuliskan urutan
terjadinya interupt
874.

53
875. MODUL VIII
876. MENGGUNAKAN TIMER/COUNTER
877. DALAM MIKROKONTROLER ATMEGA8535
878.
879. TUJUAN
880.
Mahasiswa mampu menggunakan fitur timer/counter mikrokontroler.
Mahasiswa mampu menggunakan mikrokontroler untuk membuat
timer.
Mahasiswa mampu menggunakan mikrokontroler untuk menghitung
banyaknya pulsa yang masuk.
881.
882. TIMER/COUNTER
883.
884. Timer/counter dalam ATmega8535 ada 3 yaitu:
Timer/counter 0
Timer/counter 1
Timer/counter 2
885.
886. Interrupt timer berasal dari dua sumber yaitu:
Overflow interrupt, dimana interrupt terjadi jika TCNTn mencapai
255 untuk timer 8 bit dan 65535 untuk timer 16 bit.
Compare match interrupt, dimana interrupt terjadi jika nilai OCR
sama dengan TCNTn.
887.
888. Secara umum fitur Timer/Counter mikrokontroler ATmega8535
dapat digunakan untuk berbagai macam fungsi, yaitu:
Timer/delay time
889. Pada dasarnya ketika Timer/Counter difungsikan sebagai
Timer, sistem hanya menghitung pulsa clock. Frekuensi pulsa clock yang
dihitung tersebut bisa sama dengan frekuensi kristal yang digunakan atau
dapat diperlambat menggunakan prescaler dengan faktor 8, 64, 256, atau
1024. Contohnya jika sebuah sistem mikrokontroler menggunakan kristal
dengan frekuensi 4 MHz dan timer yang digunakan adalah timer 8 bit,
maka maksimum waktu timer yang bisa dihasilkan adalah:
890.
1
t MAX =
x ( FFh+1 )
f clk
1
x ( 255+1 )
891. t MAX =
4000000
892. t MAX =0,000064 s
893.
894. Untuk menghasilkan timer yang lebih lama dapat digunakan
prescaler, misalnya 1024, maka maksimum waktu timer yang
bisa dihasilkan adalah:
1
x (FFh+ 1) x N
895. t MAX =
f clk
1
x ( 255+1 ) x 1024
896. t MAX =
4000000
897. t MAX =0,065536 s

54
898.
899.
900. Untuk menghitung nilai TCNT supaya menghasilkan waktu timer
tertentu dipergunakan rumus berikut:
(T
xf )
901.
TCNT =(1+ FFh ) timer clk
N
902.
903. Dimana:
904. TCNT
= nilai Timer (Heksadesimal)
905. fCLK
= Frekuensi clock kristal yang digunakan (Hz)
906. Ttimer = Waktu timer yang diinginkan (detik)
907. N = prescaler (1,8,64,256,1024)
908. 1+FFh = nilai maksimum timer adalah FFh dan overflow saat
FFh ke 00h
909.
Counter
910. Secara prinsip, memfungsikan Timer/Counter sebagai Counter
sama dengan fungsi sebagai Timer akan tetapi sumber clock bukan
berasal dari frekuensi kristal, tetapi input dari kaki Tn. Dengan
memanfaatkan counter naik, maka bisa diberikan nilai TCNT yang sesuai
dengan rumus berikut:
911. TCNT = (1+FFH) jumlah counter
912. Sehingga jika diinginkan membuat counter 5, maka nilai TCNT
adalah FBH.
913.
Mode CTC
914. Dengan mode ini, maka mikrokontroler bisa membangkitkan
sinyal dengan frekuensi tertentu sesuai dengan rumus berikut:
f cl k /O
f OCn =
915.
2. N .(1+OCRn)
916. Jika diinginkan untuk membangkitkan sinyal dengan frekuensi 1
kHz, maka dengan frekuensi clock 4 MHz, dan N=16, maka
diperoleh nilai OCR sebagai berikut:
f cl k /O
f OCn =
917.
2. N .(1+OCRn)
f cl k /O
1+OCRn=
918.
2. N . f OCn
f cl k /O
OCRn=
1
919.
2. N . f OCn
4000000
OCRn=
1
920.
2.16 .1000
921.
OCRn=124
922.
923.
Mode PWM
924. Dengan mode ini, maka mikrokontroler bisa membangkitkan
sinyal dengan frekuensi tertentu dan duty cycle tertentu sesuai dengan
rumus sebagai berikut.
925. Untuk Fast PWM:
I

55
926.

f OCnPWM =

f cl k /O
N .256
I

927.
928. Untuk Phase Correct PWM:
f cl k /O
929.
f OCnPWM =
2. N .256
930. Dimana nilai OCR yang berkisar dari 0 sampai 255 akan
mempengaruhi duty cycle sinyal yang dibangkitkan.
931. ALAT DAN BAHAN YANG DIGUNAKAN
932.
1 set PC/Laptop yang sudah berisi program Code Vision dan
Khazama
1 buah multimeter dengan fasilitas frequency counter
1 buah ISP Downloader AVR
1 buah sistem minimum AVR
1 buah I/O
1 buah kabel printer USB
2 buah kabel pita hitam
933.
934. PROSEDUR
935.
936.
TIMER
1.
Rangkailah peralatan yang diperlukan seperti gambar dibawah.
Hubungkan soket jumper PORTC pada minimum system dengan
soket jumper pada OUTPUT Trainer I/O.
I

937.
2.
Buka program Code Vision AVR
3.
Buatlah project baru. Pada saat mengeset chip dan clock, set juga
bagian PORTC untuk LED serta Timer seperti gambar dibawah.
Kemudian simpanlah file tersebut.
Nilai Clock Value adalah Nilai Clock Frequency Chip (F clock) dibagi
dengan prescaller dimana prescaller tersebuat bernilai 1, 8, 64,
256, atau 1024
Contoh jika nilai Fclock = 4 Mhz maka jika kita ingin menggunakan
prescaller 1024 setting Clock Value nya adalah 4Mhz/1024=3,906
Khz
938.

56

939.
940.
941.
942.
943.
944.
4.

Perhatikan blok program berikut.

945.
946.
5.
Tuliskan script berikut dalam interrupt:

947.

57
6.
7.
8.
9.
10.
11.

Compile dan Build program jika ada yang error perbaiki program.
Masukkan file hex menggunakan Khanzama AVR Programer. Klik
auto program.
Perhatikan dan catat nyala LED.
Ubah nilai TCCR0 menjadi 0x04 dan 0x03.
Perhatikan perbedaan nyala LED dengan nilai TCCR yang berbedabeda.
Ulangi langkah 3-9 untuk Timer2 dengan TCNT=0x80;
Buat Project baru untuk Timer1 dengan TCNT = 0xd5d0
948.

949.
12.

Perhatikan blok berikut

950.

58
951.
13. Tuliskan script berikut dalam blok interrupt

952.
Compile dan Build program jika ada yang error perbaiki program.
Masukkan file hex menggunakan Khanzama AVR Programer. Klik
auto program.
15. Perhatikan dan catat nyala LED.
16. Ubah nilai TCCR1B sehingga menjadi 0x04, 0x03, 0x02, 0x01.
17. Perhatikan perbedaan nyala LED dengan nilai TCCR yang berbedabeda.
18. Buatlah program menggunakan Timer 16 bit (Timer1) dengan nilai
TCCR1B=0x05, Ubah nilai TCNT sehingga menghasilkan timer 1
detik.
953.
954.
14.

59
955. COUNTER
1.
Rangkailah peralatan yang diperlukan seperti dalam gambar
dibawah. Hubungkan soket jumper PORTC pada minimum system
dengan soket jumper pada OUTPUT LED. Hubungkan kaki IS1 ke
PORTB.0 (T0).

2.
3.

956.
Buka program Code Vision AVR
Buatlah project baru. Pada saat mengeset chip dan clock, set juga
bagian PORTC untuk LED serta Timer seperti gambar dibawah.
Kemudian simpanlah file tersebut.
957.

958.

4.

959.
Perhatikan blok program berikut.

60

960.
961.
962.
963.
964.
5.
Tuliskan script berikut dalam interrupt:

965.
Compile dan Build program jika ada yang error perbaiki program.
Masukkan file hex menggunakan Khanzama AVR Programer. Klik
auto program.
7.
Tekan push button IS1 Perhatikan dan catat nyala LED.
8.
Lakukan hal serupa dengan Timer dengan mengganti nilai TCNT0
menjadi 0xFC dan 0xF0 (lihat tabel counter pada data hasil
percobaan).
966.
967.
968.
969.
970.
971.
972.
973.
974.
975.
976.
977.
978.
6.

61
979.
980.
981.
982.
983.
984.
985.
986.
987.
988.
989.
990.
991.
992.
993.
994.
995.
996.
997.
998.
CTC
1. Rangkailah peralatan yang diperlukan seperti dalam Gambar 1.2.
Hubungkan PORTB pada minimum system dengan kabel data pada
OUTPUT TRAINER.
999.
1000.

2. Buka program Code Vision AVR


3. Buatlah project baru. Pada saat mengeset chip dan clock, set juga
bagian PORTB untuk LED serta Timer. Kemudian simpanlah file
tersebut.
1001.

62

1002.
1003.

1004.
4. Klik Yes jika muncul dialog diatas
1005.
1006.
1007.
1008.
1009.
5. Perhatikan blok program berikut.
1010.

63

1011.
6. Compile dan Build program jika ada yang error perbaiki program.
Masukkan file hex menggunakan Khanzama AVR Programer. Klik
auto program.
7. Lihat nyala LED di PORTB.3.
8. Ukur frekuensi pada PORTB.3 dengan frequency counter di
AVOmeter
9. Ubah Nilai OCR0 menjadi 0x3E dan 0x1E (lihat tabel CTC pada data
hasil percobaan)
10.
Lihat nyala LED di PORTB.3.
11.
Ukur frekuensi pada PORTB.3 dengan frequency counter di
AVOmeter
12.
Amati Nyala LED
13.
Buatlah program yang dapat membangkitkan sinyal dengan
frekuensi 1 Hz.
1012.
1013.
1014.
1015.
1016.
1017.
1018.
1019.
1020.
1021.
1022.
1023.
1024.
1025.
1026.
1027.
1028.
1029.
1030.
1031.

64
1032.
1033.
1034. PULSE WIDTH MODULATION (PWM)
1. Rangkailah peralatan yang diperlukan seperti dalam Gambar 1.2.
Hubungkan PORTB pada minimum system dengan kabel data pada
OUTPUT TRAINER.
1035.

2. Buka program Code Vision AVR


3. Buatlah project baru. Pada saat mengeset chip dan clock, set juga
bagian PORTB untuk LED serta Timer. Kemudian simpanlah file
tersebut.
1036.

1037.
1038.

1039.
4. Klik Yes jika muncul dialog diatas
5. Perhatikan blok program berikut.
1040.

65
1041.

1042.
1043.
1044.
1045.

1046.
1047.
6. Compile dan Build program jika ada yang error perbaiki program.
Masukkan file hex menggunakan Khanzama AVR Programer. Klik
auto program.
7. Lihat nyala LED di PORTB.3.
8. Ukur frekuensi pada PORTB.3
9. Ubah Nilai OCR0 menjadi 0x00 dan 0xFF (lihat tabel PWM pada data
hasil percobaan)
10.
Amati Nyala LED
11.
Ulang langkah 3-9 dengan mode Fast PWM.
12.
Buatlah program yang dapat mengubah nilai Duty Cycle sesuai
dengan input Potensiometer !
1048. Potensiometer 0 V (minimum) Duty Cycle 0%
1049. Potensiomter 5V (Maksimum) Duty Cycle 100%
1050.
1051. DATA HASIL PERCOBAAN
1052.
1053. TIMER
1054.
1055. 1056.
1057.
1059.
N
TI
TCC
TCN
1058. Kondisi Led
D
1060.1061.
1
Tim

1062.
0x0

1063.
0x5

1064.

1065.

1066.1067.
2
Tim

1068.
0x0

1069.
0x5

1070.

1071.

1072.1073.
3
Tim

1074.
0x0

1075.
0x5

1076.

1077.

1078.1079.
6
Tim

1080.
0x0

1081.
0x8

1082.

1083.

66
1084.1085.
7
Tim

1086.
0x0

1087.
0xD

1088.

1089.

1090.1091.
8
Tim

1092.
0x0

1093.
0xD

1094.

1095.

1096.1097.
9
Tim

1098.
0x0

1099.
0xD

1100.

1101.

1102.1103.
1
Tim

1104.
0x0

1105.
0xD

1106.

1107.

1108.1109.
1
Tim

1110.
0x0

1111.
0xD

1112.

1113.

1114.1115.
1
Tim

1116.

1117.

1118. 00000000
11111111

1119.
1

1120.
1121.

Counter
1128.
1126. Jumlah
Penekana
n Tombol
IS1
Hingga
1127.
LED
Menyala

Jumla
h
Penekan
an
Tombol
IS1
Hingga
1129. LED
Mati
1135.

1122.
1123.
N
TI

1124. 1125.
TC
TC

1130.1131.
1
Tim

1132.
0x

1133.
0x

1134.

1136.1137.
2
Tim

1138.
0x

1139.
0x

1140.

1141.

1142.1143.
3
Tim

1144.
0x

1145.
0x

1146.

1147.

1148.
1149.
1150.
1151.
1152.
1153.

CTC
1154. Nilai
OCR0/OCR1A/O
CR1B/OCR2

1155.
N

1156. Nyala LED

1157. F
r
e
k
u
e

67
n
s
i
1158. 0x7C
1162. 0x3E
1166. 0x1E

1159.

1160.

1163.

1164.

1167.

1168.
1172.

1170.
1174.
1175.
1176.
1177.

1179.
Nilai

1183.
0x0
1189.
0x5
1193.
0xFF
1197.

1171.

PWM
1178. Fast PWM
1181. T
e
g
a
1180.
n
Nya
g
a
n
L
E
D
1184.

1182.
Frek

1185.
1186.

1190.
1194.
1198.

1191.
1195.

1187.
1188.

1200.
1199.
1201. Phase Correct PWM
1204. T
e
g
a
1202.
1203.
n
1205.
Nilai
Nya
g
Frek
a
n
L
E
D

1161.
1165.
1169.
1173. 1
H
z

68
1206.
0x0
1212.
0x5

1207.

1208.
1209.

1213.

1214.

1210.

1216.
1217.
1211.
1218.
0xFF
1220.
1221. ANALISA DATA
1222.
1223. TIMER
1. Analisa data hasil pada tabel Timer dengan menggunakan rumus :
( ( 1+255 ) TCNT 0 ) Prescaler
1224.
T timer 0=
f clock
( ( 1+65535 )TCNT 1 ) Prescaler
1225.
T timer 1=
f clock
1226. Hitung Nilai Ttimer :
1230. F
c
l
o
1227. 1228. 1229.
c
1231.
1232.
1233.
1234. Ketera
TI
T
TC
k
Pres
8/
T
ngan

1236.
0
1235.
Ti

1237.
0x

(
H
z
)
1238. 4
.
0
0
0
.
0
0
0

1243. 1244. 1245.


Ti
0
0x

1239.
1.0
1247.

1240.
255

1255.
1263.
1271.
1270.

1250.

1257.

1258.

1265.

1266.

1273.

1274.

1264.

1262.
1267. 1268. 1269.
Ti
0
0x

1249.
1256.

1254.
1259. 1260. 1261.
Ti
0
0x

1242. Delay
tidak
terlihat

1248.

1246.
1251. 1252. 1253.
Ti
0
0x

1241.
0,

1272.

69
1275. 1276. 1277.
Ti
0
0x

1279.

1280.

1278.
1283. 1284. 1285.
Ti
0
0x

1287.
1295.
1303.
1302.

1289.

1290.

1297.

1298.

1305.

1306.

1296.

1294.
1299. 1300. 1301.
Ti
0
0x

1282.

1288.

1286.
1291. 1292. 1293.
Ti
0
0x

1281.

1304.

1307.
2. Bagaimana anda mendapatkan timer dengan T timer 1 detik dengan
menggunakan Timer1?
1308. COUNTER
1. Analisa data hasil pada tabel counter
1309.
1310.
1311. CTC
1. Hitung nilai frekuensi
1312. Nilai
1314. Nyal
1315.
1313.
OCR0/OCR1A/O
a
Frek
N
CR1B/OCR2
LED
1317. 1318.
1319.
1316. 0x7C
1320. 0x3E
1324. 0x1E

1321.

1322.

1323.

1325.

1326.

1327.

1328.
2. Bagaimana cara anda membangkitkan sinyal dengan frekuensi 1
detik menggunakan Timer/Counter mode CTC?
1329.
1330.
1331. PWM
1. Hitung nilai frekuensi dan duty cycle
1332. Fast PWM
1333.
1334. D
1335. Dut
1336.
Nilai
u
y
Frek
t
Cycl
y
e
Ber
C
das
y
ark
c
an
l
Nila
e
i
Teg
B
ang
e
an

70
r
d
a
s
a
r
k
a
n
LED
N
i
l
a
i
O
C
R
0
1337.
0x0

1338.

1339.

1343.
0x5

1344.

1345.

1340.
1341.

1347.
0xF

1348.

1349.

1351.
1352.
1353.
1355. Phase Correct PWM
1356.
1357. D
1358. Dut
Nilai
u
y
t
Cycl
y
e
Ber
C
das
y
ark
c
an
l
Nila
e
i
Teg
B
ang
e
an
r
LED
d
a
s
a
r
k

1342.
1354.
1359.
Frek

71
a
n
N
i
l
a
i
O
C
R
0
1360.
0x0
1366.
0x5

1361.
1367.

1362.
1368.

1363.
1364.

1370.
0xF

1371.

1372.

1365.

1374.
2. Jelaskan perbedaan mode Fast PWM dengan Phase Correct PWM
3. Mengapa nyala led pada mode Fast PWM berkedip lebih cepat
daripada mode Phase Correct PWM?
4. Source Code Program langkah no 11.
1375.

72
1376. MODUL IX
ANTARMUKA MIKROKONTROLER DENGAN MOTOR DC

1377.
1378.
1379.
TUJUAN
1380.
Mengetahui,dan
memahami
bagaimana
mengantarmukakan
mikrokontroler dengan motor DC.
Mengetahui, memahami dan mempraktekkan pemrograman
mikrokontroler untuk mengatur arah putaran motor DC.
Mengetahui, memahami dan mempraktekkan pemrograman
mikrokontroler untuk mengatur kecepatan putaran motor DC dengan
PWM (Pulse Width Modulation).
1381.
1382. MOTOR DC
1383.
1384. Motor DC atau motor arus searah adalah suatu mesin listrik
yang dapat mengubah energi listrik yang berupa listrik arus searah
menjadi energi mekanik (gerak). Energi mekanik tersebut berupa putaran
dari rotor.
1385. Motor DC memerlukan suplai tegangan searah pada kumparan
medan untuk diubah menjadi energi mekanik. Kumparan medan pada
motor DC disebut stator (bagian yang tidak berputar dan kumparan
jangkar disebut rotor (bagian yang berputar). Jika terjadi putaran pada
kumparan jangkar dalam medan magnet, maka akan timbul tegangan
(GGL) yang berubah-ubah arah pada setiap setengan putaran, sehingga
menghasilkan tegangan bolak-balik.

1386.
1387. Gambar 9.1
Gambar 9.2
1388.
1389. Catu tegangan DC dari baterai menuju ke lilitan melalui sikat
yang menyentuh komutator, dua segmen yang terhubung dengan dua
ujung lilitan. Kumparan satu lilitan pada Gambar 9.1 disebut angker
dinamo, Angker dinamo adalah sebutan untuk komponen yang berputar di
antara medan magnet.
1390. Cara kerja motor DC: (1) Arus medan (DC) yang mengalir pada
belitan medan akan menghasilkan medan magnet. Medan magnet ini
akan memotong belitan jangkar yang ada di rotor motor DC; (2) Belitan
jangkar dialiri arus listrik. Karena belitan berarus listrik ini berada dalam
pengaruh medan magnet, maka pada belitan akan timbul gaya magnet
yang selanjutnya akan menimbulkan torsi; (3) Jika torsi awal yang
dihasilkan lebih besar daripada torsi beban, maka jangkar akan berputar.

73
1391.
1392.

74
1393. ALAT DAN BAHAN YANG DIGUNAKAN
1394.
1 set PC/Laptop yang sudah berisi program Code Vision dan
Khazama
1 buah catu daya DC +12V
1 buah multimeter
1 buah ISP Downloader AVR
1 buah sistem minimum AVR
1 buah I/O
1 buah kabel printer USB
1 buah motor DC
1 buah modul driver motor L293D
2 buah kabel data
1395.
1396. PROSEDUR
1397.
1.
Rangkailah peralatan yang diperlukan seperti dalam Gambar 9.3 dan
Gambar 9.4. Hubungkan kabel data modul driver motor pada PORTD
minimum system. Hubungkan terminal OUTA modul driver motor
L293D ke V+ Motor DC (kabel merah) dan OUTB ke V- Motor DC
(kabel biru). Vout pada rangkaian potensiometer dihubungkan pada
PORTA.0 (ADC channel 0). Catu daya potensiometer ke catu daya
minimum system. Catu daya +12 ke teminal VCC modul driver
motor L293D.
1398.

75
1399.

Catu Daya
+12V

Kabel USB
ISP Downloader

Kabel
downloader

Minimum
system AVR

Driver Motor

Motor DC

Potensiometer

1400. Gambar 9.3 Diagram antarmuka mikrokontroler dengan Motor


DC
1401.

76

1402.
1403.
2.
3.

Gambar 9.4 Rangkaian driver motor

1404.
Buka program Code Vision AVR
Buatlah project baru. Setelah mengeset chip dan clock, set juga
bagian PORTD sebagai output, Timer1 dan ADC seperti Gambar 9.5.
Kemudian simpanlah file tersebut.
1405.

77

1406.

1407.
1408. Gambar 9.5 Setting PORTD, Timer1, dan ADC
1409.
Tuliskan script berikut dalam program utama:
1410. while (1)
1411.
{
1412.
OCR1A=255;
1413.
PORTD.0=1;
1414.
PORTD.1=0;
1415.
}
5.
Perhatikan arah putaran motor, ke arah mana motor berputar (CW
atau CCW)?
6.
Ubah nilai PORTD.0 dan PORTD.1 sesuai tabel berikut dan catat
hasilnya
1417. 1419.
PO
POR
1416.
1421. Kondisi Motor /
N
1418. 1420.
Arah Putar
(IN
(IN2
4.

1422.1423.
1
0
1426.1427.
2
0

1424.
0
1428.
1

1425.
1429.

78
1430.1431.
3
1
1434.1435.
4
1

1432.
0
1436.
1

1433.
1437.

1438.
Untuk mengubah kecepatan motor DC dengan PWM, ganti script
dalam program utama menjadi seperti berikut:
1439. while (1)
1440.
{
1441.
// Place your code here
1442.
OCR1A=read_adc(0);
1443.
PORTD.0=1;
1444.
PORTD.1=0;
1445.
}
1446.
8.
Hubungkan multimeter ke Vout potensiometer, putar potensiometer
sampai multimeter menunjukkan nilai 0V! Ukur dan catat tegangan
pada terminal OUTA dan OUTB serta catat kondisi motor DC!
9.
Putar potensiometer sampai multimeter menunjukkan nilai 2V! Ukur
dan catat tegangan pada terminal OUTA dan OUTB serta catat
kondisi motor DC!
10. Putar potensiometer sampai multimeter menunjukkan nilai
maksimum! Ukur dan catat tegangan pada terminal OUTA dan OUTB
serta catat kondisi motor DC!
11. Ubah register TCCR1B menjadi 0x02, build lalu download program ke
mikrokontroler!
12. Putar potensiometer hingga maksimal lalu putar kembali pelan-pelan
hingga motor berhenti, ukur dan catat tegangan output
potensiometer, tegangan terminal OUTA, dan tegangan terminal
OUTB pada saat motor berhenti!
13. Ubah register Timer1 menjadi TCCR1A=0xC1 dan TCCR1B=0x04;
(Compare Mode Out A = Inverting; Prescaller = 256)
14. Build lalu download program ke mikrokontroler
15. Ulangi langkah 8-10
1447.
1448. DATA HASIL PERCOBAAN
1449. Tabel 9.1
1457.
1459.
1455. K
Tega
Tega
ondi
1451. 1453.
n
n
si
PO
POR
g
g
1450.
Moto
a
a
N
r/
1452. 1454.
n
n
1456. Ar
(IN
(IN2
ah
1458.
1460.
Puta
OUT
OUT
r
A
B
1461.1462. 1463.
1464.
1465.
1466.
1
0
0
1467.1468. 1469.
1470.
1471.
1472.
2
0
1
7.

79
1473.1474.
3
1
1479.1480.
4
1

1475.
0
1481.
1

1476.

1477.

1478.

1482.

1483.

1484.

1485.

1503.
8

1486.
1487.
1488.
1489.
1490.
1491.
1492.
1493.
1494. Tabel
1498.
Tegan
g
a
n
1496. 1497.
P
TC
TC
o
t
e
n
s
i
o
1504. 1505. 1506. 0
0x
0x
V

1511.
9

1512.
0x

1513.
0x

1514. 2
V

1515.

1516.

1517.

1518.

1519.
10

1520.
0x

1521.
0x

1523.

1524.

1525.

1526.

1527.
12

1528.
0x

1529.
0x

1522. M
a
x
1530.

1531.

1532.

1533.
Ber

1534.

1535.
15 a

1536.
0x

1537.
0x

1538. 0
V

1539.

1540.

1541.

1542.

1543.
15 b

1544.
0x

1545.
0x

1546. 2
V

1547.

1548.

1549.

1550.

1551.
15 c

1552.
0x

1553.
0x

1554. M
a
x

1555.

1556.

1557.

1558.

1495.
Lang

1559.
1560. ANALISA DATA
1.
Analisa tabel 9.1!

9.2
1501.
Ko

1502.
D

1499.
Teg

1500.
Teg

1507.

1508.

1509.

1510.

80
2.

Dengan melihat data pada tabel 9.2, bandingkan hasil percobaan


langkah nomor 8-10 dengan langkah nomor 15!
3.
Apakah perbedaan antara compare mode non-invering dan
inverting?
4.
Apa pengaruh duty cycle dari PWM yang masuk pada pin EN1
terhadap tegangan pada terminal OUT A dan OUT B?
5.
Mengapa pada langkah nomor 12 motor berhenti saat tegangan
potensiometer belum mencapai 0 V?
1561.
1562.

81
1563.

DAFTAR PUSTAKA
1564.
1565. Andrianto, Heri. 2007. Pemrograman Mikrokontroler AVR Atmega 16. Jakarta:
Informatika.
1566. Atmel Corporation. Atmega 8535 Datasheet (Complete).
1567. Gadre, Dhananjay V. 2001. Programming and Customizing the AVR Microcontroller.
New York: Mc Graw Hill.
1568. Heryanto, M Ary. 2007. Pemrograman Bahasa C untuk Mikrokontroler Atmega 8535.
Yogyakarta; Penerbit Andi.
1569. Ibrahim, Dogan. 2002. Microcontroller Based Temperature Monitoring & Control.
Newnes
1570. John Crisp. Introduction to Microprocessors and microcontrollers. OXFORD:
Newnes
1571.
1572.
1573.

Anda mungkin juga menyukai