KATA PENGANTAR - Web viewPembangkitan sinyal PWM dengan mikrokontroler memiliki beberapa keuntungan,...
-
Upload
phungquynh -
Category
Documents
-
view
224 -
download
2
Embed Size (px)
Transcript of KATA PENGANTAR - Web viewPembangkitan sinyal PWM dengan mikrokontroler memiliki beberapa keuntungan,...

BUKU MODUL PRAKTIKUM MIKROKONTROLLER
Dibuat Oleh:
Iswanto, S.T, M.Eng
TEKNIK ELEKTRO MEDIK
PROGRAM VOKASI
UNIVERSITAS MUHAMMADIYAH YOGYAKARTA
2015

KATA PENGANTAR
Assalamu’alaikum wr wb
Puji syukur kehadirat Allah SWT, penulis sampaikan atas kenikmatan yang tiada tara yang selalu
dilimpahkan oleh-Nya sehingga penulisan modul praktikum Sistem Mikrokontroller ini selesai.
Sholawat dan salam semoga selalu tercurah kepada nabi Muhammad SAW.
Salah satu jenis pendidikan yang dilaksanakan di-universitas yaitu mata kuliah praktikum.
Diantara praktikum yang ada di Teknik Elektro Universitas Muhammadiyah Yogyakarta adalah
praktikum Sistem Mikrokontroller. Telah diketahui bersama bahwa sistem mikrokontroller pada
akhir-akhir periode ini memegang peranan penting dalam kehidupan. Dimulai dari alat
komunikasi, alat-alat rumah tangga, alat keamanan, dan lain sebagainya berbasis teknologi
mikroprosesor. Dalam rangka memberi bekal ilmu tersebut, maka disusunlah modul Praktikum
Sistem Mikrokontroller dibawah Laboratorium Teknik Elektro UMY.
Akhirnya, penulis ucapkan terima kasih kepada semua pihak yang telah membantu dan
membaca, serta mempraktikkan modul ini. Semoga bermanfaat.
Wassalamu’alaikum wr wb.
Agustus 2012
Penulis
Iswanto, ST, M.Eng

TATA TERTIBTata Tertib Laboratorium:
1. Berlaku sopan, santun dan menjunjung etika akademik dalam laboratorium. 2. Menjunjung tinggi dan menghargai staf laboratorium dan sesama pengguna laboratorium. 3. Menjaga kebersihan dan kenyamanan ruang laboratorium. 4. Peserta praktikum (praktikan) yang mengenakan pakaian/kaos oblong tidak boleh
memasuki laboratorium dan/atau tidak boleh mengikuti praktikum. 5. Praktikan makan dan minum, membuat kericuhan selama kegiatan praktikum dan di
dalam ruang laboratorium. 6. Dilarang memindahkan, mengganti dan menggunakan peralatan di laboratorium yang
tidak sesuai dengan acara praktikum matakuliah yang diambil. 7. Praktikan yang telah menghilangkan, merusak atau memecahkan peralatan praktikum
harus mengganti sesuai dengan spesifikasi alat yang dimaksud, dengan kesepakatan antara laboran, pembimbing praktikum dan kepala laboratorium. Persentase pengantian alat yang hilang, rusak atau pecah disesuaikan dengan jenis alat atau tingkat kerusakan dari alat.
8. Apabila praktikan tidak sanggup mengganti alat yang hilang, rusak atau pecah dikarenakan harga alat mahal atau alat tidak ada dipasaran, maka nilai penggantian ditetapkan atas kesepakatan antara ketua jurusan, pembimbing praktikum dan peserta praktikum.
9. Membaca, memahami dan mengikuti prosedur operasional untuk setiap peralatan dan kegiatan selama praktikum dan di ruang laboratorium.
Hal yang perlu diperhatikan oleh praktikan sebelum meninggalkan ruangan laboratorium: 1. Pastikan komputer telah di-shutdown (dimatikan). 2. Matikan modul hardware praktikum. 3. Cabutlah kabel power komputer dari stop kontak. 4. Cabutlah kabel power modul hardware dari stop kontak. 5. Cabutlah semua kabel aplikasi pada masing-masing port mikrokontroler. 6. Rapikan kabel modul hardware dengan cara menggulung dan mengikatnya. 7. Letakkan modul hardware dan kabel-kabel aplikasi pada meja dengan rapi. 8. Rapikan laci keyboard, mouse, dan pad mouse. 9. Rapikan kursi dengan cara mendekatkannya dengan meja komputer. 10. Jangan meninggalkan sampah apapun di dalam ruang praktikum (kertas, sobekan kertas, plastik, bungkus permen, dll). 11. Periksa barang-barang anda agar tidak ada yang ketinggalan (flashdisk, buku, pulpen, handphone).

12. Kehilangan barang-barang setelah meninggalkan tempat menjadi tanggung jawab praktikan sendiri.

DAFTAR ISI
KATA PENGANTAR 2
TATA TERTIB 3
DAFTAR ISI 4
DAFTAR GAMBAR 8
APLIKASI PORT KELUARAN DIGITAL MIKROKONTROLLER 9
TUJUAN 9
DASAR TEORI 9
RANGKAIAN LAMPU LED 10
PEMROGRAMAN LED BERKEDIP 10
LATIHAN PEMROGRAMAN LED 11
APLIKASI PORT MASUKAN DIGITAL MIKROKONTROLLER 12
TUJUAN 12
DASAR TEORI 12
RANGKAIAN PEMBACAAN 8 TOMBOL 13
PEMROGRAMAN PEMBACAAN TOMBOL 13
LATIHAN PEMROGRAMAN SAKLAR 14
APLIKASI SEVEN SEGMENT 15
TUJUAN 15
DASAR TEORI 15
RANGKAIAN SEVEN SEGMENT 16
PEMROGRAMAN SEVENT SEGMENT 16
LATIHAN PEMROGRAMAN SEVEN SEGMENT 17
APLIKASI LCD 19
TUJUAN 19
DASAR TEORI 19
RANGKAIAN LCD 21
PEMROGRAMAN LCD 21
LATIHAN PEMROGRAMAN LCD 22
APLIKASI KEYPAD 23

TUJUAN 23
DASAR TEORI 23
RANGKAIAN PEMBACAAN KEYPAD DENGAN LCD 25
PEMROGRAMAN PEMBACAAN KEYPAD 25
LATIHAN PEMROGRAMAN KEYPAD 27
APLIKASI COUNTER 29
TUJUAN 29
DASAR TEORI 29
RANGKAIAN MENCACAH COUNTER T0 30
PEMROGRAMAN MENCACAH COUNTER T0 30
RANGKAIAN MENCACAH COUNTER T1 31
PEMROGRAMAN MENCACAH COUNTER T1 31
LATIHAN PEMROGRAMAN COUNTER 32
APLIKASI TIMER 33
TUJUAN 33
DASAR TEORI 33
RANGKAIAN MENCACAH TIMER T0 34
PEMROGRAMAN MENCACAH TIMER T0 34
RANGKAIAN MENCACAH TIMER T1 35
PEMROGRAMAN MENCACAH TIMER T1 36
LATIHAN PEMROGRAMAN TIMER 37
APLIKASI ADC 38
TUJUAN 38
DASAR TEORI 38
RANGKAIAN ADC ATMEGA DENGAN LED 39
PEMROGRAMAN ADC ATMEGA16 39
LATIHAN PEMROGRAMAN ADC 40
APLIKASI INTERUPSI 41
TUJUAN 41
DASAR TEORI 41
RANGKAIAN INTERUPSI EKTERNAL 42

PEMROGRAMAN INTERUPSI EKTERNAL INT0 42
LATIHAN PEMROGRAMAN INTRUPSI 43
APLIKASI PWM 44
TUJUAN 44
DASAR TEORI 44
RANGKAIAN PWM 45
PEMROGRAMAN PWM 46
LATIHAN PWM 47
APLIKASI SERIAL PORT 48
TUJUAN 48
DASAR TEORI 48
RANGKAIAN SERIAL PORT 49
PEMROGRAMAN PWM 50
LATIHAN SERIAL PORT 51

DAFTAR GAMBAR

APLIKASI PORT KELUARAN DIGITAL MIKROKONTROLLER
TUJUAN
1. Mahasiswa dapat menjalankan program CodeVisionAVR 2.
2. Mahasiswa dapat memahami cara kerja port untuk keluaran digital pada mikrokontroller
3. Mahasiswa dapat membuat program port untuk keluaran digital pada mikrokontroller
DASAR TEORI
ATmega16 mempunyai empat buah port yang bernama PortA, PortB, PortC, dan PortD.
Keempat port tersebut merupakan jalur bidirectional dengan pilihan internal pull-up. Tiap port
mempunyai tiga buah register bit, yaitu DDxn, PORTxn, dan PINxn. Huruf ‘x’mewakili nama
huruf dari port sedangkan huruf ‘n’ mewakili nomor bit. Bit DDxn terdapat pada I/O address
DDRx, bit PORTxn terdapat pada I/O address PORTx, dan bit PINxn terdapat pada I/O address
PINx. Bit DDxn dalam regiter DDRx (Data Direction Register) menentukan arah pin.
Bila DDxn diset 1 maka Px berfungsi sebagai pin output. Bila PORTxn diset 1 pada saat
pin terkonfigurasi sebagai pin output maka pin port akan berlogika 1. Dan bila PORTxn diset 0
pada saat pin terkonfigurasi sebagai pin output maka pin port akan berlogika 0. Saat mengubah
kondisi port dari kondisi tri-state (DDxn=0, PORTxn=0) ke kondisi output high (DDxn=1,
PORTxn=1) maka harus ada kondisi peralihan apakah itu kondisi pull-up enabled (DDxn=0,
PORTxn=1)atau kondisi output low (DDxn=1, PORTxn=0).
Biasanya, kondisi pull-up enabled dapat diterima sepenuhnya, selama lingkungan
impedansi tinggi tidak memperhatikan perbedaan antara sebuah strong high driver dengan
sebuah pull-up. Jika ini bukan suatu masalah, maka bit PUD pada register SFIOR dapat diset 1
untuk mematikan semua pull-up dalam semua port. Peralihan dari kondisi input dengan pullup
ke kondisi output low juga menimbulkan masalah yang sama. Kita harus menggunakan kondisi
tri-state (DDxn=0, PORTxn=0) atau kondisi output high (DDxn=1, PORTxn=0) sebagai kondisi
transisi.

RANGKAIAN LAMPU LED
Rangkaian minimum untuk menghidupkan 8 LED melalui Port B ditunjukan pada
Gambar 3.1. yang perlu diperhatikan adalah konfigurasi rangkaian LED yaitu Common Anode
(CA) artinya untuk menghidupkan LED pada Port B, port B harus dikirim atau diberi logika ‘0’.
S W 1
12
C 3 1 0 0 n F
V C C
V C C
R 1
X1
C 1 2 2 p F
V C C
V C C
U 1
A TM E G A 1 6
3
1 21 3
2
1 61 71 81 9
1 11 0
876
3 63 53 43 33 2
3 7
1
45
9
1 41 5
2 0 2 1
4 03 93 8
3 13 02 92 82 72 62 52 42 32 2
P B 2 (IN T2 / A I N 0 )
XTA L 2XTA L 1
P B 1 (T1 )
P D 2 (I N T0 )P D 3 (I N T1 )P D 4 (O C 1 B )P D 5 (O C 1 A )
G N DV C C
P B 7 [ S C K )P B 6 [ M I S O )P B 5 (M O S I )
P A 4 (A D C 4 )P A 5 (A D C 5 )P A 6 (A D C 6 )P A 7 (A D C 7 )
A R E F
P A 3 (A D C 3 )
P B 0 (XC K /T0 )
P B 3 (O C 0 /A IN 1 )P B 4 (S S )
R E S E T
P D 0 (R XD )P D 1 (TXD )
P D 6 (I C P ) P D 7 (O C 2 )
P A 0 (A D C 0 )P A 1 (A D C 1 )P A 2 (A D C 2 )
A G N DA V C C
P C 7 (TO S C 2 )P C 6 (TO S C 1 )
P C 5P C 4P C 3P C 2
P C 1 (S D A )P C 0 (S C L )
R S T
C 2 2 2 p F
Hasil pemasangan komponen rangkaian lampu led
PEMROGRAMAN LED BERKEDIP
Program sebagai berikut ini
#include <mega16.h>#include <delay.h>void main(void){ char a; char b; a=0x000; b=0x0FF; DDRB=0xFF; while(1) { PORTB= a; delay_ms(500); PORTB= b; delay_ms(500); }}

LATIHAN PEMROGRAMAN LED
1. Jelaskan program diatas
2. Buatlah dan Jelaskan Program LED Flip-Flop
3. Buatlah dan Jelaskan Program LED Berjalan Kekanan
4. Buatlah dan Jelaskan Program LED Berjalan kekiri

APLIKASI PORT MASUKAN DIGITAL MIKROKONTROLLER
TUJUAN
1. Mahasiswa dapat menjalankan program CodeVisionAVR 2.
2. Mahasiswa dapat memahami cara kerja port untuk keluaran digital pada mikrokontroller
3. Mahasiswa dapat membuat program port untuk keluaran digital pada mikrokontroller
DASAR TEORI
ATmega16 mempunyai empat buah port yang bernama PortA, PortB, PortC, dan PortD.
Keempat port tersebut merupakan jalur bidirectional dengan pilihan internal pull-up. Tiap port
mempunyai tiga buah register bit, yaitu DDxn, PORTxn, dan PINxn. Huruf ‘x’mewakili nama
huruf dari port sedangkan huruf ‘n’ mewakili nomor bit. Bit DDxn terdapat pada I/O address
DDRx, bit PORTxn terdapat pada I/O address PORTx, dan bit PINxn terdapat pada I/O address
PINx. Bit DDxn dalam regiter DDRx (Data Direction Register) menentukan arah pin.
Bila DDxn diset 0 maka Px berfungsi sebagai pin input. Bila PORTxn diset 1 pada saat
pin terkonfigurasi sebagai pin input, maka resistor pull-up akan diaktifkan. Untuk mematikan
resistor pull-up, PORTxn harus diset 0 atau pin dikonfigurasi sebagai pin output. Pin port adalah
tri-state setelah kondisi reset. Bila PORTxn diset 1 pada saat pin terkonfigurasi sebagai pin
output maka pin port akan berlogika 1. Dan bila PORTxn diset 0 pada saat pin terkonfigurasi
sebagai pin output maka pin port akan berlogika 0. Saat mengubah kondisi port dari kondisi tri-
state (DDxn=0, PORTxn=0) ke kondisi output high (DDxn=1, PORTxn=1) maka harus ada
kondisi peralihan apakah itu kondisi pull-up enabled (DDxn=0, PORTxn=1)atau kondisi output
low (DDxn=1, PORTxn=0).
Biasanya, kondisi pull-up enabled dapat diterima sepenuhnya, selama lingkungan
impedansi tinggi tidak memperhatikan perbedaan antara sebuah strong high driver dengan
sebuah pull-up. Jika ini bukan suatu masalah, maka bit PUD pada register SFIOR dapat diset 1
untuk mematikan semua pull-up dalam semua port. Peralihan dari kondisi input dengan pullup
ke kondisi output low juga menimbulkan masalah yang sama. Kita harus menggunakan kondisi
tri-state (DDxn=0, PORTxn=0) atau kondisi output high (DDxn=1, PORTxn=0) sebagai kondisi
transisi.

Bit 2 – PUD : Pull-up Disable. Bila bit diset bernilai 1 maka pull-up pada port I/O akan
dimatikan walaupun register DDxn dan PORTxn dikonfigurasikan untuk menyalakan pull-up
(DDxn=0, PORTxn=1).
RANGKAIAN PEMBACAAN 8 TOMBOL
Rangkaian pembacaan 8 buah tombol adalah rangkaian untuk membaca penekanan tombol
yang terhubung pada port keluaran mikrokontroller yang hasilnya tertampil pada led .
P O R TC . 6U 1
A TM E G A 1 6
3
1 21 3
2
1 61 71 81 9
1 11 0
876
3 63 53 43 33 2
3 7
1
45
9
1 41 5
2 0 2 1
4 03 93 8
3 13 02 92 82 72 62 52 42 32 2
P B 2 (IN T2 / A IN 0 )
XTA L 2XTA L 1
P B 1 (T1 )
P D 2 (I N T0 )P D 3 (I N T1 )P D 4 (O C 1 B )P D 5 (O C 1 A )
G N DV C C
P B 7 [ S C K )P B 6 [ M I S O )P B 5 (M O S I )
P A 4 (A D C 4 )P A 5 (A D C 5 )P A 6 (A D C 6 )P A 7 (A D C 7 )
A R E F
P A 3 (A D C 3 )
P B 0 (XC K / T0 )
P B 3 (O C 0 / A I N 1 )P B 4 (S S )
R E S E T
P D 0 (R XD )P D 1 (TXD )
P D 6 (I C P ) P D 7 (O C 2 )
P A 0 (A D C 0 )P A 1 (A D C 1 )P A 2 (A D C 2 )
A G N DA V C C
P C 7 (TO S C 2 )P C 6 (TO S C 1 )
P C 5P C 4P C 3P C 2
P C 1 (S D A )P C 0 (S C L )
P O R TC . 1
P O R TC . 4
P O R TC . 5
V C C
C 2 2 2 p F
C 1 2 2 p F
V C C
V C C
P O R TC . 0
R S T
P O R TC . 6
P O R TC . 1
V C C
P O R TC . 4
P O R TC . 7
C 3 1 0 0 n F
J P 3
R -P A C K
123456789
P O R TC . 2
R 1
P O R TC . 7
P O R TC . 5
P O R TC . 3
V C C
S W 1
12
P O R TC . 0
P O R TC . 3
X1
P O R TC . 2
Rangkaian aplikasi pembacaan 8 buah tombol
PEMROGRAMAN PEMBACAAN TOMBOL
Program sebagai berikut ini
#include <mega16.h>#include <delay.h>
void jalankiri(){char i;volatile unsigned char dataLED=0x80;DDRB=0xFF;PORTB = 0;for(i=0; i<8;i++) { dataLED= ((dataLED<<1) | (dataLED >>7)); PORTB=dataLED;

delay_ms(100); }}
void jalankanan(){char i;volatile unsigned char dataLED=0x01;DDRB=0xFF;PORTB = 0;for(i=0; i<8;i++) { dataLED= ((dataLED<<7) | (dataLED >>1)); PORTB=dataLED; delay_ms(100); }}
void main(void){DDRC=0x00;while(1) { if (PINC.0==1) { jalankanan(); } else { jalankiri(); } }}
LATIHAN PEMROGRAMAN SAKLAR
1. Jelaskan program diatas
2. Buatlah dan Jelaskan Program jika tombol 0 ditekan maka led akan berkedip
3. Buatlah dan Jelaskan Program jika tombol 3 ditekan maka LED Berjalan Kekanan
4. Buatlah dan Jelaskan Program jika tombol 0 ditekan maka LED akan flip flop.

APLIKASI SEVEN SEGMENT
TUJUAN
1. Mahasiswa dapat menjalankan program CodeVisionAVR 2.
2. Mahasiswa dapat memahami cara segment
3. Mahasiswa dapat membuat program untuk segment
DASAR TEORI
Peralatan keluaran yang sering digunakan dalam menampilkan bilangan adalah penampil
seven segmen yang ditunjukkan pada gambar 4.1 (a). tujuh segmen tersebut dilabelkan dengan
huruf a sampai g.
a
f b
g
e c
d
(a) (b)
Tabel 11.1 (a) Tampilan Fisik LED, (b)
Skema dalam LED
Peraga seven segmen dapat dibuat dalam berbagai cara. Tiap tujuh segmen tersebut dapat
berupa filamen tipis yang berpijar. Jenis peraga ini disebut peraga pijar (meandescent display),
dan sama dengan bola lampu biasa. Peraga jenis lain adalah LCD (liquid crystal display), peraga
cairan, yang ,menghasilkan angka – angka berwarna kelabu atau puth perak. Dioda pemancar
cahaya (LED, Light Emiting Dioda) menghasilkan cahaya kemerah – merahan. Pada peraga
LED, LED membutuhkan arus khusus sebesar 20 mA. Karena berupa dioda, LED sensitif
terhadap polaritas. Katoda (K) harus dihubung ke negatif (GND) dari catu daya dan Anoda (A)
dihubung ke positif dari catu daya. Seven segmen ini mempunyai 2 tipe yaitu common anoda dan
common katoda. Gambar 4.1(b) memperlihatkan catu daya yang dihubungkan ke seven segmen
common anoda.

RANGKAIAN SEVEN SEGMENT
Rangkaian seven segment tunggal adalah rangkaian untuk menggerakkan penampil 7
segment secara langsung dari port keluaran mikrokontroller. Penampil seven segment yang
digunakan common anoda. Data yang digunakan untuk menghasilkan angka atau huruf tertentu
didapatkan dengan cara seperti pada Tabel 4.1
10985421
6
3
P 2
P D 5
P 6
P 7
P D 2
P 4
P 1
P D 3
P D 4
P D 0
P D 1
V C C
R 1
U 4
A TM E G A 1 6
3
1 21 3
2
1 61 71 81 9
1 11 0
876
3 63 53 43 33 2
3 7
1
45
9
1 41 5
2 0 2 1
4 03 93 8
3 13 02 92 82 72 62 52 42 32 2
P B 2 (I N T2 /A IN 0 )
XTA L 2XTA L 1
P B 1 (T1 )
P D 2 (I N T0 )P D 3 (I N T1 )P D 4 (O C 1 B )P D 5 (O C 1 A )
G N DV C C
P B 7 [S C K )P B 6 [M I S O )P B 5 (M O S I )
P A 4 (A D C 4 )P A 5 (A D C 5 )P A 6 (A D C 6 )P A 7 (A D C 7 )
A R E F
P A 3 (A D C 3 )
P B 0 (XC K / T0 )
P B 3 (O C 0 /A IN 1 )P B 4 (S S )
R E S E T
P D 0 (R XD )P D 1 (TXD )
P D 6 (I C P ) P D 7 (O C 2 )
P A 0 (A D C 0 )P A 1 (A D C 1 )P A 2 (A D C 2 )
A G N DA V C C
P C 7 (TO S C 2 )P C 6 (TO S C 1 )
P C 5P C 4P C 3P C 2
P C 1 (S D A )P C 0 (S C L )
P 6
P D 5
P D 4
C 1 2 2 p F
V C C
P D 7
P D 6
C 3 1 0 0 n F 1
P 5
P 5
S W 2
12
P 3
P D 0
V C C
R S T
P D 7
P 0
P D 3
J I S P
H E A D E R 5
12345
C 2 2 2 p F
P D 6
R S TP 7
X1
V C C
P D 2
G N D
P D 1
Rangkaian aplikasi penggerak seven segmen tunggal
PEMROGRAMAN SEVENT SEGMENT
Program sebagai berikut ini
#include <mega16.h>#include <delay.h>
void bin7seg(unsigned char data1){ switch(data1) { case 0 : PORTD = 0xc0; break; case 1 : PORTD = 0xf9;

break; case 2 : PORTD = 0xa4; break; case 3 : PORTD = 0xb0; break; case 4 : PORTD = 0x99; break; case 5 : PORTD = 0x92; break; case 6 : PORTD = 0x82; break; case 7 : PORTD = 0xf8; break; case 8 : PORTD = 0x80; break; case 9 : PORTD = 0x90; break; }}
void main(void){DDRD=0xFF;while(1) { bin7seg(0); delay_ms(100); bin7seg(2); delay_ms(100); }}
LATIHAN PEMROGRAMAN SEVEN SEGMENT
1. Jelaskan program diatas
2. Buatlah dan Jelaskan Program jika tombol 0 ditekan maka seven segment menampilkan
angka 0

3. Buatlah dan Jelaskan Program jika tombol 3 ditekan maka seven segment menampilkan
angka 3
4. Buatlah dan Jelaskan Program jika tombol 8 ditekan maka seven segment menampilkan
angka 8

APLIKASI LCD
TUJUAN
1. Mahasiswa dapat menjalankan program CodeVisionAVR 2.
2. Mahasiswa dapat memahami cara kerja LCD pada mikrokontroller
3. Mahasiswa dapat membuat program port untuk LCD pada mikrokontroller
DASAR TEORI
Kemampuan dari LCD untuk menampilkan tidak hanya angka-angka, tetapi juga huruf-huruf,
kata-kata dan semua sarana simbol, lebih bagus dan serbaguna daripada penampil-penampil
menggunakan 7-segment LED (Light Emiting Diode) yang sudah umum. Modul LCD
mempunyai basic interface yang cukup baik, yang mana sesuai dengan minimum system 8031.
Sesuai juga dengan keluarga mikrokontroler yang lain. Bentuk dan ukuran modul-modul
berbasis karakter banyak ragamnya, salah satu variasi bentuk dan ukuran yang tersedia dan
dipergunakan pada peralatan ini adalah 16x 2 karakter (panjang 16, baris 2, karakter 32) dan 16
pin.
Ketika power dinyalakan, display menampilkan sederet persegi gelap, mungkin hanya
pada sebagian display. Sel-sel karakter ini sebenarnya merupakan bagian yang mati. Modul
display mereset sendiri pada bagian awal ketika power dinyalakan, yang mana layar jadi kosong
sehingga karakter-karakter tidak dapat terlihat. Dengan demikian perlu untuk memberikan
perintah pada poin ini, untuk menyalakan display.
Penulisan data ke Register Perintah dilakukan dengan tujuan mengatur tampilan LCD,
inisialisasi dan mengatur Address Counter maupun Address Data. Gambar 5 menunjukkan
proses penulisan data ke register perintah dengan menggunakan mode 4 bit interface. Kondisi RS
berlogika 0 menunjukkan akses data ke Register Perintah. RW berlogika 0 yang menunjukkan
proses penulisan data akan dilakukan. Nibble tinggi (bit 7 sampai bit 4) terlebih dahulu
dikirimkan dengan diawali pulsa logika 1 pada E Clock. Kemudian Nibble rendah (bit 3 sampai
bit 0) dikirimkan dengan diawali pulsa logika 1 pada E Clock lagi. Untuk mode 8 bit interface,
proses penulisan dapat langsung dilakukan secara 8 bit (bit 7 … bit 0) dan diawali sebuah pulsa
logika 1 pada E Clock.

Timing diagram penulisan data ke register mode 4 bit interface
Proses pembacaan data pada register perintah biasa digunakan untuk melihat status busy
dari LCD atau membaca Address Counter. RS diatur pada logika 0 untuk akses ke Register
Perintah, R/W diatur pada logika 1 yang menunjukkan proses pembacaan data. 4 bit nibble tinggi
dibaca dengan diawali pulsa logika 1 pada E Clock dan kemudian 4 bit nibble rendah dibaca
dengan diawali pulsa logika 1 pada E Clock. Untuk Mode 8 bit interface, pembacaan 8 bit
(nibble tinggi dan rendah) dilakukan sekaligus dengan diawali sebuah pulsa logika 1 pada E
Clock
Timing Diagram Pembacaan Register Perintah Mode 4 bit Interface

RANGKAIAN LCD
A D C 4
V C C
p in b . 7
D 3
1 N 4 0 0 2
AC
V C C
A D C 5
p in b . 5
V C C
p in b . 7
X1
R re s e t
p in b . 6A D C 7
p in b . 6
C 1 2 2p F
R S _ L C DR S T
J 5
H E A D E R 5
12345
p in b . 7
A D C 5
V C C
C 2 2 2p F
V C C
R S _ L C D
R S T
J 1 6 .
H E A D E R 1 6
123456789
1 01 11 21 31 41 51 6
p in b . 7
A D C 6
p in b . 6p in b . 6
C 3 1 00 nFS W 1
12
V C C
E _ L C D
p in b . 5
A D C 4A D C 6
A D C 7
U 1
A TM E G A 1 6
3
1 21 3
2
1 61 71 81 9
1 11 0
876
3 63 53 43 33 2
3 7
1
45
9
1 41 5
2 0 2 1
4 03 93 8
3 13 02 92 82 72 62 52 42 32 2
P B 2 (I N T2 / A I N 0 )
XTA L2XTA L1
P B 1 (T1 )
P D 2 (I N T0 )P D 3 (I N T1 )P D 4 (O C 1 B )P D 5 (O C 1 A )
G N DV C C
P B 7 [ S C K )P B 6 [ M I S O )P B 5 (M O S I )
P A 4 (A D C 4 )P A 5 (A D C 5 )P A 6 (A D C 6 )P A 7 (A D C 7 )
A R E F
P A 3 (A D C 3 )
P B 0 (XC K / T0 )
P B 3 (O C 0 / A I N 1 )P B 4 (S S )
R E S E T
P D 0 (R XD )P D 1 (TXD )
P D 6 (I C P ) P D 7 (O C 2 )
P A 0 (A D C 0 )P A 1 (A D C 1 )P A 2 (A D C 2 )
A G N DA V C C
P C 7 (TO S C 2 )P C 6 (TO S C 1 )
P C 5P C 4P C 3P C 2
P C 1 (S D A )P C 0 (S C L)
E _ L C DR 9
5 k
Gambar 8.1. Rangkaian LCD mikrokontroller
PEMROGRAMAN LCD
Program sebagai berikut ini
#include <mega16.h>#include <delay.h>#include <stdio.h>
#asm.equ __lcd_port=0x18;PORTB#endasm
#include <lcd.h>
void main(void){lcd_init(16);lcd_gotoxy(0,0);lcd_putsf("Halo Iswanto");delay_ms(100);lcd_gotoxy(0,1);lcd_putsf("D3 T.ELEKTRO");delay_ms(100);lcd_gotoxy(5,0);

lcd_putsf("UGM ");delay_ms(100);while (1);}
LATIHAN PEMROGRAMAN LCD
1. Jelaskan program diatas
2. Buatlah dan Jelaskan Program Menampilkan nama sendiri dan nim

APLIKASI KEYPAD
TUJUAN
1. Mahasiswa dapat menjalankan program CodeVisionAVR 2.
2. Mahasiswa dapat memahami cara kerja keypad pada mikrokontroller
3. Mahasiswa dapat membuat program keypad pada mikrokontroller
DASAR TEORI
Keypad 4x3 di sini adalah sebuah keypad matrix dengan susunan empat baris dan tiga
kolom dengan sebuah common.
Gambar 12.1 Konstruksi keypad 4x3 dengan common
Seperti terlihat dalam gambar di atas, apabila saklar ‘1’ ditekan, maka baris 1 dan kolom
1 akan terhubung ke common. Apabila saklar ‘2’ ditekan, maka baris 1 dan kolom 2 akan
terhubung ke common dan seterusnya.

Gambar 12.2 Gambar interface keypad 4x3
Agar keypad tersebut dapat memberian input pada B51PEB, maka terlebih dahulu keypad
ini harus disusun dalam sebuah rangkaian di mana terdapat perbedaan kondisi pada pin-pinnya
antara kondisi tidak ada penekanan tombol, penekanan tombol 1, 2, 3 dan seterusnya.
Kondisi tidak adanya penekanan tombol diatur dengan adanya kondisi logika high
dengan menghubungkan semua pin keypad (kecuali common) ke VCC melalui resistor pull up.
Pada saat tombol tidak ditekan, maka arus akan mengalir dari VCC melalui resistor menuju ke
port seperti tampak pada gambar berikut.
Gambar 12.3 Aliran arus saat tombol tidak ditekan

Sedangkan saat tombol ditekan, maka baris dan kolom akan terhubung ke ground sehingga
kondisi pada baris dan kolom tersebut akan menjadi low. Apabila tombol ‘1’ ditekan, maka baris
1 dan kolom 1 akan terhubung ke ground sehingga kondisi baris dan kolom tersebut akan
berubah menjadi low, demikian pula pada tombol ‘2’ dan seterusnya sehingga terbentuk tabel
berikut.
RANGKAIAN PEMBACAAN KEYPAD DENGAN LCD
S 8
S W
S 11
S W
P D 2
U 4
A TM E G A 1 6
3
1 21 3
2
1 61 71 81 9
1 11 0
876
3 63 53 43 33 2
3 7
1
45
9
1 41 5
2 0 2 1
4 03 93 8
3 13 02 92 82 72 62 52 42 32 2
P B 2 (IN T2 / A I N 0 )
XTA L 2XTA L 1
P B 1 (T1 )
P D 2 (I N T0 )P D 3 (I N T1 )P D 4 (O C 1 B )P D 5 (O C 1 A )
G N DV C C
P B 7 [ S C K )P B 6 [ M IS O )P B 5 (M O S I )
P A 4 (A D C 4 )P A 5 (A D C 5 )P A 6 (A D C 6 )P A 7 (A D C 7 )
A R E F
P A 3 (A D C 3 )
P B 0 (XC K /T0 )
P B 3 (O C 0 /A IN 1 )P B 4 (S S )
R E S E T
P D 0 (R XD )P D 1 (TXD )
P D 6 (I C P ) P D 7 (O C 2)
P A 0 (A D C 0 )P A 1 (A D C 1 )P A 2 (A D C 2 )
A G N DA V C C
P C 7 (TO S C 2 )P C 6 (TO S C 1 )
P C 5P C 4P C 3P C 2
P C 1 (S D A )P C 0 (S C L )
J 5
H E A D E R 5
12345
p in b .6
P D 0X1
P D 5
S 1 7
S W
P D 1
C 3 1 0 0 n F 1
p in b . 0
S W 2
12
D 3
1 N 4 0 0 2A
C
S 5
S W
p inb . 6
V C C
S 9
S W
P D 7
p inb . 7
p in b .0
J 1 6.
H E A D E R 1 6
123456789
1 01 11 21 31 41 51 6
P D 1
p inb . 6
P D 6
C 2 2 2 p F
P D 4S 1 5
S W
P D 6
p inb . 6
S 1 2
S W
p inb . 5
S 1 8
S W
P D 5
S 1 6
S W
R S T
P D 2
p in b . 1
P D 7
S 6
S W
p in b .7
p inb . 7
p in b .2
S 1 3
S W
C 1 2 2 p F
P D 3
p inb . 7
P D 0
S 10
S W
V C C
p inb . 6
p inb . 7
S 1 9
S W
p in b .5
R 1
P D 3
V C C
V C C
p in b .1
R 95 k
V C C
V C C
S 4
S W
S 7
S W
S 1 4
S W
p in b . 2
p in b .4
P D 4
p in b . 5
Rangkaian aplikasi tombol keypad dengan lcd
PEMROGRAMAN PEMBACAAN KEYPAD
Program sebagai berikut ini
#include <lcd.h>#include <stdio.h>

#include <mega16.h>#include <delay.h>
#asm.equ __lcd_port=0x18;PORTB#endasm
unsigned char dt, dtkey;char buf[33];
void inkey(void);
void main(){ PORTD = 0XFF; DDRD=0xF0; lcd_init(16); lcd_gotoxy(0,1); lcd_putsf("Hello world"); while(1) { inkey(); lcd_gotoxy(0,1); sprintf(buf,"hex %x ",dtkey); lcd_puts(buf); }}
void inkey(void){PORTD.4 = 0;dt = (~PIND & 0x0F);switch (dt){case 1:dtkey = 0x01; break;case 2:dtkey = 0x05; break;case 4:dtkey = 0x09; break;case 8:dtkey = 0x13; break;}
PORTD.4 = 1;PORTD.5 = 0;dt = (~PIND & 0x0F);

switch (dt){case 1:dtkey = 0x02; break;case 2:dtkey = 0x06; break;case 4:dtkey = 0x10; break;case 8:dtkey = 0x14; break;}
PORTD.5 = 1;PORTD.6 = 0;dt = (~PIND & 0x0F);switch (dt){case 1:dtkey = 0x03; break;case 2:dtkey = 0x07; break;case 4:dtkey = 0x11; break;case 8:dtkey = 0x15; break;}
PORTD.6 = 1;PORTD.7 = 0;dt = (~PIND & 0x0F);switch (dt){case 1:dtkey = 0x04; break;case 2:dtkey = 0x08; break;case 4:dtkey = 0x12; break;case 8:dtkey = 0x16; break;}PORTD.7 = 1;}
LATIHAN PEMROGRAMAN KEYPAD
1. Jelaskan program diatas


APLIKASI COUNTER
TUJUAN
1. Mahasiswa dapat menjalankan program CodeVisionAVR 2.
2. Mahasiswa dapat memahami cara kerja counter pada mikrokontroller
3. Mahasiswa dapat membuat program counter pada mikrokontroller
DASAR TEORI
Timer dan Counter merupakan sarana input yang kurang dapat perhatian pemakai
mikrokontroler, dengan sarana input ini mikrokontroler dengan mudah bisa dipakai untuk
mengukur lebar pulsa, membangkitkan pulsa dengan lebar yang pasti. AVR ATMEGA16
memiliki tiga buah timer, yaitu Timer/Counter0 (8 bit), Timer/Counter1 (16 bit), dan
Timer/Counter3 (16 bit).
Timer/couter adalah tujuan umum single channel, module 8 bit timer/counter. Beberapa
fasilitas chanel dari timer counter antara lain:
Counter channel tunggal
Pengosongan data timer sesuai dengan data pembanding
Bebas -glitch, tahap yang tepat Pulse Width Modulator (PWM)
Pembangkit frekuensi
Event counter external
Blok diagram timer counter

Gambar diagram block timer/counter 8 bit ditunjukan pada gambar di bawah ini. Untuk
penempatan pin I/O telah di jelaskan Ibit hal 67 pada bagian I/O di atas. CPU dapat diakses
register I/O, termasuk dalam pinpin I/O dan bit I/O. Device khusus register I/O dan lokasi bit
terdaftar pada deskripsi timer/counter 8 bit pada gambar 1.13
RANGKAIAN MENCACAH COUNTER T0
V C C
P 6
P 2
P 7
P 5
P 3
P 1
R 1
L 11 2
P 0
C 3 1 0 0 nF 1
V C C
P 5
P 4
R S T
V C C
1 2
V C C
P 6
U 4
A TM E G A 1 6
3
1213
2
16171819
1110
876
3635343332
37
1
45
9
1415
20 21
403938
31302928272625242322
P B 2 (I N T2 / A IN 0 )
XTA L 2XTA L 1
P B 1 (T1 )
P D 2 (IN T0)P D 3 (IN T1)P D 4 (O C 1 B )P D 5 (O C 1 A )
G N DV C C
P B 7 [ S C K )P B 6 [ M I S O )P B 5 (M O S I )
P A 4 (A D C 4 )P A 5 (A D C 5 )P A 6 (A D C 6 )P A 7 (A D C 7 )
A R E F
P A 3 (A D C 3 )
P B 0 (XC K / T0 )
P B 3 (O C 0 / A I N 1 )P B 4 (S S )
R E S E T
P D 0 (R XD )P D 1 (TXD )
P D 6 (IC P ) P D 7 (O C 2 )
P A 0 (A D C 0 )P A 1 (A D C 1 )P A 2 (A D C 2 )
A G N DA V C C
P C 7 (TO S C 2 )P C 6 (TO S C 1 )
P C 5P C 4P C 3P C 2
P C 1 (S D A )P C 0 (S C L )
C 2 2 2 p F
S W 2
12
P 7R S T
J I S P
H E A D E R 5
12345
X1
1 21 2
1 2
G N D
1 2
1 2
C 1 2 2 p F
1 2
Hasil pemasangan komponen-komponen mencacah counter T0
PEMROGRAMAN MENCACAH COUNTER T0
Program sebagai berikut ini
#include <mega16.h>#include <delay.h>#include <stdio.h>
unsigned char led,a;
void InisialisasiTIMER ();
void main (void){ DDRD = 0xff; led=0x00; InisialisasiTIMER();

while(1) { a = TCNT0; if (a == 0x06) { led = PIND; PORTD=~led; TCNT0=0x00; } }}
void InisialisasiTIMER (){ TCNT0=0x00; TCCR0=0x07;}
RANGKAIAN MENCACAH COUNTER T1
P 3
P 6V C C
L 11 2
1 2
P 7R 1
1 2
P 0
G N D
P 5P 4
1 2
P 1
C 1 2 2 p F
U 4
A TM E G A 1 6
3
1 21 3
2
1 61 71 81 9
1 11 0
876
3 63 53 43 33 2
3 7
1
45
9
1 41 5
2 0 2 1
4 03 93 8
3 13 02 92 82 72 62 52 42 32 2
P B 2 (IN T2 / A I N 0 )
XTA L 2XTA L 1
P B 1 (T1 )
P D 2 (I N T0 )P D 3 (I N T1 )P D 4 (O C 1 B )P D 5 (O C 1 A )
G N DV C C
P B 7 [ S C K )P B 6 [ M IS O )P B 5 (M O S I )
P A 4(A D C 4 )P A 5(A D C 5 )P A 6(A D C 6 )P A 7(A D C 7 )
A R E F
P A 3(A D C 3 )
P B 0 (XC K /T0 )
P B 3 (O C 0 / A I N 1 )P B 4 (S S )
R E S E T
P D 0 (R XD )P D 1 (TXD )
P D 6 (I C P ) P D 7 (O C 2 )
P A 0(A D C 0 )P A 1(A D C 1 )P A 2(A D C 2 )
A G N DA V C C
P C 7 (TO S C 2 )P C 6 (TO S C 1 )
P C 5P C 4P C 3P C 2
P C 1 (S D A )P C 0 (S C L )
V C C
R S T
1 2
V C C V C C
1 2
1 2
P 5
P 7
C 2 2 2 p F
C 3 1 0 0 n F 1
R S T
X1
1 2
S W 2
12
P 6
P 2
J I S P
H E A D E R 5
12345
Gambar 6.1. Hasil pemasangan komponen-komponen mencacah counter T1
PEMROGRAMAN MENCACAH COUNTER T1
Program sebagai berikut ini
#include <mega16.h>

#include <delay.h>#include <stdio.h>
unsigned char led,a;
void InisialisasiTIMER ();
void main (void){ DDRD = 0xff; led=0x00; InisialisasiTIMER(); while(1) { a = TCNT1L + TCNT1H; if (a == 0x06) { led = PIND; PORTD=~led; TCNT1L=0x00; TCNT1H=0x00; } }}
void InisialisasiTIMER (){ TCNT1L=0x00; TCNT1H=0x00; TCCR1A=0x00; TCCR1B=0x07;}
LATIHAN PEMROGRAMAN COUNTER
1. Jelaskan program diatas

APLIKASI TIMER
TUJUAN
1. Mahasiswa dapat menjalankan program CodeVisionAVR 2.
2. Mahasiswa dapat memahami cara kerja timer pada mikrokontroller
3. Mahasiswa dapat membuat program timer pada mikrokontroller
DASAR TEORI
Timer dan Counter merupakan sarana input yang kurang dapat perhatian pemakai
mikrokontroler, dengan sarana input ini mikrokontroler dengan mudah bisa dipakai untuk
mengukur lebar pulsa, membangkitkan pulsa dengan lebar yang pasti. AVR ATMEGA16
memiliki tiga buah timer, yaitu Timer/Counter0 (8 bit), Timer/Counter1 (16 bit), dan
Timer/Counter3 (16 bit).
Timer/couter adalah tujuan umum single channel, module 8 bit timer/counter. Beberapa
fasilitas chanel dari timer counter antara lain:
Counter channel tunggal
Pengosongan data timer sesuai dengan data pembanding
Bebas -glitch, tahap yang tepat Pulse Width Modulator (PWM)
Pembangkit frekuensi
Event counter external
Blok diagram timer counter

Gambar diagram block timer/counter 8 bit ditunjukan pada gambar di bawah ini. Untuk
penempatan pin I/O telah di jelaskan Ibit hal 67 pada bagian I/O di atas. CPU dapat diakses
register I/O, termasuk dalam pinpin I/O dan bit I/O. Device khusus register I/O dan lokasi bit
terdaftar pada deskripsi timer/counter 8 bit pada gambar 1.13
RANGKAIAN MENCACAH TIMER T0
V C C
P 6
P 2
P 7
P 5
P 3
P 1
R 1
L 11 2
P 0
C 3 1 0 0 n F 1
V C C
P 5
P 4
R S T
V C C
1 2
V C C
P 6
U 4
A TM E G A 1 6
3
1 21 3
2
1 61 71 81 9
1 11 0
876
3 63 53 43 33 2
3 7
1
45
9
1 41 5
2 0 2 1
4 03 93 8
3 13 02 92 82 72 62 52 42 32 2
P B 2 (I N T2 / A I N 0 )
XTA L 2XTA L 1
P B 1 (T1 )
P D 2 (I N T0 )P D 3 (I N T1 )P D 4 (O C 1 B )P D 5 (O C 1 A )
G N DV C C
P B 7 [ S C K )P B 6 [ M I S O )P B 5 (M O S I )
P A 4 (A D C 4 )P A 5 (A D C 5 )P A 6 (A D C 6 )P A 7 (A D C 7 )
A R E F
P A 3 (A D C 3 )
P B 0 (XC K / T0 )
P B 3 (O C 0 / A I N 1 )P B 4 (S S )
R E S E T
P D 0 (R XD )P D 1 (TXD )
P D 6 (I C P ) P D 7 (O C 2 )
P A 0 (A D C 0 )P A 1 (A D C 1 )P A 2 (A D C 2 )
A G N DA V C C
P C 7 (TO S C 2 )P C 6 (TO S C 1 )
P C 5P C 4P C 3P C 2
P C 1 (S D A )P C 0 (S C L )
C 2 2 2 p F
S W 2
12
P 7R S T
J I S P
H E A D E R 5
12345
X1
1 21 2
1 2
G N D
1 2
1 2
C 1 2 2 p F
1 2
Hasil pemasangan komponen-komponen mencacah counter T0
PEMROGRAMAN MENCACAH TIMER T0
Program sebagai berikut ini
#include <mega16.h>#include <delay.h>#include <stdio.h>
unsigned char led=0;char a;
void InisialisasiTIMER ();
void main (void){ DDRB=0x00;
DDRD=0xFF; PORTD=led; InisialisasiTIMER();

led = 0x01; while(1) { if (led == 0x80) { led = 0x01; } a = TCNT0; if (a == 0xFE) { PORTD=led; TCNT0=0x00; led=led <<1; } }}
void InisialisasiTIMER (){ TCNT0=0x00; TCCR0=0x05;}
RANGKAIAN MENCACAH TIMER T1
P 3
P 6V C C
L 11 2
1 2
P 7R 1
1 2
P 0
G N D
P 5P 4
1 2
P 1
C 1 2 2p F
U 4
A TM E G A 1 6
3
1 21 3
2
1 61 71 81 9
1 11 0
876
3 63 53 43 33 2
3 7
1
45
9
1 41 5
2 0 2 1
4 03 93 8
3 13 02 92 82 72 62 52 42 32 2
P B 2 (I N T2 / A I N 0 )
XTA L 2XTA L 1
P B 1 (T1 )
P D 2 (I N T0 )P D 3 (I N T1 )P D 4 (O C 1 B )P D 5 (O C 1 A )
G N DV C C
P B 7 [ S C K )P B 6 [ M I S O )P B 5 (M O S I )
P A 4 (A D C 4 )P A 5 (A D C 5 )P A 6 (A D C 6 )P A 7 (A D C 7 )
A R E F
P A 3 (A D C 3 )
P B 0 (XC K / T0 )
P B 3 (O C 0 / A I N 1)P B 4 (S S )
R E S E T
P D 0 (R XD )P D 1 (TXD )
P D 6 (I C P ) P D 7 (O C 2 )
P A 0 (A D C 0 )P A 1 (A D C 1 )P A 2 (A D C 2 )
A G N DA V C C
P C 7 (TO S C 2 )P C 6 (TO S C 1 )
P C 5P C 4P C 3P C 2
P C 1 (S D A )P C 0 (S C L )
V C C
R S T
1 2
V C C V C C
1 2
1 2
P 5
P 7
C 2 2 2p F
C 3 1 0 0 nF 1
R S T
X1
1 2
S W 2
12
P 6
P 2
J I S P
H E A D E R 5
12345
Hasil pemasangan komponen-komponen mencacah counter T1

PEMROGRAMAN MENCACAH TIMER T1
Program sebagai berikut ini
#include <mega16.h>#include <delay.h>#include <stdio.h>
unsigned char led=0;char a;
void InisialisasiTIMER ();
void main (void){ DDRB=0x00;
DDRD=0xFF; PORTD=led; InisialisasiTIMER(); led = 0x01; while(1) { if (led == 0x80) { led = 0x01; } a = TCNT1L + TCNT1H; if (a == 0xFE) { PORTD=led; TCNT1L=0x00; TCNT1H=0x00; led=led <<1; } }}
void InisialisasiTIMER (){ TCNT1L=0x00; TCNT1H=0x00; TCCR1A=0x00; TCCR1B=0x05;}

LATIHAN PEMROGRAMAN TIMER
1. Jelaskan program diatas

APLIKASI ADC
TUJUAN
1. Mahasiswa dapat menjalankan program CodeVisionAVR 2.
2. Mahasiswa dapat memahami cara kerja port ADC pada mikrokontroller
3. Mahasiswa dapat membuat program port ADC pada mikrokontroller
DASAR TEORI
ATmega16 mempunyai ADC (Analog to Digital Converter) internal dengan fitur sebagai
berikut (untuk lebih detil dapat mengacu pada datasheet) :
� 10-bit Resolution
� 65 - 260 μs Conversion Time
� 8 Multiplexed Single Ended Input Channels
� Optional Left Adjustment for ADC Result Readout
� 0 - VCC ADC Input Voltage Range
� Selectable 2.56V ADC Reference Voltage
� Free Running or Single Conversion Mode ~ ADC Start Conversion by Auto Triggering
on Interrupt 9Ibit ha l 49 Sources
� Interrupt on ADC Conversion Complete
� Sleep Mode Noise Canceler
Dibawah ini gambar timing diagram untuk mode single convertion maksudnya hanya satu input
chanel saja yang dikonversi.
�� Gambar 4. 1 Timing diagram mode single conversion

RANGKAIAN ADC ATMEGA DENGAN LED
Rangkaian minimum untuk membaca ADC dengan tempilan LED ditunjukan pada Gambar 9.7
yang perlu diperhatikan adalah konfigurasi rangkaian LED yaitu Common Anode (CA) artinya
untuk menghidupkan LED pada Port D, port D harus dikirim atau diberi logika ‘0’.
P 7
G N D
C 1 2 2 pF
S W 2
12
P 7
C 2 2 2 pF
P 3
V C C
R S T
V C C
J I S P
H E A D E R 5
12345
1 2
P 6
U 4
A TM E G A 1 6
3
1 21 3
2
1 61 71 81 9
1 11 0
876
3 63 53 43 33 2
3 7
1
45
9
1 41 5
2 0 2 1
4 03 93 8
3 13 02 92 82 72 62 52 42 32 2
P B 2 (I N T2 / A I N 0)
XTA L 2XTA L 1
P B 1 (T1 )
P D 2 (I N T0 )P D 3 (I N T1 )P D 4 (O C 1 B )P D 5 (O C 1 A )
G N DV C C
P B 7 [ S C K )P B 6 [ M I S O )P B 5 (M O S I )
P A 4 (A D C 4 )P A 5 (A D C 5 )P A 6 (A D C 6 )P A 7 (A D C 7 )
A R E F
P A 3 (A D C 3 )
P B 0 (XC K / T0 )
P B 3 (O C 0 / A I N 1 )P B 4 (S S )
R E S E T
P D 0 (R XD )P D 1 (TXD )
P D 6 (I C P ) P D 7 (O C 2 )
P A 0 (A D C 0 )P A 1 (A D C 1 )P A 2 (A D C 2 )
A G N DA V C C
P C 7 (TO S C 2 )P C 6 (TO S C 1 )
P C 5P C 4P C 3P C 2
P C 1 (S D A )P C 0 (S C L )
1 21 2
R 1
R S T
C 3 1 0 0 n F 1
P 1
P 5
V C C
P 2
1 2
V C C
L11 2
1 2
X1
P 6
1 2
1 2
P 4
R 2
P O T
13
2
P 0
P 5
Hasil pemasangan komponen ADC LED
PEMROGRAMAN ADC ATMEGA16
Program sebagai berikut ini
#include <mega16.h>#include <stdio.h>#include <delay.h>
unsigned int data_adc;int suhu;
#define ADC_VREF_TYPE 0x60
unsigned char read_adc(unsigned char adc_input){ADMUX=adc_input|ADC_VREF_TYPE;ADCSRA|=0x40;while ((ADCSRA & 0x10)==0);ADCSRA|=0x10;return ADCH;}

void main(void){DDRD = 0xFF;ADMUX=ADC_VREF_TYPE;ADCSRA=0x87;SFIOR&=0xEF;while (1) { data_adc=read_adc(0); suhu=~data_adc; PORTD = suhu; }}
LATIHAN PEMROGRAMAN ADC
1. Jelaskan program diatas

APLIKASI INTERUPSI
TUJUAN
1. Mahasiswa dapat menjalankan program CodeVisionAVR 2.
2. Mahasiswa dapat memahami cara kerja interupsi pada mikrokontroller
3. Mahasiswa dapat membuat program interupsi pada mikrokontroller
DASAR TEORI
Interupsi adalah suatu kejadian atau peristiwa yang menyebabkan mikrokontroler
berhenti sejenak untuk melayani interupsi tersebut. Program yang dijalankan pada saat melayani
interupsi disebut Interrupt Service Routine. Pada sistem mikrokontroler yang sedang
menjalankan programnya, saat terjadi interupsi , program akan berhenti sesaat, melayani
interupsi tersebut dengan menjalankan program yang berada pada alamat yang ditunjuk oleh
vektor dari interupsi yang terjadi hingga selesai dan kembali meneruskan program yang terhenti
oleh interupsi tadi.
Tabel 1. 1Interrupt vektor

Meskipun memerlukan pengertian yang lebih mendalam, pengetahuan mengenai
interupsi sangat membantu mengatasi masalah pemrograman mikroprosesor / mikrokontroler
dalam hal menangani banyak peralatan input/output. Pengetahuan mengenai interupsi tidak
cukup hanya dibahas secara teori saja, diperlukan contoh program yang konkrit untuk
memahami. ATMEGA16 memiliki 21 buah sumber interupsi. Interupsi tersebut bekerja jika bit I
pada Register status atau Status Register (SREG) dan bit pada masing-masing register bernilai 1.
RANGKAIAN INTERUPSI EKTERNAL
Rangkaian berikut digunakan untuk interupsi ekternal mikrokontroller. Rangkaian
tersebut menggunakan interupsi eksternal 0, 1, dan 2 yang menggunakan tampilan LED yang
dihubungkan pada Port A.
12
P 6
P 3
12
INT2U 4
A TM E G A 1 6
3
1 21 3
2
1 61 71 81 9
1 11 0
876
3 63 53 43 33 2
3 7
1
45
9
1 41 5
2 0 2 1
4 03 93 8
3 13 02 92 82 72 62 52 42 32 2
P B 2 (I N T2 /A I N 0 )
XTA L 2XTA L 1
P B 1 (T1 )
P D 2 (I N T0 )P D 3 (I N T1 )P D 4 (O C 1 B )P D 5 (O C 1 A )
G N DV C C
P B 7 [ S C K )P B 6 [ M I S O )P B 5 (M O S I )
P A 4 (A D C 4 )P A 5 (A D C 5 )P A 6 (A D C 6 )P A 7 (A D C 7 )
A R E F
P A 3 (A D C 3 )
P B 0 (XC K / T0 )
P B 3 (O C 0 / A I N 1 )P B 4 (S S )
R E S E T
P D 0 (R XD )P D 1 (TXD )
P D 6 (I C P ) P D 7 (O C 2 )
P A 0 (A D C 0 )P A 1 (A D C 1 )P A 2 (A D C 2 )
A G N DA V C C
P C 7 (TO S C 2 )P C 6 (TO S C 1 )
P C 5P C 4P C 3P C 2
P C 1 (S D A )P C 0 (S C L )
R S T
C 2 2 2 p F
12
V C C
P 7
R S T
S W 2
12
L 112
J I S P
H E A D E R 5
12345
X1
V C C
P 5
V C C
12R 1
C 3 1 0 0 n F 1
P 5
P 4
P 2
V C C
G N D
INT1
12
V C C
P 6
P 7
C 1 2 2 p F V C C
P 112
P 0
INT0
12
V C C
Rangkaian interupsi ekternal mikrokontroller
PEMROGRAMAN INTERUPSI EKTERNAL INT0
Program sebagai berikut ini

#include <mega16.h>#include <delay.h>#include <stdio.h>
unsigned char dt=0x01;
void InisialisasiINT0();
void main (void){
DDRA=0xff; InisialisasiINT0();#asm ("sei");
while(1) { PORTA=dt; delay_ms(100); dt=dt<<1; if (dt==0) {dt=0x01;} }}
interrupt [EXT_INT0] void ext_int0_isr(void){unsigned char rr=0;while (rr<5) { PORTA=0x0f; delay_ms(5); PORTA=0xf0; delay_ms(5); ++rr; }}void InisialisasiINT0 (){ GICR|=0x80; MCUCR=0x0C; MCUCSR=0x00; GIFR=0x80;}
LATIHAN PEMROGRAMAN INTRUPSI
1. Jelaskan program diatas

APLIKASI PWM
TUJUAN
1. Mahasiswa dapat menjalankan program CodeVisionAVR 2.
2. Mahasiswa dapat memahami cara kerja pwm pada mikrokontroller
3. Mahasiswa dapat membuat program pwm pada mikrokontroller
DASAR TEORI
PWM (Pulse Width Modulation) dapat digunakan untuk mengatur kecepatan motor, yaitu
dengan cara mengatur lebar pulsa (waktu ON) dari tegangan sumbernya (tegangan DC).
Perbandingan antara waktu ON dan waktu OFF disebut duty cycle (siklus kerja). Semakin besar
siklus kerjanya, akan semakin besar pula keluaran yang dihasilkan, sehingga kecepatan motor
akan semakin besar. Pembangkitan sinyal PWM dengan mikrokontroler memiliki beberapa
keuntungan, seperti teknik pemrograman yang sederhana, dan rangkaian listrik menjadi
sederhana.
Mikrokontroler AVR ATMEGA16 dapat digunakan sebagai pembangkit gelombang
PWM. Mikrokontroler AVR ATMEGA16 mempunyai PWM yang telah terintegrasi dalam chip.
Keluaran dari PWM tersebut terdapat pada pin 15 (OC1). Untuk menjalankan program PWM,
diperlukan 3 unit register timer, yaitu:
a. Timer/Counter Control Register (TCCR), untuk menentukan mode PWM.
b. Timer/Counter Register (TCNT), digunakan untuk menentukan modulasi frekuensinya.
c. Output Compare Register (OCR), untuk menentukan nilai siklus kerjanya.
nilai counter nilai OCR TOP
Keluaran
Gambar 8.1 Prinsip Kerja Mode Fast PWM

Dalam mikrokontroler ATMEGA16, terdapat beberapa mode PWM. Mode PWM yang
akan dibahas adalah mode Fast PWM, karena dalam perancangan sistem robot ini menggunakan
mode Fast PWM. Pada mode Fast PWM, semakin besar nilai OCR, maka akan semakin besar
pula siklus kerja yang dihasilkan. Keluaran PWM akan berlogika tinggi setelah nilai TOP
tercapai sampai nilai OCR tercapai dan kemudian akan berlogika rendah sampai nilai TOP
tercapai kembali. Prinsip kerja dari Fast PWM dapat dilihat pada Gambar 10.1.
RANGKAIAN PWM
Rangkaian minimum untuk pwm melalui Port D.4 dan Port D.5 ditunjukan pada Gambar
10.2. Rangkaian tersebut menggunakan diver motor dc yaitu transistor. Rangkaian driver tersebut
akan di hubungkan dengan pin D.4 dan pin D.5.
U 1
A TM E G A 1 6
3
1 21 3
2
1 61 71 81 9
1 11 0
876
3 63 53 43 33 2
3 7
1
45
9
1 41 5
2 0 2 1
4 03 93 8
3 13 02 92 82 72 62 52 42 32 2
P B 2(I N T2 /A I N 0 )
XTA L 2XTA L 1
P B 1(T1 )
P D 2 (I N T0 )P D 3 (I N T1 )P D 4 (O C 1 B )P D 5 (O C 1 A )
G N DV C C
P B 7 [ S C K )P B 6 [ M I S O )P B 5(M O S I )
P A 4 (A D C 4 )P A 5 (A D C 5 )P A 6 (A D C 6 )P A 7 (A D C 7 )
A R E F
P A 3 (A D C 3 )
P B 0(XC K / T0 )
P B 3(O C 0 / A I N 1 )P B 4(S S )
R E S E T
P D 0 (R XD )P D 1 (TXD )
P D 6 (I C P ) P D 7 (O C 2)
P A 0 (A D C 0 )P A 1 (A D C 1 )P A 2 (A D C 2 )
A G N DA V C C
P C 7 (TO S C 2 )P C 6 (TO S C 1 )
P C 5P C 4P C 3P C 2
P C 1 (S D A )P C 0 (S C L )
p in b . 7
1 2 V 2M G 2
M O TO R D C
12
R S T
4 7 0
Q 2TI 9 0 1 3
C 3 1 0 0 nF 1
p in b . 6
C 2 22 p F
5 V
TI 9 0 1 3
E N 2
4 7 0
E N 2E N 2
5 V
M G 2
M O TO R D C
12
p in b . 5
S W 2
12
E N 2
TIP 3 05 5
D 2
D IO D E
E N 2
E N 2
D 1
D IO D E
C 1 22 p F
R S T
E N 2
1 2 V 2
X1
E N 2
TIP 3 05 5
E N 2
J I S P
12345
E N 2
R 1
5 V
p in b .6p in b .7
p in b .5
Gambar 8.2 Hasil pemasangan komponen rangkaian minimum untuk pwm

PEMROGRAMAN PWM
Program sebagai berikut ini
//-------------------------------------------------------// Program PWM// DEKLARASI HEADER//-------------------------------------------------------#include <stdio.h>#include <mega16.h>#include <delay.h>//------------------------------------------------------//DEKLARASI SUB RUTIN//------------------------------------------------------void InisialisasiPWM();//------------------------------------------------------//DEKLARASI VARIABEL//------------------------------------------------------int data1;int data2;//------------------------------------------------------//RUTIN UTAMA//------------------------------------------------------void main (void){InisialisasiPWM();while(1) { data1 = 50; data2 = 1024; OCR1A=data1; OCR1B=data2; TIFR=0; }}//------------------------------------------------------//SUB RUTIN INISIALISASI PWM//------------------------------------------------------void InisialisasiPWM(){DDRD=0xff;TCCR1A=0xa3;TCCR1B=0x0b;TCNT1=0x0000;}

LATIHAN PWM
1. Jelaskan program diatas

APLIKASI SERIAL PORT
TUJUAN
1. Mahasiswa dapat menjalankan program CodeVisionAVR 2.
2. Mahasiswa dapat memahami cara kerja serial port pada mikrokontroller
3. Mahasiswa dapat membuat program serial port pada mikrokontroller
DASAR TEORI
Universal synchronous dan asynchronous pemancar dan penerima serial adalah suatu alat
komunikasi serial sangat fleksibel. Jenis yang utama adalah :
� Operasi full duplex (register penerima dan pengirim dapat berdiri sendiri )
� Operasi Asychronous atau synchronous
� Master atau slave mendapat clock dengan operasi synchronous
� Pembangkit boud rate dengan resolusi tinggi
� Dukung frames serial dengan 5, 6, 7, 8 atau 9 Data bit dan 1 atau 2 Stop bit
� Tahap odd atau even parity dan parity check didukung oleh hardware
� Pendeteksian data overrun
� Pendeteksi framing error
� Pemfilteran gangguan ( noise ) meliputi pendeteksian bit false start dan pendeteksian low pass
filter digital
� Tiga interrupt yaitu TX complete, TX data register empty dan RX complete.
� Mode komunikasi multi-processor
� Mode komunikasi double speed asynchronous
USART harus diinisialisasi sebelum komunikasi manapun dapat berlansung. Proses inisialisasi
normalnyaterdiri daripengesetan boud rate, penyetingan frame format dan pengaktifan pengirim atau
penerimatergantung pada pemakaian. Untuk interrupt menjalankan operasi USART , global interrupt
flag ( penanda ) sebaiknya dibersihkan ( dan interrupt global disable ) ketika inisialisasi dilakukan.
Sebelum melakukan inisialisasi ulang dengan mengubah boud rate atau frame format, untuk
meyakinkan bahwa tidak ada transmisi berkelanjutan sepanjang peiode register yang diubah.
Flag TXC dapat digunakan untuk mengecek bahwa pemancar telah melengkapi semua pengiriman, dan
flag RXC dapat digunakan untuk mengecek bahwa tidak ada data yang tidak terbaca pada buffer
penerima. Tercatat bahwa flag TXC harus dibersihkan sebelum tiap transmisi ( sebelum UDR ditulisi )
jika itu semua digunakan untuk tujuan tersebut. USART sederhana inisialisasi kode contoh berikut

menunjukan fungsi satu assembly dan satu C itu mempunyai kesamaan dalam kemampuan. Pada contoh
tersebit mengasumsikan bahwa operasi asinkron menggunakan metode poling ( tidak ada interrupt
enable ) frame format yang tetap. Boud rate diberikan sebagai fungsi parameter.
Untuk kode assembly, parameter boud rate diasumsikan untuk di simpan pada register r16, r17. Ketika
menulis fungsi pada register UCSRC, bit URSEL (MSB) harus diset dalam kaitan dengan pembagian
penempatan I/O oleh UBRRH dan UCSRC. Lebih mengedepankan inisialisasi rutin dapat dibuat seperti
itu meliputi frame format sebagai parameter, disable interrupt dan lain-lain. Bagai manapun juga banyak
aplikasi menggunakan seting tetap boud dan register control, dan untuk aplikasi jenis ini dapat
ditempatkan secara langsung pada keseluruhan routine, atau dikombinasikan dengan inisialisasi kode
untuk modul I/O yang lain.
RANGKAIAN SERIAL PORT
Rangkaian berikut digunakan untuk interfacing Led dengan port serial. Rangkaian tersebut,
sebagai konverter dari serial ke pararel. Berikut adalah rangkaian serial led driver yang akan kita
hubungkan pada port serial. Rangkaian Led Driver Serial menggunakan Microcontroller ATMEGA16
yang dihubungkan ke port serial dengan menggunakan IC RS232 Rangkaian Serial LED Driver ini akan
mendeteksi setiap pengiriman data karakter dari port serial computer.
U 4
A TM E G A 1 6
3
1 21 3
2
1 61 71 81 9
1 11 0
876
3 63 53 43 33 2
3 7
1
45
9
1 41 5
2 0 2 1
4 03 93 8
3 13 02 92 82 72 62 52 42 32 2
P B 2 (I N T2 /A I N 0 )
XTA L 2XTA L 1
P B 1 (T1 )
P D 2 (I N T0 )P D 3 (I N T1 )P D 4 (O C 1 B )P D 5 (O C 1 A )
G N DV C C
P B 7 [ S C K )P B 6 [ M I S O )P B 5 (M O S I )
P A 4 (A D C 4 )P A 5 (A D C 5 )P A 6 (A D C 6 )P A 7 (A D C 7 )
A R E F
P A 3 (A D C 3 )
P B 0 (XC K / T0 )
P B 3 (O C 0 / A I N 1 )P B 4 (S S )
R E S E T
P D 0 (R XD )P D 1 (TXD )
P D 6 (I C P ) P D 7 (O C 2 )
P A 0 (A D C 0 )P A 1 (A D C 1 )P A 2 (A D C 2 )
A G N DA V C C
P C 7 (TO S C 2 )P C 6 (TO S C 1 )
P C 5P C 4P C 3P C 2
P C 1 (S D A )P C 0 (S C L )
A D D 9
P 3
G N D
A D D 8
P 712
P D 5
V C C
P 5
D A TA 5
A D D 1 2
L 112
P D 6
+ C 4
1 u F 1 6 V
12D A TA 2
P 6
TX1
R S T
R X1
P 4
S W 2
12
+
C 91 u F 1 6 V
V C C
12
P D 1X1
D A TA 4
J I S P
H E A D E R 5
12345
U 6
M A X2 3 2
1 38 1 1
1 0
1
3
4
5
2 6
1 2
91 47 R 1 I N
R 2 I N T1 I N
T2 I N
C +
C 1 -
C 2 +
C 2 -
V + V -
R 1 O U T
R 2 O U TT1 O U TT2 O U T
D A TA 7
D A TA 3
P 7
+ C 8
1 u F 1 6 V
12
C 1 2 2 p F
D A TA 0P 1
V C C
P 5
V C CP 2P 6
P D 7
A D D 1 1
C 2 2 2 p F
D A TA 1
P D 3
+ C 5
1 u F 1 6 V
D A TA 6
C 3 1 0 0 n F 1
12
P 0
P D 0
R S T
A D D 1 0
A D D 1 5
12
P D 2
J S e r ia l1
H E A D E R 3
123
A D D 1 3P D 4 A D D 1 4
12R 1
Gambar 4.2 Hasil pemasangan komponen rangkaian serial mikrokontroller

PEMROGRAMAN PWM
Program sebagai berikut ini
//-------------------------------------------------------//Program Bab 5.2. MENGIRIM DAN MENERIMA DATA//-------------------------------------------------------//-------------------------------------------------------//DEKLARASI HEADER//------------------------------------------------------- #include <mega16.h>#include <delay.h>#include <stdio.h>//-------------------------------------------------------//DEKLARASI VARIABEL//------------------------------------------------------- unsigned char data_terima = 0x00;const long int osilator = 12000000;unsigned long int UBRR;//------------------------------------------------------//DEKLARASI SUB RUTIN//------------------------------------------------------void InisialisasiUSART (unsigned long int baud_rate);//------------------------------------------------------//PROGRAM UTAMA//------------------------------------------------------void main(void){DDRC = 0xFF;PORTC = 0x00;InisialisasiUSART(9600);putsf("Selamat Datang Mas Iswanto"); putchar(13);while(1) { putsf("Tekan sembarang tombol"); putchar(13); data_terima = getchar(); delay_ms(100); putsf("Anda menekan tombol "); putchar(data_terima);; putchar(13); }}//------------------------------------------------------//SUB RUTIN BAUDRATE//------------------------------------------------------void InisialisasiUSART (unsigned long int baud_rate){UBRR = (osilator/(16*baud_rate))-1;UBRRL = UBRR;UBRRH = UBRR>>8;UCSRB = 0x18;UCSRC = 0x86;}

LATIHAN SERIAL PORT
1. Jelaskan program diatas
