bab i pembelajaran microcontroller
TRANSCRIPT
1
A. DESKRIPSI MODUL
Modul ini berjudul “Mikrokontroller AVR”, berisi pembelajaran
tentang standar kompetensi/ kompetensi dasar “Memprogram peralatan
sistem pengendali elektronik yang berkaitan akses I/O berbantuan
mikroprosesor dan mikrokontroller”. Modul bahan ajar ini berisi kajian
teori dan materi latihan praktik, oleh karena sifat bahan kajian teori
merupakan keterampilan tahap kognitif, maka materi tersebut harus sudah
dimengerti, dipahami dan dikuasai oleh siswa/peserta diklat sebelum
melaksanakan kegiatan praktik.
Hasil yang diharapkan setelah pembelajaran pada modul ini peserta
diklat harus dapat Menerapkan Sistem Mikrokontroller dengan baik dan
benar sesuai SOP.
B. PRASYARAT
- PENDIDIKAN FORMAL
Telah menyelesaikan pendidikan setara Sekolah Menengah Pertama
(SMP) atau sederajat.
- KAITAN DENGAN MODUL/KEMAMPUAN LAIN
Modul ini berkaitan dengan Modul: Modul ini berkaitan dengan Standar
Kompetensi “Menerapkan Dasar-Dasar Kelistrikan”, “Menerapkan Dasar-
Dasar Elektronika”, “Menerapkan Dasar-Dasar Teknik Digital”,
“Menerapkan Keselamatan Dan Kesehatan Kerja (K3)”, “Menerapkan
konsep elektronika digital dan rangkaian elektronika computer”
“Menggunakan Sensor” ,“Menerapkan sistem Menerapkan sistem
mikrokontroller”, “Menerapkan Sistem Microprosesor”. “Merakit peralatan
dan perangkat elektronik sistem pengendali elektronika”, “Merakit
peralatan dan perangkat elektronik sistem otomasi elektronika”
C. PETUNJUK PENGGUNAAN MODUL
1. Petunjuk untuk siswa/ peserta diklat
Langkah-langkah belajar yang ditempuh :
I. PENDAHULUAN
2
a. Bacalah modul ini sampai anda betul-betul mengerti.
b. Kerjakan tugas-tugas yang ada pada modul ini pada lembaran yang
sudah disediakan.
c. Hasil pekerjaan anda merupakan data fisik untuk menentukan
keberhasilan.
2. Petunjuk untuk guru/ fasilitator
a. Mengarahkan/ membimbing, menjelaskan serta memotivasi peserta
diklat mengenai teknis pengerjaannya.
b. Mengawasi dan memandu siswa apabila ada yang masih kurang jelas.
c. Menjelaskan materi-materi pembelajaran yang ditanyakan oleh siswa
yang masih kurang dimengerti.
d. Membuat pertanyaan dan memberikan penilaian kepada setiap siswa.
D. TUJUAN AKHIR
Setelah mengikuti/ menyelesaikan kegian-kegiatan belajar dari modul ini ,
diharapkan siswa/ peserta diklat memiliki spesifikasi kinerja sebagai
berikut:
a. Memahami konsep dan pengertian algoritma pemrograman.
b. Mengetahui teknologi yang digunakan mikrokontroler seri AVR.
c. Mengenal Bahasa C untuk pemrograman mikrokontroler.
d. Memahami pemrograman I/O mikrokontroler AVR secara byte dan bit.
e. Membuat program sederhana dalam bahasa C untuk mikrokontroler
AVR.
f. Mengetahui cara kerja seven segment.
g. Memprogram system mikrokontroler untuk menampilkan karkter pada
LCD karakter.
h. Mengetahui istilah-istilah yang digunakan pemrograman Analog to
Digital Converter pada mikrokontoler.
i. Memprogram mikrontrol untuk aplikasi timer/ counter.
j. Memahami konsep dasar cara kerja Pulse Witdh Modulation.
k. Memprogram mikrokontrol untuk aplikasi kontrol temperatur.
l. Mengetahui konsep pembacaan pulsa.
3
E. STANDAR KOMPETENSI
Kode Kompetensi : KK.065.12
Standar Kompetensi : Menerapkan sistem mikrokontroller
Ruang Lingkup : Modul ini berkaitan dengan Standar Kompetensi
“Menerapkan Dasar-Dasar Kelistrikan”,
“Menerapkan Dasar-Dasar Elektronika”,
“Menerapkan Dasar-Dasar Teknik Digital”,
“Menerapkan Keselamatan Dan Kesehatan Kerja
(K3)”, “Menerapkan konsep elektronika digital
dan rangkaian elektronika computer”
,“Menerapkan sistem Menerapkan sistem
mikrokontroller”, “Menerapkan Sistem
Microprosesor”. “Merakit peralatan dan perangkat
elektronik sistem pengendali elektronika”,
“Merakit peralatan dan perangkat elektronik
sistem otomasi elektronika”
F. CEK KEMAMPUAN
DAFTAR PERTANYAANTINGKAT
PENGUASAAN(SCORE : 0 – 100 )
1. Apakah siswa dapat memahami konsep danpengertian algoritma pemrograman ?
2. Apakah siswa dapat mengetahui teknologi yangdigunakan mikrokontroler seri AVR ?
3. Apakah siswa dapat mengenal Bahasa C untukpemrograman mikrokontroler ?
4. Apakah siswa dapat memahami pemrogramanI/O mikrokontroler AVR secara byte dan bit ?
5. Apakah siswa dapat membuat programsederhana dalam bahasa C untuk mikrokontrolerAVR ?
6. Apakah siswa dapat mengetahui cara kerja sevensegment ?
4
7. Apakah siswa dapat memprogram systemmikrokontroler untuk menampilkan karkter padaLCD karakter ?
8. Apakah siswa dapat mengetahui istilah-istilahyang digunakan pemrograman Analog to DigitalConverter pada mikrokontoler ?
9. Apakah siswa dapat memprogram mikrontroluntuk aplikasi timer/ counter ?
10. Apakah siswa dapat memahami konsep dasarcara kerja Pulse Witdh Modulation ?
11. Apakah siswa dapat memprogram mikrokontrol-ler untuk aplikasi kontrol temperatur ?
12. Apakah siswa dapat mengetahui konseppembacaan pulsa ?
A. RENCANA BELAJAR SISWA
Jenis Kegiatan Tanggal WaktuTempatBelajar
TandaTanganGuru
Kegiatan Belajar 1:Algoritma pemrograman: Memahami konsep dan
pengertian algoritmapemrograman.
Memahami fungsi algoritmapemrograman.
Mengetahui ciri-cirialgoritma.
Memahami alur penyusunanalgoritma.
Membuat algoritma dalambentuk deskriptiif, diagramalir, dan pseudo-code.
Menyusun algoritmapemrograman sesuai kaidahbaku penyusunan algoritma.
Menguji algoritmapemrograman berdasarkanstudi kasus.
II. PEMBELAJARAN
5
Jenis Kegiatan Tanggal WaktuTempatBelajar
TandaTanganGuru
Kegiatan Belajar 2 :Arsitektur mikrokontroller: Mengetahui teknologi yang
digunakan mikrokontrolerseri AVR.
Mengetahui feature yangdimiliki oleh ATMega8535berdasarkan diagram blokfungsional.
Mengetahui kelebihan yangdimiliki mikrokontrol AVR.
Mengetahui fungsi dankonfigurasi pin yangdimiliki oleh ATMega8535.
Mengetahui jenis dankegunaan memori yangterdapat dalamATMega8535.
Mengetahui sistemminimum untuk sistemmikrokontrol ATMega8535.
Kegiatan Belajar 3 :Bahaca C untuk pemrogramanmikrokontroller: Mengenal Bahasa C untuk
pemrogramanmikrokontroler.
Mengetahui kelebihan dankekurangan bahasa C untukpemrogramanmikrokontroler.
Mengenal struktur dasarbahasa C.
Mengetahui perintah dasarbahasa C untukpemrogramanmikrokontroler.
Mengetahui fungsi-fungsidasar dalam bahasa C.
Menggunakan bahasa Cuntuk pemrogramanmikrokontroler AVR.
6
Jenis Kegiatan Tanggal WaktuTempatBelajar
TandaTanganGuru
Kegiatan Belajar 4 :Dasar input output: Mengetahui pengaturan
register input dan outputpada mikrokontrol AVR.
Memahami perintah dasarInput dan Output.
Memahami pemrogramanI/O mikrokontroler AVRsecara byte dan bit
Menggunakan pustakadelay.
Menggunakan programkompilator bahasa C.
Membuat programsederhana dalam bahasa Cuntuk mikrokontroler AVR.
Melakukan pemrogramanmikrokontroler AVR.
Kegiatan Belajar 5 :Pemrograman seven segment: Mengetahui Seven Segment. Mengetahui cara kerja seven
segment. Memahami cara penggunaan
seven segment. Memprogram mikrokontrol
untuk aplikasi sevensegment.
Kegiatan Belajar 6 :Pemrograman menggunakanLCD karakter: Mengenal LCD karakter. Mengetahui cara Inisialisasi
LCD karakter. Mengetahui cara
menampilkan karakter padaLCD karakter berdasarkantitik koordinat.
Memprogram systemmikrokontroler untukmenampilkan karkter padaLCD karakter.
7
Jenis Kegiatan Tanggal WaktuTempatBelajar
TandaTanganGuru
Kegiatan Belajar 7 :Analog to digital converter(ADC): Mengetahui konsep ADC
secara umum. Mengetahui istilah-istilah
yang digunakanpemrograman ADC padamikrokontoler.
Mengetahui fitur ADC yangterintergrasi denganmikrokontrol ATMega8535.
Melakukan pengaturanregister mikrokontroleruntuk mengaktifkan fiturADC.
Memprogram mikrokontroluntuk pembacaan data ADC.
Memprogram mikrokontroluntuk aplikasi pembacaantegangan.
Kegiatan Belajar 8 :Timer/ Counter: Mengetahui timer/counter
yang terdapat padamikrokontrol ATMega8535.
Mengetahui cara kera danfeature timer/counter padamikrokontrol ATMega8535.
Mengetahui caraperhitungan waktu timer.
Melakukan penghitunganwaktu timer.
Memprogram mikrontroluntuk aplikasi pewaktu.
Memprogram mikrontroluntuk aplikasi jam digital,menggunakan fungsiinterupsi timer.
Kegiatan Belajar 9 :Pulse With Modulation(PWM):
8
Jenis Kegiatan Tanggal WaktuTempatBelajar
TandaTanganGuru
Mengetahui pengerttianPWM.
Mengetahui fungsi danaplikasi PWM.
Memahami konsep dasarcara kerja PWM.
Mengatur registermikrokontrol untuk untukaplikasi pemrogramanPWM.
Memprogram mikrokontroluntuk aplikasi pengaturantegangan menggunakanPWM.
Kegiatan Belajar 10 :Aplikasi sensor temperatur: Mengetahui sensor
temperatur LM35. Mengetahui karakter dasar
sensor temperatur LM35. Mengetahui teknik
manipulasi data digital. Memprogram mikrokontrol
untuk aplikasi sensortemperatur LM35.
Memprogram mikrokontroluntuk aplikasi kontroltemperatur.
Kegiatan Belajar 11 :External interupt requets: Mengetahui konsep
pembacaan pulsa Memahami konsep
pembacaan transisirendah/tinggi
Mengetahui interupsieksternal
Mengetahui fungsi interupsieksternal
Memprogrammikrokontroler AVR untukaplikasi interupsi eksternal
Memprogram
9
Jenis Kegiatan Tanggal WaktuTempatBelajar
TandaTanganGuru
mikrokontroler AVRsebagai counter denganmemanfaatkan fasilitasinterupsi eksternal.
Evaluasi : Kognitif skill Psikomotorik skill Attitude skill
B. KEGIATAN BELAJAR SISWA
1. Tujuan Kegiatan Belajar 1 :
Setelah mempelajari kegiatan belajar 1, diharapkan anda dapat :
Memahami konsep dan pengertian algoritma pemrograman. Memahami fungsi algoritma pemrograman. Mengetahui ciri-ciri algoritma. Memahami alur penyusunan algoritma. Membuat algoritma dalam bentuk deskriptiif, diagram alir, dan
pseudo-code. Menyusun algoritma pemrograman sesuai kaidah baku penyusunan
algoritma. Menguji algoritma pemrograman berdasarkan studi kasus.
2. Uraian Materi
1) Algoritma
a. Pengertian
Asal kata Algoritma berasal dari nama penulis buku arab yaitu Abu
Ja’far Muhammad Ibnu Musa Al-Khuwarizmi. Al-Khuwarizmi
KEGIATAN BELAJAR 1
10
dibaca orang barat menjadi Algorism. Al-Khuwarizmi menulis
buku yang berjudul Kitab Al Jabar Wal-Muqabala yang artinya
“Buku pemugaran dan pengurangan” (The book of restoration and
reduction). Dari judul buku itu kita juga memperoleh akar kata
“Aljabar” (Algebra).
Algoritma adalah urutan langkah-langkah logis penyelesaian
masalah yang disusun secara sistematis (Rinaldi Munir :2002).
Algoritma berfungsi untuk membantu seseorang dalam
menyelesaikan suatu masalah berdasarkan pada pola pikirnya
masing-masing.
b. Ciri-ciri algoritma
Berikut adalah ciri-ciri dari algoritma secara umum:
Ada input.
Ada proses.
Ada output.
Memiliki instruksi instruksi yang jelas dan tidak ambigu.
Harus mempunyai stopping role.
Selain ciri diatas algoritma juga memiliki sifat khas, yang sekaligus
merupakan keuntungan pembuatan algoritma diantaranya:
Tidak tergantung pada bahasa pemrograman manapun, baik
dalam penulisan maupun dalam penyusunanya
Notasi algoritma dapat diterjemahkan ke dalam berbagai
bahasa pemrograman.
Output yang akan dikeluarkan sama karena algoritmanya
sama, meskipun bahasa pemrogramanya berbeda.
Untuk lebih jelas mengenai algoritma, berikut merupakan contoh-
contoh algoritma dalam kehidupan sehari-hari:
Tabel 1.1. Contoh-Contoh Algoritma dalam Kehidupan Sehari-hari
NO. PROSES ALGORITMACONTOH LANGKAH
DALAM ALGORITMA
11
1 Membuat kue Resep kue Masukkan telur kedalam wajan, kocoksampaimengembang
2 Membuat pakaian Pola pakaian Gunting kain daripinggir kiri bawahke arah kanansejauh 5 cm
3 Merakit mobil Panduanmerakit
Sambungkankomponen A dengankomponen B
4 Kegiatan sehari-Hari
Jadwal harian Pukul 06.00:mandi pagi, pukul07.00: berangkatSekolah
5 Mengisi voucerHP
PanduanPengisian
Tekan 888,masukkan nomorvoucer
Algoritma memasak mie instan.
Rebus air hingga mendidih.
Masukkan mie instan ke dalam air mendidih tersebut.
Tunggu beberapa hingga mie terlihat matang.
Jika mie sudah dirasa matang, angkat dan tiriskan.
Campurkan bumbu-bumbu, dan aduk hingga rata
Algoritma menghitung luas persegi panjang.
Masukkan panjang
Masukkan lebar
Nilai luas adalah panjang * lebar
Tampilkan Nilai luas
2) Jenis Struktur data penyusunan Algoritma
a. Sequence Process:
instruksi dikerjakan secara sekuensial, berurutan.
b. Selection Process:
instruksi dikerjakan jika memenuhi criteria tertentu
12
c. Iteration Process:
instruksi dikerjakan selama memenuhi suatu kondisi tertentu.
d. Concurrent Process:
beberapa instruksi dikerjakan secara bersama.
3) Penyajian Algoritma
Secara garis besar bisa dalam 2 bentuk penyajian yaitu:
a. Penyajian dengan Tulisan,
Disajikan dengan struktur bahasa tertentu/deskriptif
(misalnya bahasa Indonesia atau bahasa Inggris)
Keuntungan dan kelebihan:
Setiap langkah dijelaskan dengan bahasa yang jelas.
Cocok untuk algoritma yang pendek,
Tidak efektif untuk algoritma kompleks.
Konversi algoritma ke bhasa pemrograman sukar
Pseudocode, yaitu bahasa yang mirip kode pemrograman yang
sebenarnya seperti Pascal, atau C
Keuntungan dan kelebihan:
Translasi atau konversi ke bahasa pemrograman lebih
mudah
Berikut adalah contoh penggunaan algoritma serta
konversinya dalam Pseudo-Code:
Tabel 1.2 Contoh Algoritma dan Pseudo Code Mengitung luas
ALGORITMA PSEUDO-CODE
Masukkan panjang Input panjang
Masukkan lebar Input lebar
Nilai luas adalah panjang x lebar Luas panjang x lebar
Tampilkan Nilai luas Print luas
Tabel 1.3 Contoh Lain Algoritma dan Pseudo Code
ALGORITMA PSEUDO-CODE
13
Jika sudah selesai, cetak invoiceIF_ KONDISI_SELESAI =“DONE” THEN PRINTINVOICE
Nilai A dibagi dengan 2 A A / 2
Jika nilai A lebih besar dari 2
maka nilai A dikalikan 3IF A >2 THEN A A x 3
Dari dua bilangan X dan Y, cari
bilangan yang terbesarIF X >Y THEN PRINT XELSE PRINT Y
b. Penyajian dengan gambar, pada umumnya menggunakan
Flowchart yaitu gambar atau bagan yang memperlihatkan
urutan dan hubungan antar proses beserta pernyataannya,
dimana setiap gambar merupakan simbol menggambarkan
proses tertentu.
Keuntungan dan kelebihan:
Memudahkan kita untuk melakukan pengecekan bagian-
bagian yang terlupakan dalam analisis masalah.
Sebagai fasilitas untuk berkomunikasi antara pemrogram
yang bekerja dalam tim suatu proyek.
Cocok untuk algoritma yang pendek,
Tidak efektif untuk algoritma kompleks.
Konversi algoritma ke bhasa pemrograman sukar
Walaupun tidak ada kaidah-kaidah yang baku dalam penyusunan
flowchart, namun ada beberapa anjuran:
Hindari pengulangan proses yang tidak perlu dan logika
yang berbelit sehingga jalannya proses menjadi singkat.
Jalannya proses digambarkan dari atas ke bawah dan
diberikan tanda panah untuk memperjelas.
Sebuah flowchart diawali dari satu titik START dan diakhiri
dengan END.
14
Berikut merupakan beberapa contoh simbol flowchart yang
disepakati oleh dunia pemrograman
Tabel 1.4 Lambang-lambang Flow Chart
KETERANGAN LAMBANG
Mulai / Selesai (Terminator)
Aliran Data
Input / Output
Proses
Percabangan (Decision)
Pemberian nilai awal suatuvariabel (Preparation)
Memangggil prosedur / fungsi(Call)
Connector (di halaman yangsama)
Connector (di halaman lain)
Sequence process
15
KETERANGAN LAMBANG
Perulangan
Untuk memahami lebih dalam mengenai flowchart ini, akan
diambil sebuah kasus sederhana.
Kasus :
Buatlah sebuah rancangan program dengan menggunakan
flowchart, mencari luas persegi panjang.
Solusi:
Perumusan untuk mencari luas persegi panjang adalah:
L = p . l
di mana:
L : adalah Luas persegi panjang,
p : adalah panjang persegi, dan
l : adalah lebar persegi.
16
Keterangan :
1.Simbol pertama menunjukkan dimulainya sebuah program.
2.Simbol kedua menunjukkan bahwa input data dari p dan l.
3.Data dari p dan l akan diproses pada simbol ketiga
dengan menggunakan perumusan L = p . l
4.Simbol keempat menunjukkan hasil output dari proses dari
simbol ketiga.
5.Simbol kelima atau terakhir menunjukkan berakhirnya
program dengan tanda End.
2) Pemrograman
Berikut adalah Langkah-langkah yang dilakukan dalam
menyelesaikan masalah dalam pemrograman dengan komputer adalah:
a. Definisikan Masalah
Berikut adalah hal-hal yang harus diketahui dalam analisis
masalah supaya kita mengetahui bagaimana permasalahan tersebut:
1. Kondisi awal, yaitu input yang tersedia.
2. Kondisi akhir, yaitu output yang diinginkan.
3. Data lain yang tersedia.
4. Operator yang tersedia.
5. Syarat atau kendala yang harus dipenuhi.
Contoh kasus:
Menghitung biaya percakapan telepon di wartel. Proses yang
perlu diperhatikan adalah:
1. Input yang tersedia adalah jam mulai bicara dan jam selesai
bicara.
2. Output yang diinginkan adalah biaya percakapan.
17
3. Data lain yang tersedia adalah besarnya pulsa yang digunakan
dan biaya per pulsa.
4. Operator yang tersedia adalah pengurangan (-), penambahan (+),
dan perkalian (*).
5. Syarat kendala yang harus dipenuhi adalah aturan jarak dan
aturan waktu.
b. Buat Algoritma dan Struktur Cara Penyelesaian
Jika masalahnya kompleks, maka bagi ke dalam modul-modul atau
sub bagian yang lebih rinci, dimana setiap modul atau sub bagian
memiliki algoritma tersendiri sebagai pemecahan masalah, kemudian
gabungkan masing-masing sub tadi dalam sebuah algoritma global
yang utuh.
c. Menulis Program
Algoritma yang telah dibuat, diterjemahkan dalam bahasa
pemograman menjadi sebuah program. Perlu diperhatikan bahwa
pemilihan algoritma yang salah akan menyebabkan program
memiliki untuk kerja yang kurang baik. Program yang baik
memiliki standar penilaian:
1. Standar teknik pemecahan masalah
a. Teknik Top-Down
Teknik pemecahan masalah yang paling umum
digunakan. Prinsipnya adalah suatu masalah yang kompleks
dibagi-bagi ke dalam beberapa kelompok masalah yang
lebih kecil. Dari masalah yang kecil tersebut dilakukan
analisis. Jika dimungkinkan maka masalah tersebut akan
dipilah lagi menjadi subbagian- subbagian dan setelah
itu mulai disusun langkah-langkah penyelesaian yang
lebih detail.
b. Teknik Bottom-Up
Prinsip teknik bottom up adalah pemecahan masalah
yang kompleks dilakukan dengan menggabungkan prosedur-
18
prosedur yang ada menjadi satu kesatuan program sebagai
penyelesaian masalah tersebut.
2. Standar penyusunan program
a. Kebenaran logika dan penulisan.
b. Waktu minimum untuk penulisan program.
c. Kecepatan maksimum eksekusi program.
d. Ekspresi penggunaan memori.
e. Kemudahan merawat dan mengembangkan program.
f. User Friendly.
g. Portability.
h. Pemrograman modular.
d. Mencari Kesalahan
1. Kesalahan sintaks (penulisan program).
2. Kesalahan pelaksanaan: semantik, logika, dan ketelitian.
e. Uji dan Verifikasi Program
Uji program apakah program berfungsi dengan baik dan sudah
sesuai keinginan user, jika belum maka perlu dilakukan perbaikan
dari sisi sintaksis, logika, manajemen memory dan dari sisi user
friendly.
f. Dokumentasi Program
Dapat berupa dokumentasi internal yaitu berupa keterangan atau
petunjuk yang disisipkan disetiap baris program atau untuk bagian
tertentu yang dianggap perlu sehingga troubleshooting program
menjadi lebih mudah. Selain itu akan lebih baik jika dilengkapi
dokumentasi external yaitu berupa buku petunjuk penggunaan.
g. Pemeliharaan Program
19
1. Memperbaiki kekurangan yang ditemukan kemudian.
2. Memodifikasi, karena perubahan spesifikasi.
3. Rangkuman
1) Algoritma adalah urutan langkah-langkah logis penyelesaian
masalah yang disusun secara sistematis.
2) Fungsi Algoritma untuk membantu seseorang dalam
menyelesaikan suatu masalah berdasarkan pada pola pikirnya
masing-masing.
3) Algoritma memiliki ciri: ada Input, ada proses, ada ouput,memiliki
stoping rule yang jelas, perintahnya jelas.
4) Ada beberapa jenis struktur data algoritma dinataranya: Sequence
Proces, Selection Process; Iteration; Concurrent.
5) Penyajian algoritma dapat berupa tulisan (Mengunakan bahasa
tertentu atau melalui Pseudo-code), dan dapat berupa gambar
(Flowchart).
6) Urutan penyelesaian masalah dalam pemrograman:
a. Definisikan Masalah
b. Buat Algoritma dan Struktur Cara Penyelesaian
c. Menulis Program
d. Mencari Kesalahan
e. Uji dan verifikasi program
f. Dokumentasi Program
g. Pemeliharaan Program
4. Latihan Soal
1) Jelaskan peranan algoritma dalam pemrograman !
2) Buatlah algoritma deskriptif dan flowchart untuk kegiatan
menyeduh kopi instan
3) Buatlah algoritma deskriptif, pseudo code, dan flowchart untuk
menghitung luas lingkaran
20
4) Buatlah algoritma deskriptif, pseudo code, dan flowchart untuk
program alat pemanas yang hanya aktif saat suhu ruangan 0-30
derajat celcius.
5) Buatlah algoritma deskriptif, pseudo code, dan flowchart untuk
membedakan bilangan ganjil dan genap dengan input 1 bilangan.
5. Tugas
Buatlah algoritma deskriptif, pseudo code, dan flowchart untuk
menetukan besar discount (dibawah 100 ribu disc 10%; dibawah 50
ribu disc 5%; dibawah 25 ribu disc 0%).
6. Evaluasi
1) Apakah pengertian dan fungsi algoritma?
2) Uraikan cirri-ciri algoritma!
3) Jelaskan arti lambang flowchart berikut!
a. d.
b. e.
c.
4) Uraikan sifat-sifat algoritma!
5) Buatlah sebuah algoritma pemrogrman untuk mengontrol putaran
motor dc dengan ketentuan, jika saklar A ditekan motor berputar
CCW jika saklar B ditekan motor berputar CW jika saklar 3
ditekan motor tidak berputar, lengkap dengan:
a. Algoritma Deskriptif
b. Algoritma pseudo-code
c. Algoritma Flowchart
7. Kriteria Penilaian
KRITERIA SKOR BOBOT NILAI KETERANGAN
Kognitif Soal Nomor 1 5 Nilai >= 75
21
KRITERIA SKOR BOBOT NILAI KETERANGAN
Kognitif Soal Nomor 2 5 Lulus
Kognitif Soal Nomor 3 10
Kognitif Soal Nomor 4 10
Kognitif Soal Nomor 5 70
NILAI AKHIR
22
1. Tujuan Kegiatan Belajar 2 :
Setelah mempelajari kegiatan belajar 2, diharapkan anda dapat :
Mengetahui teknologi yang digunakan mikrokontroler seri AVR Mengetahui feature yang dimiliki oleh ATMega 8535 berdasarkan
diagram blok fungsional Mengetahui kelebihan yang dimiliki mikrokontrol AVR Mengetahui fungsi dan konfigurasi pin pada ATMega 8535 Mengetahui jenis dan kegunaan memori di dalam ATMega 8535 Mengetahui sistem minimum sistem mikrokontrol ATMega 8535
2. Uraian Materi
1) Mirkrokontroler ATMega8535
Mikrokontroler adalah mikroprosesor plus atau mikrochip
tunggal di dalamnya mengandung unit mikroprosesor, memori, I/O,
ADC, Timer, Clock, dan lain-lain. Fasilitas yang terkandung di dalamnya
akan tergantung pada jenis dan tipe dari mikrokontroler. Contoh,
misalnya mikrokontroler AT 89C51 produk dari ATMEL mempunyai
fitur-fitur : CMOS 8 bit µComputer, 4 K Flash PEROM, 128 byte RAM
internal, 32 Prorammable I/O line, 2 byte timer/counter, 6 sumber
interupsi, programmable serial channel, low power, operasi 0 – 24 Mhz.
Namun secara analogi mikrokontroler merupakan komputer
didalam chip yang digunakan untuk mengontrol peralatan elektronik,
yang ditekankan untuk efisiensi dan efektifitas biaya. Secara harfiahnya
juga dapat disebut "pengendali kecil" dimana sebuah sistem elektronik
yang sebelumnya banyak memerlukan komponen komponen pendukung
seperti IC TTL dan CMOS dapat direduksi/diperkecil dan akhirnya
terpusat serta dikendalikan oleh mikrokontroler ini.
Oleh karena itu cukup banyak keuntungan dalam penggunaan
mikrokontroler diantaranya:
a) Harga relatif lebih murah
b) Sistem elektronik akan menjadi lebih ringkas, karena komponen
yang digunakan relative lebih sedikit.
c) Tingkat keamanan dan akurasi yang lebih baik.
KEGIATAN BELAJAR 2
23
d) Rancang bangun sistem elektronik akan lebih cepat, karena dapat
dibangun hanya dengan menggunakan satu chip tunggal yang dapat
diprogram.
e) Dapat digunakan dihampir semua aplikasi system elektronika.
f) Trouble shooting relative lebih mudah.
g) Merupakan sebuah embedded system (system tertanam), sehingga
cocok untuk aplikasi portable atau stand alone.
h) Memiliki kecepatan yang cukup tinggi dan mudah digunakan untuk
akuisisi data
i) Kemudahan expansi hardware atau software.
Ada banyak jenis mikrokontroler diantaranya adalah Keluarga
MCS-51 (Intel); Keluarga AT89 (Atmel, arsitektur Intel 8051); Keluarga
AT90, ATtiny, ATMega ( Atmel, arsitektur AVR ); Keluarga
MC68HC11 ( Motorola ); Keluarga PIC 8 ( Microchip ); Keluarga Z80 (
Zilog ). Yang membedakan kemungkinan hanya dalam hal kemasana
fisik misalnya jumlah pin dan fitur-fiturnya seperti ukuran kapasitas
memori program dan memori data, jumlah timer, jumlah interupsi, dan
lain-lain.
Mikrokontroler jenis ATMEL cukup digemari di Indonesia
terutama untuk keluarga MCS-51, karena ditinjau dari segi harga cukup
murah, pemrograman mudah dan arsitektur yang lebih dekat pada
mikroprosesor sehingga cukup banyak diminati untuk dipelajari
dilingkungan pendidikan, terlebih setelah munculnya keluarga AVR yang
menawarkan fitur dan kecepatan lebih tinggi dengan harga yang relative
murah, ditambah lagi dengan semakin banyaknya kompailer bahasa
tingkat tinggi seperti bahasa C dan Basic untuk pemrograman
mikrokontroler, menambah minat para hobiis elektronika untuk semakin
menggemari mikrokontroler terutama seri AVR yang cukup banyak
diminati oleh para penggemar baru mikrokontroler.
Mikrokontroler AVR memiliki arsitektur RISC 8 bit, dimana
semua instruksi dikemas dalam kode 16-bit (16-bits word) dan sebagian
besar instruksi dieksekusi dalam 1 (satu) siklus clock , berbeda dengan
instruksi MCS51 yang membutuhkan 12 Siklus clock untuk menjalankan
1 perintah. Atau dengan kata lain sistem AT89S51/52 memiliki frekuensi
24
kerja seperduabelas kali frekuensi oscilator, sedangkan frekuensi kerja
mikrokontroller AVR ini pada dasarnya sama dengan frekuensi oscilator,
sehingga hal tersebut menyebabkan kecepatan kerja AVR dibandingkan
MCS51 untuk frekuensi oscilator yang sama, akan dua belas kali lebih
cepat dibandingkan. Tentu saja itu terjadi karena kedua jenis
mikrokontroler tersebut memiliki arsitektur yang berbeda. AVR
Menggunakan RISC (reduced instruction set computing), sedangkan
MCS51 berteknologi CISC (complex instruction set computing). Secara
umum, AVR dapat dikelompokkan dalam 7 kelas, yaitu keluarga
ATTiny, keluarga AT90Sxx, keluarga ATMega, keluarga ATXMega,
keluarga ATUSBxx, keluarga ATPWMxx dan AT86RFxx.
Pada dasarnya yang membedakan masing-masing kelas adalah
memori, peripheral dan fungsinya. Salah satu mikrokontroler AVR yang
memiliki bentuk dan susunan pin yang sama persis namun memiliki
perbedaan memory adalah tipe ATMega8535 (8 KB), ATMega16
(16KB), dan ATMega32 (32 KB), sehingga dengan mempelajari salah
satunya secara tidak langsung mempelajari ketiga tipe mikrokontrol
tersebut dan semua jenis mikrokontrol AVR secara umum.
Dari gambar diagram blok fungsional mikrokontroler AVR-
ATMega8535 berikut ini dapat dilihat bahwa ATMega8535 memiliki
feature sebagai berikut :
a) Saluran I/O sebanyak 32 buah, yaitu Port A, Port B, Port C, Port D.
b) ADC 10 Bit sebanyak 8 saluran
c) Tiga buah Timer/counter dengan kemampuan pembanding
d) CPU yang terdiri atas 32 register
e) Wtachdog Timer dengan osilator internal
f) SRAM sebesar 512 Bytes
g) Memori flash sebesar 8 KB dengan kemampuan Read While Write
h) Unit interupsi internal dan eksternal
i) Port antarmuka SPI
j) EEPROM sebeasar 512 Bytes yang dapat diperogram saat operasi
k) Antarmuka komparator analaog
l) Port USART untuk komunikasi serial dengan kecepatan maksimal
2,5 Mbps
25
Gambar diagram blok fungsional mikrokontroler AVR - ATMega8535
Gambar 2.1 Diagram Blok Fungsional ATmega8535
a. Konfigurasi pin ATMega8535
Konfigurasi pin ATMega8535 dapat dilihat pada gambar 2.3, dari gambar
tersebut dapat dijelaskan secara fungsional konfigurasi pin ATMega8535
sebagai berikut :
26
Gambar 2.2 Konfigurasi Pin ATMega8535
Tabel 2.1 Konfigurasi PIN ATMega8535
PIN KETERANGAN
1 - 8
Port B, merupakan Port I/O 8-bit dua arah (bi-directional) denganresistor pull-up internal, selain sebagai Port I/O 8-bit Port B jugadapat difungsikan secara individu sebagai berikut : PB7 : SCK ( SPI Bus Serial Clock ) PB6 : MISO (SPI Bus Master Input/Slave Output) PB5 : MOSI ( SPI Bus Master Output/Slave Input ) PB4 : SS ( SPI slave Select Input ) PB3 : AIN 1 ( Analog Comparator Negatif Input ) OC0 ( Output Compare Timer/Counter 0 ) PB2 : AIN 0 ( Analog Comparator Positif Input ) INT2 ( External Interupt 2 Input ) PB1 : T1 ( timer / Counter 1 External Counter Input ) PB0 : To ( Timer/Counter 0 External Counter Input ) XCK ( USART External Clock Input/Output )
9 RESET, merupakan pin reset yang akan bekerja bila pulsa rendah(aktif low ) selama minimal 1,5 us
10 VCC, Catu daya digital
11 GND, Ground untuk catu daya digital
12 XTAL2, merupakan output dari penguat osilator pembalik
13 XTAL1, merupakan input ke penguat osilator pembalik dan inputke internal clock
14-21 Port D, merupakan port I/O 8-bit dua arah ( bi-directional ) denganresistor pull-up internal, selain sebagai Port I/O 8-bit Port D juga
27
PIN KETERANGANdapat difungsikan secara individu sebagai berikut : PD7 : OC2 ( Output Compare Timer/Counter 2 ) PD6 : ICP ( Timer/Counter 1 Input Capture ) PD5 : OC1A ( Output Compare A Timer/Compare A
Timer/Counter 1 ) PD4 : OC1B ( Output Compare B Timer/Compare A
Timer/Counter 1 ) PD3 : INT1 ( External Interupt 1 Input ) PD2 : INT0 ( External Interupt 0 Input ) PD1 : TXD( USART transmit ) PD0 : RXD ( USART receive )
22-29
Port C, merupakan port I/O 8-bit dua arah ( bi-directional ) denganresistor pull-up internal, selain sebagai Port I/O 8-bit Port C jugadapat difungsikan secara individu sebagai berikut : PC7 : TOSC2 ( Timer Oscilator 2 ) PC6 : TOSC1 ( Timer Oscialtor 1 ) PC1 : SDA ( Serial Data Input/Output, PC ) PC0 : SCL ( Serial Clock, PC )
30 AVCC, merupakan catu daya yang digunakan untuk memasukananalog ADC yang terhubung ke Port A
31 GND, Ground untuk catu daya analog
32 AREF, merupakan tegangan referensi analog untuk ADC
33 – 40Port A, merupakan port I/O 8-bit dua arah dengan resistor pull-upinternal, selain sebagai Port I/O 8-bit Port B juga dapat berfungsisebagai masukan 8 channel ADC
b. Karakteristik Keslistrikan ATMega8535
Dengan melihat karakteristik kelistrikan yang dimiliki oleh komponen maka
akan dapat diketahui berapa arus dan tegangan serta parameter kelistrikan
lainya seperti daya yang diizinkan, sehingga dapat mencegah kerusakan
komponen akibat kelebihan beban arus atau tegangan.
28
Tabel 2.2 Karakteristik Kelistrikan ATMega8535
Catatan :
1. “Max” berarti nilai paling tinggi dimana pin dijamin untuk dibaca sebagai
rendah.
2. “Min” berarti nilai paling rendah dimana pin dijamin untuk dibaca
sebagai tinggi.
29
3. Meskipun masing-masing I/O Port dapat menjadi sink lebih dari kondisi
test (20mA pada VCC = 5V, 10mA pada VCC = 3V) di bawah keadaan
stabil (non-transient), Tetapi harus diperhatikan :
a) penjumlahan semua IOL, bagi seluruh Port, tidak boleh melebihi
200mA.
b) penjumlahan semua IOL, untuk A0 A7 Port, tidak boleh melebihi
100mA.
c) penjumlahan semua IOL, untuk B0 B7 Port,C0 C7, D0 D7 dan
XTAL2, tidak boleh melebihi 100 mA.
4. Walau masing-masing I/O Port dapat menjadi sumber lebih dari kondisi
test (20mA pada VCC = 5V, 10mA pada VCC = 3V) di bawah keadaan
stabil (non-transient),
Tetapi harus diperhatikan:
a) penjumlahan dari semua IOH, bagi seluruh Port, tidak boleh
melebihi 200mA.
b) penjumlahan dari semua IOH, untuk A0 A7 Port, tidak boleh
melebihi 100mA.
c) penjumlahan dari semua IOH, untuk B0 B7 Port,C0 C7, D0 D7 dan
XTAL2, tidak boleh melebihi 100mA.
5. Minimum VCC untuk Power-down adalah 2.5V.
c. Organisasi Memori
Mikrokontroler ATMega8535 memiliki 3 jenis memori yaitu Memori
Program, Memori Data dan Memori EEPROM.
1) Memori Program (Memory ISP)
ATMega8535 memiliki kapasitas memori program sebesar 8 Kbyte
kapasitas memori flash yang dimiliki bervariasi dari 1K sampai 128
KB. Secara teknis, memori jenis ini dapat diprogram melalui saluran
antarmuka yang dikenal dengan nama Serial Peripheral Interface (SPI)
yang terdapat pada setiap seri AVR tersebut. Dengan menggunakan
perangkat lunak programmer (downloader) yang tepat, pengisian
memori Flash dengan menggunakan saluran SPI ini dapat dilakukan
bahkan ketika chip AVR telah terpasang pada sistem akhir (end
system), sehingga dengan demikian pemrogramannya sangat fleksibel
30
Boot Flash Section
Aplication Flash Section
$FFF
$000
dan tidak merepotkan pengguna (Secara praktis metoda ini dikenal
dengan istilah ISP-In System Programming – sedangkan perangkat
lunaknya dinamakan In System Programmer).
Gambar 2.3 memori program
2) Memori Data
Gambar 2.4 SRAM (Static Random Access memory).
AVR ATmega 8535 memiliki memori data yang terbagi menjadi 3
bagian, yaitu 3 register umum, 64 buah register I/O, dan 512 SRAM
internal
a) RAM
RAM dalam hal ini berperan untuk menyimpan data yang sifatnya
sementara, yang biasanya diperlukan pada saat proses manimpulasi data
(penjumlahan, pengurangan, perkalian, pembagian, dan transfer data).
32 Registe rs
64 I/O Re gisters
Interna l SRAM512 x 8
$000 - $001F
$020 - $005F
$0060
$025F
31
b) SRAM
SRAM digunakan untuk menyimpan data variabel yang dimungkinkan
berubah setiap saatnya
ATMega8535 memiliki kapasitas memori data sebesar 608 Byte yang
terbagi menjadi 3 bagian yaitu :
Serba guna (32 byte), untuk register serba guna R0 – R31
Register I/O (64 byte), untuk mengatur fasilitas seperti timer/
counter, interupsi, ADC, USART, SPI, EEPROM dan port I/O
seperti Port A, Port B, Port C dan Port D
SRAM (512 ), untuk memori SRAM
3) Memori EEPROM
EEPROM umumnya digunakan untuk menyimpan data-data program
yang bersifat permanen.
ATMega8535 memiliki EEPROM sebesar 512 Byte. Memori EEPROM
ini hanya dapat di akses dengan menggunakan register-register I/O yaitu
register EEPROM address (EEARH-EEARL), register EEPROM Data
(EEDR) dan register EEPROM Control (EECR).
$ 0 2 0 0
$ 0 0 0 0
E E P R O M
Gambar 2.5 EEPROM
(Electrically Erasable Programmable Read Only Memory)
Tabel 2.3 Perbandingan Jumlah Memori
MICROCONTROLLER AVR MEMORI (byte)
JENIS KEMASANPIN
FLASH( Kb )
EEPROM(Kb )
SRAM(Byte )
Tiny AVR 8 - 32 pin 1 - 2K 64 - 128 0 - 128
AVR (classic AVR) 20 - 44 pin 1 - 8K 128 - 512 0 - 1 K
Mega AVR 32 - 64 pin 1 -128 K 512 - 4 K 512 - 4 K
32
d. Interupsi Mikrokontrol ATMega8535
Yang dimaksud dengan interupsi disini adalah pada saat system
sedang menjalankan program utama diminta untuk mengeksekusi program
yang lain (menyela program) dengan kondisi atau ketentuan tertentu. Banyak
cara untuk melakukan interupsi sehingga ada kemungkinan terjadinya
permintaan interupsi secara bersama-sama, pada saat terjadi interupsi secara
bersaan maka system akan menyeleksi interupsi berdasarkan prioritas,
dimana interupsi dengan prioritas tertinggi akan dilaksanakan.
Sebagai ilustrasi jika dalam sebuah ruang rapat terdapat 21 peserta
rapat, dan setiap peserta memiliki hak untuk menyela atau menyatakan
interupsi misalkan bertanya, tidak akan semua pertanyaan dari peseta
ditanggapi secara bersaan, namun peserta diminta untuk bertanya satu per
satu berdasarkan prioritas.
Berikut ini adalah macam-macam system interupsi yang ada dalam
mikrokontrol AVR ATMega8535, nomor vector bisa dikatakan sebagai
nomor prioritas dan prioritas tertinggi adalah RESET. Dengan kata lain jika
misalkan terjadi interupsi dari timer dan ADC sedangkan tombol reset
ditekan maka mikrokontrol hanya akan melaksanakan interupsi dari RESET
saja. Program Adress menyatakan alamat interupsi, source menyatakan
sumber interupsi, dan interrupt definition menyatakan maksud atau
keterangan interupsi.
Tabel 2.4 Interupsi Mikrokontrol ATMega8535
33
e. Sistem Minimum ATMega8535
Sistem minimum dapat diartikan sebagai sebuah system paling
sederhana yang dalam hal ini dilihat dari sisi penggunaan hardware atau
komponen yang digunakan namun system dapat berjalan sebagaimana
mestinya. Gambar dibawah menunjukan diagram skematik system minimum
ATMega8535, yang dapat dipergunakan pula untuk ATMega16 dan
ATMega32. Terdapat dua rangkaian optional atau pilihan dalam rangkaian
tersebut, yaitu I/O Header untuk mempermudah hubungan input dan output
terhadap mikrokontroler.
Yang kedua adalah optinal untuk soket ISP downloader, dengan
adanya soket ini pada rangkaian, mikrokontroler dapat diprogram tanpa
harus dilepas dari rangkaian, tetapi meskipun demikian system minimum
dapat tetap berfungsi meskipun tanpa menyertakan soket ISP Downloader.
VCC
I/O Header
(Optional)
SISTEM MINIMUM ATMega8535
VI1
GN
D2
VO3
U13LM7805
12
J14
DC6-16V
D41
1N4002
ISP Downloader(Optional)
R9220
12
D42LED
VCC
pa4pa5pa6
12
SW10
13579
246810
ISP1
CONN TRBLK 5x2
LEDLEDLEDLEDLEDLEDLEDLEDPB5
PB6PB7RST
pa7
pb5pb5pb4pb4
pb7pb6pb6
12345678
PORT-B
HEADER 8
pb0pb0
pb3pb3pb2pb2pb1pb1
pc6pc5pc4
pc7
12345678
PORT-C
HEADER 8
pc1pc0
pc3pc2
pd4
pd7pd6pd5
12345678
PORT-D
HEADER 8
pd0
pd2pd1
pd3
R74k7
R8220
12
D40LED
rstrstrstrstrstrstrstrst
12345678
PORT-A
HEADER 8
pa0pa1pa2
PB2(INT2/AIN0)3
XTAL212
XTAL113
PB1(T1)2
PD2(INT0)16
PD3(INT1)17
PD4(OC1B)18
PD5(OC1A)19
GND11 VCC10
PB7[SCK)8 PB6[MISO)7 PB5(MOSI)6 PA4(ADC4)
36
PA5(ADC5)35
PA6(ADC6)34
PA7(ADC7)33
AREF32
PA3(ADC3)37
PB0(XCK/T0)1
PB3(OC0/AIN1)4
PB4(SS)5
RESET9
PD0(RXD)14
PD1(TXD)15
PD6(ICP)20
PD7(OC2)21
PA0(ADC0)40
PA1(ADC1)39
PA2(ADC2)38
AGND31
AVCC30
PC7(TOSC2)29
PC6(TOSC1)28
PC527
PC426
PC325
PC224
PC1(SDA)23
PC0(SCL)22
IC2
ATMEGA8535-DIL40
pb1pb1pb0pb0
pb2pb2
pb4pb3pb3
pb7pb6pb6pb5pb5
gndv ccv ccv ccv cc
pd0
pd3pd2pd1
pd6pd5pd4
pa1pa0
pa2
pa4pa3
pa6pa5
pa7
gndgndaref
pc6pc7av ccav cc
pc4pc5
pc3
pc1pc2
pc0
pa3
X24MHz
C3
33
C4
33
pd7
VCC
VCC
VCC
Gambar 2.6 Rangkaian Sistem Mimum Mikrokontroler ATMega8535
3. Rangkuman
1) Mikrokontroler adalah mikroprosesor plus atau mikrokuputer chip
tunggal di dalamnya mengandung unit mikroprosesor, memori, I/O,
ADC, Timer, Clock, dan lain-lain.
2) Beberapa tipe mikrokontrol antara lain Keluarga MCS-51 (Intel);
Keluarga AT89 (Atmel, arsitektur Intel 8051); Keluarga AT90, ATtiny,
34
ATMega ( Atmel, arsitektur AVR ); Keluarga MC68HC11 ( Motorola );
Keluarga PIC 8 ( Microchip ); Keluarga Z80 ( Zilog )
3) Mikrokontroler AVR memiliki arsitektur RISC 8 bit RISC (reduced
instruction set computing), dan sebagian besar instruksi dieksekusi dalam
1 (satu) siklus mesin.
4) MCS51 berteknologi CISC (complex instruction set computing), dimana
untuk melakukan eksekusi 1 perintah setidaknya dibutuhkan 12 siklus
mesin.
5) Tipe ATMega8535 (8 KB), ATMega16 (16KB), dan ATMega32 (32 KB)
memiliki susunan pin yang sama persis, namun memiliki perbedaan
memory.
6) Feature yang dimiliki oleh ATMega8535 antara lain: Saluran I/O
sebanyak 32 buah, yaitu Port A, Port B, Port C, Port D.; ADC 10 Bit
sebanyak 8 saluran; tiga buah Timer/counter dengan kemampuan
pembanding; CPU yang terdiri atas 32 register; wtachdog Timer dengan
osilator internal; sRAM sebesar 512 Bytes; memori flash sebesar 8 KB
dengan kemampuan Read While Write ; unit interupsi internal dan
eksternal; port antarmuka SPI; EEPROM sebeasar 512 Bytes yang dapat
diperogram saat operasi; antarmuka komparator analaog; port USART
untuk komunikasi serial dengan kecepatan maksimal 2,5 Mbps.
7) Tegangan kerja mikrokontrol ATMega8535 adalah max 5V dan minimal
2,5V untuk kondisi Powerdown, dan tiap pin tidak boleh terbebani arus
lebih dari 5mA pada VCC 5V dan 3mA pada VCC 3V.
8) Mikrokontrol ATMega8535 memiliki memory program (Flash Memory),
memory data (RAM & SRAM), dan memory EEPROM.
9) Sistem minimum dapat diartikan sebagai sebuah system paling sederhana
yang dalam hal ini dilihat dari sisi penggunaan hardware atau komponen
yang digunakan namun system dapat berjalan sebagaimana mestinya.
4. Latihan Soal
1) Jelaskan apa yang dimaksud dengan mikrokontrol !
2) Tuliskan keluarga mikrokontrol untuk jenis AVR !
3) Jelaskan perbedaan yang dimiliki oleh mikrokontrol tipe ATTiny,
ATmega16 dan ATMega8535 !
4) Apakah yang dimaksud dengan ISP pada mikrokontrol AVR !
35
5) Apakah yang dimaksud dengan memory flash dan berapakah ukuran
memory flash yang dimiliki oleh ATMega8535 ?
5. Tugas
Rancang dan cetak sebuah layout menjadi PCB system minimum
ATMega8535 untuk kemasan DIP, disertai soket ISP dan header untuk
masing-masing port.
6. Evaluasi
1) Uraikan arsitektur/teknologi yang dimiliki oleh mikrokontrol
ATMega8535!
2) Tuliskan feature-feature yang dimiliki oleh mikrokontrol ATMega8535!
3) Tuliskan kebilhan yang dimiliki oleh mikrokontrol ATMega8535
dibandingkan dengan mikrokontrol seri AT89C51/S51!
4) Tuliskan no pin yang dimiliki oleh PORT B dan PORT A pada
mikrokontrol ATMega8535!
5) Tuliskan jenis-jenis memori yang terdapat pada mikrokontrol
ATMega8535!
6) Gambarkan sistem minimum untuk mikrokontrol ATMega8535!
7) Jika terjadi kedaan interupsi bersaaan antara timer 0 & external request 0,
manakah yang akan dilaksanakan terlebih dahulu? jelaskan!
7. Kriteria Penilaian
KRITERIA SKOR BOBOT NILAI KETERANGAN
Kognitif Soal Nomor 1 15
Nilai >= 75Lulus
Kognitif Soal Nomor 2 20
Kognitif Soal Nomor 3 20
Kognitif Soal Nomor 4 5
Kognitif Soal Nomor 5 20
Kognitif Soal Nomor 6 20
NILAI AKHIR
36
1. Tujuan Kegiatan Belajar 3 :
Setelah mempelajari kegiatan belajar 3, diharapkan anda dapat :
Mengenal Bahasa C untuk pemrograman mikrokontroler Mengetahui kelebihan dan kekurangan bahasa C untuk pemrograman
mikrokontroler Mengenal struktur dasar bahasa C Mengetahui perintah dasar bahasa C untuk pemrograman mikrokontroler Mengetahui fungsi-fungsi dasar dalam bahasa C Dapat menggunakan bahasa C untuk pemrograman mikrokontroler AVR
2. Uraian Materi
1)Bahasa C untuk Pemrograman AVR
a. Sejarah Bahasa C
Bahasa C merupakan perkembangan dari bahasa BCPL
yang dikembangkan oleh Martin Richards pada tahun 1967. Selanjutnya
bahasa ini memberikan ide kepada Ken Thompson yang kemudian
mengembangkan bahasa yang disebut bahasa B pada tahun 1970.
Perkembangan selanjutnya dari bahasa B adalah bahasa C oleh Dennis
Ricthie sekitar tahun 1970-an di Bell Telephone Laboratories Inc.
(sekarang adalah AT&T Bell Laboratories).
Bahasa C pertama kali digunakan di computer Digital
Equipment Corporation PDP-11 yang menggunakan system operasi
UNIX. Hingga saat ini penggunaan bahasa C telah merata di
seluruh dunia. Hampir semua perguruan tinggi di dunia menjadikan
bahasa C sebagai salah satu mata kuliah wajib. Selain itu, banyak
bahasa pemrograman populer seperti PHP dan Java menggunakan
sintaks dasar yang mirip bahasa C. Oleh karena itu, kita juga sangat perlu
mempelajarinya.
b. Kelebihan dan Kekurangan Bahasa C
a) Kelebihan Bahasa C
Bahasa C tersedia hampir di semua jenis computer. Kode bahasa C sifatnya portable dan fleksibel untuk semua jenis PC. Bahasa C hanya menyediakan 32 kata kunci.
KEGIATAN BELAJAR 3
37
Proses executable program bahasa C lebih cepat. Dukungan pustaka yang banyak. C adalah bahasa yang terstruktur. Bahasa C termasuk bahasa tingkat menengah
b) Kekurangan Bahasa C
Unuk aplikasi mikrokontroler cukup banyak menghabiskan memory. Tidak mudah menyusun algoritma untuk efisiensi memori dalam
pemrograman mikrokontrol
c. Pengenal dalam bahasa C
Pengenal (identifier) merupakan nama yang didefinisikan oleh
program untuk menunjukan identitas dari sebuah konstanta,variabel,fungsi
dan label atau tipe data khusus.pemberian nama sebuah pengenal dapat
ditentukan bebas sesuai yang diinginkan program tetapi harus memenuhi
aturan berikut :
a) Karakter pertama tidak boleh menggunakan angka.
b) Karakter kedua dapat berupa huruf,angka,atau garis bawah.
c) Tidak boleh menggunakan spasi.
d) Bersifat case sensitif yaitu huruf kecil dan huruf besar dianggap berbeda.
Contoh penamaan yang diperbolehkan :
#define Nama2 PORTB.2
#define nama_saya
#define _saya_ok
Contoh penamaan yang tidak diperbolehkan :
2saya (tidak boleh diawali dengan angka)
Saya+2 (tidak boleh menggunakan operator ”+”)
Nama saya (tidak boleh menggunakan spasi)
d. Tipe Data
Tipe data merupakan bagian program yang paling penting karena
tipe data mempengaruhi setiap instruksi yang akan dilaksanakan oleh
computer. Misalnya saja 5 dibagi 2 bisa saja menghasilkan hasil yang
berbeda tergantung tipe datanya. Jika 5 dan 2 bertipe integer maka akan
menghasilkan nilai 2, namun jika keduanya bertipe float maka akan
38
menghasilkan nilai 2,5000000. Pemilihan tipe data yang tepat akan membuat
proses operasi data menjadi lebih efisien dan efektif.
Dalam bahasa C terdapat lima tipe data dasar, yaitu :
Tabel 3.1 Tipe Data
Jangkauan atau range dari sebuah tipe data akan berbeda jika diberikan
keterangan unsigned namun tetap memiliki jumlah yang sama, karena jika
tipe data tersebut diberikan cirri unsigned maka bilangan pada tipe data
tersebut tidak akan bisa mengeluarkan bilangan bertanda negative (-).
Contoh:
unsigned char memiliki range 0 – 255 (Jumlah bilangan 256)
unsigned int memiliki range 0 – 65535 (Jumlah biulangan 65536)
e. Konstanta Dan Variabel
1. Konstanta
Konstanta merupakan suatu nilai yang tidak dapat diubah selama proses
program berlangsung. Konstanta nilainya selalu tetap. Konstanta harus
didefinisikan terlebih dahulu di awal program. Konstanta dapat bernilai
integer, pecahan, karakter dan string.
2. Variable
Variabel adalah suatu pengenal (identifier) yang digunakan untuk
mewakili suatu nilai tertentu di dalam proses program. Berbeda dengan
konstanta yang nilainya selalu tetap, nilai dari suatu variable bisa diubah-
ubah sesuai kebutuhan. Nama dari suatu variable dapat ditentukan sendiri
f. Variabel Global Dan Variabel Local
Variabel global adalah variable yang dapat dikenali oleh semua
fungsi yang ada dalam program sadangkan variable local adalah variable
yang hanya dikenali oleh fungsi tertentu saja. Variable local hanya akan
39
dibentuk/dialokasikan dalam memori untuk variable tersebut akan
dibebaskan sehingga penggunaan variable tersebut akan dibebaskan
sehingga penggunaan variable local lebih mengguntungkan dari sisi
pemakaian memori.
Contoh deklarasi variable global (dideklarasikan diluar fungsi)
char data_a;
int data_b;
long data_c=13;
Contoh deklarasi variable local (dideklarasikan didalam fungsi)
void main (void){char data_a;int data_b;long data_c=13;}
g. Komentar Program
Komentar program hanya diperlukan untuk memudahkan
pembacaan dan pemahaman suatu program (untuk keperluan dokumentasi
program). Dengan kata lain, komentar program hanya merupakan keterangan
atau penjelasan program. Untuk memberikan komentar atau penjelasan
dalam bahasa C digunakan pembatas” /* dan */ ” atau menggunakan tanda”
// “ untuk komentar yang hanya terdiri dari satu baris. Komentar program
tidak akan ikut diproses dalam program (akan diabaikan).
Contoh :
// program PWM untuk mengatur kecepatan motor/*sedangkan yang ini adalah komentar yangdigunakan lebih dari satu baris*/
h. Pengarah Prosesor
Pengarah prosesor digunakan untuk mendefinisikan prosesor yang
digunakan, dalam hal ini adalah untuk mendefinisikan jenis mikrokontroler
yang digunakan.dengan pengarahan prosesor ini maka pendeklarasian
register-register dan penamaannya dilakukan pada file lain yang disisipkan
dalam program utama dengan sintaks sebagai berikut.
40
# include <nama_prosesor>
Contoh :
# include <mega 8535>
i. Pernyataan
Pernyataan adalah satu buah intruksi lengkap yang berdiri sendiri.
Berikut adalah contoh sebuah pernyataan :
PORTC = 0x0F:
Pernyataan diatas merupakan sebuah interuksi untuk mengeluarkan data
0x0F ke Port C
j. Operator Aritmatika
Bahasa C menyediakan lima operator aritmatika, yaitu :
Tabel 3.2 Operator Aritmatika
OPERATOR KETERANGAN* Operator untuk operasi penjumlahan/ Operator untuk operasi pembagian+ Operator untuk operasi penambahan- Operator untuk operasi pengurangan% Operator untuk operasi sisa pembagian (modulus)
Catatan : operator % digunakan untuk mencari sisa pembagian antara duabilangan.Misalnya :9 % 2 = 19 % 3 = 0
k. Operator Pembanding
Operator Hubungan digunakan untuk membandingkan hubungan
antara dua buah operand (sebuah nilai / variable). Operator hubungan dalam
bahasa C
Tabel 3.3 Operator Pembanding
41
l. Operator Logika
Jika operator hubungan membandingkan hubungan antara dua buah
operand, maka operator logika digunakan untuk membandingkan logika
hasil dari operator-operator hubungan. Operator logika ada tiga macam,
yaitu :
Tabel 3.4 Operator Logika
OPERATOR KETERANGAN
&& Operator untuk logika AND
|| Operator untuk logika OR
! Operator untuk logika NOT
Contoh.
if (( a == b ) && (c ! = d )) PORTC = 0XFF;
Pernyataan diatas terdiri dari dua kondisi yaitu a==b dan c!=d yang
keduanya dihubungkan dengan logika &&(AND). Jika logika yang
dihasilkan benar maka perintah PORTC = 0xFF akan dikerjakan dan jika
salah maka tidak dikerjakan.
m. Operator Bitwise
Operator bitwise adalah operasi logiika yang berkerja pada level
bit.hal ini berbeda dengan operator logika diatas dimana pada operator
logika menghasilkan benar atau salah (Boolean) sedangkan operator bit
menghasilkan data biner.
Tabel 3.5 Operator Bit wise
OPERATOR KETERANGAN
>> Pergeseran bit kekanan
& Bitwise AND
^ Bitwise XOR (exclusive OR)
| Bitwise OR
~ Bitwise NOT
42
n. Operator Penugasan
Operator Penugasan (Assignment operator) dalam bahasa C berupa
tanda sama dengan (“=”).
Contoh :
nilai = 80;
A = x * y;
Artinya :
variable “nilai” diisi dengan 80 dan variable “A” diisi dengan hasil perkalian
antara x dan y.
o. Operator Unary
Operator Unary merupakan operator yang hanya membutuhkan satu
operand saja. Dalam bahasa C terdapat beberapa operator unary, yaitu :
Tabel 3.6 Operator Unary
Catatan Penting ! :
Operator peningkatan ++ dan penurunan -- jika diletakkan sebelum atau
sesudah operand terdapat perbedaan.
p. Fungsi pustaka
Bahasa C mempunyai fungsi pustaka yang berada pada file-file
tertentu dan sengaja disediakan untuk menangani berbagai hal dengan cara
memanggil fungsi-fungsi yang telah dideklarasikan didalam file tersebut.
Dalam banyak hal, pustaka,pustaka yang tersedia tidak berbentuk kode
sumber melainkan dalam bentuk yang telah dikompilasi. Pada saat proses
lingking,ditulis oleh pemrogram. Sintaks untuk menggunakan fungsi pustaka
ini adalah sebagai berikut :
43
#include <nama_file_pustaka>
Contoh :
#include <lcd.h>
Beberapa fungsi yang telah disediakan oleh codevisian AVR antara lain
adalah :
• Fungsi tipe karakter (ctype.h)
• Fungsi standar I/O (stdio.h)
• Fungsi matematika (math.h)
• Fungsi string (string.h)
• Fungsi konversi BCD (bcd.h)
• Fungsi konversi akses memori (mem.h)
• Fungsi tunda (delay.h)
• Fungsi LCD (lcd.h)
• Fungsi I2C (I2C.H)
• Fungsi SPI (spi.h)
• Fungsi real time clock (RTC) (ds1302.h,ds1307.h)
• Fungsi sensor suhu LM75,DS1621 dll. (lm75.h, ds1621.h)
q. Struktur kondisi “if….”
Struktur if dibentuk dari pernyataan if dan sering digunakan untuk
menyeleksi suatu kondisi tunggal. Bila proses yang diseleksi terpenuhi atau
bernilai benar, maka pernyataan yang ada di dalam blok if akan diproses dan
dikerjakan. Bentuk umum struktur kondisi if adalah :
If (kondisi){// blok pernyataan yang akan dikerjakan// jika kondisi if terpenuhi}
Contoh :
if (PINA>0x80){dataku = PINA;PORTC=0xFF;}
44
Pernyataan if diatas akan mengecek apakah data yang terbaca pada port A
(PINA) nilainya lebih besar dari 0x80 atau tidak, jika ya maka variable
dataku diisi dengan nilai PINA dan data 0xFF dikeluarkan ke port C.
Apabila dalam blok pernyataan hanya terdapat satu pernyataan saja maka
tanda { dan } dapat dihilangkan seperti contoh berikut :
if (PINA>0x80) PORTC=0xFF;
r. struktur kondisi “if......else….”
Dalam struktur kondisi if....else minimal terdapat dua pernyataan.
Jika kondisi yang diperiksa bernilai benar atau terpenuhi maka pernyataan
pertama yang dilaksanakan dan jika kondisi yang diperiksa bernilai salah
maka pernyataan yang kedua yang dilaksanakan. Bentuk umumnya adalah
sebagai berikut :
if(kondisi)pernyataan-1elsepernyataan-2
Contoh Program :if (kondisi){// blok pernyataan yang akan dikerjakan// jika kondisi if terpenuhi}else}// blok pernyataan lain yang akan dikerjakan// jika kondisi if terpenuhi}
Contoh :
if (pina>0x80){dataku = pina;portc = 0xff;}else{dataku = ~pina;portc=0x00;}
45
Pernyataan if .. else akan mengecek apakah data yang terbaca pada Port A
(PINA) nilainya lebih dari 0x80 atau tidak, jika ya maka variabel dataku diisi
dengan nilai PINA dan data 0xFF dikeluarkan ke port C tetapi jika tidak
variabel dataku diisi dengan nilai komplemen dari PINA (~PINA) dan data
0x00 dikeluarkan ke port C.
s. Pernyataan If Bersarang
Pernyataan if bersarang (nested if) adalah pernyataan if maupun
if .. else dimana didalam blok pernyataan yang akan dikerjakan terdapat
pernyataan if atau if else lagi.contoh bentuk pernyataan if bersarang 2
tingkat adalah sebagai berikut :
if (kondisi_1){
if (kondisi_2){
// blok pernyataan_1 yang akan dikerjakan// jika kondisi_1 dan kondisi_2 terpenuhi
}}else
{if (kondisi_3)
{// blok pernyataan_2 yang akan dikerjakan// jika kondisi_1 dan kondisi_3 terpenuhi
}}
t. Pernyataan Switch
Pernyatan switch digunakan untuk melakukan pengambilan
keputusan terhadap banyak kemungkinan. Bentuk pernyataan switch adalah
sebagai berikut :
switch (ekspresi){case nilai_1 : pernyataan_1;break;case nilai_2 : pernyataan_2;break;case nilai_3 : pernyataan_3;break;.................default : pernyataan_default;break;}
Pada pernyataan switch, masing-masing pernyataan (pernyataan_1 sampai
dengan pernyataan_default)dapat berupa satu atau beberapa perintah dan
tidak perlu berupa blok pernyataan.pernyataan_1 akan dikerjakan jika
46
eksperesi bernilai sama dengan nilai_1. pernyataan_2 akan dikerjakan jika
eksperesi bernilai sama dengan nilai_2. pernyataan_3 akan dikerjakan jika
eksperesi bernilai sama dengan nilai_3 dan seterusnya. Default bersifat
opsional artinya boleh ada boleh tidak.
Contoh :
switch (ekspresi){case 0xFE : PORTD=0x00;break;case 0xFD : PORTC=0xFF;break;
}
Pernyataan diatas berarti membaca port A,kemudian datanya (PINA) akan
dicocokan dengan nilai case. Jika PINA bernilai 0xFE Maka data 0x00 akan
dikeluarkan ke PORTC kemudian program keluar dari blok pernyataan
switch tetapi jika PINA bernilai 0xFD Maka data 0xFF Akan dikeluarkan ke
port C kemudian program keluar dari pernyataan switch.
u. Pernyataan While
Pernyataan while digunakan untuk pengulangan sebuah pernyataan atau blok
pernyataan secara terus menerus selama kondisi tertentu masih terpenuhi.
Bentuk pernyataan while adalah sebagai berikut :
while (kondisi){
//sebuah pernyataan atau blok pernyataan}
Jika pernyataan yang akan diulang hanya berupa sebuah pernyataan saja
maka tanda { dan } bisa dihilangkan.
Contoh :
Unsigned char a=0;................While (a<10){PORTC=a;a++;
}
Pernyataan diatas akan mengeluarkan data a ke port C secara berulang-
ulang. Setiap pengulangan nilai a mencapai 10 maka pengulangan selesai.
47
v. Pernyataan For
Pernyataan for digunakan untuk melakukan pengulangan sebuah pernyataan
atau blok pernyataan, tetapi berapa kali jumlah pengulangan dapat
ditentukan secara lebih spesifik. Bentuk pernyataan for adalah sebagai
berikut :
for (nilai_awal ; kondisi ; perubahan){//sebuah blok pernyataan atau blok pernyataan}
Nilai_awal adalah nilai inisialisasi awal sebuah variable yang didefinisikan
terlebih dahulu untuk menentukan niali variable pertama kali sebelum
pengulangan.
Kondisi merupakan pernyataan pengetesan untuk mengontrol pengulangan,
jika pernyataan kondisi terpenuhi (benar) maka blok pernyataan akan
diulang terus sampai pernyataan kondisi tidak terpenuhi (salah).
Perubahan adalah pernyataan yang digunakan untuk melekukan perubahan
nilai variable baik naik maupun turun setiap kali pengulangan dilakukan.
Contoh :
unsigned int a;
for (a=1,a<10,a++){PORTC=a;
}
Pertama kali nilai a adalah 1, kemudian data a dikeluarkan ke port C.
selanjutnya data a dinaikan (a++) jika kondisi a<10 masih terpenuhi maka
data a akan terus dikeluarkan ke PORTC.
w. Bentuk Dasar Program C
Sebuah program dalam bahasa C seharusnya memiliki sebuah fungsi. Fungsi
dasar ini disebut dengan fungsi utama (fungsi main) dan memiliki kerangka
program sebagai berikut:
void main (void)
{
//pernyataan_pernyataan
}
48
Jika kita memiliki beberapa fungsi yang lain maka fungsi utama inilah yang
memiliki kedudukan paling tinggi dibandingkan fungsi-fungsi yang lain
sehingga setiap kali program dijalankan akan selalu dimulai dengan
memanggil fungsi utama terlebih dahulu.fungsi-fungsi yang lain dapat
dipanggil setelah fungsi utama dijalankan melalui pernyataan-pernyataan
yang berada didalam fungsi utama.
Contoh :
//prototype fungsi inisialisasi portvoid inisialisasi_port (char A, char B, char C, char D);//definisi fungsi inisialisasi portvoid inisialisasi_port (char A, char B, char C, char D);{DDRA=A;DDRB=BDDRC=CDDRD=D
}//fungsi utamaVoid main (void)
{inisialisasi_port (0xFF, 0xF0, 0x0F, 0x00);
2)Tool Pendukung
Yang dimaksud dengan tool pendukun adalah tool atau alat yang
diperlukan/ digunakan dalam proses merancang sistem mikrokontroler,
khususnya yang berupa software yaitu software kompiler dan software
downloader/ programer. Sebenarnya penggunaan software kompiler dan
downloader ini terdapat banyak macam dan variasinya sehingga tidak mutlak
harus sama dengan yang ada dalam modul ini, namun untuk memudahkan anda
dalam belajar dan memahami pembahasan-pembahasan dalam buku ini maka
penulis menyarankan agar anda menggunakan tool yang sama seperti yang
penulis gunakan.
a. CodevisionAVR
CodeVisionAVR merupakan salah satu software kompiler yang
khusus digunaan untuk mikrokontroler keluarga AVR. Salah satu
kelebihan dari software CodeVisionAVR adalah tersedianya fasilitas
untuk mendownload program ke mikrokontroler yang telah terintegrasi
sehingga dengan demikian CodeVisionAVR ini selain dapat berfungsi
sebagai software kompiler juga dapat berfungsi sebagai software
49
programer/downloader. Adapun menu-menu dalam Code Vision AVR
adalah sebagai berikut:
1. Menu File
Gambar 3.1 Menu File
Keterangan:
a) New, untuk memulai program barub) Open, untuk mengambil atau membuka programc) Save, untuk menyimpan file/programd) Save as, untuk menyimpan file/programe) Save all, untuk menyimpan seluruh file/program yang berada dalam
project sekaligusf) Close, untuk menutup programg) Close Project, untuk menutup prject beserta seluruh file-filre
program di dalamnyah) Convert to library, mengkonversi file program (*.c) menjadi sebuah
file pustaka/library (*.lib)i) Print, untuk mencetak programj) Page Setup, untuk mengatur settinga halaman dan printerk) Exit, untuk keluar dari Code Vision AVR
2. Menu Edit
Gambar 3.2 Menu Edit
50
Keterangan:
a) Undo, untuk membatalkan pengeditan terakhirb) Redo, untuk kembali ke pengeditan terakhir yang telah di undoc) Cut, untuk memotong bagian tertentu dari programd) Copy, untuk menduplikasi bagian programe) Paste, menampilkan file yang telah di copyf) Delete, untuk menghapus bagian tertentu dari programg) Select All , digunakan untuk me milih se mua teksh) Print Selection , digunakan untuk mengatur print eri) Indent Block , digunakan untuk membuat satu blok teks geser ke
kanan (masuk ke dalam)j) Unindent Block , digunakan untuk membuat satu blok teks geser ke
kirik) Find, Find Next dan Find In Files , merupakan fasilitas untuk
mencari kata atau filel) Replace , digunakan untuk menukar sebuah kata dengan kata lain
3. Menu Project
Gambar 3.3 Menu Project
Keterangan:
a) Check Syntax, digunakan untuk melakukan pengecekan adatidaknya kesalahan program
b) Compile, digunaan untuk mengkompile program. Proseskompile ini hanya menghasilkan file asembler saja (*.asm)
c) Make, digunakan untuk mengkompile sekaligus menghasilkan kodemesin program. Proses make ini menghasilkan beberapa file antaralain file *.asm, *.list, *.obj, *.hex, *.rom dan *.eep.
d) Stop Compilation, digunakan untuk menghentikan proses kompilee) Notes, digunakan untuk memberikan catatan pada projectf) Configures, digunakan untuk mengatur projectg) Files, untuk menambahkan file-file program ke dalam project atau
menghapus file-file program dari projectC Compiler, digunakanuntuk mengatur kompiler
h) Code Generation, digunakan untuk menentukan spesifikasidan fitur yang dimiliki oleh mikrokontroler
51
i) Messages, digunakan untuk mengatur tampil tidaknya beberapapesan peringatan
j) Globally #define, digunakan untuk mendeklarasikan pengenal globalk) Paths, digunakan untuk menentukan direktori-direktori file
program (*.c), file header (*.h) dan file pustaka (*.lib) yangdibutukan dalam project
l) After Make, digunakan untuk mengatur proses yang akandilakukan setelah make
4. Menu Tools
Gambar 3.4 Menu Tools
Keterangan:
a) Code Wizard AVR, digunakan untuk membangkitkan kode programsecara otomatis
b) Debbuger , digunakan untuk pengecekan listing program dalamassembler. Program ini hanya bisa dijalankan jika kita sudahmendefinisikan terlebih dahulu program debbuger besertaletak direktorinya melalui menu setting debbuger
c) Chip Programer, digunakan untuk mendownload programyang telah dikompile ke dalam mikrokontroler denganmenggunakan hardware tertentu yang telah didefinisikan olehCde Vision AVR
d) Terminal, digunakan untuk membuka terminal komunikasi serialUSART
e) Configure, digunakan untuk menambahkan atau menghapusprogram aplikasi lain kedalam menu tools. Contoh Andamenambahkan menu notpad dengan cara : tools → configure→ add → [direktori notpad]
5. Menu Setting
Gambar 3.5 Menu Setting
52
Keterangan:
a) General, digunakan untuk pengaturan secara umum. Melalui menuini Anda dapat memilih tampil atau tidaknya toolbar, navigator,pesan dan informasi
b) Editor, digunakan untuk pengaturan editor program. Kita dapatmenentukan warna-warna text yang berbeda untuk membantumempermudah dalam mengecek kesalahan penulisan program
c) Assembler, digunakan untuk menentukan apakah file *.asm atau*.lst yang akan terbuka secara otomatis pada saat terjadi error padasaat kompile
d) Debbuger, untuk mengecek kesalahan-kesalahan program dalamassembler dengan menggunakan software kompiler lain sepertimisalnya AVRStudio
e) Programmer, digunakan untuk menentukan jenis hardwareyang digunakan apabila proses download program kemikrokontroler dilakukan oleh CVAVR
f) Terminal, digunakan untuk mengstur mode format data terminalkomunikasi serail UART pada CVAVR antara lain port yangdigunakan, lebar data, bit stop, paritas dan lain-lain.
b. Codevision AVR Chip Programer
Salah satu kelebihan dari codevision AVR adalah tersedianya fasilitas
untuk mendownload program ke mikrokontroler yang telah terintegrasi
sehingga dengan demikian codevision AVR ini selain dapat berfungsi
sebagai software kompiler juga dapat berfungsi sebagai software programer /
downloader. Jadi kita dapat melakukan proses download program yang telah
di kompile dengan menggunakan software code vision AVR juga.
3. Rangkuman
1) Pogram yang dimasukan kedalam mikrokontroler adalah merupakan bahasa
mesin (hexa).
2) Bahasa terdekat dari bahasa mesin adalah assembler.
3) Digit 0 berarti tidak ada tegangan (sebenarnya ada, namun kecil, berkisar antara 0
– 0,7 Volt), sedangkan digit 1 berarti ada tegangan (3,5 Volt – 5 Volt untuk
level tegangan TTL dan 3,5 Volt – 15 Volt untuk level tegangn CMOS).
4) Pemrograman dalam bahasa assembler untuk seri MCS dapat dikelompokan
menjadi lima, yaitu: operasi aritmatika; operasi logical; operasi transfer data;
operasai manipulasi Boolean variable; operasi percabangan (program
branching).
53
5) Jika mikrokontroler seri MCS menggunakan kristal 12MHz, maka waktu yang
diperlukan untuk satu siklus mesin adalah 1/12MHz = 1 mikro detik.
6) Bahasa C merupakn bahasa pemrograman tingkat menengah.
7) Dalam bahasa C selalu terdapat fungsi utama, setiap fungsi selalu diawali dengan
tanda { dan diakhiri dengan tanda }.
8) Setiap akhir perintah dalam bahasa C selalu diakhiri dengan tanda titik koma (;).
9) Untuk deklarasi penamaan sebuah variable dalam bahasa C tidak boleh
menggunakan spasi dan angka, serta dianjurkan menggunakan huruf kecil.
10)Tipe data char dan integer digunakan untuk bilangan bulat, sementara float dan
double untuk bilangan pecahan.
11)Unsigned digunakn untuk range bilangan tanpa tanda negative ( - ).
12)Variable dapat brubah selama program berlangsung dan konstanta tidak.
13)Variable global dideklarasikan diawal program dan dapat digunakan pada seluruh
fungsi, variable lokal dideklarasikan didalam fungsi dan hanya dapat digunakan
untuk fungsi itu saja.
14)Tanda // digunakan untuk komentar atau mematikan program sebanyak satu
baris.
15)Tanda /*…………………..*/ digunakan untuk komentar atau mematikan
program lebih dari satu baris.
16)Pustaka merupakan kerangka, program atau fungsi tertentu yang telah dibuat
sebelumnya atau sudah ada dan dapat langsung digunakan, tinggal disertakan
saja file nya dalam deklarasi #include <nama pustaka>.
17)Fungsi IF dan IF…ELSE…. dapat digunakan untuk mengeksekusi perintah atau
program dengan satu hingga tiga kemungkina (syarat atau ketentuan tertentu).
18)Fungsi Switch case dapat digunakan untuk melakukan pengambilan keputusan
terhadap banyak kemungkinan (lebih dari tiga kemungkinan atau ketentuan).
19)Pernyataan while digunakan untuk pengulangan sebuah pernyataan atau blok
pernyataan secara terus menerus selama kondisi tertentu masih terpenuhi.
20)Pernyataan for digunakan untuk melakukan pengulangan sebuah pernyataan atau
blok pernyataan, tetapi berapa kali jumlah pengulangan dapat ditentukan secara
lebih spesifik.
54
4. Latihan Soal
1) Uraikan kelebihan dan kekurangan assembler untuk aplikasi pemrograman
mikrokontroler!
2) Uraikan kelebihan dan kekurangan bahasa C untuk aplikasi pemrograman
mikrokontroler!
3) Tuliskan 10 perintah dalam bahasa assembler dan uraikan maksudnya!
4) Tuliskan 4 keyword dalam bahasa C dan uraikan maksudnya!
5) Uraikan macam-macam sistem operator !
5. Tugas
Buatlah resume berdasarkan artikel yang anda peroleh dari media online atau buku
teks tentang pemrograman mikrokontrol menggunakan bahasa basic/assembler !
6. Evaluasi
1) Jelaskan:
a. Perintah/keyword operasi percabangan dalam bahasa C!
b. Minimal 3 operator untuk aritmatika, logika & pembanding dalam bahasa C!
2) Tuliskan range untuk tipe data char, unsigned char dan integer!
3) Uraikan minimal 3 macam interupsi yang anda ketahui dalam sistem
mikrokontrol ATMega8535
55
1. Tujuan Kegiatan Belajar 4 :
Setelah mempelajari kegiatan belajar 4, diharapkan anda dapat :
Mengetahui pengaturan register input dan output pada mikrokontrol AVR Memahami perintah dasar Input dan Output Memahami pemrograman I/O mikrokontroler AVR secara byte Memahami pemrograman I/O mikrokontroler AVR secara bit Dapat menggunakan pustaka delay Dapat menggunakan program kompilator bahasa C Membuat program sederhana dalam bahasa C untuk mikrokontroler AVR Melakukan pemrograman mikrokontroler AVR
2. Uraian Materi
1)Dasar Input Dan Output
Mikrokontroler ATmega8535 mempunyai susunan kaki standard 40 pin DIP
dengan spesifikasi seperti gambar dibawah ini :
Gambar 4.1 Susunan Kaki IC ATmega 8535
Terlihat pada gambar diatas tedapat empat buah PORT yaitu PORTA (PA),
PORTB (PB), PORTC (PC), dan PORTD (PD). Keempat PORT tersebut
merupakan jalur Bidirectional yang semuanya dapat diprogram sebagai input
maupun output dengan pilihan internal Pull-up.
Tiap PORT mempunyai tiga buah register bit, yaitu DDxn, PORTxn dan PINxn.
Huruf x mewakili nama bit. Bit DDxn terdapat pada I/O addres DDRx, bit
PORTxn terdapat pada I/O addres PORTxn dan bit PINxn terdapat pada I/O
addres PINx.
KEGIATAN BELAJAR 4
56
PORT I/O mikrokontroler dapat dikonfigurasikan sebagai input maupun output,
dengan mengubah isi I/O Register Data Directional. Bit DDxn dalam register
DDRX (Data Direction Register) menentukan arah PIN.
Tabel 4.1 setting DDR dan PORT
DDR jika bit = 1 DDR jika bit = 0
PORT jika bit = 1 Output ; High Input ; R pull-up
PORT jika bit = 0 Output ; low Input ; Floating
Misalkan, jika ingin Port C dikonfigurasi sebagai Output, maka Data Direction
Register port C (DDRC) harus diset sebagai 0XFFh (atau sama dengan 255
desimal atau 11111111 biner). Jika sebagai Input maka 0x00h (sama dengan 0).
Tegangan keluaran pada PIN I/O mikrokontroler ketika logika “1” besarnya
sekitar 4,2 dan arusnya sebesar 20 mA. Port I/O sebagai output hanya
memberikan arus (sourching) sebesar 20 mA, keluaran dari satu PORT
mikrokontroler hanya dapat mengemudikan perangkat output dengan arus kecil,
sehingga untuk peralatan elektronik yang membutuhkan arus yang besar
misalnya untuk menggerakan motor perlu ditambahkan driver tambahan oleh
karena itu perlu ditambahkan rangkaian penguat atau transistor.
a. Perintah Input dan Output secara Byte
Terdapat dua perintah dasar yang harus dapat dibedakan dalam menentukan
sebuah PORT berlaku sebagai input atau output dalam mikrokontroler AVR
yaitu:
a) OUTPUT
PORTX=data;
Yaitu untuk mengirim data secara byte ke portX (X= A,B,C,D).perintah
ini sama dengan out dalam bahasa assembly ATmega 8535.
b) INPUT
data_in=PINX;
yaitu mengambil data Byte dari PINX(X= A,B,C,D).yang kemudian
disimpan ke variabel data_in. Perintah ini sama dengan in dalam bahasa
assembly ATmega 8535.
57
b. Perintah Input dan Output secara Bit
Perintah input dan output pada AT mega 8535 juga bisa dilakukan per bit
dengan cara :
a) Output
PORTX.bitn=data;
Yaitu untuk mengirim data bit (0 atau 1) ke portX (X=A,B,C,D) Bit ke n.
Perintah ini setara dengan sbi dalam bahasa assembly.
Contoh:
..........PORTB.3=1;..........Artinya adalah bit 3 PORTB diberi nilai 1.
b) Input
data_in=PINX.bitn;
Yaitu mengambil data bit dari PINX(X=A,B,C,D) bit ke n yang
kemudian disimpan ke variable data_in. Perintah ini setara dengan cbi
dalam bahasa assembly.
Contoh
............data_n=PORTB.3;............Artinya adalah ATmega 8535 mengambil data bit ke 3. Nilai dari
perintah ini hanya 0 atau 1.
2)Penggunaan Pustaka Delay (Tunda)
Tunda atau delay akan sering kita gunakan. contoh saat memutar
motor stepper, pemberian bit ke motor stepper harus di tunda karena bila tidak
diberi waktu tunda maka motor tidak akan dapat berputar. Ada dua cara
memberikan penundaan, yaitu tunda yang kita buat sendiri dengan
menggunakan timer atau program tertentu dan penundaan yang disediakan oleh
code vision AVR melalui pustaka delay. namun untuk memudahkan dalam
pembelajaran hanya pustaka delay yang dipelajari dalam modul ini.
Jika kita menggunkan program tunda atau fungsi pustaka delay
bawaan, maka pada deklarasi awal pustaka delay harus disertakan dengan cara
menuliskan #include <delay.h> pada awal menulis proram sebelum fungsi
utama. Berikut adalah perintah-perintah yang ada dan dapat digunakan pada
pustaka delay.
58
Instruksi-Instruksi Dipustaka delay
Instruksi tunda bisa dijelaskan sebagai berikut :
delay_us (unsigned int n)
menghasilkan tundaan selama n mikrodetik, n harus merupakan suatu konstanta.
Contoh:
delay_us(100) //memberikan delay 100 mikro detik
delay_ms (unsigned int n)
menghasilkan tundaan selama milidetik.
Contoh:
delay_ms(100) //memberikan delay 100 mili detik
Dengan menggunakan fungsi ini secara otomatis akan mereset kondisi timer
wachdog setiap 1 mili second dengan membangkitkan instruksi wdr.
Catatan penting :
Ada dua instruksi tambahan yang harus disertakan pada saat memanggil fungsi
tunda, yaitu :
#asm {”cli”)#asm (”sei”)
Instruksi pertama berfungsi untuk menonaktifkan semua interupsi dan interuksi
kedua untuk mengaktifkan semua interupsi. Jika hal ini tidak dilakukan maka
penundaan akan menjadi lebih lama dari yang diharapkan.
Lembar Kerja I
Alat dan Bahan
1. ................................................................................... Trainer
Mirkorontroler AVR ATMega8535/16/32 ........................................ 1 Unit
2. ................................................................................... ISP
Downloader ...................................................................................... 1 Unit
3. ................................................................................... Kompute
r.......................................................................................................... 1 Unit
4. ................................................................................... Software
pendukung (Codevision AVR & Proteus)......................................... 1 Lot
Keselamatan Kerja
59
1. Gunakan alas kaki (sandal karet) saat mengoperasikan komputer
2. Hindari memasang konektor downloader secara terbalik
3. Letakan peralatan ditempat yang aman dan mudah diamati
4. Operasikan Trainer mikrokontroler sesuai tegangan kerjanya
5. Operasikan komputer sesuai peruntukannya sesuai dengan prosedur
6. Matikan komputer sesuai dengan prosedur yang benar
Percobaan I
Judul : Dasar Input Output dan Penggunaan Kompilator
Langkah Kerja:
1. Rangkaikan LED seperti pada gambar dibawah ini
(skema sama seperti pada trainer)
PB2(INT2/AIN0)3
XTAL212
XTAL113
PB1(T1)2
PD2(INT0)16
PD3(INT1)17
PD4(OC1B)18
PD5(OC1A)19
GND11 VCC10
PB7[SCK)8 PB6[MISO)7 PB5(MOSI)6 PA4(ADC4)
36
PA5(ADC5)35
PA6(ADC6)34
PA7(ADC7)33
AREF32
PA3(ADC3)37
PB0(XCK/T0)1
PB3(OC0/AIN1)4
PB4(SS)5
RESET9
PD0(RXD)14
PD1(TXD)15
PD6(ICP)20
PD7(OC2)21
PA0(ADC0)40
PA1(ADC1)39
PA2(ADC2)38
AGND31
AVCC30
PC7(TOSC2)29
PC6(TOSC1)28
PC527
PC426
PC325
PC224
PC1(SDA)23
PC0(SCL)22
IC1
ATMEGA8535-DIL40
X1
C1
C2
R1
VCC
VCC
12
1212
12
1212
1212
1 21 21 21 21 21 21 21 2
Gambar 4.2 Diagram skematik Percobaan I
2. Buka program CodevisionAVR, klik menu FILE NEW Project
YES hingga muncul tampilan berikut
60
Gambar 4.3 Pengaturan Chip
3. Pilih ATmega 8535 (atau sesuai tipe yang digunakan) untuk chipnya dan
setting cloknya 11.059200 (atau sesuai dengan X-tall yang digunakan)
Gambar 4.2 Pengaturan register Input dan output
4. Atur untuk bagian PORT, pilih PORT A, Atur atur sebagai INPUT dan
rubah Value menjadi P (Pullup)
5. Atur Port B dan setting sebagai output dan value low (lihat gambar)
6. Klik File Generate,Save and Exit
7. Ikuti petunjuk penyimpanan file. Bila perlu ganti folder penyimpanannya.
8. Simpan dengan nama project_pertama.c, project_pertama.prj dan
project_pertama.cwp. pada folder kelas dan nama anda masing-masing
9. Selanjutnya akan tampak layar dengan kerangka program, seperti terlihat
pada gambar halaman berikut ini:
61
Keterangan versiprogram danidentitas
Fungsi Pustaka
Awal Fungsi Utama
InisialisasiInput danOutput
62
Gambar 4.3 Bagan Program
InisialisasiTimer
InisialisasiTimer
InisialisasiInterupt
InisialisasiAnalogKomparator
Fungsi pengulangantak berhingga
63
10. Proses seting selesai dan setting I/O untuk PORT A sebagi Input terpullup
dan PORT B adalah sebagai output dengan kondisi Low.
11. Tambah kode berikut:
Void main (void){//declare your local variabel hereUnsigned char data; // lokal variabel..........Tambahkan intruksi sehingga tampak seperti berikut :
............while (1)
{// Place your code heredata = PINA; //tambahkan interuksi iniPORTB = data;};}
12. Untuk proses mendownload bisa langsung kita lakukan dengan memilih
menu project make atau dengan mengklik icon namun sebelum itu
kita harus menyettingnya terlebih dahulu dengan memilih menu Project
Configure Aftermake Kemudian Klik Program The Chip OK, jika
trainer sudah aktif, downloader terpasang dengan benar, maka akan muncul
tampilan seperti berikut:
Gambar 4.4 Proses Download
13. Jika terjadi error, tuliskan maksud dari pesan error tersebut dan sertakan
solusinya
14. Tekan Tombol secara perlahan dan acak satu persatu, perhatikan LED dan
amati catat apa yang terjadi, pada Tabel berikut.
NO SAKLAR LED REAKSI LED1 PINA.0 PORTB.02 PINA.1 PORTB.13 PINA.2 PORTB.24 PINA.3 PORTB.35 PINA.4 PORTB.46 PINA.5 PORTB.57 PINA.6 PORTB.68 PINA.7 PORTB.7
15. Tuliskan Analisa program, Analisa error dan kesimpulan percobaan I pada
kolom berikut:
64
Analisa:
Kesimpulan:
65
Percobaan 2
Judul: Pemrograman PORT Secara byte dan bit
Langkah Kerja:
1. Rangkaikan LED seperti pada gambar dibawah ini (skema sama seperti pada
trainer)
PB2(INT2/AIN0)3
XTAL212
XTAL113
PB1(T1)2
PD2(INT0)16
PD3(INT1)17
PD4(OC1B)18
PD5(OC1A)19
GND11 VCC10
PB7[SCK)8 PB6[MISO)7 PB5(MOSI)6 PA4(ADC4)
36
PA5(ADC5)35
PA6(ADC6)34
PA7(ADC7)33
AREF32
PA3(ADC3)37
PB0(XCK/T0)1
PB3(OC0/AIN1)4
PB4(SS)5
RESET9
PD0(RXD)14
PD1(TXD)15
PD6(ICP)20
PD7(OC2)21
PA0(ADC0)40
PA1(ADC1)39
PA2(ADC2)38
AGND31
AVCC30
PC7(TOSC2)29
PC6(TOSC1)28
PC527
PC426
PC325
PC224
PC1(SDA)23
PC0(SCL)22
IC1
ATMEGA8535-DIL40
X1
C1
C2
R1
VCC
VCC
12
1212
12
1212
1212
1 21 21 21 21 21 21 21 2
Gambar 4.5 Diagram skematik latihan I
2. Buka program CodevisionAVR, klik menu FILE NEW Project YES
hingga muncul tampilan berikut
Gambar 4.6 Pengaturan Chip
3. Pilih ATmega 8535 (atau sesuai tipe yang digunakan) untuk chipnya dan setting
cloknya 11.059200 (atau sesuai dengan X-tall yang digunakan)
Gambar 4.7 Pengaturan Register Input dan Output
66
4. Atur untuk bagian PORT, pilih PORT A, Atur atur sebagai INPUT dan rubah
Value menjadi P (Pullup)
5. Atur Port B dan setting sebagai output dan value low (lihat gambar)
6. Klik File Generate,Save and Exit
7. Ikuti petunjuk penyimpanan file. Bila perlu ganti folder penyimpanannya.
8. Simpan dengan nama project_2.c, project_2.prj dan project_2.cwp. pada folder
kelas dan nama anda masing-masing
9. Tambahkan pustaka tunda dibagian header:
#include <mega8535.h> // blok header#include <delay.h> // tambahkan library delaydisini....................................Tambahkan interuksi berikut :void main(void){..........// Place your code here#asm {”cli”)
PORTB=0xFF;delay_ms(500); // memanggil delay dari librari
delay.PORTB=0XF0;delay_ms(500);
#asm(”sei”)};
}
10. Amati dan tuliskan apa yang terjadi pada led, pada kolom berikut
11. Buat project baru dengan nama project_3, dengan rangkaian, langkah kerja dan
inisialisasi sama seperti pada langkah 1-8.
Reaksi LED langkah 9:
67
12. Tambahkah kode berikut, kemudian kompilasi dan download
#include <mega8535.h>#include <delay.h>....................while (1)
{// Place your code herePORTB=0b01111111;delay_ms(200);PORTB=0b10111111;delay_ms(200);PORTB=0b11011111;delay_ms(200);PORTB=0b11101111;delay_ms(200);PORTB=0b11110111;delay_ms(200);PORTB=0b11111011;delay_ms(200);PORTB=0b11111101;delay_ms(200);PORTB=0b11111110;delay_ms(200);};
}13. Amati dan tuliskan apa yang terjadi pada led, pada kolom berikut
14. Buat project baru dengan nama project_4, dengan rangkaian, langkah kerja dan
inisialisasi sama seperti pada langkah 1-8.
15. Tambahkah kode berikut, kemudian kompilasi dan download
while (1){// Place your code herePORTB=0x7f;delay_ms(200);PORTB=0xbf;delay_ms(200);PORTB=0xdf;delay_ms(200);PORTB=0xef;delay_ms(200);PORTB=0xf7;delay_ms(200);PORTB=0xfb;delay_ms(200);PORTB=0xfd;delay_ms(200);PORTB=0xfe;delay_ms(200);};
}
16. Amati dan tuliskan reaksi LED pada kolom berikut
Reaksi LED langkah 12:
Reaksi LED langkah 15:
68
17. Matikan program pada langkah 15 tanpa menghapusnya, dan tambahkan kode
berikut:
while (1){// Place your code here/*PORTB=0x7f;delay_ms(200); blok program ini telah
mati danPORTB=0xbf;delay_ms(200); dianggap komentarPORTB=0xdf;delay_ms(200);PORTB=0xef;delay_ms(200);PORTB=0xf7;delay_ms(200);PORTB=0xfb;delay_ms(200);PORTB=0xfd;delay_ms(200);PORTB=0xfe;delay_ms(200);*/
PORTB=1;delay_ms(200); //blok program ini yangaktif
PORTB=2;delay_ms(200);PORTB=4;delay_ms(200);PORTB=8;delay_ms(200);PORTB=16;delay_ms(200);PORTB=32;delay_ms(200);PORTB=64;delay_ms(200);PORTB=128;delay_ms(200);
}
}
18. Amati dan tuliskan apa yang terjadi pada led, pada kolom berikut
Reaksi LED langkah 17:
69
19. Buat project baru dengan nama project_5, dengan rangkaian, langkah kerja dan
inisialisasi sama seperti pada langkah 1-8.
20. Tambahkah kode berikut, kemudian kompilasi dan download
#include <mega8535.h>#include <delay.h>
#define led0 PORTB.0#define led1 PORTB.3#define led2 PORTB.7
.............
.............
.............
.............
.............while (1)
{// Place your code hereled0=0;delay_ms(200);led0=1;delay_ms(200);led1=0;delay_ms(200);led1=1;delay_ms(200);led2=1;delay_ms(200);led2=0;delay_ms(200);};
}21. Rubah secara acak inisialisasi nomor bit pada PORTB, amati dan tuliskan reaksi
led pada kolom berikut:
22. Buat analisa, dan simpulkan maksud serta tujuan masing-masing program diatas
NOMOR PROGAM ANALISA KESIMPULAN
Langkah-9Project_2
Reaksi LED langkah 20:
70
NOMOR PROGAM ANALISA KESIMPULAN
Langkah-12Project_3
Langkah-15Project_4
Langkah-17Project_5
Langkah-20Project_5
71
Analisa Secara Umum/Keseluruhan:
Kesimpulan Secara Umum/Keseluruhan:
72
Percobaan 3
Judul : Intertfacing Saklar dan Pengenalan Looping
Langkah Kerja:
1. Rangkaikan LED seperti pada gambar dibawah ini
(skema sama seperti pada trainer)
PB2(INT2/AIN0)3
XTAL212
XTAL113
PB1(T1)2
PD2(INT0)16
PD3(INT1)17
PD4(OC1B)18
PD5(OC1A)19
GND11 VCC10
PB7[SCK)8 PB6[MISO)7 PB5(MOSI)6 PA4(ADC4)
36
PA5(ADC5)35
PA6(ADC6)34
PA7(ADC7)33
AREF32
PA3(ADC3)37
PB0(XCK/T0)1
PB3(OC0/AIN1)4
PB4(SS)5
RESET9
PD0(RXD)14
PD1(TXD)15
PD6(ICP)20
PD7(OC2)21
PA0(ADC0)40
PA1(ADC1)39
PA2(ADC2)38
AGND31
AVCC30
PC7(TOSC2)29
PC6(TOSC1)28
PC527
PC426
PC325
PC224
PC1(SDA)23
PC0(SCL)22
IC1
ATMEGA8535-DIL40
X1
C1
C2
R1
VCC
VCC
12
1212
12
1212
1212
1 21 21 21 21 21 21 21 2
Gambar 4.8 Diagram Skematik percobaan 3
2. Buka program CodevisionAVR, klik menu FILE NEW Project YES
hingga muncul tampilan berikut
Gambar 4.9 Pengaturan Chip
3. Pilih ATmega 8535 (atau sesuai tipe yang digunakan) untuk chipnya dan setting
cloknya 11.059200 (atau sesuai dengan X-tall yang digunakan)
Gambar 4.10 Pengaturan Register Input dan Output
73
4. Atur untuk bagian PORT, pilih PORT A, Atur atur sebagai INPUT dan rubah
Value menjadi P (Pullup)
5. Atur Port B dan setting sebagai output dan value low (lihat gambar)
6. Klik File Generate,Save and Exit
7. Ikuti petunjuk penyimpanan file. Bila perlu ganti folder penyimpanannya.
8. Simpan dengan nama project_6.c, project_6.prj dan project_6.cwp. pada folder
kelas dan nama anda masing-masing
9. Tambahkan pustaka tunda dibagian header dan satu buah variable bertipe integer
#include <mega8535.h>#include <delay.h>unsigned char hit;#define led0 PORTB.0#define led1 PORTB.1#define led2 PORTB.2
#define sw1 PINA.1#define sw2 PINA.2#define sw3 PINA.3#define sw4 PINA.4#define sw5 PINA.7.................................................................
while (1){
// Place your code hereawal:if (sw1==0) //jika saklar 1 ditekan
{PORTB=0x00;delay_ms(300); // 8 led led
dimatikanPORTB=0xFF;delay_ms(300); // 8 led led dinyalakan
}
if (sw2==0) //jika saklar 2 ditekan{PORTB=0x0F;delay_ms(300); //maka led plip-
plopPORTB=0xF0;delay_ms(300);
}if (sw3==0) //jika saklar 7 ditekan
{PORTB=0xAA;delay_ms(300); //maka LED blink-
blinkPORTB=0x55;delay_ms(300);}
if (sw4==0) //jika sw4 ditekan{
while(1) //pengulangan talberhingga
74
{for(hit=0;hit<10;hit++) // ulang
sebanyak 10x{
led0=0;delay_ms(200);led0=1;delay_ms(200);if(sw5==0) //jika sw 5 ditekan
{goto awal; //loncat ke
label awal}
}
for(hit=0;hit<10;hit++) // ulangsebanyak 10x
{
led1=0;delay_ms(200);led1=1;delay_ms(200);if(sw5==0){goto awal;}
}
}
}PORTB=0x00; //jika tidak maka
led mati
};
10. Lengkapi, kompilasi dan download program diatas
11. Tekan saklar sw1-sw5 secara bergantian, perhatiakn apa yang terjadi, dan
lenglapi tabel berikut
No No Sw Reaksi LED
1 Sw1
2 Sw2
3 Sw3
4 Sw4
75
5 Sw5
12. Tandai baris program mana saja yang menunjukan looping !
13. Jelaskan perbedaan reaksi LED jika ditekan sw4 dengan jika ditekan sw1-3!
14. Tulisakan error yang terjadi pada saat kompilasi jelaskan maksud error tersebut
beserta solusinya, buat analisa dari program diatas, dan simpulkan
Analisa Secara Umum/Keseluruhan:
Kesimpulan Secara Umum/Keseluruhan:
76
3. Rangkuman
1) Perintah PORTX digunakan untuk mengirim data secara byte ke portX
(X= A,B,C,D)
2) Perintah PINX digunakan untuk menerima data secara byte dari portX (X=
A,B,C,D)
3) Perintah PORTX.n digunakan untuk mengirim data secara bit ke portX
(X= A,B,C,D), dimana n adalah nomor bit yang dituju.
4) Perintah PINX.n digunakan untuk menerima data secara bit dari portX (X=
A,B,C,D), dimana n adalah nomor bit dari port.
5) Perintah DDRX (X= A,B,C,D), dan PORTX (X= A,B,C,D), sebagai
inisialisasi register dimana DDRX menentukan PORT yang dimasksud
sebagai input atau output dan PORTX menentukan keadaan awal PORT
yang dimasksud apakah berlogika 1 atau 0 jika sebagai output, atau
memiliki pullup atau tidak jika sebagai input.
6) Perintah delay_ms (unsigned int n) untuk fungsi tunda dalam mili detik
(n lama nya waktu)
7) Perintah delay_us (unsigned int n) untuk fungsi tunda dalam mikro detik
(n lama nya waktu)
8) Perintah #asm (“cli”) untuk mematikan semua interupsi
9) Perintah #asm (“sei”) untuk mengaktifkan semua interupsi
4. Latihan soal
1) Buat algoritma dalam flowchart beserta programnya, downloadkan ke
system mikrokontroler. Dengan kerja program sebagai berikut:
LED pada PORTB.5 berkedip tanpa henti, dengan jeda waktu kedipan 1
detik.
2) Buat algoritma dalam flowchart beserta programnya, downloadkan ke
system mikrokontroler. Dengan kerja program sebagai berikut:
LED pada PORTB paling ujung kanan bergantian menyala dengan 3 LED
pada PORTB paling ujung kiri dan terus berulang, dengan jeda waktu 0,5
detik.
77
3) Buat algoritma dalam flowchart beserta programnya, downloadkan ke
system mikrokontroler. Dengan kerja program sebagai berikut:
Semua LED bernomor ganjil pada PORTB bergantian menyala dengan
semua LED bernomor genap pada PORTB terus berulang, dengan jeda
waktu 0,15 detik.
4) Buat algoritma dalam flowchart beserta programnya, downloadkan ke
system mikrokontroler. Dengan kerja program sebagai berikut:
LED pada PORTB menyala satu persatu berjalan dari kiri ke kanan,
kemudian kembali lagi berjalan satu persatu dari kanan ke kiri dan terus
berulang, dengan jeda waktu led berjalan 100 mili detik.
5) Buat algoritma dalam flowchart beserta programnya, downloadkan ke
system mikrokontroler. Dengan kerja program sebagai berikut:
Jika ditekan saklar 1 program dari saol no 1 terus berjalan tanpa henti
Jika ditekan saklar 2 program dari saol no 2 terus berjalan tanpa henti
Jika ditekan saklar 3 program dari saol no 3 terus berjalan tanpa henti
Jika ditekan saklar 4 program dari saol no 4 terus berjalan tanpa henti
Jika ditekan saklar 5 semua LED padam.
Jika ditekan belum ada saklar yang ditekan LED mati
Jika sistem sedang menjalankan salah satu dari program no 1-4, kemudian
ditekan salah satu tombol no 1-5, maka LED langsung bereaksi sesuai
nomor saklar.
5. Evalusi
Diketahui sebuah system mikrokontroler memiliki rangkaian seprti pada
gambar dibawah:
PB2(INT2/AIN0)3
XTAL212
XTAL113
PB1(T1)2
PD2(INT0)16
PD3(INT1)17
PD4(OC1B)18
PD5(OC1A)19
GND11 VCC10
PB7[SCK)8 PB6[MISO)7 PB5(MOSI)6 PA4(ADC4)
36
PA5(ADC5)35
PA6(ADC6)34
PA7(ADC7)33
AREF32
PA3(ADC3)37
PB0(XCK/T0)1
PB3(OC0/AIN1)4
PB4(SS)5
RESET9
PD0(RXD)14
PD1(TXD)15
PD6(ICP)20
PD7(OC2)21
PA0(ADC0)40
PA1(ADC1)39
PA2(ADC2)38
AGND31
AVCC30
PC7(TOSC2)29
PC6(TOSC1)28
PC527
PC426
PC325
PC224
PC1(SDA)23
PC0(SCL)22
IC1
ATMEGA8535-DIL40
X1
C1
C2
R1
VCC
VCC
12
1212
12
1212
1212
1 21 21 21 21 21 21 21 2
78
Sistem diatas memiliki cara kerja sebagai berikut:
• Jika ditekan saklar 1, semua LED menyala dan padam secara bergiliran dengan
jeda waktu 1 detik dan terus berulang sampai ditekan tombol lain,
• jika saklar 2 ditekan LED menyala bergantian dan berjalan satu persatu dengan
jeda waktu 0,2 detik dan terus berulang sampai ditekan tombol lain
• Jika saklar 3 ditekan semua LED padam, dan terus berulang sampai ditekan
tombol lain
• Awal dinyalakan semua LED padam
6. Tugas:
1. Tentukan mana yang menjadi saklar 1,2 dan3
2. Susun dan tuliskan algoritma dalam bentuk Flowchart untuk program diatas
3. Susun program untuk system diatas
79
1. Tujuan Kegiatan Belajar 5 :
Setelah mempelajari kegiatan belajar 5, diharapkan anda dapat :
Mengetahui Seven Segment Mengetahui cara kerja seven segment Memahami cara penggunaan seven segment Memprogram mikrokontrol untuk aplikasi seven segment
2. Uraian Materi
1)SEVEN SEGMENT
Seven segment atau tujuh bagian, karena komponen ini memiliki tujuh
bagian untuk membentuk karakter angka yang pada umumnya menyatakan
simbol bilangan nol hingga sembilan, meskipun pada kenyataannya ditambah 1
buah LED untuk titik atau Dot Point.
Seven segment pada dasarnya adalah tujuh buah LED yang disusun
membentuk seprti angka delapan , namun salah satu kakinya
digabungkan/disatukan sehingga menjadi sebuah common atau hubungan
bersama, dan kaki lainya sebagai data. Pada umumnya dipasaran beredar dua
buah jenis seven segment, yaitu seven Segment Common Anoda (CA) dan
Segment Common Catodhe (CC), gambar 5.1 menjelaskan salah satu jenis
seven segment common cathode beserta hubungan pengawatan LED didalam
seven segment tersebut.
Gambar 5.1 Seven segment common Cathode (CC)
Dengan melihat gambar 5.1 terlihat bahwa setiap segment memiliki notasi yang
dinyatakan dalam A, B, C, D, E, F, G dan DP. Common dari seven segment
KEGIATAN BELAJAR 5
80
common cathode harus dihubungkan ke ground dan kaki lainya diberikan
positif, sedangkan untuk membentuk angka cukup diaktifkan beberapa segment
saja sesuai kebutuhan. Sedangkan untuk Common dari seven segment common
Anode harus dihubungkan ke positif dan kaki lainya diberikan ground .
Misalkan untuk membentuk angka 8 tanpa titik, maka semua segment kecuali
DP dinyalakan, dan untuk membentuk angka 9 tanpa titik maka semua segment
kecuali DP dan segment E dinyalakan, tabel dibawah ini memperlihatkan
hubunga segment dengan kaki PIN sevensegment untuk jenis CA dan CC.
Tabel 5.1 Hubungan kaki seven segment
SEGMENT KAKI SEVEN SEGMENT
A 7B 6C 4D 2E 1F 9G 10
DP 5COM 8 dan 5
2)Menggunakan SEVEN SEGMENT
Jika seven segment common Anode dihubungkan dengan
mikrokontoler biasanya minimal akan menghabiskan 8 saluran (1 PORT), untuk
mengaktifkan 1 buah 7segment dengan asumsi commnon dihubungkan
langsung dengan power supply, seperti terlihat pada gambar dibawah.
A
CB
FED
DPG
VCC
COM
PA1
PB2(INT2/AIN0)3
XTAL212
XTAL113
PB1(T1)2
PD2(INT0)16
PD3(INT1)17
PD4(OC1B)18
PD5(OC1A)19
GND11 VCC10
PB7[SCK)8 PB6[MISO)7 PB5(MOSI)6 PA4(ADC4)
36
PA5(ADC5)35
PA6(ADC6)34
PA7(ADC7)33
AREF32
PA3(ADC3)37
PB0(XCK/T0)1
PB3(OC0/AIN1)4
PB4(SS)5
RESET9
PD0(RXD)14
PD1(TXD)15
PD6(ICP)20
PD7(OC2)21
PA0(ADC0)40
PA1(ADC1)39
PA2(ADC2)38
AGND31
AVCC30
PC7(TOSC2)29
PC6(TOSC1)28
PC527
PC426
PC325
PC224
PC1(SDA)23
PC0(SCL)22
IC2
ATMEGA8535-DIL40
PA3
PA0PA0
PA6PA7
PA2
PA4PA5
PC5
PC0PC1PC2PC3PC4
PC6PC7
PB5
PB1PB0PB0
PB3PB4
PB6PB7
PB2
PD3
rstrst
PD0PD1PD2
GND
PD7
PD4
VCC
VCC
PD6PD6
GNDVCC
PD5PD5
X211.0592MHz
C3
22p
C4
22p
VCC
R2R
PB1PB0
PB4PB3PB2
PB6PB5
PB7
Gambar 5.2
Contoh Koneksi seven segment common Cathode (CC) dengan mikrokontrol
81
Untuk lebih memahami seven segment lakukanlah percobaan I.
Lembar Kerja I
Alat dan Bahan
1. ............................................................................................ Trainer
Mirkorontroler AVR ATMega8535/16/32................................................... 1 Unit
2. ............................................................................................ ISP
Downloader.................................................................................................. 1 Unit
3. ............................................................................................ Kompu
ter ................................................................................................................. 1 Unit
4. ............................................................................................ Softwar
e pendukung (Codevision AVR & Proteus)................................................. 1 Lot
Keselamatan Kerja
1. Gunakan alas kaki (sandal karet) saat mengoperasikan komputer
2. Hindari memasang konektor downloader secara terbalik
3. Letakan peralatan ditempat yang aman dan mudah diamati
4. Operasikan Trainer mikrokontroler sesuai tegangan kerjanya
5. Operasikan komputer sesuai peruntukannya sesuai dengan prosedur
6. Matikan komputer sesuai dengan prosedur yang benar
Percobaan I
Judul : Menggunakan 7segment
Langkah Kerja:
1. Rangkaikan LED seperti pada gambar dibawah ini
(skema sama seperti pada trainer)
82
VCC
R2R
R3R
R4R
BA
R5R
CDEFGDP
COM
PD
4
PD
5
PD
6
PD
7
BA
EDC
DPGF
COM PB0
PB2PB2PB1PB1
PB5PB5PB4PB3
PB7PB6
CBA
FED
DPG
COM
CBA
ED
DPGF
COM PB0PB1PB1
PB3PB2PB2
PB6PB6PB5PB5PB5PB5PB4
PB7
PB0
PB2PB2PB1PB1
PB5PB5PB4PB3
PB7PB6
PB2(INT2/AIN0)3
XTAL212
XTAL113
PB1(T1)2
PD2(INT0)16
PD3(INT1)17
PD4(OC1B)18
PD5(OC1A)19
GND11 VCC10
PB7[SCK)8 PB6[MISO)7 PB5(MOSI)6 PA4(ADC4)
36
PA5(ADC5)35
PA6(ADC6)34
PA7(ADC7)33
AREF32
PA3(ADC3)37
PB0(XCK/T0)1
PB3(OC0/AIN1)4
PB4(SS)5
RESET9
PD0(RXD)14
PD1(TXD)15
PD6(ICP)20
PD7(OC2)21
PA0(ADC0)40
PA1(ADC1)39
PA2(ADC2)38
AGND31
AVCC30
PC7(TOSC2)29
PC6(TOSC1)28
PC527
PC426
PC325
PC224
PC1(SDA)23
PC0(SCL)22
IC1
ATMEGA8535-DIL40
PA0PA0PA1PA2PA3
PA5PA6PA7
PC0PC1
PA4
PC4PC5
PC7
PC2PC3
PB1PB0PB0
PC6
PB4PB5
PB7
PB2PB3
rstrst
PB6
PD1PD2PD3
PD7
PD4
PD0
VCCGND
GNDVCC
VCC
PD5PD5PD6PD6
X111.0592MHz
C1
22p
C2
22p
R1R
VCC
PB0PB1PB1PB2PB2PB3
PB5PB5PB4
PB7PB6
Q1PNP
Q2PNP
Q3PNP
Q4PNP
2. Buat data tampilan angka dengan melengkapi tabel berikut, untuk seven segment
common Anode. (Aktif LOW/Menyala jika data “0” (LOW) dengan common
Positif.
DISPLAYANGKA
DP G F E D C B ADATA DALAM
BINERDATA DALAM
HEX
0 1 1 0 0 0 0 0 0 0b1100 0000 0xC01 1 1 1 1 1 0 0 1 0b111110012 1 0 1 0 0 1 0 0 0b101001003456789
. (titik)
3. Buat data tampilan angka dengan melengkapi tabel berikut, untuk seven segment
common cathode. (Aktif High/Menyala jika data “1” (HIGH) dengan common
nol.
DISPLAYANGKA
DP G F E D C B ADATA DALAM
BINERDATA DALAM
HEX
01
83
23456789
. (titik)
4. Buka program codevision AVR melalui menu Star|All Program || Codevision ||
Code Vision Avr C Compiler atau melalui deskop klik lambang Codevision.
5. Kemudian pillih File |New |pilih File Type
→project
6. Kemudian muncul tampilan konfirmasi, dan menanyakan apakah akan
menggunakan codewizard, pilih Yes.
7. Atur setting chip pada ATMega8535 atau sesuai dengan chip yang digunakan,
dengan clock 11.059200MHz dengan PORTD dan PORTB sebagi output, dengan
keadaan awal nol.
8. Jika sudah menkonfigurasi project,pilih File |
Generate Save and Exit, sehingga akan tampil source code dalam bahasa C
9. setelah itu, kita tinggal menambahkan instruksi-
instruksi tambahan kedalam program yang sudah ada.
10. Lengkapi dengan listring dibawah ini.
..........#include <mega8535.h>#include <delay.h>..........while (1)
{PORTD=0;PORTB= 0b11000000; //menampilkan angka 0;Delay_ms(500);PORTB= 0b11111001; //menampilkan angka 1;Delay_ms(500);PORTB= 0b10100100; //menampilkan angka 2;Delay_ms(500);
}11. Kemudian kompilasi, download dan perhatikan
hasilnya.
Analisa:
84
12. Lengkapi data diatas sehingga bisa berhitung naik
dari 0 ke 9 secara berulang!
13. Apa yang terjadi jika data pada PORTB dibalikan
nilai logikanya, data “0”menjadi “1” dan data “1” menjadi “0”!
14. Apa yang terjadi jika data pada PORTB diganti
dengan hasil bilangan hexadesimal, hasil dari konversi bilangan biner dari data
diatas!
15. Bagaimanakah data yang harus dikirim ke PORTB,
sehingga bisa menampilkan karakter “Y” “A” “M” “M” “Y” , secara
berurutan pada 1 seven segment? Apakah seven segment hanya terbatas untuk
menampilkan angka? Jelaskan!
3. Latihan :
1. Buat program untuk berhitung turun dari 9 ke 0
2. Buat program agar keempat seven segment dapat menampilakan angka secara
bergantian (1 menyala yang lain pada, secara bergilir)!
3. Buat program untuk berhitung naik dari 0 ke 99, secara berulang dengan jeda
waktu 300 ms!
4. Buat program untuk berhitung turun dari 99 ke 9, , secara berulang dengan jeda
waktu 300 ms!
5. Buat program untuk berhitung turun dari 99 ke 0, , secara berulang dengan jeda
waktu 300 ms, setelah tombol PA.7 (SW8) ditekan, jika belum ditekan hitungan
belum dimulai!
6. Buat program, sehingga setiap ditekan tombol PA.7 (SW8), angka pada 7
segment bertambah 1, hingga max 99
4. Rangkuman
1. Seven segment terdiri dari 7 buah LED yang pada umumnya digunakan untuk
menampilkan angka desimal
2. Seven segment terdiri dari dua macam common
yaitu common anode dan cathode
3. common anode, aktif jika data data LOW dan
common HIGH
4. common Cathode, aktif jika data data HIGH dan
common LOW
85
5. Seven segment memiliki banyak ukuran yang
umumnya dalam satuan inch.
6. Untuk memudahkan pemrograman kaki segment A
dihubungkan dengan kaki PIN 0 mikrokontrol dan terus berurut hingga segment
G terhubung dnegan PIN 6 dan kaki DP dengan PIN 7 pada mikrokontrol
1. Tujuan Kegiatan Belajar 6 :
Setelah mempelajari kegiatan belajar 6, diharapkan anda dapat :
Mengenal LCD karakter Mengetahui cara Inisialisasi LCD karakter Mengetahui cara menampilkan karakter pada LCD karakter berdasarkan titik
koordinat Memprogram system mikrokontroler untuk menampilkan karkter pada LCD
karakter
KEGIATAN BELAJAR 6
86
2. Uraian Materi
1)LCD Karakter
LCD adalah suatu display dari bahan cairan kristal yang
pengoprasiannya menggunakan dot matriks.LCD banyak digunakan sebagai
display dari alat-alat elektronika seperti kalkulator,multitester digital,jam digital
dan sebagainya.
Gambar 5.1 LCD 2x16 karakter
Ada beberapa macam LCD karakter diantaranya adalah 2x8, 2x12,
2x16, 2x20, 2x24, 2x40, dan 4x40, dimana pada dua digit pertama menunjukan
jumlah baris yang dapat ditampilkan, dan digit kedua menunjukan jumlah
karakter yang bisa ditampilkan pada tiap baris, seperti contoh LCD karakter
2x16 berarti LCD tersebut mampu menunjukan 2 baris karakter dengan setiap
baris mampu menampilkan 16 karakter. Dengan mode pengoperasian pada
umumnya adalah 4 bit dan 8 bit, perbedanya adalah dalam teknik pengiriman
data dan jumlah pin yang digunakan, jika menggunakan mode 8 bit maka untuk
saluran data diperlukan 8 pin, dan 3pin control, sehingga setidaknya akan
diperlukan 2 PORT mikrokontroler, namun dalam teknik pengiriman data
relatif lebih ringkas, tetapi jika menggunakan mode 4 bit maka untuk saluran
data diperlukan 4 pin, dan 3pin control, sehingga hanya akan diperlukan 1
PORT mikrokontroler, namun dalam teknik pengiriman data ke LCD relatif
lebih rumit. LCD karakter 2x16 pada umumnya banyak menjadi pilihan karena
dengan selain harga nya terjangkau, 2x16 maka artinya LCD tersebut mampu
menampilkan 2 baris karakter dengan tiap baris menampung 16 karakter.
Karakter yang muncul dalam LCD sebernarnya sudah terdapat pada ROM LCD
tersebut, sehingga pengguna LCD tinggal memberikan alamat sesuai karakter
yang diinginkan dan koordinat dimana karakter tersebut dimunculkan.
Gambar berikut memperlihatkan tataletak koordinat pada LCD karakter 2x16
87
Gambar 5.2 Koordinat pada LCD 2x16 karakter
Dengan melihat gambar diatas jika kita memprogram koordinat pada
X=0 dan Y=0, maka karakter akan muncul pada titik pojok kiri paling atas, dan
jika kita memprogram koordinat pada X=15 dan Y=1, maka karakter akan
muncul pada titik pojok kanan paling bawah.
Untuk lebih memahi cara pemrograman dari LCD karakter maka coba
lalukan percobaan i dan II pada lembar kerja berikut,
Lembar Kerja I
Alat dan Bahan
1. .......................................................................................... T
rainer Mirkorontroler AVR ATMega8535/16/32 ..................................... 1 Unit
2. .......................................................................................... I
SP Downloader ......................................................................................... 1 Unit
3. .......................................................................................... K
omputer ..................................................................................................... 1 Unit
4. .......................................................................................... S
oftware pendukung (Codevision AVR & Proteus) ................................... 1 Lot
Keselamatan Kerja
1. Gunakan alas kaki (sandal karet) saat mengoperasikan komputer
2. Hindari memasang konektor downloader secara terbalik
3. Letakan peralatan ditempat yang aman dan mudah diamati
4. Operasikan Trainer mikrokontroler sesuai tegangan kerjanya
5. Operasikan komputer sesuai peruntukannya sesuai dengan prosedur
6. Matikan komputer sesuai dengan prosedur yang benar
Percobaan 1
88
Judul: Pemrograman LCD Koordinat Satis
Langkah Kerja:
1. Gambar rangkaian program yang akan dibuat
sebagai berikut
PB2(INT2/AIN0)3
XTAL212
XTAL113
PB1(T1)2
PD2(INT0)16
PD3(INT1)17
PD4(OC1B)18
PD5(OC1A)19
GND11 VCC10
PB7[SCK)8 PB6[MISO)7 PB5(MOSI)6 PA4(ADC4)
36
PA5(ADC5)35
PA6(ADC6)34
PA7(ADC7)33
AREF32
PA3(ADC3)37
PB0(XCK/T0)1
PB3(OC0/AIN1)4
PB4(SS)5
RESET9
PD0(RXD)14
PD1(TXD)15
PD6(ICP)20
PD7(OC2)21
PA0(ADC0)40
PA1(ADC1)39
PA2(ADC2)38
AGND31
AVCC30
PC7(TOSC2)29
PC6(TOSC1)28
PC527
PC426
PC325
PC224
PC1(SDA)23
PC0(SCL)22
IC1
ATMEGA8535-DIL40
PC7PC6PC5PC4PC3PC2PC1PC0
VCC
1 2S1
R110k 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
J1LCD 16x2 Char
R2
POT
PC0PC1PC2
PC6PC7
PC5PC4
VCC
X111.0592MHz
22
22
Gambar 5.3 Diagram Skematik percobaan I
2. Buka program codevision AVR melalui menu Star|All Program || Codevision ||
Code Vision Avr C Compiler atau melalui deskop klik lambang Codevision.
3. Kemudian pillih File |New |pilih File Type
→project
4. Kemudian muncul tampilan konfirmasi, dan menanyakan apakah akan
menggunakan codewizard, pilih Yes.
5. Untuk setting IC(Chip yang digunakan) pilih Chip,
isi informasi sebagai berikut:
Gambar 5.4 asetting chip ATmega 8535
clock 11.059200
Gambar 5.4 bsetting PORTC sebagai output
LCD6. Jika sudah menkonfigurasi project,pilih File |
Generate Save and Exit, sehingga akan tampil source code dalam bahasa C
89
7. setelah itu, kita tinggal menambahkan instruksi-
instruksi tambahan kedalam program yang sudah ada
8. Perhatikan kode-kode berikut
// Alphanumeric LCD Module functions#asm
.equ __lcd_port=0x15 ;PORTC#endasm#include <lcd.h>..........
Blok ini harus disertakan (jika dengan cara generate file…akan otomatis
dibuatkan).arti dari blok diatas adalah setting LCD di PORTC kemudian akan
me_link ke pustaka lcd.h yang didalamnya terdapat instruksi-instruksi untuk
akses LCD secara langsung.
..........
.equ __lcd_port=0x15 ;PORTC
...........
Menggunakan PORTC(0x15) untuk LCD (lihat tentang register I/O di datasheet
ATmega 8535). Untuk inisialisasi cukup dengan instruksi berikut:
..........// LCD module initialization
lcd_init(16); //inisialisasi LCD 16x2
Contoh program LCD :
Tambahkan kode program sehingga listingnya seperti berikut :
..........#include <mega8535.h>#include <delay.h>..........while (1)
{// Place your code herelcd_clear();lcd_gotoxy(0,0);lcd_putsf("*SELAMAT DATANG*");lcd_gotoxy(0,1);lcd_putsf("SISWA");delay_ms(5000);lcd_clear();lcd_gotoxy(0,0);lcd_putsf("**SMK Negeri 2**");lcd_gotoxy(0,1);lcd_putsf(" Kota Cimahi ”);delay_ms(5000);
};}
9. Kemudian kompilasi, download dan perhatikan
hasilnya.
90
10. Coba dengan string atau kata dan posisi baris yang
berbeda.
11. Coba hilangkan baris perintah lcd_clear(), kompilasi
dan download, adakah perbedaan hasil?
12. Apa yang terjadi jika nilai koordinat X dan Y di
rubah?
.................................................................................................................................
.................................................................................................................................
.................................................................................................................................
.................................................................................................................................
13. Apa yang terjadi jika perintah lcd_putsf("SISWA")
diganti dengan spasi sebanyak 16 kali, sehingga program menajdi lcd_putsf("
"); ?
.................................................................................................................................
.................................................................................................................................
.................................................................................................................................
.................................................................................................................................
Kesimpulan Secara Umum dari percobaan 1 LCD:
91
Percobaan 2
Judul: Pemrograman LCD Koordinat Dinamis
Langkah Kerja:
1. Gambar rangkaian program yang akan dibuat
sebagai berikut
PB2(INT2/AIN0)3
XTAL212
XTAL113
PB1(T1)2
PD2(INT0)16
PD3(INT1)17
PD4(OC1B)18
PD5(OC1A)19
GND11 VCC10
PB7[SCK)8 PB6[MISO)7 PB5(MOSI)6 PA4(ADC4)
36
PA5(ADC5)35
PA6(ADC6)34
PA7(ADC7)33
AREF32
PA3(ADC3)37
PB0(XCK/T0)1
PB3(OC0/AIN1)4
PB4(SS)5
RESET9
PD0(RXD)14
PD1(TXD)15
PD6(ICP)20
PD7(OC2)21
PA0(ADC0)40
PA1(ADC1)39
PA2(ADC2)38
AGND31
AVCC30
PC7(TOSC2)29
PC6(TOSC1)28
PC527
PC426
PC325
PC224
PC1(SDA)23
PC0(SCL)22
IC1
ATMEGA8535-DIL40
PC7PC6PC5PC4PC3PC2PC1PC0
VCC
1 2S1
R110k 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
J1LCD 16x2 Char
R2
POT
PC0PC1PC2
PC6PC7PC5PC4
VCC
X111.0592MHz
22
22
Gambar 5.5 Diagram Skematik percobaan I I
2. Buka program codevision AVR melalui menu Star|All Program || Codevision ||
Code Vision Avr C Compiler atau melalui deskop klik lambang Codevision.
3. Kemudian pillih File |New |pilih File Type
→project
4. Kemudian muncul tampilan konfirmasi, dan menanyakan apakah akan
menggunakan codewizard, pilih Yes.
5. Untuk setting IC(Chip yang digunakan) pilih Chip,
isi informasi sebagai berikut :
92
Gambar 5.6 a setting chip
ATmega 8535 clock 11.059200
Gambar 5.6 b setting PORTC
sebagai output LCD
6. Jika sudah menkonfigurasi project,pilih File |
Generate Save and Exit, sehingga akan tampil source code dalam bahasa C
7. setelah itu, kita tinggal menambahkan instruksi-
instruksi tambahan kedalam program yang sudah ada
8. Perhatikan kode-kode berikut dan Tambahkan kode
program sehingga listingnya seperti berikut :
..........#include <mega8535.h>#include <delay.h>#include <stdio.h> //library standar input dan output
Unsigned char a, buf[16];
Blok diatas mendeklarasikan tipe data “a” sebagai unsigned char yang digunakan
untuk penghitung dengan kapasitias 256 bilangan atau dengan range 0-255,
variabel buf[16] maksudnya adalah tipe data buf adalah sebagai larik/array
dengan kapasitas 16 yang nantinya akan digunakan sebagai penampung data
karakter LCD yang berjumlah max16.
..........while (1)
{// Place your code herefor(a=0;a<16;a++){
lcd_gotoxy(a,0);lcd_putsf(“H”);sprintf(buf,”Nilai a: %d”,a); //fungsi utk
menampilkan isi alcd_gotoxy(0,1);lcd_puts(buf);delay_ms(300);
}}
9. Kemudian kompilasi, download dan perhatikan
hasilnya.
10. Perhatikan listing code dan tampilan pada LCD, apa
yang terjadi ketika nilai “a” berubah dan apa pengaruhnya nilai “a” pada posisi
karakter “H” , mengapa demikian?
93
11. Ganti %d dengan %i, kompilasi dan download, lihat
adakah perbedaan hasil? Mengapa?
12. Ganti %d dengan %x, kompilasi dan download, lihat
adakah perbedaan hasil? Mengapa?
3. Rangkuman
1) LCD karakter adalah LCD yang hanya dapat menampilkan karakter
2) LCD karakter dapat menampilkan 2x8 karakter, 2x12 karakter, 2x16
karakter, 2x24 karakter, 2x40 karakter, dan 4x40 karakter.
3) LCD karakter dapat dioperasikan secara 4 bit ataw 8 bit
4) Perbedaan mode pengoperasian hanya pada jumlah pin yang digunakan
dan teknik pengiriman datanya
5) Koordinat x=0 dan y=0 berada pada pojok kanan atas, Koordinat x=0 dan
y=1 berada pada pojok kanan bawah.
6) Untuk mencetak karakter secara langsung/statis digunakan perintah
lcd_putsf(“ Karakter”);
Kesimpulan Secara Umum dari percobaan 1 LCD:
94
7) Untuk mencetak karakter yang berasal dari isi memory/variabel tertentu
harus mengunakan fungsi sprintf (variabel_penampung,”Karakter yang
akan ditampilkan”,Variabel_sumber);
8) Fungsi sprintf ada dalam pustaka stdio.h
9) Dalam menampilakan isi memory, bentuk data akan tampil tergantung dari
modulus yang digunakan.
10) fungsi lcd_clear(), lcd_gotoxy(); lcd_putsf() adalah beberapa fungsi yang
terdapat dalam pustaka lcd.h
1. Tujuan Kegiatan Belajar 7 :
Setelah mempelajari kegiatan belajar 7, diharapkan anda dapat :
Mengetahui konsep ADC secara umum Mengetahui istilah-istilah yang digunakan pemrograman ADC pada
mikrokontoler Mengetahui fitur ADC yang terintergrasi dengan mikrokontrol ATMega8535 Melakukan pengaturan register mikrokontroler untuk mengaktifkan fitur ADC Memprogram mikrokontrol untuk pembacaan data ADC Memprogram mikrokontrol untuk aplikasi pembacaan tegangan
2. Uraian Materi
1)Konsep ADC
ADC (Analog to Digital Converter) adalah salah satu fasilitas
mikrokontroller ATMEGA 8535 yang berfungsi untuk mengubah data
analog menjadi data digital. ADC memiliki 2 karakter prinsip, yaitu kecepatan
sampling dan resolusi. Kecepatan sampling suatu ADC menyatakan seberapa
sering sinyal analog dikonversikan ke bentuk sinyal digital pada selang waktu
tertentu. Kecepatan sampling biasanya dinyatakan dalam sample per second
(SPS).
KEGIATAN BELAJAR 7
95
Gambar 6.1
ADC dengan kecepatan sampling rendah dan kecepatan sampling tinggi
Resolusi ADC menentukan ketelitian nilai hasil konversi ADC. Sebagai
contoh: ADC 8 bit akan memiliki output 8 bit data digital, ini berarti sinyal
input dapat dinyatakan dalam 0-255 nilai diskrit dengan jumlah data 256 nilai
diskrit didapat dari 28 (2n) dimana n adalah jumlah bit ADC. ADC 10 bit
memiliki 10 bit output data digital, ini berarti sinyal input dapat dinyatakan
dalam 1024 nilai diskrit. Dari contoh diatas ADC 10 bit akan memberikan
ketelitian nilai hasil konversi yang jauh lebih baik daripada ADC 8 bit. Prinsip
kerja ADC adalah mengkonversi sinyal analog ke dalam bentuk besaran yang
merupakan rasio perbandingan sinyal input dan tegangan referensi. Sebagai
contoh, bila tegangan referensi 5 volt, tegangan sinyal input 3 volt, rasio input
terhadap referensi adalah 3/5 atau 60% dari tegangan referensi. Jadi, jika
menggunakan ADC 8 bit dengan skala maksimum 255, akan didapatkan nilai
diskrit sebesar 60% x 255 = 153 (bentuk decimal) atau 10011001 (bentuk
biner). Jika nilai data diskrit telah diketahui dan akan dijadikan nilai tegangan,
maka dapat menggunakan rumus berikut,
Tegangan = (Data Terbaca / Nilai Max Data) * Tegangan reverensi= (153 / 255)* 5V= 3V
Resolusi ADC pada ATMEGA8535 dapat digunakan pada resolusi 8 bit dan 10
bit. Pada trainer mikrokontroler tegangan referensi dibuat fix tidak dapat
diubah yaitu 5 volt yang diambil dari tegangan sumber (Vcc), dengan referensi
ADC adalah kaki AVCC. Dan register-register yang harus di setting adalah
ADMUX, ADCSRA, dan SFIOR agar ADC dapat difungsikan.
Penggunaan ADC sangat banyak,terutama dalam bidang pengukuran atau
pengumpulan data. Banyak keluaran sensor yang masih berupa analog yang
harus dikonversi kedigital agar dapat diolah ke mikrokontroler.
Fitur dari ADC ATmega 8535 adalah sebagai berikut :
• Resolusi maks 10 Bit,• Waktu konversi 65-260 us,• 8 ch input,• 0-Vcc input ADC,• 3 mode pemilihan tegangan referensi.
96
Untuk mempelajari ADC pada ATmega 8535, kita cukup membuat rangkaian
sederhana dari potensio meter.
R1
R2
VCC
POT
VCC
ADC PINADC PIN
Gambar 6.2rangkaian pembagi tegangan dengan resistor seri dan potensio meter.
Potensio pada dasarnya adalah sebagai pembagi tegangan, dimana potensio ini
akan kompatibel dengan dua buah resistor yang dirangkai seri, seperti terlihat
pada gambar diatas. Dengan rangkaian pembagi tegangan kita dapat memberi
tegangan yang bervariasi ke ADC, tegangan yang didapat dari pembagi
tegangandapat dihitung menggunakan persamaan sebagai berikut,
Vout = ( R1/( R1+R2) ) x Vcc
Dari gambar rangkaian diatas, keluarannya dihubungkan ke input ADC, yaitu
misal ke PORTA.0 (ADC ch.0). untuk melihat hasil ADC, kita dapat memasang
rangkaian LED atau LCD, dalam contoh ini langsung kita tampilkan pada
LCD.
2)Pemrograman ADC
Register-register yang kita bahas diatas dalam pengelementsialnya akan diset
pada saat kita membuat proyek baru dengan wizard code vision. Untuk lebih
jelasnya, lakukan percobaan dibawah ini:
Lembar Kerja I
Alat dan Bahan
1...................................................................................................... T
rainer Mirkorontroler AVR ATMega8535/16/32 .................................................... 1 Unit
2...................................................................................................... I
SP Downloader ........................................................................................................ 1 Unit
97
3...................................................................................................... K
omputer .................................................................................................................... 1 Unit
4...................................................................................................... S
oftware pendukung (Codevision AVR & Proteus) .................................................. 1 Lot
Keselamatan Kerja
1. Gunakan alas kaki (sandal karet) saat mengoperasikan komputer
2. Hindari memasang konektor downloader secara terbalik
3. Letakan peralatan ditempat yang aman dan mudah diamati
4. Operasikan Trainer mikrokontroler sesuai tegangan kerjanya
5. Operasikan komputer sesuai peruntukannya sesuai dengan prosedur
6. Matikan komputer sesuai dengan prosedur yang benar
Percobaan 1
Judul: Pemrograman ADC
Langkah Kerja:
1. Gambar rangkaian yang akan dibuat programnya
sebagai berikut
PB2(INT2/AIN0)3
XTAL212
XTAL113
PB1(T1)2
PD2(INT0)16
PD3(INT1)17
PD4(OC1B)18
PD5(OC1A)19
GND11 VCC10
PB7[SCK)8 PB6[MISO)7 PB5(MOSI)6 PA4(ADC4)
36
PA5(ADC5)35
PA6(ADC6)34
PA7(ADC7)33
AREF32
PA3(ADC3)37
PB0(XCK/T0)1
PB3(OC0/AIN1)4
PB4(SS)5
RESET9
PD0(RXD)14
PD1(TXD)15
PD6(ICP)20
PD7(OC2)21
PA0(ADC0)40
PA1(ADC1)39
PA2(ADC2)38
AGND31
AVCC30
PC7(TOSC2)29
PC6(TOSC1)28
PC527
PC426
PC325
PC224
PC1(SDA)23
PC0(SCL)22
IC1
ATMEGA8535-DIL40
PC6PC7
PC2PC3PC4PC5
PC0PC1
VCC
POT
1 2S1
VCC
R110k 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
J1LCD 16x2 Char
R2
POT
PC
0P
C1
PC
2
PC
7P
C6
PC
4P
C5
VCCVCC
X111.0592MHz
22
22
Gambar 6.3 Diagram Skematik percobaan I.
2. Buka program codevision AVR melalui menu Star|All Program || Codevision ||
Code Vision Avr C Compiler atau melalui deskop klik lambang Codevision.
3. Kemudian pillih File |New |pilih File Type
→project
98
4. Kemudian muncul tampilan konfirmasi, dan menanyakan apakah akan
menggunakan codewizard, pilih Yes.
5. Ikuti langkah pengaturan berikut, isi informasi
sebagai berikut :
Gambar 6.4 Setting ADC 8bit, referensi ADC pin AVCC, dengan clock
691.200KHz, PORTB output,PORTC LCD
6. Hubungkan rangkaian pembagi tegangan kesalah
satu pin pada PORTA, yang untuk contoh ini dihubungkan ke PINA.0 untuk
setting LCD, yaitu LCD ke PORTC. Generate file, save and exit. Simpan dengan
nama file adc.c, adc.prj, adc.cwp.
7. Tambahkan interuksi listing program berikut ini :
.........................................#include <mega8535.h>#include <delay.h>#include <stdio.h>
unsigned int adc;unsigned char nilai[16];
// Alphanumeric LCD Module functions#asm
.equ __lcd_port=0x15 ;PORTC#endasm#include <lcd.h>
#define ADC_VREF_TYPE 0x60// Read the 8 most significant bits// of the AD conversion resultunsigned char read_adc(unsigned char adc_input){ADMUX=adc_input|ADC_VREF_TYPE;// Start the AD conversionADCSRA|=0x40;// Wait for the AD conversion to completewhile ((ADCSRA & 0x10)==0);ADCSRA|=0x10;
99
return ADCH;}// Declare your global variables here
void main(void){..................................................................................
.........................................
.........................................lcd_init(16);lcd_clear();lcd_gotoxy(0,0);lcd_putsf("Latihan Prgm ADC");delay_ms(50);while (1)
{// Place your code hereadc=read_adc(0);lcd_clear();sprintf(nilai,"nilai ADC=%d",adc);lcd_gotoxy(0,1);lcd_puts(nilai);delay_ms(300);};}
8. Kompilasi download dan perhatikan hasilnya pada
LCD dengan memutar potensiometer.
9. Perhatikan bagian program berikut ini :
#define ADC_VREF_TYPE 0x60// Read the 8 most significant bits// of the AD conversion resultunsigned char read_adc(unsigned char adc_input){ADMUX=adc_input|ADC_VREF_TYPE;// Start the AD conversionADCSRA|=0x40;// Wait for the AD conversion to completewhile ((ADCSRA & 0x10)==0);ADCSRA|=0x10;return ADCH;}
Blok-blok diatas adalah inisialisasi dan prosedur baca ADC yang dibentuk oleh
codevision. Untuk membaca ADC channel yang lain cukup dengan mengubah
instruksi menjadi seperti berikut :
data_adc=read_adc(1) ; //membaca ADC dichanel 1
100
10. Ukur
menggunakan volt meter nilai tegangan pada kaki no dua potensio terhadap
ground, ambil 5 angka pengukuran, lengkapi tabel berikut:
NO TEGANGAN KAKI 2POTENSIO (VOLT)
NILAI YANGTAMPIL PADA LCD
KETERANGAN
1 123 2,545
Analisa
1. Bagaima
nakah hubungan antara nilai tegangan potensio dengan data yang tampil pada
LCD?
2. Berapaka
h tegangan maksimal dan nilai maksimal yang muncul pada LCD? Mengapa
demikian?
3. Ulangi
langkah 2 -8, hanya untuk langkah no 5 jangan memberikan tanda centang
pada opsi Use 8 bits, perhatikan data yang muncul pada LCD, adakah
perbedaan? Mengapa demikian?
4. Setelah
melalukan langkah 13, Berapakah tegangan maksimal dan nilai maksimal
yang muncul pada LCD? Mengapa demikian?
5. Manakah
yang lebih presisi, pada saat memberikan tanda centang pada opsi Use 8 bits
atau tidak memberikan tanda centang pada opsi Use 8 bits ? mengapa
demikian?
Latihan
1. Perhatika
n gambar rangkaian berikut
101
PB0PB1
PB3PB2
PB5PB4
PB7PB6
PB2(INT2/AIN0)3
XTAL212
XTAL113
PB1(T1)2
PD2(INT0)16
PD3(INT1)17
PD4(OC1B)18
PD5(OC1A)19
GND11 VCC10
PB7[SCK)8 PB6[MISO)7 PB5(MOSI)6 PA4(ADC4)
36
PA5(ADC5)35
PA6(ADC6)34
PA7(ADC7)33
AREF32
PA3(ADC3)37
PB0(XCK/T0)1
PB3(OC0/AIN1)4
PB4(SS)5
RESET9
PD0(RXD)14
PD1(TXD)15
PD6(ICP)20
PD7(OC2)21
PA0(ADC0)40
PA1(ADC1)39
PA2(ADC2)38
AGND31
AVCC30
PC7(TOSC2)29
PC6(TOSC1)28
PC527
PC426
PC325
PC224
PC1(SDA)23
PC0(SCL)22
IC2
ATMEGA8535-DIL40
PC6PC7
PC4PC5
PC1PC2PC3
PB1PB0
PC0
PB5PB4PB3PB2
PB7PB6
VCC
POT
1 2S2
VCC
R310k 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
J2LCD 16x2 Char
R4
POT
PC
2P
C1
PC
0
PC
7P
C6
PC
5P
C4
VCCVCC
X211.0592MHz
22
22
123456789
RESISTOR SIP 9
2. Buat
program mikrokontroler supaya dapat menampilkan data ADC dan nilai
tegangan pada LCD.
3. Berdasar
kan gambar rangkaian diatas, dengan menggunakan fungsi if rancang dan
buatlah program, agar jika nilai ADC lebih dari 128 LED PB4-PB7 menyala
dan LED pada PB0-PB3 padam, dan jika nilai ADC kurang dari 128 LED
PB0-PB3 menyala dan LED pada PB4-PB7 padam.
4. Berdasar
kan gambar rangkaian diatas, tampilkan nilai data ADC pada baris ke 1 LCD
dan Tampilkan nilai tegangan potensio (pelajari kembali konsep ADC) pada
baris LCD ke 2, yang kedunya harus berubah secara otomatis saat potensio
diputar-putar.
5. Tambahk
an program no 3, sehingga jika nilai tegangan potensio
Kurang dari 1V, lampu pada PB0 menyala, sisanya padam
Kurang dari 2V, lampu pada PB0 dan PB1 menyala, sisanya padam
Kurang dari 3V, lampu pada PB0 –PB2 menyala, sisanya padam
Kurang dari 4V, lampu pada PB0 –PB3 menyala, sisanya padam
Kurang dari 5V, lampu pada PB0 –PB4 menyala, sisanya padam
102
3. Rangkuman
1)ADC kependekan dari Analog to Digital Converter
2)Sinyal analog memiliki keadaan yang tak terbatas, sedangkan sinyal digital
hanya memiliki dua keadaan yaitu high dan low.
3)ADC berfungsi merubah sinyal analog menjadi data digital
4)Semakin tinggi resolusi ADC, semakin sensitif ADC tersebut terhadap
perubahan tegangan input yang sangat kecil/sedikit.
5)Semakin tinggi frekuensi sampling/clock ADC, semakin akurat konversi
data ADC.
6)Resulusi ADC ATMega 8535 adalah 8 bit dan maksimal 10bit.
7)Ukuran bit ADC menentukan nilai maksimal data ADC
8)Angka maksimal data ADC adalah 2n dengan n adalah ukuran bit
ADC,data maksimal ADC 8 bit adalah 28 (256),.
9)Register ADMUX, ADCSRA, dan SFIOR pada Atmega8335 harus diatur
sedemikian rupa agar ADC dapat difungsikan
10) Maksimal tegangan input ADC = tegangan referensi ADC
11) Data digital hasil konversi akan mencapaui saturasi (jenuh/ tidak bisa
naik lagi) terjadi saat tegangan input ADC = tegangan referensi yang
diberikan.
12) Tegangan referensi ADC pada mikrokontrol Atmega8535 adalah PIN
AVCC atau PIN AREF
13) Agar ADC berfungsi dengan baik ADC harus memiliki tegangan
referensi.
14) Persamaan konversi data ADC dapat dituliskan sebagai Tegangan =
(Data Terbaca / Nilai Max Data) * Tegangan referensi
103
4. Evalusi
Diketahui sebuah system mikrokontroler memiliki rangkaian seprti pada
gambar dibawah:
PB0PB1
PB3PB2
PB5PB4
PB7PB6
PB2(INT2/AIN0)3
XTAL212
XTAL113
PB1(T1)2
PD2(INT0)16
PD3(INT1)17
PD4(OC1B)18
PD5(OC1A)19
GND11 VCC10
PB7[SCK)8 PB6[MISO)7 PB5(MOSI)6 PA4(ADC4)
36
PA5(ADC5)35
PA6(ADC6)34
PA7(ADC7)33
AREF32
PA3(ADC3)37
PB0(XCK/T0)1
PB3(OC0/AIN1)4
PB4(SS)5
RESET9
PD0(RXD)14
PD1(TXD)15
PD6(ICP)20
PD7(OC2)21
PA0(ADC0)40
PA1(ADC1)39
PA2(ADC2)38
AGND31
AVCC30
PC7(TOSC2)29
PC6(TOSC1)28
PC527
PC426
PC325
PC224
PC1(SDA)23
PC0(SCL)22
IC2
ATMEGA8535-DIL40
PC6PC7
PC4PC5
PC1PC2PC3
PB1PB0
PC0
PB5PB4PB3PB2
PB7PB6
VCC
POT
1 2S2
VCC
R310k 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
J2LCD 16x2 Char
R4
POT
PC
2P
C1
PC
0
PC
7P
C6
PC
5P
C4
VCCVCC
X211.0592MHz
22
22
123456789
RESISTOR SIP 9
5. Tugas:
Berdasarkan rangkaian diatas, buat program agar :
1. Pada baris LCD 1, tampil karakter “Pembacaan Data”, yang harus tampil secara
posisi center
2. Pada baris LCD 2, tampil data nilai data ADC
3. Keadaan awal semua LED padam, Jika nilai data ADC lebih dari 128, semua
LED menyala jika tidak semua LED padam
104
1. Tujuan Kegiatan Belajar 8 :
Setelah mempelajari kegiatan belajar 8, diharapkan anda dapat :
Mengetahui timer/counter yang terdapat pada mikrokontrol ATMega8535 Mengetahui cara kera dan feature timer/counter pada mikrokontrol ATMega8535 Mengetahui cara perhitungan waktu timer Melakukan penghitungan waktu timer Memprogram mikrontrol untuk aplikasi pewaktu Memprogram mikrontrol untuk aplikasi jam digital, menggunakan fungsi
interupsi timer
2. Uraian Materi
1)Timer/Counter
Timer/Counter pada mikrokontroler merupakan hal yang hampir sama,
dan pada dasarnya bekerja dengan cara yang sama yaitu menghitung, yang
membedakan antar keduanya adalah apa yang dihitungnya, jika berfungsi sebagi
timer maka yang dihitung adalah pulsa internal yang berasal dari internal
mikrokontroler itu sendiri atau denyut jantung mikrokontrol tersebut, dan jika
berfungsi sebagi counter maka yang dihitung adalah pulsa yang bersal dari luar
atau pada umumnya adalah membaca dan menghitung jumlah perubahan logika
dari tinggi ke rendah atau rendah ke tinggi pada PIN tertentu.
Pada mikrokontrol ATmega8535 atau Atmega16 ataupun Atmega32
terdapat 3 buah timer, yaitu Timer/Counter 0 (8 bit), Timer/Counter 1 (16 bit)
dan Timer/Counter 2 (8 bit).
Maksud dari jumlah bit pada timer/counter adalah maksimal jumlah
bilangan yang dapat dihitung, misalkan jika timer/counter 8 bit maka nilai
maksimal penghitungan adalah 28 = 256 bilangan dan jika timer/counter 16 bit
maka nilai maksimal penghitungan adalah 216 = 65536 bilangan.
Timer/counter ATmega 8535 ada 3, yaitu :
(1) Timer/counter 0
Timer/counter 0 adalah 8 bit timer/counter dengan fitur sebagai berikut :
a.8 bit Timer/Counter 1 kanal.
b. Auto reload, yaitu timer akan dinolkan saat match compare.
KEGIATAN BELAJAR 8
105
c.Dapat menghasilkan pulsa PWM dengan glich free
d. Frequence generator.
e.Prescaler 10 bit untuk timer
f. Membangkitkan interupsi saat timer overflow dan atau match compare.
(2) Timer/counter 1
Timer/counter 1 adalah 16 bit timer/counter dengan fitur sebagai berikut :
a.16 bit Timer atau counter
b. Memiliki 2 compare unit
c.Memiliki 2 register pembanding
d. Memiliki 1 input capture unit
e.Auto reload,timer akan dinolkan saat match compare
f. Dapat menghasilkan pulsa PWM dengan glich free dan periode yang
bisa dirubah-ubah
g. Frequence generator
h. Memiliki 4 buah sumber interupsi, yaitu TOV1,OCF1A,OCF1B dan
ICF1.
(3) Timer/counter 2
Timer/counter 0 adalah 8 bit timer/counter dengan fitur sebagai berikut :
a. 8 bit
Timer/Counter 1 kanal.
b. Auto
reload, yaitu timer akan dinolkan saat match compare.
c. Dapat
menghasilkan pulsa PWM dengan glich free
d. Frequenc
e generator.
e. Prescaler
10 bit untuk timer
f. Memban
gkitkan interupsi saat timer overflow dan atau match compare.
Setting register tidak kita lakukan saat penulisan program.kita
dapat langsung menyesetnya saat melakukannya dengan wizard new
106
project. Jadi untuk register-register yang berkenaan dengan timer/counter
tidak kita bahas.agar lebih jelas tentang register pada timer/counter,anda
dapat melihat data sheet ATmega 8535.
Cara menggunakan ketiga timer diatas adalah dengan menyetting
register dari masing-masing timer/counter yang bersangkutan.namun
karena kita menggunakan codevisian AVR. Setting timer atau counter
dilakukan saat pembuatan proyek baru dimulai.
2)PERHITUNGAN WAKTU TIMER
(1) Perhitungan untuk timer 8bit
TCNT = (1+FFh) - ( )
Di mana :
TCNT : Nilai timer (Hex)
fCLK : Frekuensi clock (crystal) yang digunakan (HZ)
TTimer : Waktu timer yang diinginkan (detik)
N : Presecaler (1,8,64,256,1024)
Jika digunakan frekuensi clock sebesar 11,059200, dan dipilih clock value
sebesar 43,200 KHz, maka preskalernya adalah 256, karena
11,059200/256 = 43,200
1+FFh : Nilai maksimum timer adalah FFh dan overflow saat FFh keooh
Contoh :
Sebuah Timer 8 bit ingin menghasilkan frekuensi 40KHz setiap kali
interupsi, dengan frekuensi clock sebesar 11,059200MHz Presecaler
yang dipilih adalah 8 (Freq 1382,400 KHz), maka perhitungannya adalah:
Frekuensi 40KHz, maka periodanya adalah
t = 1/f,
sehingga t = 1/40000
t = 0,000025 detik
TCNT = (1+FFh) - ( )
107
TCNT = (1+FFH) - ( )
TCNT = 100H – 35d
TCNT = 100H – 23H = DDH
Dengan demikian Nilai TCNT0 adalah DDH
(2) Perhitungan untuk Timer 16bit
TCNT = (1+FFFFh) - ( )
Di mana :
TCNT : Nilai timer (Hex)
fCLK : Frekuensi clock (crystal) yang digunakan (HZ)
TTimer : Waktu timer yang diinginkan (detik)
N : Presecaler (1,8,64,256,1024)
1+FFFFh : Nilai maksimum timer adalah FFFFh dan overflow saat FFFFhke ooooh
Contoh :
Diinginkan sebuah timer 16 bit berkerja selama 1 detik, dengan frekuensi
clock sebesar 11,059200 MHz dan presecaller 1024 maka diperoler nilai
TCNT sebesar :
TCNT = (1+FFFFh) - ( )
TCNT = 10000h – 10800d
TCNT = 10000h – 2A30h
TCNT = D5D0h
Dengan demikian, nilai TCNT1H = D5h dan TCNT1L = Doh
Maksimum waktu timer
Timer 16 bit AVR ATMega 16 dapat menghasilkan waktu tunda
maksimum sebesar 6,068055555 detik pada frekuensi 11,059200 MHz.
Dengan nilai maksimum FFFFh maka akan dihasilkan waktu timer selama:
108
FFFFh = ( )
6535 = (Ttimer x 10800)
Ttimer = 6,06805555555 s
3. Lembar Kerja
Percobaan I
Membuat program nyala dan padam led selama delay waktu 1s menggunakan 1
Timer (Timer 16 bit). PORTB sebagai output dihubungkan dengan LED.
Alat dan Bahan
1. Trainer Mirkorontroler AVR ATMega8535/16/32
1 Unit
2.......................................................................................... ISP
Downloader............................................................................................... 1 Unit
3.......................................................................................... Kompute
r ................................................................................................................. 1 Unit
4.......................................................................................... Software
pendukung (Codevision AVR & Proteus)................................................. 1 Lot
Keselamatan Kerja
1. Gunakan alas kaki (sandal karet) saat mengoperasikan komputer
2. Hindari memasang konektor downloader secara terbalik
3. Letakan peralatan ditempat yang aman dan mudah diamati
4. Operasikan Trainer mikrokontroler sesuai tegangan kerjanya
5. Operasikan komputer sesuai peruntukannya sesuai dengan prosedur
6. Matikan komputer sesuai dengan prosedur yang benar
Langkah Kerja
1. Gambar rangkaian yang akan dibuat programnya sebagai berikut
109
PB2(INT2/AIN0)3
XTAL212
XTAL113
PB1(T1)2
PD2(INT0)16
PD3(INT1)17
PD4(OC1B)18
PD5(OC1A)19
GND11 VCC10
PB7[SCK)8 PB6[MISO)7 PB5(MOSI)6 PA4(ADC4)
36
PA5(ADC5)35
PA6(ADC6)34
PA7(ADC7)33
AREF32
PA3(ADC3)37
PB0(XCK/T0)1
PB3(OC0/AIN1)4
PB4(SS)5
RESET9
PD0(RXD)14
PD1(TXD)15
PD6(ICP)20
PD7(OC2)21
PA0(ADC0)40
PA1(ADC1)39
PA2(ADC2)38
AGND31
AVCC30
PC7(TOSC2)29
PC6(TOSC1)28
PC527
PC426
PC325
PC224
PC1(SDA)23
PC0(SCL)22
IC1
ATMEGA8535-DIL40
X1
C1
C2
R1
VCC
VCC
12
1212
12
1212
1212
1 21 21 21 21 21 21 21 2
Gambar 7.1 Digaram skematik percobaan 1
2. Buat project baru ,pilih Chip sesuai dengan tipe chip pada trainer, atur frekuensi
clock pada 11,0592MHz, atur PORTB sebagai output dengan keadaan awal nol,
pindahkan ke TAB timer1 dan lakukan konfigurasi seperti pada gambar dibawah
ini
Gambar 7.2 Konfigurasi Timer 1
3. Generate dan save, simpan dengan nama percobaan timer
4. Lengkapi program seperti pada listing berikut
#include <mega8535.h>
110
bit ciri; // variabel global untuk flag timer
// Timer 1 overflow interrupt service routineinterrupt [TIM1_OVF] void timer1_ovf_isr(void){// Reinitialize Timer 1 valueTCNT1H=0xD5;TCNT1L=0xD0;// Place your code here
if(ciri==1) // periksa ciri{PORTB=0xff; // jika ciri = 1 (led Menyala)ciri =0; // clear ciri}else{PORTB=0x00; // jika ciri = 0 (led Padam)ciri =1; // set ciri}
}// Declare your global variables here
void main(void)............................................................................// Global enable interrupts#asm (“sei”)ciri =0; // kondisi awal ciri berlogika 0while (1){//place your code here
};}
5. Kompilasi dan download, perhatikan hasilnya,
Analisa
6. Hilangkan perintah TCNT1H=0xD5 dan TCNT1H=0xD0, kompilasi dan
download apa yang terjadi? Adakah pengaruhnya?
7. Kembalikan program seperti semula, pindahkan perintah TCNT1H=0xD5 dan
TCNT1H=0xD0, kedalam fungsi wahile(1), kompilasi dan download apa yang
terjadi? Adakah pengaruhnya?
8. Kembalikan program seperti semula, dan hilangkan perintah #asm (“sei”)
kompilasi dan download apa yang terjadi? Adakah pengaruhnya?
9. Kembalikan program seperti semula, rubah kondisi awal ciri menjadi logika 1
kompilasi dan download apa yang terjadi? Adakah pengaruhnya?
Kesimpulan Secara Umum :
111
Percobaan II
Membuat tampilan program untuk menampilkan jam : menit : detik pada LCD 2X16,
LCD dihubungkan ke PORT C. Gunakan Compare Match Interrupt, kristal
11.059200 MHz/8 = 1382.400 kHz. Register OCR=0x96, sehingga periodenya
96h = ( )
6535 = (Ttimer x 1382400)
Ttimer = 1,0850694.10-4 = 108,50694.10-6 s = 100 us
Periodenya sekitar 100 us, jadi agar setara 1 detik harus dikali 10000.
Alat dan Bahan
1.......................................................................................... Trainer
Mirkorontroler AVR ATMega8535/16/32................................................ 1 Unit
2.......................................................................................... ISP
Downloader............................................................................................... 1 Unit
3.......................................................................................... Kompute
r ................................................................................................................. 1 Unit
4. Software pendukung (Codevision AVR & Proteus)
1 Lot
Keselamatan Kerja
1. Gunakan alas kaki (sandal karet) saat mengoperasikan komputer
2. Hindari memasang konektor downloader secara terbalik
3. Letakan peralatan ditempat yang aman dan mudah diamati
4. Operasikan Trainer mikrokontroler sesuai tegangan kerjanya
5. Operasikan komputer sesuai peruntukannya sesuai dengan prosedur
6. Matikan komputer sesuai dengan prosedur yang benar
Langkah Kerja
1. Gambar rangkaian yang akan dibuat programnya sebagai berikut
112
PB0PB1
PB3PB2
PB5PB4
PB7PB6
PB2(INT2/AIN0)3
XTAL212
XTAL113
PB1(T1)2
PD2(INT0)16
PD3(INT1)17
PD4(OC1B)18
PD5(OC1A)19
GND11 VCC10
PB7[SCK)8 PB6[MISO)7 PB5(MOSI)6 PA4(ADC4)
36
PA5(ADC5)35
PA6(ADC6)34
PA7(ADC7)33
AREF32
PA3(ADC3)37
PB0(XCK/T0)1
PB3(OC0/AIN1)4
PB4(SS)5
RESET9
PD0(RXD)14
PD1(TXD)15
PD6(ICP)20
PD7(OC2)21
PA0(ADC0)40
PA1(ADC1)39
PA2(ADC2)38
AGND31
AVCC30
PC7(TOSC2)29
PC6(TOSC1)28
PC527
PC426
PC325
PC224
PC1(SDA)23
PC0(SCL)22
IC2
ATMEGA8535-DIL40
PC6PC7
PC4PC5
PC1PC2PC3
PB1PB0
PC0
PB5PB4PB3PB2
PB7PB6
VCC
POT
1 2S2
VCC
R310k 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
J2LCD 16x2 Char
R4
POT
PC
2P
C1
PC
0
PC
7P
C6
PC
5P
C4
VCCVCC
X211.0592MHz
22
22
123456789
RESISTOR SIP 9
Gambar 7.3 Konfigurasi Timer 2
2. Buat project baru ,pilih Chip sesuai dengan tipe chip pada trainer, atur frekuensi
clock pada 11,0592MHz, atur PORTB sebagai output dengan keadaan awal nol,
pindahkan ke TAB timer2 dan lakukan konfigurasi seperti pada gambar halaman
berikut ini:
Gambar 7.4 konfigurasi timer 2 pada CodeWizard
3. Generate dan save, simpan dengan nama percobaan timer
4. Lengkapi program seperti pada listing berikut
#include <mega8535.h>#include <stdlib.h>
// Alphanumeric LCD Module functions#asm
.equ __lcd_port=0x15 ;PORTC
113
#endasm#include <lcd.h>unsigned int kali=0,detik=0,menit=0,jam=0;unsigned char cdetik[10],cmenit[10],cjam[10];
// Timer 2 output compare interrupt service routineinterrupt [TIM2_COMP] void timer2_comp_isr(void){// Place your code hereTCNT2=0;//Jika sudah compare match, set awal lagiif(++kali==10000)//periksa apakah sudah mencapai 10.000 kaliinterupsi timer2{if (++detik==60)
{detik=0;lcd_clear();if (++menit==60)
{menit=0;lcd_clear();
if (++jam==24){jam==0;lcd_clear();
}}
}
kali=0;itoa(detik,cdetik);// mengubah integer detik jadi karakterpd string cdetik
itoa(menit,cmenit);itoa(jam,cjam);lcd_gotoxy(0,0);lcd_putsf("*Jam Digital Ku*");lcd_gotoxy(9,1);lcd_putsf(":");lcd_gotoxy(10,1);lcd_puts(cdetik);lcd_gotoxy(6,1);lcd_putsf(":");lcd_gotoxy(7,1);lcd_puts(cmenit);lcd_gotoxy(4,1);lcd_puts(cjam);}
}// Declare your global variables here
void main(void){............................................While(1)
{//Place your code here
}}
5. Kompilasi dan download, perhatikan hasilnya,
114
Analisa
6. Hilangkan perintah #include<stdlib.h>, kompilasi dan download apa yang
terjadi? Adakah pengaruhnya?
7. Kembalikan program seperti semula, dan hilangkan perintah kali=0 kompilasi
dan download apa yang terjadi? Adakah pengaruhnya?
8. Kembalikan program seperti semula, dan hilangkan semua perintah yang
mengandung itoa kompilasi dan download apa yang terjadi? Adakah
pengaruhnya?
9. Berapakah seharusnya nilai perioda timer yang didapat jika nilai clocknya adalah
11.0592/1024?
10.Tambahkan 4 buah fungsi tombol untuk pengaturan kalibrasi jam dan menit,
bagaimanakah programnya?
Latihan
Modifikasi program jam diatas sehingga memiliki tombol UP, DOWN, SET, MENU
untuk kalibrasi/pengaturan jam
Rangkuman
1. Terdapat tiga buah timer/counter pada mikrokontrol ATMega8535, yaitu Timer 0,
Timer 1, Timer 2
2. Timer 0 kapasitas 8 bit, Timer 1 kapasitas 16 bit, Timer 2 kapasitas 8 bit
3. Cara kerja timer adalah menghitung clock dari mikrokontrol, sedangkan counter
menghitung clock/pulsa yang berasal dari luar mikrokontrol.
4. Lama pewaktuan mengguanakanTimer sangat dipengaruhi oleh nilai clock dari
mikrokontrol ATMega8535
5. Overflow akan terjadi jika timer menghitung melebihi kapasitas kemampuan
timer, jika timer 8 bit maka maksimal akan menghitung sebanyak 28 atau 256 kali
atau dalam range 0 -255
6. Jika terjadi overflow nilai timer akan kembali menjadi nol, dan mulai mnghitung
lagi dari nol
Kesimpulan Secara Umum :
115
7. Overflow interupt yaitu interupsi yang dilaksanakan jika terjadi overflow
8. Compare match interupt yaitu interupsi yang dilaksanakan jika nilai perhitungan
timer sama dengan nilai compare
9. Itoa digunakan untuk mengubah bilangan bentuk integermenjadi bentuk char
1. Tujuan Kegiatan Belajar 9 :
Setelah mempelajari kegiatan belajar 9, diharapkan anda dapat :
Mengetahui pengerttian Pulse Witdh Modulation (PWM)
Mengetahui fungsi dan aplikasi Pulse Witdh Modulation (PWM)
Memahami konsep dasar cara kerja Pulse Witdh Modulation (PWM)
Mengatur register mikrokontrol untuk untuk aplikasi pemrograman PulseWitdh Modulation (PWM)
Memprogram mikrokontrol untuk aplikasi pengaturan tegangan menggunakan(PWM)
2. Uraian Materi
1) Pengertian Pulse Witdh Modulation (PWM)
Pulse width modulation menggunakan gelombang kotak dengan duty circle
tertentu menghasilkan berbagai nilai rata-rata tegangan dari gelombang tersebut.
Pada umumnya PWM digunakan pada aplikasi pengaturan tegangan dengan
KEGIATAN BELAJAR 9
116
tujuan efektifitas daya. Jika kita menganggap bentuk gelombang kotak f(t)
dengan nilai batas bawah ymin,batas atas ymax dan duty circle D, seperti dapat
dilihat pada gambar dibawah ini.
Gambar 8.1 Gelombang kotak yang memiliki y max,ymin dan D
Nilai rata-rata dari bentuk gelombang diatas adalah :
Jika f(t) adalah gelombang kotak, maka nilai ymax adalah dari 0 < t < D.T dan nilai
ymin dari D.T < t < T.dari pernyataan diatas didapat :
Persamaan diatas dapat disederhankan dalam berbagai kasus dimana ymin=0
sehingga kita mendapatkan bentuk persamaan akhir y= D. ymax dari persamaan
ini jelas bahwa nilai rata-rata dari sinyal (y) secara langsung bergantung pada
duty circle D.
Gambar 8.2 Duty Circle PWM
2) Hubungan antara duty circle dengan nilai rata-rata tegangan
Duty circle menyatakan presentase keadaan logika high (pulse) dalam satu
periode sinyal.satu siklus diawali oleh transisi low to high dari sinyal dan berakhir
pada transisi berikutnya. Selama satu siklus, jika waktu sinyal pada keadaan high
sama dengan low maka dikatakan sinyal mempunyai dutycircle 50%.
117
Gambar 8.3 duty circle VS Register OCR pada past PWM
Semakin besar nilai data pada register OCR ,maka semakin tinggi juga nilai rata-
rata tegangan DC, contoh semakin besar dutycircle semakin terang nyala LED.
Contoh program pengaturan tegangan LED menggunakan PWM :
PORTB sebagai output,PORTA sebagai input,gunakan Timer 0 sebagai
pembangkit pulsa PWM.
LEMBAR KERJA
Percobaan I Aplikasi PWM pada LED
Memprogram mikrokontrol untuk mengatur terang redup nyala lampu LED
Alat dan Bahan
1. ...................................................................................... Trainer
Mirkorontroler AVR ATMega8535/16/32........................................... 1 Unit
2. ...................................................................................... ISP
Downloader.......................................................................................... 1 Unit
3. ...................................................................................... Komputer
1 Unit
4. Software pendukung (Codevision AVR & Proteus)
1 Lot
Keselamatan Kerja
1. Gunakan alas kaki (sandal karet) saat mengoperasikan komputer
2. Hindari memasang konektor downloader secara terbalik
3. Letakan peralatan ditempat yang aman dan mudah diamati
4. Operasikan Trainer mikrokontroler sesuai tegangan kerjanya
118
5. Operasikan komputer sesuai peruntukannya sesuai dengan prosedur
6. Matikan komputer sesuai dengan prosedur yang benar
Langkah Kerja
1. Gambar rangkaian yang akan dibuat programnya sebagai berikut
PB0PB1
PB3PB2
PB5PB4
PB7PB6
PB2(INT2/AIN0)3
XTAL212
XTAL113
PB1(T1)2
PD2(INT0)16
PD3(INT1)17
PD4(OC1B)18
PD5(OC1A)19
GND11 VCC10
PB7[SCK)8 PB6[MISO)7 PB5(MOSI)6 PA4(ADC4)
36
PA5(ADC5)35
PA6(ADC6)34
PA7(ADC7)33
AREF32
PA3(ADC3)37
PB0(XCK/T0)1
PB3(OC0/AIN1)4
PB4(SS)5
RESET9
PD0(RXD)14
PD1(TXD)15
PD6(ICP)20
PD7(OC2)21
PA0(ADC0)40
PA1(ADC1)39
PA2(ADC2)38
AGND31
AVCC30
PC7(TOSC2)29
PC6(TOSC1)28
PC527
PC426
PC325
PC224
PC1(SDA)23
PC0(SCL)22
IC2
ATMEGA8535-DIL40
PC6PC7
PC4PC5
PC1PC2PC3
PB1PB0
PC0
PB5PB4PB3PB2
PB7PB6
VCC
POT
1 2S2
VCC
R310k 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
J2LCD 16x2 Char
R4
POT
PC
2P
C1
PC
0
PC
7P
C6
PC
5P
C4
VCCVCC
X211.0592MHz
22
22
123456789
RESISTOR SIP 9
Gambar 8.4 Gambar percobaan PWM
2. Buat
program menggunakan baru, dengan clock sebesar 11.059200MHz, Chip
menggunakan ATMega8535 atau sesuai dengan mikrokontrol yang digunakan,
dan atur PORTB.3 sebagai output.
3. Atur
timer 0 dengan clock value 11.059200, mode Fast PWM top = FFh, out put
Non-Inverted PWM, sehingga seperti tampilan pada gambar dibawah ini
119
Gambar 8.4 pengaturan PWM melalui Code Wizard
4. Lengkapi
listing program sehingga seperti berikut :
.................
.................
#include <mega8535.h>#include <delay.h>Unsigned char a;......................Void main (void){................................................While (1){OCR0=a;delay_ms(100);a=a+5;}
}
5. Kompilas
i dan perhatikan nyala LED.
120
Analisa
1. Ganti
perintah a=a+5; dengan a=a+10; atau coba dengan angka lain, kompilasi dan
perhatikan reaksi pada LED
2. Ganti
perintah OCR0=a; dengan OCR0=10 , OCR0=90, OCR0=200, atau coba
dengan angka lain, kompilasi dan perhatikan reaksi pada LED
3. Apa yang
terjadi jika perintah OCR0=a; dimatikan?
4. Jelaskan
fungsi dari register OCR0 !
Percobaan II Aplikasi PWM menggunakan interupsi Timer
Memprogram mikrokontrol untuk mengatur terang redup nyala lampu LED
Alat dan Bahan
1. ....................................................................................... Trainer
Mirkorontroler AVR ATMega8535/16/32 ............................................. 1 Unit
2. ....................................................................................... ISP
Downloader ............................................................................................ 1 Unit
3. ....................................................................................... Kompute
r............................................................................................................... 1 Unit
4. Software pendukung (Codevision AVR & Proteus)
1 Lot
Keselamatan Kerja
1. Gunakan alas kaki (sandal karet) saat mengoperasikan komputer
2. Hindari memasang konektor downloader secara terbalik
3. Letakan peralatan ditempat yang aman dan mudah diamati
4. Operasikan Trainer mikrokontroler sesuai tegangan kerjanya
5. Operasikan komputer sesuai peruntukannya sesuai dengan prosedur
6. Matikan komputer sesuai dengan prosedur yang benar
Langkah Kerja
121
1. Gambar rangkaian yang akan dibuat programnya sama seperti percobaan
sebelumnya (gambar 8.4).
2. Buat
program menggunakan baru, dengan clock sebesar 11.059200MHz, Chip
menggunakan ATMega8535 atau sesuai dengan mikrokontrol yang digunakan,
dan atur semua PORTB sebagai output dengan keadaan awal nol.
3. Atur
timer 0 dengan clock value 11.059200, mode Normal top = FFh, dengan
overflow interupt dicentang, sehingga seperti tampilan pada gambar halaman
berikut ini:
Gambar 8.5 pengaturan interupt timer 0
4. Lengkapi
listing program sehingga seperti berikut :
.................
.................
#include <mega8535.h>#include <delay.h>Unsigned char a,x,nilai;
// Timer 0 overflow interrupt service routineinterrupt [TIM0_OVF] void timer0_ovf_isr(void){// Place your code here
122
x++;if(x<nilai) {PORTB.0=1} else {PORTB.0=0;}
}
............
..........Void main (void){................................................
While (1){nilai=a;delay_ms(100);a=a+5;
}}
5. Kompilas
i dan perhatikan nyala LED.
6. Tambahk
an perintah pada interupsi timer0 overflow sehingga menjadi.
// Timer 0 overflow interrupt service routineinterrupt [TIM0_OVF] void timer0_ovf_isr(void){// Place your code herex++;if(x<nilai) {PORTB.0=1} else {PORTB.0=0;}if(x<nilai-30) {PORTB.1=1} else {PORTB.1=0;}if(x<nilai-60) {PORTB.2=1} else {PORTB.2=0;}
}
7. Kompilas
i dan perhatikan nyala LED.
123
1. Tujuan Kegiatan Belajar 10 :
Setelah mempelajari kegiatan belajar 10, diharapkan anda dapat :
Mengetahui sensor temperatur LM35 Mengetahui karakter dasar sensor temperatur LM35 Mengetahui teknik manipulasi data digital Memprogram mikrokontrol untuk aplikasi sensor temperatur LM35 Memprogram mikrokontrol untuk aplikasi kontrol temperatur
2. Uraian Materi
1)Sensor Temperatur LM 35
Sensor suhu LM35 merupakan komponen elektronika yang berfungsi
untuk mengubah besaran fisis yang berupa suhu menjadi besaran listrik berupa
tegangan. Sensor suhu LM35 memiliki parameter bahwa setiap kenaikan 1ºC
tegangan keluarannya naik sebesar 10mV dengan batas maksimal keluaran
sensor adalah 1,5 V pada suhu 150°C. Misalnya pada perancangan
menggunakan sensor suhu LM35 kita tentukan keluaran ADC mencapai full
KEGIATAN BELAJAR 10
124
scale pada saat suhu 100°C, sehingga saat suhu 100°C, nilai tegangan keluaran
sensor suhu lm35 adalah 1 V.
Tegangan keluaran transduser (10mV/°C x 100°C) = 1V.
Gambar 9.1 Bentuk Fisik LM 35
Pin 1 berfungsi sebagai sumber tegangan kerja dari LM35, pin 2 atau tengah
digunakan sebagai tegangan keluaran atau Vout dengan jangkauan kerja dari 0
Volt sampai dengan 1,5 Volt dengan tegangan operasi sensor LM35 yang dapat
digunakan antar 4 Volt sampai 30 Volt.
2)karakteristik dari sensor suhu LM35.
Berikut adalah karakteristik dari sensor temperatur LM35
• Memiliki sensitivitas suhu, dengan faktor skala linier antara tegangan dan
suhu 10 mVolt/ºC, sehingga dapat dikalibrasi langsung dalam celcius.
• Memiliki ketepatan atau akurasi kalibrasi yaitu 0,5ºC pada suhu 25 ºC
• Memiliki jangkauan maksimal operasi suhu antara -55 ºC sampai +150 ºC.
• Bekerja pada tegangan 4 sampai 30 volt.
• Memiliki arus rendah yaitu kurang dari 60 µA.
• Memiliki pemanasan sendiri yang rendah (low-heating) yaitu kurang dari 0,1
ºC pada udara diam.
• Memiliki impedansi keluaran yang rendah yaitu 0,1 W untuk beban 1 mA.
• Memiliki ketidaklinieran hanya sekitar ± ¼ ºC.
3)Deskripsi kerja
Prinsip kerja sistem pengukuran suhu menggunakan LM35 dapat di lihat dari
diagram box dibawah ini :
LM35Sistem
MikrokontolerDisplay/Aktuator
125
Gambar 9.2
diagram BOX Sistem pengukur suhu menggunakan Sensor LM35
Selama prosesnya, pengukuran suhu melakukan tiga operasi utama diantaranya:
1. Sensor suhu LM35 berfungsi untuk mengubah besaran fisis yang berupa
suhu menjadi besaran elektris tegangan. Sensor suhu LM35 memiliki
parameter bahwa setiap kenaikan 1ºC tegangan keluarannya naik sebesar
10mV.
2. Data sensor suhu berupa sinyal analog kemudian di konversi menjadi data
digital melalui Analog to Digital Converter (ADC) pada mikrokontroler.
Data digital diolah oleh mikrokontroler sebagai pusat pengendali, dan
menjalankan perintah sesuai dengan program yang diberikan
3. Hasil pengelolaan informasi tersebut kemudian ditampilkan menggunakan
display LCD.
Untuk memperoleh persamaan/rumus konversi dari data ke temperatur maka
dapat diperoleh dengan cara sebagai berikut:
• ADC yang digunakan 8 bit, sehingga akan diperoleh range 0 – 255 (256
bilangan) dari 28
• Resolusi LM35 adalah 10mV/0C
• Sehingga besar tegangan yang diperlukan untuk setiap perubahan nilai data
sebanyak 1 angka adalah : 5V/255 = 0,0196 V
• Dengan demikian data akan berubah sebanyak satu angka jika terjadi
perubahan tegangan sebesar 0,0196V pada input ADC, misal dari 1 ke 2 atau
4 ke 5 atau dari 100 ke 99 memerlukan perubahan tegangan sebesar 0,0196V
Untuk mempermudah konversi maka data yang ada perlu dikonversi menjadi
nilai tegangan, dengan persamaan:
Tegangan = Data_terbaca x 0,0196
Dimana :
Tegangan dalam satuan volt
Data_terbaca adalah nilai data ADC
0,0196 konstanta yang diperoleh dari 5/255, karena ADC nya 8 bit
126
Karena sensor LM35 resolusinya dalam mili volt, sehingga persamaan diatas
perlu dirubah menjadi milivolt, sehingga:
Tegangan = Data_terbaca x 0,0196 x 1000 (dalam milivolt)
Sehingga menjadi
Tegangan = Data_terbaca x 19,6 (dalam milivolt)
Karena untuk menjadi 1 derajat perlu 10mV sehingga konversi dalam derajat
adalah:0C = Data_terbaca x 19,6 /10
Sehingga
Derajat Celcius = data_terbaca x 1,96
Untuk lebih memahami maka coba lakukan percobaan berikut
Lembar Kerja I
Alat dan Bahan
1. Trainer Mirkorontroler AVR ATMega8535/16/32
1 Unit
2.......................................................................................... ISP
Downloader............................................................................................... 1 Unit
3.......................................................................................... Kompute
r ................................................................................................................. 1 Unit
4. Software pendukung (Codevision AVR & Proteus)
1 Lot
Keselamatan Kerja
1. Gunakan alas kaki (sandal karet) saat mengoperasikan komputer
2. Hindari memasang konektor downloader secara terbalik
3. Letakan peralatan ditempat yang aman dan mudah diamati
4. Operasikan Trainer mikrokontroler sesuai tegangan kerjanya
5. Operasikan komputer sesuai peruntukannya sesuai dengan prosedur
6. Matikan komputer sesuai dengan prosedur yang benar
127
Percobaan 1
Judul: Pemrograman ADC
Langkah Kerja:
1. Gambar rangkaian yang akan dibuat programnya sebagai berikut
PB0PB1PB2PB3PB4PB5PB6PB7
PB2(INT2/AIN0)3
XTAL212
XTAL113
PB1(T1)2
PD2(INT0)16
PD3(INT1)17
PD4(OC1B)18
PD5(OC1A)19
GND11 VCC10
PB7[SCK)8 PB6[MISO)7 PB5(MOSI)6 PA4(ADC4)
36
PA5(ADC5)35
PA6(ADC6)34
PA7(ADC7)33
AREF32
PA3(ADC3)37
PB0(XCK/T0)1
PB3(OC0/AIN1)4
PB4(SS)5
RESET9
PD0(RXD)14
PD1(TXD)15
PD6(ICP)20
PD7(OC2)21
PA0(ADC0)40
PA1(ADC1)39
PA2(ADC2)38
AGND31
AVCC30
PC7(TOSC2)29
PC6(TOSC1)28
PC527
PC426
PC325
PC224
PC1(SDA)23
PC0(SCL)22
IC2
ATMEGA8535-DIL40
PC7PC6PC5PC4PC3PC2PC1PC0
PB0PB1PB2PB3PB4PB5PB6PB7
VCC
POT
1 2S2
VCC
R310k 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
J2LCD 16x2 Char
R4
POT
PC
0P
C1
PC
2
PC
6P
C7
PC
5P
C4
VCCVCC
X211.0592MHz
22
22
123456789
RESISTOR SIP 9
2. Buka program codevision AVR melalui menu Star|All Program || Codevision ||
Code Vision Avr C Compiler atau melalui deskop klik lambang Codevision.
3. Kemudian pillih File |New |pilih File Type
→project
4. Kemudian muncul tampilan konfirmasi, dan menanyakan apakah akan
menggunakan codewizard, pilih Yes.
5. Untuk setting IC(Chip yang digunakan) pilih Chip,
isi informasi sebagai berikut:
Setting clock pada 11.059200,chip ATmega 8535 atau disesuaikan dengan chip
yang digunakan dan PORTB sebagai output, LCD pada PORT C, Aktifkan ADC
8bit, referensi ADC AVCC Pin, Auto triger source NONE dan clock maksimal
128
(a) (b) (c)
Gambar 9.3(a) Inisialisasi PORTA sebagai Input(b) Inisialisasi PORTC sebagai Output LCD(c) Pengaktifan Fungsi ADC
6. Tambahkan interuksi listing program berikut ini :
#include <mega8535.h>unsigned char adc,bar[16];int suhu1,suhu;unsigned char x=0;
Void main(void){............................................while (1)
{// Place your code herelcd_clear();adc=read_adc(1);suhu1=adc;suhu=1.92*suhu1; // rumus sensor suhu
LM35sprintf(bar,"Data ADC:%d",adc);lcd_gotoxy(0,0);lcd_puts(bar);
sprintf(bar,"Temperatur:%dβC ",suhu);lcd_gotoxy(0,1);lcd_puts(bar);delay_ms(300);}
}
7. Kompilasi dan download, amati hasilnya
8. Atur PORTB sebagai output dengan keadaan awal padam, Rubah program
menjadi seperti berikut,
#include <mega8535.h>unsigned char adc,bar[16];int refernsi,suhu1,suhu;unsigned char x=0;
Void main(void){............................................referensi=25;while (1)
{// Place your code herelcd_clear();adc=read_adc(1);
129
suhu1=adc;suhu=1.92*suhu1; // rumus sensor suhu
LM35sprintf(bar,"Data ADC:%d",adc);lcd_gotoxy(0,0);lcd_puts(bar);
sprintf(bar,"Temperatur:%d βC",suhu);lcd_gotoxy(0,1);lcd_puts(bar);
if(suhu>referensi) {PORTB = 0xff;}else {PORTB = 0x00;}
}
}
9. Kompilasi dan download, beri stimulasi panas pada sensor LM35 amati
bagaimana perubahan data dan temperatur, serta pengaruhnya terhadap nyala
lampu.
Analisa
1. Rubah nilai referensi menjadi 28, beri stimulasi panas pada sensor LM35 amati
bagaimana perubahan data dan temperatur, serta pengaruhnya terhadap nyala
lampu, kompilasi dan download!
2. Rubah nilai referensi menjadi dengan nilai bebas antara 30 - 50, beri stimulasi
panas pada sensor LM35 amati bagaimana perubahan data dan temperatur, serta
pengaruhnya terhadap nyala lampu, kompilasi dan download
3. Apa pengaruh nilai referensi mengapa demikian?
4. Apakah nilai temperatur yang muncul sama dengan hasil nilai suhu=1.92*data
ADC ? jelaskan!
5. Perhatikan nilai temperatur yang muncul pada LCD !, termasuk bilangan
bulatkah? Jika iya bagaimana supaya yang tampil adalah bilangan pecahan?
Kesimpulan Secara Umum :
130
Latihan
1. Buat
program untuk mendeteksi temperatur menggunakan sensor temperatur LM35
berbasis mikrikontroler, menggunakan ADC 10bit, temperatur ditampilkan pada
LCD dalam satuan derajat celcius.
2. Buat
program untuk mendeteksi temperatur menggunakan sensor temperatur LM35
berbasis mikrikontroler, menggunakan ADC 10bit, temperatur ditampilkan pada
7 segment (tampilkan 2 digit bilangan tanpa koma).
1. Tujuan Kegiatan Belajar 11 :
Setelah mempelajari kegiatan belajar 11, diharapkan anda dapat :
Mengetahui konsep pembacaan pulsa Memahami konsep pembacaan transisi rendah/tinggi Mengetahui interupsi eksternal Mengetahui fungsi interupsi eksternal Memprogram mikrokontroler AVR untuk aplikasi interupsi eksternal Memprogram mikrokontroler AVR sebagai counter dengan memanfaatkan
fasilitas interupsi eksternal.
KEGIATAN BELAJAR 11
131
2. Uraian Materi
1)Konsep pembacaan sinyal
Sebuah counter atau penghitung berbasis elektronik seperti
mikrokontroler atau PLC pada umumnya menggunakan sensor atau sejenis
detektor untuk mengetahui adanya benda yang harus dihitung. Keluaran dari
deterktor atau sensor tersebut biasanya berbentuk besaran listrik yang berupa
arus atau tegangan sehingga lebih mudah jika akan diproses menggunakan
kontroler berbasis elektronik.
Jika kita menggunakan mikrokontrol untuk melakukan proses
penghitung agar lebih mudah adalah dengan mendeteksi kondisi logika dari PIN
mikrokontrol tersebut, dengan ketentuan bahwa PIN yang bersangkutan
terhubung dengan keluaran sensor atau detektor. Misalkan jika PIN berkondisi
logika rendah maka nilai variabel penghitung ditambah 1, dan jika PIN
berkondisi logika tingi maka nilai variabel penghitung tidak ditambah atau
dikurangi. Namun jika menggunakan cara tersebut sebagai penghitung masih
terdapat kelemahan, yaitu kondisi logika PIN secara terus menerus berlogika
rendah dikarenakan benda yang dihitung berhenti tepat didepan sensor, maka
secara otomatis proses penghitungan akan berlangsung terus menerus padahal
benda yang dihitung masih benda yang sama.
Sehingga untuk menghindari hal seperti diatas, pembacaan kondisi
logika PIN digantikan dengan pembacaan transisi perubahan logika, sehingga
dikenal istilah Falling edge (keadaan jatuh/ transisi tinggi ke rendah), atau
Rissing edge (keadaan naik/transisi rendah ke tinggi), falling edge adalah
keadaan dimana PIN berlogika tinggi tiba-tiba berlogika rendah (jatuh) dan
counter hanya akan menghitung 1 meskipun logikanya terus menerus dalam
keadaan rendah karena hanya membaca 1 perubahan tinggi ke rendah.
Sedangkan untuk rissing edge adalah keadaan dimana PIN berlogika i
rendah tiba-tiba berlogika tingg (naik) dan counter hanya akan menghitung 1
meskipun logikanya terus menerus dalam keadaan tinggi karena hanya
membaca 1 perubahan rendah ke tinggi, atau ada juga yang mendeteksi setiap
transisi perubahan baik itu naik atau turun, sehingga jika pada suatu PIN terjadi
perubahan dari tinggi ke rendah dan rendah ke tinggi secara berurutan maka
counter akan menghitung 2, karena terdapat dua perubahan kondidi pada PIN.
Untuk lebih jelasnya dapat dilihat pada gambar dibawah ini,
132
Gambar 10.1 Pembacaan kondisi Falling Edge
Gambar 10.2 Pembacaan kondisi Rissing Edge
Gambar 10.3 Pembacaan kondisi Setiap perubahan (Any Change)
2)Aplikasi External Interupt Request
Sebagaimana telah dibahas sebelumnya bahwa dalam mikrokontrol
terdapat fasilitas interupt yang bisa digunakan untuk menyela program utama
untuk mengerjakan program lain atau bahkan untuk menghentikan program
utama untuk sesaat. Terdapat 21 fasilitas interupsi pada mikrokontrol AVR
ATMega8535, namun jika semua sumber inetrupsi muncul secara bersamaan
maka akan dilakukan prioritas pelayanan, dengan reset adalah prioritas tertinggi
dan disusul kemudian oleh INT0 (Exteranal Request Interupt 0) dan INT1
(Exteranal Request Interupt 1) baru kemudian timer dan seterusnya.
INT0 (Exteranal Request Interupt 0), INT1 (Exteranal Request
Interupt 1) dan INT2 (Exteranal Request Interupt 2) merupakan salah satu
interupsi yang bersumber dari luar sistem mikrokontroler, tetapi yang memiliki
V
t
Perubahan yang terbaca/pulsa yang dihitung
High
Low
V
t
Perubahan yang terbaca/pulsa yang dihitung
High
Low
V
t
Perubahan yang terbaca/pulsa yang dihitung
High
Low
133
prioritas cukup tinggi adalah INT0 dan INT1 tabel berikut menunjukan kaki
atau pin yang dapat digunakan untuk eksternal interupt request.
Tabel 10.1 PIN interrupt
JENIS INTERUP PIN
INT0 PIND.2
INT1 PIND.3
INT2 PINB.2
Dengan melihat tabel 10.1 jika kita akan menggunakan sensor atau
saklar sebagai sumber interusi maka, kita hanya tinggal menghubungkan saja ke
salah satu dari tiga PIN diatas, Register register yang perlu disetting untuk
menggunakan fasilitas interrupt adalah MCUCR, MCUSR, GICR, dan GIFR.
Untuk lebih memahami fungsi dari intersupsi eksternal lakukan percobaan berikut,
Lembar Kerja
Percobaan I Aplikasi Eksternal interupt
Counter menggunakan interupsi eksternal
Alat dan Bahan
1. .......................................................................................... Trainer
Mirkorontroler AVR ATMega8535/16/32................................................ 1 Unit
2. .......................................................................................... ISP
Downloader............................................................................................... 1 Unit
134
3. .......................................................................................... Kompute
r ................................................................................................................. 1 Unit
4. Software pendukung (Codevision AVR & Proteus)
1 Lot
Keselamatan Kerja
1. Gunakan alas kaki (sandal karet) saat mengoperasikan komputer
2. Hindari memasang konektor downloader secara terbalik
3. Letakan peralatan ditempat yang aman dan mudah diamati
4. Operasikan Trainer mikrokontroler sesuai tegangan kerjanya
5. Operasikan komputer sesuai peruntukannya sesuai dengan prosedur
6. Matikan komputer sesuai dengan prosedur yang benar
Langkah Kerja
1. Gambar rangkaian yang akan dibuat programnya sebagai berikut
gndgndgndgndgnd
PB2(INT2/AIN0)3
XTAL212
XTAL113
PB1(T1)2
PD2(INT0)16
PD3(INT1)17
PD4(OC1B)18
PD5(OC1A)19
GND11 VCC10
PB7[SCK)8 PB6[MISO)7 PB5(MOSI)6 PA4(ADC4)
36
PA5(ADC5)35
PA6(ADC6)34
PA7(ADC7)33
AREF32
PA3(ADC3)37
PB0(XCK/T0)1
PB3(OC0/AIN1)4
PB4(SS)5
RESET9
PD0(RXD)14
PD1(TXD)15
PD6(ICP)20
PD7(OC2)21
PA0(ADC0)40
PA1(ADC1)39
PA2(ADC2)38
AGND31
AVCC30
PC7(TOSC2)29
PC6(TOSC1)28
PC527
PC426
PC325
PC224
PC1(SDA)23
PC0(SCL)22
IC2
ATMEGA8535-DIL40
pb2pb1pb0
pb4pb3
PB7PB6PB5
gndv ccrst
pd0
pd3pd2pd1
pd5pd4
pa1pa0
pd6
pa4pa3pa2
pa6pa5
gndarefpa7
pc6pc7
v cc
pc4pc5
pc1pc2pc3
pc0
X2
11.0592MHzC3
22p
C4
22p
pd7
gnd
12345678910111213141516
LCD116 CHAR
vcc
pc1pc0
pc2
pc5pc4
pc7pc6
v cc gnd
gnd
v cc1 3
2
R16VR 20K
1 23456789
C
R17
pb5pb5pb5pb5pb5pb5pb5pb5pb5pb5pb5pb5pb5pb5pb5pb5pb5pb5
pb1pb1pb1pb1pb1pb1pb1pb1pb1pb1pb1pb1pb1pb1pb1pb1pb1pb1pb1pb1pb1pb1pb1pb1pb1pb1pb1pb1pb1pb1pb2pb2pb2pb2pb2pb2pb2pb2pb2pb2pb2pb2pb2pb2pb2pb2pb2pb2pb2pb2pb2pb2pb2pb2pb2pb2pb2pb2pb2pb2
pb4pb4pb4pb4pb4pb4pb4pb4pb4pb4pb4pb4pb4pb4pb4pb4pb4pb4pb4pb4pb4pb4pb4pb4pb4pb4pb4pb4pb4pb4pb3pb3pb3pb3pb3pb3pb3pb3pb3pb3pb3pb3pb3pb3pb3pb3pb3pb3
pb7pb7pb7pb7pb7pb7pb7pb7pb7pb7pb7pb7pb7pb7pb7pb7pb7pb7pb6pb6pb6pb6pb6pb6pb6pb6pb6pb6pb6pb6pb6pb6pb6pb6pb6pb6
pb0pb0pb0pb0pb0pb0pb0pb0pb0pb0pb0pb0pb0pb0pb0pb0pb0pb0pb0pb0pb0pb0pb0pb0pb0pb0pb0pb0pb0pb012
D38
12
D40
12
D41
12
D42
12
D43
12
D44
12
D45
12
D46
21
54
VCC
Gambar 10.4 Rangakaian Percobaan I
2. Buat program menggunakan baru, dengan clock sebesar 11.059200MHz, Chip
menggunakan ATMega8535 atau sesuai dengan mikrokontrol yang digunakan, dan
atur semua PORTB sebagai output dengan keadaan awal nol, PORTD.2 input
dengan pullup internal aktif dan LCD pada PORTC
3. Hubungkan modul H-brigde motor driver ke PORTD trainer mikrokontroler.
4. Atur tab External IRQ dan berikan tanda centang pada INT0 Enabled dengan
mode Falling Edge
135
Gambar 10.5 interup pada codewizard
5. Generate save and exit. Simpan dengan nama file int_1.c, int_1.prj, int_1.cwp,
6. Lengkapi listing program seperti berikut
#include <mega16.h>#include <stdio.h>#include <delay.h>
unsigned char a, buf[16];
// Alphanumeric LCD Module functions#asm
.equ __lcd_port=0x15 ;PORTC#endasm#include <lcd.h>
// External Interrupt 0 service routineinterrupt [EXT_INT0] void ext_int0_isr(void){// Place your code herea++;
}
....................................
....................................
....................................#asm("sei")
while (1){// Place your code heresprintf(buf,"angka:%d",a);lcd_gotoxy(0,0);lcd_puts(buf);
};
7. Kompilasi,download dan perhatikan hasilnya pada LCD, halangi sensor dengan
kertas gelap kemudian lepas dan tutup kembali bagaimana reaksinya.
Analisa
1. Apa yang terjadi jika sensor tiba-tiba dihalangi tanpa dilepas penghalangnya?,
mengapa demikian?
136
2. Apa yang terjadi jika sensor sedang terhalangi tiba-tiba dilepas penghalangnya, dan
dibiarkan terbuka tanpa di halangi terus menerus?, mengapa demikian?
3. Berapakah maksimal angka hitungan yang muncul pada LCD? Mengapa demikian?
4. Manakah yang harus di ubah dari listing program diatas jika ingin menghitung
hingga 1023 pulsa?mengapa demikian?
Latihan
1. Buat program dengan memodifikasi program diatas, sehingga mikrokontrol hanya
menghitung 512 pulsa, dan setelah 512 hitungan kembali ke nol!
2. Buat program dengan memodifikasi program diatas, sehingga mikrokontrol hanya
menghitung 12 pulsa untuk varibel a, dan setelah 12 hitungan variabel a kembali ke
nol dan variabel b bertambah 1, maksimal hitungan variabel b adalah 10. Nilai kedua
variabel ditampilkan pada LCD.
Rangkuman
1. Falling edge hanya membaca perubahan pulsa pada transisi tinggi ke rendah
2. Rissing edge hanya membaca perubahan pulsa pada transisi rendah ke tinggi
3. Any change akan membaca setiap perubah transisi logika
4. INT0 dan INT1 adalah interupsi prioritas tertinggi setelah reset
5. Saat interupsi, program utama akan ditinggalkan, dan akan menjalahkan program
yang ditunjukan oleh vektor interupsi, dan akan kembali ke program utama jika
program interupsi selesai
6. INT0 dan INT1 sangat cocok untuk aplikasi counter
7. INT0 dan INT1 sangat cocok untuk mendekti perubahan transisi sinyal digital yang
tiba-tiba dan sangat cepat
Lembar Kerja I : Dasar Input Output
Alat dan Bahan
III. LEMBAR KERJA
137
1................................................................................................ Trainer
Mirkorontroler AVR ATMega8535/16/32 ....................................................... 1 Unit
2................................................................................................ ISP
Downloader ...................................................................................................... 1 Unit
3................................................................................................ Kompute
r ......................................................................................................................... 1 Unit
4................................................................................................ Software
pendukung (Codevision AVR & Proteus) ........................................................ 1 Lot
Keselamatan Kerja
1. Gunakan alas kaki (sandal karet) saat mengoperasikan
komputer
2. Hindari memasang konektor downloader secara terbalik
3. Letakan peralatan ditempat yang aman dan mudah
diamati
4. Operasikan Trainer mikrokontroler sesuai tegangan
kerjanya
5. Operasikan komputer sesuai peruntukannya sesuai
dengan prosedur
6. Matikan komputer sesuai dengan prosedur yang benar
Percobaan I
Judul : Dasar Input Output dan Penggunaan Kompilator
Langkah Kerja:
1. Rangkaikan LED seperti pada gambar dibawah ini
(skema sama seperti pada trainer)
138
PB2(INT2/AIN0)3
XTAL212
XTAL113
PB1(T1)2
PD2(INT0)16
PD3(INT1)17
PD4(OC1B)18
PD5(OC1A)19
GND11 VCC10
PB7[SCK)8 PB6[MISO)7 PB5(MOSI)6 PA4(ADC4)
36
PA5(ADC5)35
PA6(ADC6)34
PA7(ADC7)33
AREF32
PA3(ADC3)37
PB0(XCK/T0)1
PB3(OC0/AIN1)4
PB4(SS)5
RESET9
PD0(RXD)14
PD1(TXD)15
PD6(ICP)20
PD7(OC2)21
PA0(ADC0)40
PA1(ADC1)39
PA2(ADC2)38
AGND31
AVCC30
PC7(TOSC2)29
PC6(TOSC1)28
PC527
PC426
PC325
PC224
PC1(SDA)23
PC0(SCL)22
IC1
ATMEGA8535-DIL40
X1
C1
C2
R1
VCC
VCC
12
1212
12
1212
1212
1 21 21 21 21 21 21 21 2
Gambar 4.2 Diagram skematik Percobaan I
2. Buka program CodevisionAVR, klik menu FILE NEW Project YES hingga
muncul tampilan berikut
Gambar 4.3 Pengaturan Chip
3. Pilih ATmega 8535 (atau sesuai tipe yang digunakan) untuk chipnya dan setting
cloknya 11.059200 (atau sesuai dengan X-tall yang digunakan)
139
Gambar 4.2 Pengaturan register Input dan output
4. Atur untuk bagian PORT, pilih PORT A, Atur atur sebagai INPUT dan rubah Value
menjadi P (Pullup)
5. Atur Port B dan setting sebagai output dan value low (lihat gambar)
6. Klik File Generate,Save and Exit
7. Ikuti petunjuk penyimpanan file. Bila perlu ganti folder penyimpanannya.
8. Simpandengan nama project_pertama.c, project_pertama.prj dan project_pertama.cwp.
pada folder kelas dan nama anda masing-masing
9. Selanjutnya akan tampak layar dengan kerangka program, seperti terlihat pada gambar
halaman berikut ini:
140
Keterangan versiprogram danidentitas
Fungsi Pustaka
Awal Fungsi Utama
InisialisasiInput danOutput
141
Gambar 4.3 Bagan Program
InisialisasiTimer
InisialisasiTimer
InisialisasiInterupt
InisialisasiAnalogKomparator
Fungsi pengulangantak berhingga
142
10.Proses seting selesai dan setting I/O untuk PORT A sebagi Input terpullup dan PORT
B adalah sebagai output dengan kondisi Low.
11.Tambah kode berikut:
Void main (void){//declare your local variabel hereUnsigned char data; // lokal variabel..........
Tambahkan intruksi sehingga tampak seperti berikut :
............while (1)
{// Place your code heredata = PINA; //tambahkan interuksi iniPORTB = data;};}
12.Untuk proses mendownload bisa langsung kita lakukan dengan memilih menu project
make atau dengan mengklik icon namun sebelum itu kita harus
menyettingnya terlebih dahulu dengan memilih menu Project Configure
Aftermake Kemudian Klik Program The Chip OK, jika trainer sudah aktif,
downloader terpasang dengan benar, maka akan muncul tampilan seperti berikut:
Gambar 4.4 Proses Download
13.Jika terjadi error, tuliskan maksud dari pesan error tersebut dan sertakan solusinya
14.Tekan Tombol secara perlahan dan acak satu persatu, perhatikan LED dan amati catat
apa yang terjadi, pada Tabel berikut.
NO SAKLAR LED REAKSI LED1 PINA.0 PORTB.02 PINA.1 PORTB.13 PINA.2 PORTB.24 PINA.3 PORTB.35 PINA.4 PORTB.46 PINA.5 PORTB.57 PINA.6 PORTB.68 PINA.7 PORTB.7
143
15.Tuliskan Analisa program, Analisa error dan kesimpulan percobaan I pada kolom
berikut:
Analisa:
Kesimpulan:
144
Percobaan 2
Judul: Pemrograman PORT Secara byte dan bit
Langkah Kerja:
1. Rangkaikan LED seperti pada gambar dibawah ini (skema sama seperti pada
trainer)
PB2(INT2/AIN0)3
XTAL212
XTAL113
PB1(T1)2
PD2(INT0)16
PD3(INT1)17
PD4(OC1B)18
PD5(OC1A)19
GND11 VCC10
PB7[SCK)8 PB6[MISO)7 PB5(MOSI)6 PA4(ADC4)
36
PA5(ADC5)35
PA6(ADC6)34
PA7(ADC7)33
AREF32
PA3(ADC3)37
PB0(XCK/T0)1
PB3(OC0/AIN1)4
PB4(SS)5
RESET9
PD0(RXD)14
PD1(TXD)15
PD6(ICP)20
PD7(OC2)21
PA0(ADC0)40
PA1(ADC1)39
PA2(ADC2)38
AGND31
AVCC30
PC7(TOSC2)29
PC6(TOSC1)28
PC527
PC426
PC325
PC224
PC1(SDA)23
PC0(SCL)22
IC1
ATMEGA8535-DIL40
X1
C1
C2
R1
VCC
VCC
12
1212
12
1212
1212
1 21 21 21 21 21 21 21 2
Gambar 4.5 Diagram skematik latihan I
2. Buka program CodevisionAVR, klik menu FILE NEW Project YES
hingga muncul tampilan berikut
Gambar 4.6 Pengaturan Chip
3. Pilih ATmega 8535 (atau sesuai tipe yang digunakan) untuk chipnya dan setting
cloknya 11.059200 (atau sesuai dengan X-tall yang digunakan)
Gambar 4.7 Pengaturan Register Input dan Output
145
4. Atur untuk bagian PORT, pilih PORT A, Atur atur sebagai INPUT dan rubah
Value menjadi P (Pullup)
5. Atur Port B dan setting sebagai output dan value low (lihat gambar)
6. Klik File Generate,Save and Exit
7. Ikuti petunjuk penyimpanan file. Bila perlu ganti folder penyimpanannya.
8. Simpan dengan nama project_2.c, project_2.prj dan project_2.cwp. pada folder
kelas dan nama anda masing-masing
9. Tambahkan pustaka tunda dibagian header:
#include <mega8535.h> // blok header#include <delay.h> // tambahkan library delaydisini....................................Tambahkan interuksi berikut :void main(void){..........// Place your code here#asm {”cli”)
PORTB=0xFF;delay_ms(500); // memanggil delay dari librari
delay.PORTB=0XF0;delay_ms(500);
#asm(”sei”)};
}
10. Amati dan tuliskan apa yang terjadi pada led, pada kolom berikut
11. Buat project baru dengan nama project_3, dengan rangkaian, langkah kerja dan
inisialisasi sama seperti pada langkah 1-8.
Reaksi LED langkah 9:
146
12. Tambahkah kode berikut, kemudian kompilasi dan download
#include <mega8535.h>#include <delay.h>....................while (1)
{// Place your code herePORTB=0b01111111;delay_ms(200);PORTB=0b10111111;delay_ms(200);PORTB=0b11011111;delay_ms(200);PORTB=0b11101111;delay_ms(200);PORTB=0b11110111;delay_ms(200);PORTB=0b11111011;delay_ms(200);PORTB=0b11111101;delay_ms(200);PORTB=0b11111110;delay_ms(200);};
}13. Amati dan tuliskan apa yang terjadi pada led, pada kolom berikut
14. Buat project baru dengan nama project_4, dengan rangkaian, langkah kerja dan
inisialisasi sama seperti pada langkah 1-8.
15. Tambahkah kode berikut, kemudian kompilasi dan download
while (1){// Place your code herePORTB=0x7f;delay_ms(200);PORTB=0xbf;delay_ms(200);PORTB=0xdf;delay_ms(200);PORTB=0xef;delay_ms(200);PORTB=0xf7;delay_ms(200);PORTB=0xfb;delay_ms(200);PORTB=0xfd;delay_ms(200);PORTB=0xfe;delay_ms(200);};
}
16. Amati dan tuliskan reaksi LED pada kolom berikut
Reaksi LED langkah 12:
Reaksi LED langkah 15:
147
17. Matikan program pada langkah 15 tanpa menghapusnya, dan tambahkan kode
berikut:
while (1){// Place your code here/*PORTB=0x7f;delay_ms(200); blok program ini telah
mati danPORTB=0xbf;delay_ms(200); dianggap komentarPORTB=0xdf;delay_ms(200);PORTB=0xef;delay_ms(200);PORTB=0xf7;delay_ms(200);PORTB=0xfb;delay_ms(200);PORTB=0xfd;delay_ms(200);PORTB=0xfe;delay_ms(200);*/
PORTB=1;delay_ms(200); //blok program ini yangaktif
PORTB=2;delay_ms(200);PORTB=4;delay_ms(200);PORTB=8;delay_ms(200);PORTB=16;delay_ms(200);PORTB=32;delay_ms(200);PORTB=64;delay_ms(200);PORTB=128;delay_ms(200);
}
}
18. Amati dan tuliskan apa yang terjadi pada led, pada kolom berikut
Reaksi LED langkah 17:
148
19. Buat project baru dengan nama project_5, dengan rangkaian, langkah kerja dan
inisialisasi sama seperti pada langkah 1-8.
20. Tambahkah kode berikut, kemudian kompilasi dan download
#include <mega8535.h>#include <delay.h>
#define led0 PORTB.0#define led1 PORTB.3#define led2 PORTB.7
.............
.............
.............
.............
.............while (1)
{// Place your code hereled0=0;delay_ms(200);led0=1;delay_ms(200);led1=0;delay_ms(200);led1=1;delay_ms(200);led2=1;delay_ms(200);led2=0;delay_ms(200);};
}21. Rubah secara acak inisialisasi nomor bit pada PORTB, amati dan tuliskan reaksi
led pada kolom berikut:
22. Buat analisa, dan simpulkan maksud serta tujuan masing-masing program diatas
NOMOR PROGAM ANALISA KESIMPULAN
Langkah-9Project_2
Reaksi LED langkah 20:
149
NOMOR PROGAM ANALISA KESIMPULAN
Langkah-12Project_3
Langkah-15Project_4
Langkah-17Project_5
Langkah-20Project_5
150
Analisa Secara Umum/Keseluruhan:
Kesimpulan Secara Umum/Keseluruhan:
151
Percobaan 3
Judul : Intertfacing Saklar dan Pengenalan Looping
Langkah Kerja:
1. Rangkaikan LED seperti pada gambar dibawah ini
(skema sama seperti pada trainer)
PB2(INT2/AIN0)3
XTAL212
XTAL113
PB1(T1)2
PD2(INT0)16
PD3(INT1)17
PD4(OC1B)18
PD5(OC1A)19
GND11 VCC10
PB7[SCK)8 PB6[MISO)7 PB5(MOSI)6 PA4(ADC4)
36
PA5(ADC5)35
PA6(ADC6)34
PA7(ADC7)33
AREF32
PA3(ADC3)37
PB0(XCK/T0)1
PB3(OC0/AIN1)4
PB4(SS)5
RESET9
PD0(RXD)14
PD1(TXD)15
PD6(ICP)20
PD7(OC2)21
PA0(ADC0)40
PA1(ADC1)39
PA2(ADC2)38
AGND31
AVCC30
PC7(TOSC2)29
PC6(TOSC1)28
PC527
PC426
PC325
PC224
PC1(SDA)23
PC0(SCL)22
IC1
ATMEGA8535-DIL40
X1
C1
C2
R1
VCC
VCC
12
1212
12
1212
1212
1 21 21 21 21 21 21 21 2
Gambar 4.8 Diagram Skematik percobaan 3
2. Buka program CodevisionAVR, klik menu FILE NEW Project YES
hingga muncul tampilan berikut
Gambar 4.9 Pengaturan Chip
3. Pilih ATmega 8535 (atau sesuai tipe yang digunakan) untuk chipnya dan setting
cloknya 11.059200 (atau sesuai dengan X-tall yang digunakan)
Gambar 4.10 Pengaturan Register Input dan Output
152
4. Atur untuk bagian PORT, pilih PORT A, Atur atur sebagai INPUT dan rubah
Value menjadi P (Pullup)
5. Atur Port B dan setting sebagai output dan value low (lihat gambar)
6. Klik File Generate,Save and Exit
7. Ikuti petunjuk penyimpanan file. Bila perlu ganti folder penyimpanannya.
8. Simpan dengan nama project_6.c, project_6.prj dan project_6.cwp. pada folder
kelas dan nama anda masing-masing
9. Tambahkan pustaka tunda dibagian header dan satu buah variable bertipe integer
#include <mega8535.h>#include <delay.h>unsigned char hit;#define led0 PORTB.0#define led1 PORTB.1#define led2 PORTB.2
#define sw1 PINA.1#define sw2 PINA.2#define sw3 PINA.3#define sw4 PINA.4#define sw5 PINA.7.................................................................
while (1){
// Place your code hereawal:if (sw1==0) //jika saklar 1 ditekan
{PORTB=0x00;delay_ms(300); // 8 led led dimatikanPORTB=0xFF;delay_ms(300); // 8 led led dinyalakan}
if (sw2==0) //jika saklar 2 ditekan{PORTB=0x0F;delay_ms(300); //maka led plip-plopPORTB=0xF0;delay_ms(300);}
if (sw3==0) //jika saklar 7 ditekan{PORTB=0xAA;delay_ms(300); //maka LED blink-blinkPORTB=0x55;delay_ms(300);}
if (sw4==0) //jika sw4 ditekan{
while(1) //pengulangan talberhingga{for(hit=0;hit<10;hit++) // ulang sebanyak
10x{
led0=0;delay_ms(200);led0=1;delay_ms(200);if(sw5==0) //jika sw 5 ditekan
{
153
goto awal; //loncat ke labelawal
}}
for(hit=0;hit<10;hit++) // ulang sebanyak10x
{
led1=0;delay_ms(200);led1=1;delay_ms(200);if(sw5==0){goto awal;}}
}
}PORTB=0x00; //jika tidak maka led mati
};
10. Lengkapi, kompilasi dan download program diatas
11. Tekan saklar sw1-sw5 secara bergantian, perhatiakn apa yang terjadi, dan
lenglapi tabel berikut
No No Sw Reaksi LED
1 Sw1
2 Sw2
3 Sw3
4 Sw4
5 Sw5
12. Tandai baris program mana saja yang menunjukan looping !
13. Jelaskan perbedaan reaksi LED jika ditekan sw4 dengan jika ditekan sw1-3!
154
14. Tulisakan error yang terjadi pada saat kompilasi jelaskan maksud error tersebut
beserta solusinya, buat analisa dari program diatas, dan simpulkan
Analisa Secara Umum/Keseluruhan:
Kesimpulan Secara Umum/Keseluruhan:
155
Lembar Kerja II : Pemrograman Seven Segment
Alat dan Bahan
1. ............................................................................................ Trainer
Mirkorontroler AVR ATMega8535/16/32................................................... 1 Unit
2. ............................................................................................ ISP
Downloader.................................................................................................. 1 Unit
3. ............................................................................................ Kompu
ter ................................................................................................................. 1 Unit
4. ............................................................................................ Softwar
e pendukung (Codevision AVR & Proteus)................................................. 1 Lot
Keselamatan Kerja
1. Gunakan alas kaki (sandal karet) saat mengoperasikan komputer
2. Hindari memasang konektor downloader secara terbalik
3. Letakan peralatan ditempat yang aman dan mudah diamati
4. Operasikan Trainer mikrokontroler sesuai tegangan kerjanya
5. Operasikan komputer sesuai peruntukannya sesuai dengan prosedur
6. Matikan komputer sesuai dengan prosedur yang benar
Percobaan I
Judul : Menggunakan 7segment
Langkah Kerja:
1. Rangkaikan LED seperti pada gambar dibawah ini
(skema sama seperti pada trainer)
156
VCC
R2R
R3R
R4R
BA
R5R
CDEFGDP
COM
PD
4
PD
5
PD
6
PD
7
BA
EDC
DPGF
COM PB0
PB2PB2PB1PB1
PB5PB5PB4PB3
PB7PB6
CBA
FED
DPG
COM
CBA
ED
DPGF
COM PB0PB1PB1
PB3PB2PB2
PB6PB6PB5PB5PB5PB5PB4
PB7
PB0
PB2PB2PB1PB1
PB5PB5PB4PB3
PB7PB6
PB2(INT2/AIN0)3
XTAL212
XTAL113
PB1(T1)2
PD2(INT0)16
PD3(INT1)17
PD4(OC1B)18
PD5(OC1A)19
GND11 VCC10
PB7[SCK)8 PB6[MISO)7 PB5(MOSI)6 PA4(ADC4)
36
PA5(ADC5)35
PA6(ADC6)34
PA7(ADC7)33
AREF32
PA3(ADC3)37
PB0(XCK/T0)1
PB3(OC0/AIN1)4
PB4(SS)5
RESET9
PD0(RXD)14
PD1(TXD)15
PD6(ICP)20
PD7(OC2)21
PA0(ADC0)40
PA1(ADC1)39
PA2(ADC2)38
AGND31
AVCC30
PC7(TOSC2)29
PC6(TOSC1)28
PC527
PC426
PC325
PC224
PC1(SDA)23
PC0(SCL)22
IC1
ATMEGA8535-DIL40
PA0PA0PA1PA2PA3
PA5PA6PA7
PC0PC1
PA4
PC4PC5
PC7
PC2PC3
PB1PB0PB0
PC6
PB4PB5
PB7
PB2PB3
rstrst
PB6
PD1PD2PD3
PD7
PD4
PD0
VCCGND
GNDVCC
VCC
PD5PD5PD6PD6
X111.0592MHz
C1
22p
C2
22p
R1R
VCC
PB0PB1PB1PB2PB2PB3
PB5PB5PB4
PB7PB6
Q1PNP
Q2PNP
Q3PNP
Q4PNP
2. Buat data tampilan angka dengan melengkapi tabel berikut, untuk seven segment
common Anode. (Aktif LOW/Menyala jika data “0” (LOW) dengan common
Positif.
DISPLAYANGKA
DP G F E D C B ADATA DALAM
BINERDATA DALAM
HEX
0 1 1 0 0 0 0 0 0 0b1100 0000 0xC01 1 1 1 1 1 0 0 1 0b111110012 1 0 1 0 0 1 0 0 0b101001003456789
. (titik)
3. Buat data tampilan angka dengan melengkapi tabel berikut, untuk seven segment
common cathode. (Aktif High/Menyala jika data “1” (HIGH) dengan common
nol.
DISPLAYANGKA
DP G F E D C B ADATA DALAM
BINERDATA DALAM
HEX
01
157
23456789
. (titik)
4. Buka program codevision AVR melalui menu Star|All Program || Codevision ||
Code Vision Avr C Compiler atau melalui deskop klik lambang Codevision.
5. Kemudian pillih File |New |pilih File Type
→project
6. Kemudian muncul tampilan konfirmasi, dan menanyakan apakah akan
menggunakan codewizard, pilih Yes.
7. Atur setting chip pada ATMega8535 atau sesuai dengan chip yang digunakan,
dengan clock 11.059200MHz dengan PORTD dan PORTB sebagi output, dengan
keadaan awal nol.
8. Jika sudah menkonfigurasi project,pilih File |
Generate Save and Exit, sehingga akan tampil source code dalam bahasa C
9. setelah itu, kita tinggal menambahkan instruksi-
instruksi tambahan kedalam program yang sudah ada.
10. Lengkapi dengan listring dibawah ini.
..........#include <mega8535.h>#include <delay.h>..........while (1)
{PORTD=0;PORTB= 0b11000000; //menampilkan angka 0;Delay_ms(500);PORTB= 0b11111001; //menampilkan angka 1;Delay_ms(500);PORTB= 0b10100100; //menampilkan angka 2;Delay_ms(500);
}11. Kemudian kompilasi, download dan perhatikan
hasilnya.
Analisa:
158
1. Lengkapi data diatas sehingga bisa berhitung naik
dari 0 ke 9 secara berulang!
2. Apa yang terjadi jika data pada PORTB dibalikan
nilai logikanya, data “0”menjadi “1” dan data “1” menjadi “0”!
3. Apa yang terjadi jika data pada PORTB diganti
dengan hasil bilangan hexadesimal, hasil dari konversi bilangan biner dari data
diatas!
4. Bagaimanakah data yang harus dikirim ke PORTB,
sehingga bisa menampilkan karakter “Y” “A” “M” “M” “Y” , secara berurutan
pada 1 seven segment? Apakah seven segment hanya terbatas untuk
menampilkan angka? Jelaskan!
Latihan :
1. Buat program untuk berhitung turun dari 9 ke 0
2. Buat program agar keempat seven segment dapat menampilakan angka secara
bergantian (1 menyala yang lain pada, secara bergilir)!
3. Buat program untuk berhitung naik dari 0 ke 99, secara berulang dengan jeda
waktu 300 ms!
4. Buat program untuk berhitung turun dari 99 ke 9, , secara berulang dengan jeda
waktu 300 ms!
5. Buat program untuk berhitung turun dari 99 ke 0, , secara berulang dengan jeda
waktu 300 ms, setelah tombol PA.7 (SW8) ditekan, jika belum ditekan hitungan
belum dimulai!
6. Buat program, sehingga setiap ditekan tombol PA.7 (SW8), angka pada 7
segment bertambah 1, hingga max 99
159
Lembar Kerja III : Pemrograman Menggunakan LCD Karakter
Alat dan Bahan
1. .......................................................................................... T
rainer Mirkorontroler AVR ATMega8535/16/32 ..................................... 1 Unit
2. .......................................................................................... I
SP Downloader ......................................................................................... 1 Unit
3. .......................................................................................... K
omputer ..................................................................................................... 1 Unit
4. .......................................................................................... S
oftware pendukung (Codevision AVR & Proteus) ................................... 1 Lot
Keselamatan Kerja
1. Gunakan alas kaki (sandal karet) saat mengoperasikan komputer
2. Hindari memasang konektor downloader secara terbalik
3. Letakan peralatan ditempat yang aman dan mudah diamati
160
4. Operasikan Trainer mikrokontroler sesuai tegangan kerjanya
5. Operasikan komputer sesuai peruntukannya sesuai dengan prosedur
6. Matikan komputer sesuai dengan prosedur yang benar
Percobaan 1
Judul: Pemrograman LCD Koordinat Satis
Langkah Kerja:
1. Gambar rangkaian program yang akan dibuat
sebagai berikut
PB2(INT2/AIN0)3
XTAL212
XTAL113
PB1(T1)2
PD2(INT0)16
PD3(INT1)17
PD4(OC1B)18
PD5(OC1A)19
GND11 VCC10
PB7[SCK)8 PB6[MISO)7 PB5(MOSI)6 PA4(ADC4)
36
PA5(ADC5)35
PA6(ADC6)34
PA7(ADC7)33
AREF32
PA3(ADC3)37
PB0(XCK/T0)1
PB3(OC0/AIN1)4
PB4(SS)5
RESET9
PD0(RXD)14
PD1(TXD)15
PD6(ICP)20
PD7(OC2)21
PA0(ADC0)40
PA1(ADC1)39
PA2(ADC2)38
AGND31
AVCC30
PC7(TOSC2)29
PC6(TOSC1)28
PC527
PC426
PC325
PC224
PC1(SDA)23
PC0(SCL)22
IC1
ATMEGA8535-DIL40
PC7PC6PC5PC4PC3PC2PC1PC0
VCC
1 2S1
R110k 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
J1LCD 16x2 Char
R2
POT
PC0PC1PC2
PC6PC7
PC5PC4
VCC
X111.0592MHz
22
22
Gambar 5.3 Diagram Skematik percobaan I
2. Buka program codevision AVR melalui menu Star|All Program || Codevision ||
Code Vision Avr C Compiler atau melalui deskop klik lambang Codevision.
3. Kemudian pillih File |New |pilih File Type
→project
4. Kemudian muncul tampilan konfirmasi, dan menanyakan apakah akan
menggunakan codewizard, pilih Yes.
5. Untuk setting IC(Chip yang digunakan) pilih Chip,
isi informasi sebagai berikut:
161
Gambar 5.4 asetting chip ATmega 8535
clock 11.059200
Gambar 5.4 bsetting PORTC sebagai output
LCD
6. Jika sudah menkonfigurasi project,pilih File |
Generate Save and Exit, sehingga akan tampil source code dalam bahasa C
7. setelah itu, kita tinggal menambahkan instruksi-
instruksi tambahan kedalam program yang sudah ada
8. Perhatikan kode-kode berikut
// Alphanumeric LCD Module functions#asm
.equ __lcd_port=0x15 ;PORTC#endasm#include <lcd.h>..........
Blok ini harus disertakan (jika dengan cara generate file…akan otomatis
dibuatkan).arti dari blok diatas adalah setting LCD di PORTC kemudian akan
me_link ke pustaka lcd.h yang didalamnya terdapat instruksi-instruksi untuk
akses LCD secara langsung.
..........
.equ __lcd_port=0x15 ;PORTC
...........
Menggunakan PORTC(0x15) untuk LCD (lihat tentang register I/O di datasheet
ATmega 8535). Untuk inisialisasi cukup dengan instruksi berikut:
..........// LCD module initialization
lcd_init(16); //inisialisasi LCD 16x2
Contoh program LCD :
Tambahkan kode program sehingga listingnya seperti berikut :
..........#include <mega8535.h>#include <delay.h>..........while (1)
{// Place your code herelcd_clear();lcd_gotoxy(0,0);lcd_putsf("*SELAMAT DATANG*");lcd_gotoxy(0,1);lcd_putsf("SISWA");delay_ms(5000);lcd_clear();lcd_gotoxy(0,0);lcd_putsf("**SMK Negeri 2**");
162
lcd_gotoxy(0,1);lcd_putsf(" Kota Cimahi ”);delay_ms(5000);
};}
9. Kemudian kompilasi, download dan perhatikan
hasilnya.
10. Coba dengan string atau kata dan posisi baris yang
berbeda.
11. Coba hilangkan baris perintah lcd_clear(), kompilasi
dan download, adakah perbedaan hasil?
12. Apa yang terjadi jika nilai koordinat X dan Y di
rubah?
.................................................................................................................................
.................................................................................................................................
.................................................................................................................................
13. Apa yang terjadi jika perintah lcd_putsf("SISWA")
diganti dengan spasi sebanyak 16 kali, sehingga program menajdi lcd_putsf("
"); ?
.................................................................................................................................
.................................................................................................................................
.................................................................................................................................
Percobaan 2
Judul: Pemrograman LCD Koordinat Dinamis
Langkah Kerja:
Kesimpulan Secara Umum dari percobaan 1 LCD:
163
1. Gambar rangkaian program yang akan dibuat
sebagai berikut
PB2(INT2/AIN0)3
XTAL212
XTAL113
PB1(T1)2
PD2(INT0)16
PD3(INT1)17
PD4(OC1B)18
PD5(OC1A)19
GND11 VCC10
PB7[SCK)8 PB6[MISO)7 PB5(MOSI)6 PA4(ADC4)
36
PA5(ADC5)35
PA6(ADC6)34
PA7(ADC7)33
AREF32
PA3(ADC3)37
PB0(XCK/T0)1
PB3(OC0/AIN1)4
PB4(SS)5
RESET9
PD0(RXD)14
PD1(TXD)15
PD6(ICP)20
PD7(OC2)21
PA0(ADC0)40
PA1(ADC1)39
PA2(ADC2)38
AGND31
AVCC30
PC7(TOSC2)29
PC6(TOSC1)28
PC527
PC426
PC325
PC224
PC1(SDA)23
PC0(SCL)22
IC1
ATMEGA8535-DIL40
PC7PC6PC5PC4PC3PC2PC1PC0
VCC
1 2S1
R110k 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
J1LCD 16x2 Char
R2
POT
PC0PC1PC2
PC6PC7PC5PC4
VCC
X111.0592MHz
22
22
Gambar 5.5 Diagram Skematik percobaan I I
2. Buka program codevision AVR melalui menu Star|All Program || Codevision ||
Code Vision Avr C Compiler atau melalui deskop klik lambang Codevision.
3. Kemudian pillih File |New |pilih File Type
→project
4. Kemudian muncul tampilan konfirmasi, dan menanyakan apakah akan
menggunakan codewizard, pilih Yes.
5. Untuk setting IC(Chip yang digunakan) pilih Chip,
isi informasi sebagai berikut :
Gambar 5.6 a setting chip
ATmega 8535 clock 11.059200
Gambar 5.6 b setting PORTC
sebagai output LCD
164
6. Jika sudah menkonfigurasi project,pilih File |
Generate Save and Exit, sehingga akan tampil source code dalam bahasa C
7. setelah itu, kita tinggal menambahkan instruksi-
instruksi tambahan kedalam program yang sudah ada
8. Perhatikan kode-kode berikut dan Tambahkan kode
program sehingga listingnya seperti berikut :
..........#include <mega8535.h>#include <delay.h>#include <stdio.h> //library standar input dan output
Unsigned char a, buf[16];
Blok diatas mendeklarasikan tipe data “a” sebagai unsigned char yang digunakan
untuk penghitung dengan kapasitias 256 bilangan atau dengan range 0-255,
variabel buf[16] maksudnya adalah tipe data buf adalah sebagai larik/array
dengan kapasitas 16 yang nantinya akan digunakan sebagai penampung data
karakter LCD yang berjumlah max16.
..........while (1)
{// Place your code herefor(a=0;a<16;a++){
lcd_gotoxy(a,0);lcd_putsf(“H”);sprintf(buf,”Nilai a: %d”,a); //fungsi utk
menampilkan isi alcd_gotoxy(0,1);lcd_puts(buf);delay_ms(300);
}}
9. Kemudian kompilasi, download dan perhatikan
hasilnya.
10. Perhatikan listing code dan tampilan pada LCD, apa
yang terjadi ketika nilai “a” berubah dan apa pengaruhnya nilai “a” pada posisi
karakter “H” , mengapa demikian?
11. Ganti %d dengan %i, kompilasi dan download, lihat
adakah perbedaan hasil? Mengapa?
12. Ganti %d dengan %x, kompilasi dan download, lihat
adakah perbedaan hasil? Mengapa?
165
Kesimpulan Secara Umum dari percobaan 1 LCD:
166
Lembar Kerja IV : Analog To Digital Converter (ADC)
Alat dan Bahan
1.......................................................................................... Trainer
Mirkorontroler AVR ATMega8535/16/32................................................ 1 Unit
2.......................................................................................... ISP
Downloader............................................................................................... 1 Unit
3.......................................................................................... Kompute
r ................................................................................................................. 1 Unit
4.......................................................................................... Software
pendukung (Codevision AVR & Proteus)................................................. 1 Lot
Keselamatan Kerja
1. Gunakan alas kaki (sandal karet) saat mengoperasikan komputer
2. Hindari memasang konektor downloader secara terbalik
3. Letakan peralatan ditempat yang aman dan mudah diamati
4. Operasikan Trainer mikrokontroler sesuai tegangan kerjanya
5. Operasikan komputer sesuai peruntukannya sesuai dengan prosedur
6. Matikan komputer sesuai dengan prosedur yang benar
Percobaan 1
Judul: Pemrograman ADC
Langkah Kerja:
1. Gambar rangkaian yang akan dibuat programnya
sebagai berikut
PB2(INT2/AIN0)3
XTAL212
XTAL113
PB1(T1)2
PD2(INT0)16
PD3(INT1)17
PD4(OC1B)18
PD5(OC1A)19
GND11 VCC10
PB7[SCK)8 PB6[MISO)7 PB5(MOSI)6 PA4(ADC4)
36
PA5(ADC5)35
PA6(ADC6)34
PA7(ADC7)33
AREF32
PA3(ADC3)37
PB0(XCK/T0)1
PB3(OC0/AIN1)4
PB4(SS)5
RESET9
PD0(RXD)14
PD1(TXD)15
PD6(ICP)20
PD7(OC2)21
PA0(ADC0)40
PA1(ADC1)39
PA2(ADC2)38
AGND31
AVCC30
PC7(TOSC2)29
PC6(TOSC1)28
PC527
PC426
PC325
PC224
PC1(SDA)23
PC0(SCL)22
IC1
ATMEGA8535-DIL40
PC6PC7
PC2PC3PC4PC5
PC0PC1
VCC
POT
1 2S1
VCC
R110k 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
J1LCD 16x2 Char
R2
POT
PC
0P
C1
PC
2
PC
7P
C6
PC
4P
C5
VCCVCC
X111.0592MHz
22
22
Gambar 6.3 Diagram Skematik percobaan I.
167
2. Buka program codevision AVR melalui menu Star|All Program || Codevision ||
Code Vision Avr C Compiler atau melalui deskop klik lambang Codevision.
3. Kemudian pillih File |New |pilih File Type
→project
4. Kemudian muncul tampilan konfirmasi, dan menanyakan apakah akan
menggunakan codewizard, pilih Yes.
5. Ikuti langkah pengaturan berikut, isi informasi
sebagai berikut :
Gambar 6.4 Setting ADC 8bit, referensi ADC pin AVCC, dengan clock
691.200KHz, PORTB output,PORTC LCD
6. Hubungkan rangkaian pembagi tegangan kesalah
satu pin pada PORTA, yang untuk contoh ini dihubungkan ke PINA.0 untuk
setting LCD, yaitu LCD ke PORTC. Generate file, save and exit. Simpan dengan
nama file adc.c, adc.prj, adc.cwp.
7. Tambahkan interuksi listing program berikut ini :
.........................................#include <mega8535.h>#include <delay.h>#include <stdio.h>
unsigned int adc;unsigned char nilai[16];
// Alphanumeric LCD Module functions#asm
.equ __lcd_port=0x15 ;PORTC#endasm#include <lcd.h>
#define ADC_VREF_TYPE 0x60// Read the 8 most significant bits// of the AD conversion resultunsigned char read_adc(unsigned char adc_input){
168
ADMUX=adc_input|ADC_VREF_TYPE;// Start the AD conversionADCSRA|=0x40;// Wait for the AD conversion to completewhile ((ADCSRA & 0x10)==0);ADCSRA|=0x10;return ADCH;}// Declare your global variables here
void main(void){....................................................................................................................................................................lcd_init(16);lcd_clear();lcd_gotoxy(0,0);lcd_putsf("Latihan Prgm ADC");delay_ms(50);while (1)
{// Place your code hereadc=read_adc(0);lcd_clear();sprintf(nilai,"nilai ADC=%d",adc);lcd_gotoxy(0,1);lcd_puts(nilai);delay_ms(300);};}
8. Kompilasi download dan perhatikan hasilnya pada
LCD dengan memutar potensiometer.
9. Perhatikan bagian program berikut ini :
#define ADC_VREF_TYPE 0x60// Read the 8 most significant bits// of the AD conversion resultunsigned char read_adc(unsigned char adc_input){ADMUX=adc_input|ADC_VREF_TYPE;// Start the AD conversionADCSRA|=0x40;// Wait for the AD conversion to completewhile ((ADCSRA & 0x10)==0);ADCSRA|=0x10;return ADCH;}Blok-blok diatas adalah inisialisasi dan prosedur baca ADC yang dibentuk oleh
codevision. Untuk membaca ADC channel yang lain cukup dengan mengubah
instruksi menjadi seperti berikut :
data_adc=read_adc(1) ; //membaca ADC dichanel 1
169
10. Ukur
menggunakan volt meter nilai tegangan pada kaki no dua potensio terhadap
ground, ambil 5 angka pengukuran, lengkapi tabel berikut:
NO TEGANGAN KAKI 2POTENSIO (VOLT)
NILAI YANGTAMPIL PADA LCD
KETERANGAN
1 123 2,545
Analisa
1. Bagaima
nakah hubungan antara nilai tegangan potensio dengan data yang tampil pada
LCD?
2. Berapaka
h tegangan maksimal dan nilai maksimal yang muncul pada LCD? Mengapa
demikian?
3. Ulangi
langkah 2 -8, hanya untuk langkah no 5 jangan memberikan tanda centang
pada opsi Use 8 bits, perhatikan data yang muncul pada LCD, adakah
perbedaan? Mengapa demikian?
4. Setelah
melalukan langkah 13, Berapakah tegangan maksimal dan nilai maksimal
yang muncul pada LCD? Mengapa demikian?
5. Manakah
yang lebih presisi, pada saat memberikan tanda centang pada opsi Use 8 bits
atau tidak memberikan tanda centang pada opsi Use 8 bits ? mengapa
demikian?
Latihan
1. Perhatika
n gambar rangkaian berikut
170
PB0PB1
PB3PB2
PB5PB4
PB7PB6
PB2(INT2/AIN0)3
XTAL212
XTAL113
PB1(T1)2
PD2(INT0)16
PD3(INT1)17
PD4(OC1B)18
PD5(OC1A)19
GND11 VCC10
PB7[SCK)8 PB6[MISO)7 PB5(MOSI)6 PA4(ADC4)
36
PA5(ADC5)35
PA6(ADC6)34
PA7(ADC7)33
AREF32
PA3(ADC3)37
PB0(XCK/T0)1
PB3(OC0/AIN1)4
PB4(SS)5
RESET9
PD0(RXD)14
PD1(TXD)15
PD6(ICP)20
PD7(OC2)21
PA0(ADC0)40
PA1(ADC1)39
PA2(ADC2)38
AGND31
AVCC30
PC7(TOSC2)29
PC6(TOSC1)28
PC527
PC426
PC325
PC224
PC1(SDA)23
PC0(SCL)22
IC2
ATMEGA8535-DIL40
PC6PC7
PC4PC5
PC1PC2PC3
PB1PB0
PC0
PB5PB4PB3PB2
PB7PB6
VCC
POT
1 2S2
VCC
R310k 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
J2LCD 16x2 Char
R4
POT
PC
2P
C1
PC
0
PC
7P
C6
PC
5P
C4
VCCVCC
X211.0592MHz
22
22
123456789
RESISTOR SIP 9
2. Buat
program mikrokontroler supaya dapat menampilkan data ADC dan nilai
tegangan pada LCD.
3. Berdasar
kan gambar rangkaian diatas, dengan menggunakan fungsi if rancang dan
buatlah program, agar jika nilai ADC lebih dari 128 LED PB4-PB7 menyala
dan LED pada PB0-PB3 padam, dan jika nilai ADC kurang dari 128 LED
PB0-PB3 menyala dan LED pada PB4-PB7 padam.
4. Berdasar
kan gambar rangkaian diatas, tampilkan nilai data ADC pada baris ke 1 LCD
dan Tampilkan nilai tegangan potensio (pelajari kembali konsep ADC) pada
baris LCD ke 2, yang kedunya harus berubah secara otomatis saat potensio
diputar-putar.
5. Tambahk
an program no 3, sehingga jika nilai tegangan potensio
Kurang dari 1V, lampu pada PB0 menyala, sisanya padam
Kurang dari 2V, lampu pada PB0 dan PB1 menyala, sisanya padam
Kurang dari 3V, lampu pada PB0 –PB2 menyala, sisanya padam
Kurang dari 4V, lampu pada PB0 –PB3 menyala, sisanya padam
Kurang dari 5V, lampu pada PB0 –PB4 menyala, sisanya padam
171
Lembar Kerja V : Timer/ Counter
Percobaan I
Membuat program nyala dan padam led selama delay waktu 1s menggunakan 1
Timer (Timer 16 bit). PORTB sebagai output dihubungkan dengan LED.
Alat dan Bahan
1.......................................................................................... Trainer
Mirkorontroler AVR ATMega8535/16/32................................................ 1 Unit
2.......................................................................................... ISP
Downloader............................................................................................... 1 Unit
3.......................................................................................... Kompute
r ................................................................................................................. 1 Unit
172
4.......................................................................................... Software
pendukung (Codevision AVR & Proteus)................................................. 1 Lot
Keselamatan Kerja
1. Gunakan alas kaki (sandal karet) saat mengoperasikan komputer
2. Hindari memasang konektor downloader secara terbalik
3. Letakan peralatan ditempat yang aman dan mudah diamati
4. Operasikan Trainer mikrokontroler sesuai tegangan kerjanya
5. Operasikan komputer sesuai peruntukannya sesuai dengan prosedur
6. Matikan komputer sesuai dengan prosedur yang benar
Langkah Kerja
1. Gambar rangkaian yang akan dibuat programnya sebagai berikut
PB2(INT2/AIN0)3
XTAL212
XTAL113
PB1(T1)2
PD2(INT0)16
PD3(INT1)17
PD4(OC1B)18
PD5(OC1A)19
GND11 VCC10
PB7[SCK)8 PB6[MISO)7 PB5(MOSI)6 PA4(ADC4)
36
PA5(ADC5)35
PA6(ADC6)34
PA7(ADC7)33
AREF32
PA3(ADC3)37
PB0(XCK/T0)1
PB3(OC0/AIN1)4
PB4(SS)5
RESET9
PD0(RXD)14
PD1(TXD)15
PD6(ICP)20
PD7(OC2)21
PA0(ADC0)40
PA1(ADC1)39
PA2(ADC2)38
AGND31
AVCC30
PC7(TOSC2)29
PC6(TOSC1)28
PC527
PC426
PC325
PC224
PC1(SDA)23
PC0(SCL)22
IC1
ATMEGA8535-DIL40
X1
C1
C2
R1
VCC
VCC
12
1212
12
1212
1212
1 21 21 21 21 21 21 21 2
Gambar 7.1 Digaram skematik percobaan 1
2. Buat project baru ,pilih Chip sesuai dengan tipe chip pada trainer, atur frekuensi
clock pada 11,0592MHz, atur PORTB sebagai output dengan keadaan awal nol,
pindahkan ke TAB timer1 dan lakukan konfigurasi seperti pada gambar dibawah
ini
173
Gambar 7.2 Konfigurasi Timer 1
3. Generate dan save, simpan dengan nama percobaan timer
4. Lengkapi program seperti pada listing berikut
#include <mega8535.h>
bit ciri; // variabel global untuk flag timer
// Timer 1 overflow interrupt service routineinterrupt [TIM1_OVF] void timer1_ovf_isr(void){// Reinitialize Timer 1 valueTCNT1H=0xD5;TCNT1L=0xD0;// Place your code here
if(ciri==1) // periksa ciri{PORTB=0xff; // jika ciri = 1 (led Menyala)ciri =0; // clear ciri}else{PORTB=0x00; // jika ciri = 0 (led Padam)ciri =1; // set ciri}
}// Declare your global variables here
void main(void)............................................................................// Global enable interrupts#asm (“sei”)ciri =0; // kondisi awal ciri berlogika 0while (1)
174
{//place your code here
};}
5. Kompilasi dan download, perhatikan hasilnya,
Analisa
1. Hilangkan perintah TCNT1H=0xD5 dan TCNT1H=0xD0, kompilasi dan
download apa yang terjadi? Adakah pengaruhnya?
2. Kembalikan program seperti semula, pindahkan perintah TCNT1H=0xD5 dan
TCNT1H=0xD0, kedalam fungsi wahile(1), kompilasi dan download apa yang
terjadi? Adakah pengaruhnya?
3. Kembalikan program seperti semula, dan hilangkan perintah #asm (“sei”)
kompilasi dan download apa yang terjadi? Adakah pengaruhnya?
4. Kembalikan program seperti semula, rubah kondisi awal ciri menjadi logika 1
kompilasi dan download apa yang terjadi? Adakah pengaruhnya?
Percobaan II
Membuat tampilan program untuk menampilkan jam : menit : detik pada LCD 2X16,
LCD dihubungkan ke PORT C. Gunakan Compare Match Interrupt, kristal
11.059200 MHz/8 = 1382.400 kHz. Register OCR=0x96, sehingga periodenya
96h = ( )
6535 = (Ttimer x 1382400)
Ttimer = 1,0850694.10-4 = 108,50694.10-6 s = 100 us
Periodenya sekitar 100 us, jadi agar setara 1 detik harus dikali 10000.
Alat dan Bahan
1.......................................................................................... Trainer
Mirkorontroler AVR ATMega8535/16/32................................................ 1 Unit
2.......................................................................................... ISP
Downloader............................................................................................... 1 Unit
Kesimpulan Secara Umum :
175
3.......................................................................................... Kompute
r ................................................................................................................. 1 Unit
4. Software pendukung (Codevision AVR & Proteus)
1 Lot
Keselamatan Kerja
1. Gunakan alas kaki (sandal karet) saat mengoperasikan komputer
2. Hindari memasang konektor downloader secara terbalik
3. Letakan peralatan ditempat yang aman dan mudah diamati
4. Operasikan Trainer mikrokontroler sesuai tegangan kerjanya
5. Operasikan komputer sesuai peruntukannya sesuai dengan prosedur
6. Matikan komputer sesuai dengan prosedur yang benar
Langkah Kerja
1. Gambar rangkaian yang akan dibuat programnya sebagai berikut
PB0PB1
PB3PB2
PB5PB4
PB7PB6
PB2(INT2/AIN0)3
XTAL212
XTAL113
PB1(T1)2
PD2(INT0)16
PD3(INT1)17
PD4(OC1B)18
PD5(OC1A)19
GND11 VCC10
PB7[SCK)8 PB6[MISO)7 PB5(MOSI)6 PA4(ADC4)
36
PA5(ADC5)35
PA6(ADC6)34
PA7(ADC7)33
AREF32
PA3(ADC3)37
PB0(XCK/T0)1
PB3(OC0/AIN1)4
PB4(SS)5
RESET9
PD0(RXD)14
PD1(TXD)15
PD6(ICP)20
PD7(OC2)21
PA0(ADC0)40
PA1(ADC1)39
PA2(ADC2)38
AGND31
AVCC30
PC7(TOSC2)29
PC6(TOSC1)28
PC527
PC426
PC325
PC224
PC1(SDA)23
PC0(SCL)22
IC2
ATMEGA8535-DIL40
PC6PC7
PC4PC5
PC1PC2PC3
PB1PB0
PC0
PB5PB4PB3PB2
PB7PB6
VCC
POT
1 2S2
VCC
R310k 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
J2LCD 16x2 Char
R4
POT
PC
2P
C1
PC
0
PC
7P
C6
PC
5P
C4
VCCVCC
X211.0592MHz
22
22
123456789
RESISTOR SIP 9
Gambar 7.3 Konfigurasi Timer 2
2. Buat project baru ,pilih Chip sesuai dengan tipe chip pada trainer, atur frekuensi
clock pada 11,0592MHz, atur PORTB sebagai output dengan keadaan awal nol,
pindahkan ke TAB timer2 dan lakukan konfigurasi seperti pada gambar halaman
berikut ini:
176
Gambar 7.4 konfigurasi timer 2 pada CodeWizard
3. Generate dan save, simpan dengan nama percobaan timer
4. Lengkapi program seperti pada listing berikut
#include <mega8535.h>#include <stdlib.h>
// Alphanumeric LCD Module functions#asm
.equ __lcd_port=0x15 ;PORTC#endasm#include <lcd.h>unsigned int kali=0,detik=0,menit=0,jam=0;unsigned char cdetik[10],cmenit[10],cjam[10];
// Timer 2 output compare interrupt service routineinterrupt [TIM2_COMP] void timer2_comp_isr(void){// Place your code hereTCNT2=0;//Jika sudah compare match, set awal lagiif(++kali==10000)//periksa apakah sudah mencapai 10.000 kaliinterupsi timer2{if (++detik==60){detik=0;lcd_clear();if (++menit==60)
{menit=0;lcd_clear();
if (++jam==24){jam==0;lcd_clear();}
}}
kali=0;itoa(detik,cdetik);// mengubah integer detik jadi karakter pdstring cdetik
itoa(menit,cmenit);
177
itoa(jam,cjam);lcd_gotoxy(0,0);lcd_putsf("*Jam Digital Ku*");lcd_gotoxy(9,1);lcd_putsf(":");lcd_gotoxy(10,1);lcd_puts(cdetik);lcd_gotoxy(6,1);lcd_putsf(":");lcd_gotoxy(7,1);lcd_puts(cmenit);lcd_gotoxy(4,1);lcd_puts(cjam);}}// Declare your global variables here
void main(void){............................................While(1){//Place your code here}
}
5. Kompilasi dan download, perhatikan hasilnya,
Analisa
1. Hilangkan perintah #include<stdlib.h>, kompilasi dan download apa yang
terjadi? Adakah pengaruhnya?
2. Kembalikan program seperti semula, dan hilangkan perintah kali=0 kompilasi
dan download apa yang terjadi? Adakah pengaruhnya?
3. Kembalikan program seperti semula, dan hilangkan semua perintah yang
mengandung itoa kompilasi dan download apa yang terjadi? Adakah
pengaruhnya?
4. Berapakah seharusnya nilai perioda timer yang didapat jika nilai clocknya adalah
11.0592/1024?
5. Tambahkan 4 buah fungsi tombol untuk pengaturan kalibrasi jam dan menit,
bagaimanakah programnya?
Latihan
Modifikasi program jam diatas sehingga memiliki tombol UP, DOWN, SET, MENU
untuk kalibrasi/pengaturan jam
Kesimpulan Secara Umum :
178
Lembar Kerja VI : Pulse With Modulation (PWM)
Percobaan I
Memprogram mikrokontrol untuk mengatur terang redup nyala lampu LED
Alat dan Bahan
1. ...................................................................................... Trainer
Mirkorontroler AVR ATMega8535/16/32........................................... 1 Unit
2. ...................................................................................... ISP
Downloader.......................................................................................... 1 Unit
3. ...................................................................................... Komputer
1 Unit
4. Software pendukung (Codevision AVR & Proteus)
1 Lot
Keselamatan Kerja
1. Gunakan alas kaki (sandal karet) saat mengoperasikan komputer
2. Hindari memasang konektor downloader secara terbalik
3. Letakan peralatan ditempat yang aman dan mudah diamati
4. Operasikan Trainer mikrokontroler sesuai tegangan kerjanya
5. Operasikan komputer sesuai peruntukannya sesuai dengan prosedur
6. Matikan komputer sesuai dengan prosedur yang benar
Langkah Kerja
1. Gambar rangkaian yang akan dibuat programnya sebagai berikut
PB0PB1
PB3PB2
PB5PB4
PB7PB6
PB2(INT2/AIN0)3
XTAL212
XTAL113
PB1(T1)2
PD2(INT0)16
PD3(INT1)17
PD4(OC1B)18
PD5(OC1A)19
GND11 VCC10
PB7[SCK)8 PB6[MISO)7 PB5(MOSI)6 PA4(ADC4)
36
PA5(ADC5)35
PA6(ADC6)34
PA7(ADC7)33
AREF32
PA3(ADC3)37
PB0(XCK/T0)1
PB3(OC0/AIN1)4
PB4(SS)5
RESET9
PD0(RXD)14
PD1(TXD)15
PD6(ICP)20
PD7(OC2)21
PA0(ADC0)40
PA1(ADC1)39
PA2(ADC2)38
AGND31
AVCC30
PC7(TOSC2)29
PC6(TOSC1)28
PC527
PC426
PC325
PC224
PC1(SDA)23
PC0(SCL)22
IC2
ATMEGA8535-DIL40
PC6PC7
PC4PC5
PC1PC2PC3
PB1PB0
PC0
PB5PB4PB3PB2
PB7PB6
VCC
POT
1 2S2
VCC
R310k 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
J2LCD 16x2 Char
R4
POT
PC
2P
C1
PC
0
PC
7P
C6
PC
5P
C4
VCCVCC
X211.0592MHz
22
22
123456789
RESISTOR SIP 9
Gambar 8.4 Gambar percobaan PWM
179
2. Buat program menggunakan baru, dengan clock sebesar 11.059200MHz, Chip
menggunakan ATMega8535 atau sesuai dengan mikrokontrol yang digunakan,
dan atur PORTB.3 sebagai output.
3. Atur timer 0 dengan clock value 11.059200, mode Fast PWM top = FFh, out put
Non-Inverted PWM, sehingga seperti tampilan pada gambar dibawah ini
Gambar 8.4 pengaturan PWM melalui Code Wizard
4. Lengkapi listing program sehingga seperti berikut:
........................
........................
#include <mega8535.h>#include <delay.h>Unsigned char a;................................................Void main (void){................................................While (1){OCR0=a;delay_ms(100);a=a+5;}
}
180
5. Kompilasi dan perhatikan nyala LED.
Analisa
1. Ganti
perintah a=a+5; dengan a=a+10; atau coba dengan angka lain, kompilasi dan
perhatikan reaksi pada LED
2. Ganti
perintah OCR0=a; dengan OCR0=10 , OCR0=90, OCR0=200, atau coba
dengan angka lain, kompilasi dan perhatikan reaksi pada LED
3. Apa yang
terjadi jika perintah OCR0=a; dimatikan?
4. Jelaskan
fungsi dari register OCR0 !
Percobaan II
Memprogram mikrokontrol untuk mengatur terang redup nyala lampu LED
Alat dan Bahan
1. ....................................................................................... Trainer
Mirkorontroler AVR ATMega8535/16/32 ............................................. 1 Unit
2. ....................................................................................... ISP
Downloader ............................................................................................ 1 Unit
3. ....................................................................................... Kompute
r............................................................................................................... 1 Unit
4. Software pendukung (Codevision AVR & Proteus)
1 Lot
Keselamatan Kerja
1. Gunakan alas kaki (sandal karet) saat mengoperasikan komputer
2. Hindari memasang konektor downloader secara terbalik
3. Letakan peralatan ditempat yang aman dan mudah diamati
4. Operasikan Trainer mikrokontroler sesuai tegangan kerjanya
5. Operasikan komputer sesuai peruntukannya sesuai dengan prosedur
181
6. Matikan komputer sesuai dengan prosedur yang benar
Langkah Kerja
1. Gambar rangkaian yang akan dibuat programnya sama seperti percobaan
sebelumnya (gambar 8.4).
2. Buat
program menggunakan baru, dengan clock sebesar 11.059200MHz, Chip
menggunakan ATMega8535 atau sesuai dengan mikrokontrol yang digunakan,
dan atur semua PORTB sebagai output dengan keadaan awal nol.
3. Atur
timer 0 dengan clock value 11.059200, mode Normal top = FFh, dengan
overflow interupt dicentang, sehingga seperti tampilan pada gambar halaman
berikut ini:
Gambar 8.5 pengaturan interupt timer 0
4. Lengkapi
listing program sehingga seperti berikut :
.................
.................
#include <mega8535.h>#include <delay.h>Unsigned char a,x,nilai;
182
// Timer 0 overflow interrupt service routineinterrupt [TIM0_OVF] void timer0_ovf_isr(void){// Place your code herex++;if(x<nilai) {PORTB.0=1} else {PORTB.0=0;}
}
............
..........Void main (void){................................................
While (1){nilai=a;delay_ms(100);a=a+5;
}}
5. Kompilas
i dan perhatikan nyala LED.
6. Tambahk
an perintah pada interupsi timer0 overflow sehingga menjadi.
// Timer 0 overflow interrupt service routineinterrupt [TIM0_OVF] void timer0_ovf_isr(void){// Place your code herex++;if(x<nilai) {PORTB.0=1} else {PORTB.0=0;}if(x<nilai-30) {PORTB.1=1} else {PORTB.1=0;}if(x<nilai-60) {PORTB.2=1} else {PORTB.2=0;}
}
7. Kompilas
i dan perhatikan nyala LED.
183
Lembar Kerja VII : Aplikasi Sensor Temperatur
Alat dan Bahan
1.......................................................................................... Trainer
Mirkorontroler AVR ATMega8535/16/32................................................ 1 Unit
2.......................................................................................... ISP
Downloader............................................................................................... 1 Unit
3.......................................................................................... Kompute
r ................................................................................................................. 1 Unit
4.......................................................................................... Software
pendukung (Codevision AVR & Proteus)................................................. 1 Lot
Keselamatan Kerja
1. Gunakan alas kaki (sandal karet) saat mengoperasikan komputer
2. Hindari memasang konektor downloader secara terbalik
3. Letakan peralatan ditempat yang aman dan mudah diamati
4. Operasikan Trainer mikrokontroler sesuai tegangan kerjanya
184
5. Operasikan komputer sesuai peruntukannya sesuai dengan prosedur
6. Matikan komputer sesuai dengan prosedur yang benar
Percobaan 1
Judul: Pemrograman ADC
Langkah Kerja:
1. Gambar rangkaian yang akan dibuat programnya sebagai berikut
PB0PB1PB2PB3PB4PB5PB6PB7
PB2(INT2/AIN0)3
XTAL212
XTAL113
PB1(T1)2
PD2(INT0)16
PD3(INT1)17
PD4(OC1B)18
PD5(OC1A)19
GND11 VCC10
PB7[SCK)8 PB6[MISO)7 PB5(MOSI)6 PA4(ADC4)
36
PA5(ADC5)35
PA6(ADC6)34
PA7(ADC7)33
AREF32
PA3(ADC3)37
PB0(XCK/T0)1
PB3(OC0/AIN1)4
PB4(SS)5
RESET9
PD0(RXD)14
PD1(TXD)15
PD6(ICP)20
PD7(OC2)21
PA0(ADC0)40
PA1(ADC1)39
PA2(ADC2)38
AGND31
AVCC30
PC7(TOSC2)29
PC6(TOSC1)28
PC527
PC426
PC325
PC224
PC1(SDA)23
PC0(SCL)22
IC2
ATMEGA8535-DIL40
PC7PC6PC5PC4PC3PC2PC1PC0
PB0PB1PB2PB3PB4PB5PB6PB7
VCC
POT
1 2S2
VCC
R310k 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
J2LCD 16x2 Char
R4
POT
PC
0P
C1
PC
2
PC
6P
C7
PC
5P
C4
VCCVCC
X211.0592MHz
22
22
123456789
RESISTOR SIP 9
2. Buka program codevision AVR melalui menu Star|All Program || Codevision ||
Code Vision Avr C Compiler atau melalui deskop klik lambang Codevision.
3. Kemudian pillih File |New |pilih File Type
→project
4. Kemudian muncul tampilan konfirmasi, dan menanyakan apakah akan
menggunakan codewizard, pilih Yes.
5. Untuk setting IC(Chip yang digunakan) pilih Chip,
isi informasi sebagai berikut:
Setting clock pada 11.059200,chip ATmega 8535 atau disesuaikan dengan chip
yang digunakan dan PORTB sebagai output, LCD pada PORT C, Aktifkan ADC
8bit, referensi ADC AVCC Pin, Auto triger source NONE dan clock maksimal
185
(b) (b) (c)
Gambar 9.3(a) Inisialisasi PORTA sebagai Input(b) Inisialisasi PORTC sebagai Output LCD(c) Pengaktifan Fungsi ADC
6. Tambahkan interuksi listing program berikut ini :
#include <mega8535.h>unsigned char adc,bar[16];int suhu1,suhu;unsigned char x=0;
Void main(void){............................................while (1)
{// Place your code herelcd_clear();adc=read_adc(1);suhu1=adc;suhu=1.92*suhu1; // rumus sensor suhu
LM35sprintf(bar,"Data ADC:%d",adc);lcd_gotoxy(0,0);lcd_puts(bar);
sprintf(bar,"Temperatur:%dβC ",suhu);lcd_gotoxy(0,1);lcd_puts(bar);delay_ms(300);}
}
7. Kompilasi dan download, amati hasilnya
8. Atur PORTB sebagai output dengan keadaan awal padam, Rubah program
menjadi seperti berikut,
#include <mega8535.h>unsigned char adc,bar[16];int refernsi,suhu1,suhu;unsigned char x=0;
186
Void main(void){............................................referensi=25;while (1)
{// Place your code herelcd_clear();adc=read_adc(1);suhu1=adc;suhu=1.92*suhu1; // rumus sensor suhu
LM35sprintf(bar,"Data ADC:%d",adc);lcd_gotoxy(0,0);lcd_puts(bar);
sprintf(bar,"Temperatur:%d βC",suhu);lcd_gotoxy(0,1);lcd_puts(bar);
if(suhu>referensi) {PORTB = 0xff;}else {PORTB = 0x00;}
}
}
9. Kompilasi dan download, beri stimulasi panas pada sensor LM35 amati
bagaimana perubahan data dan temperatur, serta pengaruhnya terhadap nyala
lampu.
Analisa
1. Rubah nilai referensi menjadi 28, beri stimulasi panas pada sensor LM35 amati
bagaimana perubahan data dan temperatur, serta pengaruhnya terhadap nyala
lampu, kompilasi dan download!
2. Rubah nilai referensi menjadi dengan nilai bebas antara 30 - 50, beri stimulasi
panas pada sensor LM35 amati bagaimana perubahan data dan temperatur, serta
pengaruhnya terhadap nyala lampu, kompilasi dan download
3. Apa pengaruh nilai referensi mengapa demikian?
4. Apakah nilai temperatur yang muncul sama dengan hasil nilai suhu=1.92*data
ADC ? jelaskan!
5. Perhatikan nilai temperatur yang muncul pada LCD !, termasuk bilangan
bulatkah? Jika iya bagaimana supaya yang tampil adalah bilangan pecahan?
Kesimpulan Secara Umum :
187
Latihan
1. Buat
program untuk mendeteksi temperatur menggunakan sensor temperatur LM35
berbasis mikrikontroler, menggunakan ADC 10bit, temperatur ditampilkan pada
LCD dalam satuan derajat celcius.
2. Buat
program untuk mendeteksi temperatur menggunakan sensor temperatur LM35
berbasis mikrikontroler, menggunakan ADC 10bit, temperatur ditampilkan pada
7 segment (tampilkan 2 digit bilangan tanpa koma).
Lembar Kerja VIII : External Interupt Request
Percobaan I
Counter menggunakan interupsi eksternal
Alat dan Bahan
188
1. .......................................................................................... Trainer
Mirkorontroler AVR ATMega8535/16/32................................................ 1 Unit
2. .......................................................................................... ISP
Downloader............................................................................................... 1 Unit
3. .......................................................................................... Kompute
r ................................................................................................................. 1 Unit
4. Software pendukung (Codevision AVR & Proteus)
1 Lot
Keselamatan Kerja
1. Gunakan alas kaki (sandal karet) saat mengoperasikan komputer
2. Hindari memasang konektor downloader secara terbalik
3. Letakan peralatan ditempat yang aman dan mudah diamati
4. Operasikan Trainer mikrokontroler sesuai tegangan kerjanya
5. Operasikan komputer sesuai peruntukannya sesuai dengan prosedur
6. Matikan komputer sesuai dengan prosedur yang benar
Langkah Kerja
1. Gambar rangkaian yang akan dibuat programnya sebagai berikut
gndgndgndgndgnd
PB2(INT2/AIN0)3
XTAL212
XTAL113
PB1(T1)2
PD2(INT0)16
PD3(INT1)17
PD4(OC1B)18
PD5(OC1A)19
GND11 VCC10
PB7[SCK)8 PB6[MISO)7 PB5(MOSI)6 PA4(ADC4)
36
PA5(ADC5)35
PA6(ADC6)34
PA7(ADC7)33
AREF32
PA3(ADC3)37
PB0(XCK/T0)1
PB3(OC0/AIN1)4
PB4(SS)5
RESET9
PD0(RXD)14
PD1(TXD)15
PD6(ICP)20
PD7(OC2)21
PA0(ADC0)40
PA1(ADC1)39
PA2(ADC2)38
AGND31
AVCC30
PC7(TOSC2)29
PC6(TOSC1)28
PC527
PC426
PC325
PC224
PC1(SDA)23
PC0(SCL)22
IC2
ATMEGA8535-DIL40
pb2pb1pb0
pb4pb3
PB7PB6PB5
gndv ccrst
pd0
pd3pd2pd1
pd5pd4
pa1pa0
pd6
pa4pa3pa2
pa6pa5
gndarefpa7
pc6pc7
v cc
pc4pc5
pc1pc2pc3
pc0
X2
11.0592MHzC3
22p
C4
22p
pd7
gnd
12345678910111213141516
LCD116 CHAR
vcc
pc1pc0
pc2
pc5pc4
pc7pc6
v cc gnd
gnd
v cc1 3
2
R16VR 20K
1 23456789
C
R17
pb5pb5pb5pb5pb5pb5pb5pb5pb5pb5pb5pb5pb5pb5pb5pb5pb5pb5
pb1pb1pb1pb1pb1pb1pb1pb1pb1pb1pb1pb1pb1pb1pb1pb1pb1pb1pb1pb1pb1pb1pb1pb1pb1pb1pb1pb1pb1pb1pb2pb2pb2pb2pb2pb2pb2pb2pb2pb2pb2pb2pb2pb2pb2pb2pb2pb2pb2pb2pb2pb2pb2pb2pb2pb2pb2pb2pb2pb2
pb4pb4pb4pb4pb4pb4pb4pb4pb4pb4pb4pb4pb4pb4pb4pb4pb4pb4pb4pb4pb4pb4pb4pb4pb4pb4pb4pb4pb4pb4pb3pb3pb3pb3pb3pb3pb3pb3pb3pb3pb3pb3pb3pb3pb3pb3pb3pb3
pb7pb7pb7pb7pb7pb7pb7pb7pb7pb7pb7pb7pb7pb7pb7pb7pb7pb7pb6pb6pb6pb6pb6pb6pb6pb6pb6pb6pb6pb6pb6pb6pb6pb6pb6pb6
pb0pb0pb0pb0pb0pb0pb0pb0pb0pb0pb0pb0pb0pb0pb0pb0pb0pb0pb0pb0pb0pb0pb0pb0pb0pb0pb0pb0pb0pb012
D38
12
D40
12
D41
12
D42
12
D43
12
D44
12
D45
12
D46
21
54
VCC
Gambar 10.4 Rangakaian Percobaan I
2. Buat program menggunakan baru, dengan clock sebesar 11.059200MHz, Chip
menggunakan ATMega8535 atau sesuai dengan mikrokontrol yang digunakan,
189
dan atur semua PORTB sebagai output dengan keadaan awal nol, PORTD.2 input
dengan pullup internal aktif dan LCD pada PORTC
3. Hubungkan modul H-brigde motor driver ke PORTD trainer mikrokontroler.
4. Atur tab External IRQ dan berikan tanda centang pada INT0 Enabled dengan
mode Falling Edge
Gambar 10.5 interup pada codewizard
5. Generate save and exit. Simpan dengan nama file int_1.c, int_1.prj, int_1.cwp,
6. Lengkapi listing program seperti berikut
#include <mega16.h>#include <stdio.h>#include <delay.h>
unsigned char a, buf[16];
// Alphanumeric LCD Module functions#asm
.equ __lcd_port=0x15 ;PORTC#endasm#include <lcd.h>
// External Interrupt 0 service routineinterrupt [EXT_INT0] void ext_int0_isr(void){// Place your code herea++;
}
....................................
....................................
....................................#asm("sei")
while (1){// Place your code heresprintf(buf,"angka:%d",a);lcd_gotoxy(0,0);lcd_puts(buf);
};
7. Kompilasi,download dan perhatikan hasilnya pada LCD, halangi sensor dengan
kertas gelap kemudian lepas dan tutup kembali bagaimana reaksinya.
190
Analisa
1. Apa yang terjadi jika sensor tiba-tiba dihalangi tanpa dilepas penghalangnya?,
mengapa demikian?
2. Apa yang terjadi jika sensor sedang terhalangi tiba-tiba dilepas penghalangnya,
dan dibiarkan terbuka tanpa di halangi terus menerus?, mengapa demikian?
3. Berapakah maksimal angka hitungan yang muncul pada LCD? Mengapa
demikian?
4. Manakah yang harus di ubah dari listing program diatas jika ingin menghitung
hingga 1023 pulsa?mengapa demikian?
Latihan
1. Buat program dengan memodifikasi program diatas, sehingga mikrokontrol hanya
menghitung 512 pulsa, dan setelah 512 hitungan kembali ke nol!
2. Buat program dengan memodifikasi program diatas, sehingga mikrokontrol hanya
menghitung 12 pulsa untuk varibel a, dan setelah 12 hitungan variabel a kembali
ke nol dan variabel b bertambah 1, maksimal hitungan variabel b adalah 10. Nilai
kedua variabel ditampilkan pada LCD.
191
Nama Siswa :
Nomor Induk Siswa :
Produk/Jasa : Menerapkan Sistem Mikrokontroller
No Kompetensi dasar IndikatorPenilaian
YATIDAK
90 80 751 Menjelaskan prosedur
penyusunan algoritmapemrograman
Mengidentifikasi kaidah-kaidahyang berlaku dalam
penyusunan algoritma danpemrograman dengan benarMenjelaskan kaidah-kaidahyang berlaku dalam
penyusunan algoritma danpemrograman dengan benarMencontohkan Algoritmapemrograman melalui studikasusdengan baik
2Memprogram sistemmikroprosessor dansistem mikrokontroller
Mengetahui organisasimikrokontrolerATMega8535/16/32
Menjelaskan program yangakan dibuat dalam bentukalgoritma/flow chart denganbenar
Menenerapkan algoritma/flowchart kedalam bahasapemrograman dengan benar
Memecahkan permasalahanakibat kesalahan program
Menguji program pada sistemmikrokontroler dengan baik
Menampilkan hasil programpada sistem mikrokontroleryang tekah dibuat
3
Memprogram peralatansistem pengendalielektronik berkaitanakses I/O berbantuanmikroprosessor danmikrokontroller
Mengidentifikasi fungsiperalatan sistem pengendalielektronik dengan benar
Menjelaskan prinsip kerjaperalatan sistem pengendalielektroni dengan benar
Membuat algoritma danprogram untuk peralatan sistempengendali elektronik dengan
IV. LEMBAR PENILAIAN PSIKOMOTORIK
192
No Kompetensi dasar IndikatorPenilaian
YATIDAK
90 80 75baik
Memecahkan permasalahanakibat kesalahan program
Menguji program pada sistempengendali elektronik berkaitanakses I/O mikrokontrollerdengan baik
Menampilkan sistem pengendalielektronik berkaitan akses I/Omikrokontroller
4
Membuat dokumentasihasil pemrogramanperalatan sistempengendali elektronikyang berkaitan denganI/O bantuan :mikroprosesor danmikrokontroller.
Mengidentifikasi latar belakangdan tujuan pembuatan alatdengan baik
Merinci alat dan bahan yangdiperlukan dalam pembuatanalat dengan benarMengurutkan langkahpengerjaan dan pengujian alatdengan benarMenganalisa permasalahanyang muncul dalam pengerjaandan pengujian alatMenanggulangi permasalahanyang muncul dalam pengerjaandan pengujian alatMenyimpulkan hasil praktikumdan pengujian alat
Nilai Formatif (NF) diambil dari nilai terendah diantara nilai pencapaian setiap subkompetensi keterampilan/produk/jasa.
Nilai Formatif (NF) =
Penilai 2, Penilai 1,
193
Nama Siswa :
Nomor Induk Siswa :
Produk/Jasa : Menerapkan Sistem Mikrokontroller
No. Aspek Non instruksionalSikap (Attitude)
Skor Perolehan
Believe (B)(Preferensi oleh Peuji)
Evaluation (E)(Oleh Guru)
1 2 3 4 5 1 2 3 4 5
1. Sikap kerja
2. Tanggung jawab
3. Ketekunan
4. Kepemimpinan
5. Kecakapan
6. Penggunaan alat
7. Pemecahan masalah
∑ (Bn + En )Nilai Attitude (Nat) = ---------------- x 9
(5+5)7
Nat =
Penilai 2, Penilai 1,
V. LEMBAR PENILAIAN ASPEK SIKAP (ATTITUDE)
194
Nama Siswa :
Nomor Induk Siswa :
Produk/Jasa : Menerapkan Sistem Mikrokontroller
No Aspek Indikator Keberhasilan/ DeskripsiPenilaian
YaTidak
90 80 701 Isi
Laporan.1.1 Pendahuluan:
a. Latar belakangb. Tujuan
1.2 Proses Produksi/Jasaa. Proses pelaksanaan pekerjaan;b. Alat & bahan yang
digunakan;c. Gambar Kerja
(bila ada);d. Hasil yang Dicapai.
1.3 Temuan/ Pengembangana. Faktor Pendukung dan
Penghambat;b. Rencana Tindak Lanjut.
1.4 Pengorganisasian Portfolioa. Lengkap;b. Autentik;c. Relevan.
2. TeknikPembuatanDokumen
2.1. Format penulisan laporan:a. Sistematika sesuai dengan
yang ditetapkanb. Sesuai dengan kaidah
bahasa Indonesia yangdisempurnakan;
c. Ditik rapi;d. Dijilid rapi.
Nilai Laporan (Nlp) diambil dari nilai terendah diantara nilai pencapaian setiapindikator keberhasilan.
Nlp =
Penilai 2, Penilai 1,
VI. LEMBAR PENILAIAN LAPORAN
195
Modul pembelajaran ini menggunakan sistem pelatihan berbasis
kompetensi. Pelatihan bebasis kompetensi adalah pelatihan yang memperhatikan
pengetahuan, keterampilan dan sikap yang diperlukan di tempat kerja agar dapat
melakukan pekerjaan dengan competen. Penekanan utamanya adalah tentang apa
yang dapat dilakukan seseorang setelah mengikuti pelatihan. Salah satu
karakteristik yang paling penting dari pelatihan berdasarkan kompetensi adalah
penguasaan individu secara nyata di tempat kerja.
Dalam sistem pelatihan berbasis kompetensi, fokusnya tertuju kepada
pencapaian kompetensi dan bukan pada pencapaian atau pemenuhan waktu
tertentu. Dengan demikian maka dimungkinkan setiap peserta pelatihan
memerlukan atau menghabiskan waktu yang berbeda-beda dalam pencapaian
suatu kompetensi tertentu.
Jika siswa/peserta diklat belum mencapai kompetensi pada usaha atau
pada kesempatan pertama, maka guru akan mengatur rencana pelatihan dengan
peserta. Rencana ini memberikan kesempatan kembali kepada peserta untuk
meningkatkan level kompetensinya sesuai dengan level yang diperlukan. Jumlah
usaha atau kesempatan yang disarankan adalah tiga kali.
Untuk mengetahui tingkat keberhasilan peserta dalam mengikuti modul
ini, setiap peserta dievaluasi baik terhadap aspek pengetahuan maupun
ketrampilan. Aspek pengetahuan dilakukan melalui latihan-latihan dan tes tertulis,
sedang aspek keterampilan dilakukan melalui tugas praktek, dengan kriteria
ketuntasan minimal yang harus dicapai adalah 75 (skala 100). Apabila belum lulus
pada kompetensi ini, maka siswa yang bersangkutan harus melalui remedial
terlebih dahulu atau mengulang lagi.
VII. PENUTUP
196
Wardhana lingga, belajar sendiri mikrokontroler AVR seri ATMega 8535
simulasi,hardware,dan aplikasi,penerbit andi, yogyakarta,2006.
Heryanto ary,adi wisnu,Ir, pemrograman bahasa C untuk mikrokontroler ATmega
8535,penerbit andi,yogyakarta,2008.
Andrianto heri, pemrograman AVR ATmega 16 menggunakan bahasa C
codevision AVR ,informatika,bandung,2008.
Bejo agus, Rahasia kemudahan bahasa C dalam mikrokontroler ATmega
8535.graha ilmu,yogyakarta,2007.
VIII. DAFTAR PUSTAKA