i Puji syukur Alhamdulillah kami panjatkan kehadirat Allah SWT. yang telah melimpahkan Rahmat dan Hidayah-Nya sehingga penyusunan buku “Modul Ajar Praktikum Interfacing” dapat selesai dengan baik dan lancar. Ucapan terima kasih yang sebesar-besarnya penyusun sampaikan untuk istriku dan kedua buah hatiku tercinta yang selalu bersabar dalam setiap kesulitan dan memberikan motivasi serta semangat kepada penyusun untuk menyelesaikan buku modul ajar ini. Tak lupa juga penyusun ucapkan terima kasih kepada seluruh pihak yang telah membantu baik secara langsung maupun tidak dalam proses penyusunannya.
Dengan selesainya penyusunan buku “Modul Ajar Praktikum Interfacing” ini, penyusun mengharapakan supaya buku modul ajar ini dapat membantu proses belajar mengajar di Politeknik Perkapalan Negeri Surabaya (PPNS) pada umumnya dan khususnya di jurusan Teknik Kelistrikan Kapal (TKK) dapat berjalan sesuai dengan kompetensi yang diharapkan. Buku modul ajar praktikum ini telah disesuikan dengan perangkat laboratorium dan kurikulum di program studi Teknik Otomasi PPNS. Penyusunan buku modul ajar praktikum ini disajikan dalam bentuk yang mudah dipahami oleh mahasiswa sehingga penyampaian materi dapat lebih mudah diserap serta dapat dijadikan acuan dalam pembelajaran yang bersifat mandiri.
Akhirnya penyusun menyadari bahwa buku modul ajar ini tak lepas dari kesalahan dan jauh dari kesempurnaan. Karena kemsempurnaan itu hanyalah milik Allah SWT. semata dan semua kekurangan karena keterbatasan penyusun. Oleh sebab itu semua masukan, kritik dan saran untuk perbaikan sangat penyusun harapkan. Semoga buku modul ajar praktikum “Praktikum Interfacing” ini dapat memberikan konstribusi dan manfaat yang besar bagi civitas akademika Politeknik Perkapalan Negeri Surabaya dan semua pembaca yang membutuhkan.
Surabaya, Maret 2013
ii KATA PENGANTAR i DAFTAR ISI ii DAFTAR ISTILAH iv PENDAHULUAN A. Kompetensi 1
B. Gambaran Umum Materi 1
C. Waktu 1
D. Prasyarat 1
E. Petunjuk Penggunaan Modul Ajar 2
MODUL 1: PENGETAHUAN DASAR AVR DAN PEMROGRAMAN WINAVR 1.1 Sub Kompetensi 3 1.2 Uraian Materi 3 1.3 Rangkuman 19 1.4 Referensi 21 1.5 Latihan Soal 21 1.6 Lembar Kerja 22
1.7 Lembar Kerja Praktikum 25
1.8 Jawaban Latihan Soal 50
MODUL 2: AVR OUTPUT MENGGUNAKAN MODUL DISPLAY (LED, SEVEN SEGMENT, LCD)
2.1 Sub Kompetensi 51 2.2 Uraian Materi 59 2.3 Rangkuman 60 2.4 Referensi 60 2.5 Latihan Soal 60 2.6 Lembar Kerja 61
2.7 Lembar Kerja Praktikum 62
iii 3.1 Sub Kompetensi 75 3.2 Uraian Materi 75 3.3 Rangkuman 82 3.4 Referensi 83 3.5 Latihan Soal 83 3.6 Lembar Kerja 84
3.7 Lembar Kerja Praktikum 85
3.8 Jawaban Latihan Soal 92
MODUL 4: AVR INPUT MENGGUNAKAN MODUL SWITCH DAN KEYPAD 4.1 Sub Kompetensi 93 4.2 Uraian Materi 93 4.3 Rangkuman 97 4.4 Referensi 97 4.5 Latihan Soal 97 4.6 Lembar Kerja 98
4.7 Lembar Kerja Praktikum 99
4.8 Jawaban Latihan Soal 107
MODUL 5: AVR INPUT MENGGUNAKAN INTERNAL ANALOG DIGITAL CONVERTER (ADC)
5.1 Sub Kompetensi 108 5.2 Uraian Materi 108 5.3 Rangkuman 111 5.4 Referensi 112 5.5 Latihan Soal 112 5.6 Lembar Kerja 113
5.7 Lembar Kerja Praktikum 114
5.8 Jawaban Latihan Soal 121
iv
CPU (Central Processing Unit) sebagai unit pusat pemroses data.
ROM
(Read Only Memory) sebagai unit penyimpan data yang hanya dapat dibaca datanya saja dan tidak dapat ditulis oleh CPU.
RAM (Random Accsess Memory) sebagai unit penyimpan data
sementara yang dapat dibaca dan ditulis datanya oleh CPU.
I/O (Input/Output) sebagai sarana komunikasi dengan perangkat
luar.
Microprocessor Processor yang mempunyai kecepatan yang rendah dan
digunakan untuk keperluan tertentu.
Microcontroller
Controller board yang telah dilengkapi dengan processor dan fitur-fitur I/O sebagai sarana komunikasi dengan perangkat luar.
Downloader Perangkat yang dipakai untuk mengisi atau menulis program
ke dalam microcontroller.
CISC
(Complex Instruction Set Computing) tipe processor yang memiliki jumlah instruksinya lebih banyak / komplek tetapi fitur internalnya seadanya.
RISC
(Reduced Instruction Set Computing) tipe processor yang memiliki jumlah instruksinya lebih sedikit akan tetapi fitur internalnya lebih kaya.
MODUL AJAR PRAKTIKUM INTERFACING 1
A. KOMPETENSI
Memberikan keahlian kepada mahasiswa bagaimana melakukan komunikasi data dan mengendalikan perangkat keras (Hardware) seperti Microcontroller dan Microprocessor khususnya seri Atmel AVR secara sistematis dan terstruktur dengan menggunakan perangkat lunak (Software) pemrograman WinAVR yang berbasis bahasa C. Komunikasi data dan pengendalian antara perangkat keras dengan perangkat keras atau komputer (Personal Computer) dengan perangkat keras dapat dikuasai dan difahami dengan baik.
B. GAMBARAN UMUM MATERI
Materi yang diajarkan mencakup arsitektur dasar Microcontroller dan Microprocessor seri Atmel AVR, dasar-dasar data I/O (Input/Output), dasar-dasar sistem komunikasi dan pengendalian perangkat keras baik secara serial maupun paralel, dasar-dasar pemrograman Atmel AVR dengan menggunakan WinAVR yang berbasis bahasa C, mengenal perangkat-perangkat lunak (Software) pendukung pemrograman Atmel AVR lainnya, serta beberapa penerapan Atmel AVR pada suatu aplikasi.
C. WAKTU
Mata kuliah ini berbobot 2 sks atau 3.33 jam tatap muka setiap minggunya. Sehingga untuk bisa mencapai kompetensi yang telah ditentukan, mahasiswa harus mengikuti kegiatan tatap muka sebanyak 3.33 jam x 16 kali tatap muka. Atau sebesar 53.33 jam.
D. PRASYARAT
Untuk mempermudah pencapaian kompetensi yang diharapkan, mahasiswa harus mempunyai pemahaman dengan baik tentang prinsip dasar komponen-komponen elektronika, rangkaian analog dan digital, menguasai dasar-dasar sistem komunikasi data baik serial maupun paralel, menguasai dasar-dasar sistem pengaturan, memahami dan mengusai pembacaan datasheet komponen-komponen elektronika, menguasai komputer aplikasi dan memahami dasar-dasar pemrograman dengan menggunakan bahasa C.
MODUL AJAR PRAKTIKUM INTERFACING 2
E. PETUNJUK PENGGUNAAN MODUL AJAR
Modul ajar Praktikum Interfacing ini telah disusun secara sistematis dengan mengacu pada SAP yang berlaku. Untuk itu mahasiswa dalam menggunakan modul ajar ini harus memperhatikan beberapa hal berikut :
1. Membawa modul ajar ini setiap mengikuti perkuliahan.
2. Membaca dengan baik setiap isi yang ada di dalam modul ajar.
3. Membuat daftar catatan kecil untuk sesuatu hal yang belum dimengerti. Untuk kemudian ditanyakan kepada dosen.
4. Mengerjakan semua latihan soal yang terdapat di dalam modul.
5. Mengisi lembar kerja praktek/praktikum/tugas yang terdapat di dalam modul ini.
6. Mendengarkan dan mengerjakan intruksi yang diberikan oleh pengajar. 7. Membuat laporan hasil-hasil praktikum yang telah dilakukan disertai dengan
MODUL AJAR PRAKTIKUM INTERFACING 3
1.1. Sub Kompetensi
Kemampuan yang akan dimiliki oleh mahasiswa setelah memahami isi modul ini adalah sebagai berikut :
- Mahasiswa mampu memahami dasar-dasar arsitektur Microcontroller keluarga Atmel AVR, menginstalasi driver downloader AVR, menginstalasi perangkat lunak WinAVR sebagai editor program AVR, memahami dasar-dasar pemrograman Atmel AVR berbasis bahasa C dengan menggunakan WinAVR.
1.2. Uraian Materi
1.2.1. Sekilas tentang Atmel AVR
Microcontroller merupakan paket sistem kontrol sederhana berbentuk (Single Chip) yang dilengkapi dengan fitur memori dan peripheral pendukung lain. Sedangkan Microprocessor yang tidak dilengkapi dengan fitur tersebut.
Pembahasan mengenai Microcontroller tidak terlepas dari pemahaman tentang komputer yang kita kenal saat ini. Banyak kesamaan yang dapat ditemukan antara Microcontroller dan komputer. Kesamaan-kesamaan tersebut antara lain:
• Memiliki CPU (Central Processing Unit) sebagai unit pusat pemroses data. • Memiliki ROM (Read Only Memory) sebagai unit penyimpan data yang
hanya dapat dibaca datanya saja oleh CPU.
• Memiliki RAM (Random Accsess Memory) sebagai unit penyimpan data sementara yang dapat dibaca dan ditulis datanya oleh CPU.
• Memilki I/O (Input/Output) sebagai sarana komunikasi dengan perangkat luar seperti diagram blok yang ditunjukkan pada gambar 1.
Sedangkan perbedaan antara Microcontroller dengan komputer seperti dijelaskan berikut ini:
− Kecepatan proses CPU pada Microcontroller lebih rendah yaitu pada kisaran orde MHz (Mega Hertz) dibandingkan dengan komputer yang berorde GHz (Gega Hertz).
MODUL AJAR PRAKTIKUM INTERFACING 4 − ROM pada komputer atau lebih sering disebut BIOS (Basic Input Output
System) tidak dapat langsung digunakan tetapi memerlukan data tambahan yang tersimpan pada harddisk. Sedangkan ROM pada Microcontroller dapat langsung dioperasikan tanpa menggunakan tempat penyimpanan data lain. − Ukuran RAM internal pada Microcontroller jauh lebih kecil yaitu berkisar
pada orde KB (Kilo Byte) dibandingkan dengan RAM pada computer yaitu berkisar pada orde GB (Gega Byte).
− Pemakaian I/O pada Microcontroller dapat langsung digunakan tanpa menggunakan unit atau komponen tambahan. Sedangkan pemakaian I/O pad komputer harus melalui unit pengolahan I/O yang sering disebut Chipset.
Gambar 1.1. Diagram blok I/O pada Microntroller dan komputer.
Dari beberapa kesamaan dan perbedaaan antara Microcontroller dengan komputer seperti tersebut maka dapat dikatakan bahwa Microcontroller merupakan miniatur dari sistem komputer atau juga dapat dikatakan Microcontroller merupakan sistem komputer yang disederhanakan.
Untuk lebih memahami pembahasan tentang Microcontroller, maka perlu juga kita mengetahui perbandingan tujuan dan pemanfaatan penerapan aplikasi menggunakan
Komputer INPUT − Keyboard − Mouse − … CPU
− AMD (Sempron, Duron) − Intel (Pentium IV, i3, i5,i7) − … OUTPUT − Monitor − Speaker − … Microcontroller INPUT − Keypad − Sensor − … CPU − Atmel (8051,AVR) − PIC (16F84A, 16F877A) −
OUTPUT
− Motor − LED − …
MODUL AJAR PRAKTIKUM INTERFACING 5 Microcontroller dengan komputer ditinjau dari beberapa aspek kebutuhan seperti ditunjukkan pada tabel 1.1.
Tabel 1.1. Perbandingan penerapan aplikasi antara Microcontroller dengan
komputer ditinjau dari berbagai aspek kebutuhan,
No. KEBUTUHAN
APLIKASI MICROCONTROLLER KOMPUTER
1. Harga Relatif murah Relatif mahal
2. Kompeksitas Dipakai hanya untuk aplikasi-aplikasi sederhana
Dapat dipakai pada aplikasi yang kompleks 3. Portabilitas Dapat dipakai sebagai
perangkat yang portable
Tidak dapat dipakai pada aplikasi yang 4. Dimensi Relatif kecil (Compact) Relatif besar
Setelah mengenal perbandingan penerapan aplikasi antara Microcontroller dan komputer sebagaimana dijelaskan sebelumnya, ada baiknya kita juga mengetahui arsitektur dasar Microcontroller seperti ditunjukkan pada gambar 1.2.
Gambar 1.2. Diagram blok Microntroller yang disederhanakan. CPU
OSC Timer
EEPROM
INPUT OUTPUT PORT + -
Pro gra m C ount er Program Memory Instruction Address SFR RAM ADC CPU Operation Instruction Decoder ALU Accumulator Control Logic
MODUL AJAR PRAKTIKUM INTERFACING 6 Pada gambar 1.2 yang merupakan diagram blok sederhana dari arsitektur dasar Microcontroller terdapat blok-blok unit yang mempunyai kegunaan dan fungsi-fungsi tersendiri. Kegunaan blok-blok tersebut dijelaskan sebagai berikut:
a) CPU yang terdiri dari :
− SFR (Special Function Register) merupakan register khusus yang berfungsi untuk menyimpan data-data khusus sementara seperti konfigurasi I/O selama proses berlangsung.
− RAM internal berfungsi untuk menyimpan data-data aplikasi sementara yang bersifat umum.
− ADC (Analog to Digital Converter) berfungsi untuk mengubah data yang bertipe analag menjadi digital yang kemudian akan diproses oleh prosesor.
− CPU Operation yang terdiri dari beberapa unit mempunyai fungsi masing-masing seperti dijelaskan sebagai berikut:
Instruction Decoder berfungsi untuk menerjemahkan instruksi yang ada di dalam Program Memory.
ALU (Arithmetic Logic Unit) berfungdi untuk melakukan instruksi perhitungan suatu operasi.
Accumulator berfungsi untuk menghubungkan sinyal kontrol operasi ke bagian Control Logic.
Control Logic berfungsi untuk menghubungkan sinyal-sisnyal kontrol hasil operasi ke periferal I/O yang terhubung.
b) OSC (Oscillator) berfungsi sebagai clock atau menyuplai sinyal detak Microcontroller.
c) Timer dan Counter berfungsi sebagai pencacah waktu pada suatu operasi. d) I/O (Input Output) Port berfungsi media masuk dan keluarnya data suatu
proses operasi.
e) EEPROM berfungsi sebagai penyimpan data seperti RAM yang akan tetap menyimpan data walaupun tidak ada sumber daya atau dengan pengertian data terakhir yang tersimpan tidak akan hilang saat tidak ada sumber tegangan.
MODUL AJAR PRAKTIKUM INTERFACING 7 f) Program Memory berfungsi menyimpan data instruksi suatu operasi yang
akan diproses.
g) Program Counter berfungsi untuk melakukan perhitungan urutan instruksi-instruksi mana saja yang akan di eksekusi.
Setelah mengenal arsitektur dasar Microcontroller, maka selanjutnya perlu juga kita mengetahui tipe-tipe dari Microcontroller tersebut. Secara umum tipe-tipe Microcontroller dapat dikategorikan ke dalam 2 (dua) kelas yaitu:
1. Tipe CISC (Complex Instruction Set Computing) dimana jumlah instruksinya lebih banyak / komplek tetapi fitur internalnya seadanya. Contoh: Seri AT89 yang mempunyai 255 instruksi.
2. Tipe RISC (Reduced Instruction Set Computing) dimana jumlah instruksinya lebih sedikit akan tetapi fitur internalnya lebih kaya. Contoh: Seri PIC16F yang mempunyai jumlah instruksi berkisar 30 instruksi.
Beberapa perusahaan yang membuat Microcontroller yang telah dikenal antara lain adalah Atmel, Intel, Reinesance, Motorola, dan Zilog. Microcontroller seri AVR (Alfand Vegard's Risc processor) merupakan keluarga Microcontroller keluaran pabrikan Atmel yang banyak dan popular saat ini termasuk kedalam tipe RISC karena hanya memiliki sekitar 130-an instruksi.
Banyaknya jenis Microcontroller AVR itu sendiri dikarenakan kebutuhan akan aplikasi yang akan diterapkan berbeda-beda. Perusahaan Atmel memproduksi 5 (lima) tipe seri AVR yaitu:
1. TinyAVR
Berukuran kecil mempunyai jumlah pin mulai 8 sampai 32 pin, mempunyai fitur sistem komunikasi 8 bit, memory flash sebesar 16 Kbytes, dilengkapi dengan SRAM dan EEPROM sebesar 512 Bytes.
2. MegaAVR
Berukuran lebih besar mempunyai jumlah pin 40, fitur yang dimiliki yaitu sistem komunikasi 8 bit sudah dilengkapi dengan pengali perangkat keras
MODUL AJAR PRAKTIKUM INTERFACING 8 (Hardware Multiplier), kapasitas penyimpan data 256 KBytes, kapasitas EEPROM 4 KBytes, dan kapasitas SRAM 8KBytes.
3. AVR XMEGA
Mempunyai fitur antara lain sistem komunikasi 8/16 bit dengan unjuk kerja tinggi dan canggih dilengkapi dengan sistem DMA dan Event yang baik serta memiliki ciri khas konsumsi daya kecil dengan performa tinggi.
4. AVR32 UC3
Mempunyai fitur antara lain sistem komunikasi 32 bit, berdaya rendah, kapasitas memori flash 512 Kbytes dan SRAM 128 Kbytes.
5. AVR32 AP7
Mempunyai fitur antara lain sistem komunikasi 32 bit, berdaya rendah, kapasitas SRAM 32 Kbytes.
Di indonesia yang populer saat ini adalah tipe TinyAVR dan MegaAVR dikarenakan harganya yang relatif terjangkau dan aplikasi yang diterapkan menggunakan prosesor AVR tersebut tidak terlalu kompleks.
1.2.2. Arsitektur AVR ATMega 16
Modul pelatihan (AVR Trainner Board) yang digunakan sebagai penunjang mata kuliah ini adalah seri AVR bertipe ATMega 16. Penjelasan mengenai bagian-bagian AVR Trainner Board secara garis besar dapat dilihat pada bagian Lampiran pada modul ajar ini.
1.2.2.1. Fitur Dasar ATmega16
Microprocessor ATmega16 AVR memiliki fitur-fitur dasar sebagaimana dijelaskan berikut ini:
1. Port I/O 32 jalur (Port A, Port B, Port C, Port D masing - masing 8 bit) 2. ADC 8 channel dengan resolusi 10 bit 3.
3. buah timer / counter 4. Osilator internal 5. Flash PEROM 16 Kb 6. EEPROM 512 byte 7. SRAM 512 byte
MODUL AJAR PRAKTIKUM INTERFACING 9 8. Interupsi Eksternal dan Internal
9. Port USART untuk komunikasi serial.
Untuk lebih memahami fitur-fitur yang ada pada AVR ATMega16 secara detil, maka disarankan melihat datasheet yang disertakan pada modul ajar ini pada bagian Lampiran.
1.2.2.2. Struktur Memori
Secara khusus AVR ATmega16 mempunyai ruang memori data dan memori program yang terpisah.
Memori data terdiri 3 bagian :
- 32 buah General Purspose Register (GPR) / register umum - 64 buah register I/O
- 512 byte SRAM Internal
- Memori program sebesar 8 Kbyte dalam Flash PEROM dengan alamat 000H sampai FFFH.
1.2.2.3. Konfigurasi Hardware ATmega16
Bentuk fisik dari IC AVR ATMega 16 secara umum ada 2 (dua) macam yaitu bertipe PDIP dan SMD seperti ditunjukkan pada gambar 1.3 dan gambar 1.4. Pada gambar-gambar tersebut juga ditunjukkan konfigurasi pin-pin yang dimiliki.
MODUL AJAR PRAKTIKUM INTERFACING 10 ATmega16 memiliki konfigurasi pin 40 kaki yang terdiri dari masing-masing pin I/O (32 pin) serta mempunyai fungsi khusus tergantung penggunaannya. Pada tabel 1.2 dijelaskan secara singkat fungsi dari masing-masing pin pada Microprocessor AVR ATMega16.
Gambar 1.4. Diagram pin ATMega16 bertipe SMD.
Tabel 1.2. Fungsi masing-masing pin pada AVR ATMega16.
PIN FUNGSI
Vcc Masukan tegangan catu daya
GND Ground
Port A (PA7..PA0)
Port A berfungsi sebagai masukan analog ke ADC internal pada mikrokontroler ATMega16, selain itu juga berfungsi sebagai port I/O dua arah 8-bit, jika ADC-nya tidak digunakan.
Masing-masing pin menyediakan resistor pull-up internal yang bisa diaktifkan untuk masing-masing bit.
Port B (PB7..PB0)
Port B berfungsi sebagai sebagai port I/O dua arah 8-bit.Masingmasing pin menyediakan resistor pull-up internal yang bisa diaktifkan untuk masing-masing bit.
Port B juga memiliki berbagai macam fungsi alternatif, seperti ditunjukkan
MODUL AJAR PRAKTIKUM INTERFACING 11 pada Tabel 1.3
Port C (PC7..PC0)
Port C berfungsi sebagai sebagai port I/O dua arah 8-bit. Masingmasing pin menyediakan resistor pull-up internal yang bisa diaktifkan untuk masing-masing bit.
Port C juga digunakan sebagai antarmuka JTAG, seperti ditunjukkan pada Tabel 1.4
Port D (PD7..PD0)
Port D berfungsi sebagai sebagai port I/O dwi-arah 8-bit.Masingmasing pin menyediakan resistor pull-up internal yang bisa diaktifkan untuk masing-masing bit.
Port D juga memiliki berbagai macam fungsi alternatif, seperti ditunjukkan pada Tabel 1.5
/RESET
Masukan Reset. Level rendah pada pin ini selama lebih dari lama waktu minimum yang ditentukan akan menyebabkan reset, walaupun clock tidak dijalankan.
XTAL1
Masukan ke penguat osilator terbalik (inverting) dan masukan ke rangkaian clock internal.
XTAL2 Keluaran dari penguat osilator (inverting)
AVCC
Merupakan masukan tegangan catu daya untuk Port A sebagai ADC, biasanya dihubungkan ke Vcc, walaupun ADC-nya tidak digunakan. Jika ADC digunakan sebaiknya dihubungkan ke Vcc melalui tapis lolos-bawah (low-pass filter).
AREF Tegangan referensi untuk ADC
Pada Tabel 1.3 sampai tabel 1.5 ditunjukkan masing-masing alternatif fungsi dari Port B, Port C dan Port D. Dalam modul ajar ini dijelaskan fungsi masing-masing port terkecuali untuk JTAG Interface.
MODUL AJAR PRAKTIKUM INTERFACING 12
Tabel 1.3. Fungsi-fungsi alternatif dari PORTB.
Tabel 1.4. Fungsi-fungsi alternatif dari PORTC.
MODUL AJAR PRAKTIKUM INTERFACING 13 Untuk lebih menambah wawasan tentang arsitektur dasar ATmega16 coba amati gambar 1.5 berikut .
MODUL AJAR PRAKTIKUM INTERFACING 14
1.2.3. AVR910 Dowloader
Sebuah Microcontroller akan dapat beroperasi jika didalam prosesornya telah tertanam sebuah program atau kumpulan dari instruksi-instruksi. Instruksi-instruksi tersebut berasal dari kode-kode program yang dibuat dengan menggunakan editor program dengan bahasa pemrograman tersetentu misalnya Basic atau C, kemudian program tersebut dikompilasi dan siap dimasukkan ke Microcontroller. Untuk memasukkan program kompilasi tersebut ke dalam Microcontroller diperlukan sebuah media yang disebut Programmer atau Downloader.
Downloader AVR910 USB yang digunakan pada modul pelatihan ini, merupakan perangkat keras yang digunakan sebagai sarana antarmuka dalam melakukan pemrograman Microcontroller jenis AVR. Pemrograman AVR pada umumnya dilakukan dengan menghubungkan LPT atau serial. Untuk downloader ini, pemrograman dilakukan dengan USB melalui pin MISO, MOSI, SCK dan RST. Untuk dapat menggunakan AVR910 USB sebagai downloader maka diperlukan driver dalam komputer yang digunakan. Rangkaian skematik dari downloader tersebut seperti ditunjukkan pada gambar 1.6. Sedangkan untuk penjelasan lebih detil tentang downloader tersebut dapat dilihat pada datasheet yang ada dibagian Lampiran.
MODUL AJAR PRAKTIKUM INTERFACING 15 Spesifikasi AVR 910 USB adalah sebagai berikut:
− Antar muka yang digunakan adalah USB, sehingga dapat digunakan pada PC, Notebook atau Laptop yang tidak mempunyai LPT atau serial
− Tidak membutuhkan catu daya eksternal
− Kompiler yang digunakan adalah Codevision AVR, AVR Studio, WinAVR atau kompiler yang lain yang mempunyai fasilitas AVR 910
1.2.4. Dasar Pemrograman C dengan WinAVR
Bahasa pemrograman Microcontroller dapat menggunakan bahasa Assembly, BASIC, C dan masih banyak lagi. Pada modul ini pemrograman Microcontroller menggunakan bahasa pemrograman C.
Untuk memahami pemrograman dalam bahasa C, berikut ini disajikan beberapa poin-poin penting yang perlu dipelajari yaitu:
1. Struktur penulisan bahasa C seperti ditunjukkan kode program berikut ini.
2. Tipe-tipe data dalam bahas C seperti dijelaskan berikut ini: − char : 1 byte ( -128 s/d 127 )
− unsigned char : 1 byte ( 0 s/d 255 ) − int: 2 byte ( -32768 s/d 32767 ) − unsigned int: 2 byte ( 0 s/d 65535 )
− long: 4 byte ( -2147483648 s/d 2147483647 ) − unsigned long: 4 byte ( 0 s/d 4294967295 ) − float: bilangan desimal
− array: kumpulan data-data yang sama tipenya.
#include < [library1.h] > // Opsional
#define [nama1] [nilai]; // Opsional
[global variables] // Opsional
[functions] // Opsional
int main(void) // Program Utama
{
[Deklarasi local variable/constant] [Isi Program Utama]
MODUL AJAR PRAKTIKUM INTERFACING 16 3. Deklarasi Variabel dan Konstanta
− Variabel adalah memori penyimpanan data yang nilainya dapat diubah-ubah. Penulisan : [tipe data] [nama] = [nilai];
− Konstanta adalah memori penyimpanan data yang nilainya tidak dapat diubah. Penulisan : const [nama] = [nilai];
− Global variable atau constant dapat diakses di seluruh bagian program. − Local variable atau constant hanya dapat diakses oleh fungsi tempat
dideklarasikannya. 4. Pernyataan
Statement atau pernyataan adalah setiap operasi dalam pemrograman, harus diakhiri dengan [;] atau [}]. Pernyataan tidak akan dieksekusi bila diawali dengan tanda [//] untuk satu baris. Lebih dari 1 baris gunakan pasangan [/*] dan [*/]. Pernyataan yang tidak dieksekusi disebut juga komentar.
Contoh:
suhu=adc/255*100; //contoh rumus perhitungan suhu
5. Fungsi
Function atau fungsi adalah bagian program yang dapat dipanggil oleh program utama. Penulisan kode:
6. Pernyataan berkondisi
if else: digunakan untuk menyeleksi satu atau beberapa kondisi.
Penulisan kode:
switch case: digunakan untuk seleksi dengan banyak kondisi. if ( [persyaratan] ) { [statement1]; [statement2]; ... } else { [statement3]; [statement4]; ... }
[tipe data hasil] [nama function]([tipe input 1],[tipe input 2])
{
[pernyataan_1]; [pernyataan_2]; ... }
MODUL AJAR PRAKTIKUM INTERFACING 17 Penulisan kode:
7. Perulangan
for : digunakan untuk pengulangan dengan jumlah yang sudah diketahui
berapa kali diulang. Penulisan kode:
while: digunakan untuk pengulangan (looping) jika masih memenuhi suatu
kondisi tertentu. Penulisan kode:
do while: digunakan untuk pengulangan jika dan selama memenuhi syarat
tertentu, namun min 1 kali. Penulisan kode: do { [statement1]; [statement2]; ... } while ([persyaratan]) while ( [persyaratan] ) { [statement1]; [statement2]; ... }
for ( [nilai awal] ; [syarat] ; [operasi nilai] ) {
[statement1]; [statement2]; ...
}
switch ( [nama variabel] ) { case [nilai1]: [statement1]; break; case [nilai2]: [statement2]; break; ... }
MODUL AJAR PRAKTIKUM INTERFACING 18 8. Operasi Logika dan Bilangan Biner
Operator Logika: AND: && NOT: ! OR : || Biner : AND: & OR : | XOR : ^ Shift right: >> Shift left : << Operator relasi:
Lebih besar sama dengan: >= Lebih kecil/besar: < , > Lebih kecil sama dengan : <= 9. Operasi Aritmetika
Operator Keterangan
+, -, *, / Tambah, kurang, kali dan bagi
+=, -=, *=, /= Nilai di sebelah kiri operator ditambah, dikurangi, dikali atau dibagi dengan nilai di sebelah kanan operator.
% Sisa pembagian
++, -- Ditambah 1 (increment) atau dikurangi satu (decrement)
Contoh:
a = 5 * 6 + 2 / 2 – 1 hasilnya 30
a *= 5 jika nilai awal a=30, maka hasilnya 150 a += 3 jika nilai awal a=30, maka hasilnya 33 a++ jika nilai awal a=5, maka hasilnya 6
a-- jika nilai awal a=5, maka hasilnya 4, dst 10. Pengulangan terus-menerus atau Infinite Looping
Infinite Looping merupakan suatu pengulangan yang dilakuka terus-menerus tanpa batas, hingga rangkaian tidak lagi mendapatkan sumber catu daya. Umumnya Infinite Looping diletakkan pada program utama seperti contoh kode program berikut ini:
MODUL AJAR PRAKTIKUM INTERFACING 19 Catatan: Untuk keluar dari infinite looping gunakan perintah break;
WinAVR (http://winavr.sourceforge.net/) merupakan perangkat lunak yang bersifat opensource sebagai tools pengembangan untuk seri RISC dari Microprocessor Atmel AVR pada platform Window berbasis GNU GCC Compiler untuk bahasa C dan C++. Tool-tool yang termasuk didalamnya antara lain Programmers Notepad sebagai media editor (http:/sourceforge.net/projects/pnotepad/), M-File sebagai editor pembuat makefile rule sebelum dikompilasi dan AVRDude sebagai tools untuk kompilasi dan mendownload program Microcontroler seri RISC Atmel AVR dalam bahasa C (http://savannah.nongnu.org/projects/avrdude/) seperti ditunjukkan pada gambar 1.7.
Gambar 1.7. Tools yang disediakan WinAVR GCC.
Pada situs WinAVR selain disediakan installer WinAVR yang dapat didownload secara gratis, juga disediakan intruksi manual WinAVR.
1.3. Rangkuman
Microcontroller merupakan sistem pengendali yang sederhana dan dapat dianalogikan juga sebagai bentuk sistem komputer sederhana yang disesuaikan dengan kebutuhan. Berbeda dengan Microprocessor, pada Microcontroller telah
void main() {
// pernyataan-pernyataan program while (1); // infinite loop {
// pernyataan2 }
MODUL AJAR PRAKTIKUM INTERFACING 20 dilengkapi dengan fitur memori dan peripheral pendukung lain yang dipaket menjadi satu bentuk IC (Single Chip).
Kemiripan Microcontroller dan komputer antara lain terletak pada kesamaan mempunyai CPU, ROM, RAM, dan I/O.
Sedangkan perbedaan antara keduanya terletak pada : − Kecepatan proses CPU.
− Kapasitas ROM/RAM. − Kemudahan akses I/O.
Aspek kebutuhan yang menjadi pertimbangan pada penerapan aplikasi antara Microcontroller dan komputer antara lain:
− Aspek harga.
− Aspek kompleksitas aplikasi. − Aspek portabilitas.
− Aspek dimensi alat.
Seri Microcontroller AVR yang diproduksi Atmel terdiri dari 5 (lima) jenis yaitu: 1. TinyAVR
2. MegaAVR 3. AVR XMEGA 4. AVR32 UC3 5. AVR32 AP7
Microcontroller ATmega16 merupakan seri megaAVR dengan sistem komunikasi 8 bit, memiliki memori flash internal sebesar 16 Kbytes, dan mempunyai 4 (empat) port keluaran (Output) yaitu PORTA (PA0-PA7), PORTB (PB0-PB7) , PORTC (PC0-PC7) dan PORTD (PD0-PD7).
Untuk memasukkan instruksi kode program ke dalam Microcontroller diperlukan tools yang disebut downloader. Pada modul pelatihan ini dipakai downloader AVR910 USB.
Bahasa pemrograman untuk menuliskan kode instruksi pada modul ini menggunakan bahasa C dan tools yang dipakai sebagai editornya adalah WinAVR.
MODUL AJAR PRAKTIKUM INTERFACING 21
1.4. Referensi
a) Agfianto Eko Putra (2009), Tip dan trik Mikrontroler AT89 dan AVR. Penerbit Gavamedia.
b) Budiharto, Widodo (2006), Panduan Praktikum Mikrokontroler AVR ATmega 16. Elex Media Komputindo.
c) Takashi, (2007), AVR GCC Tutorial. German: (www.mikrocontroller.net). d) Atmel Co., (2010). Datasheet AVR ATmega16.
1.5. Latihan Soal
1. Apakah perbedaan mendasar yang anda ketahui antara Microprocessor dan Microcontroller ?
2. Sebutkan persamaan dan perbedaan antara Microcontroller dan komputer (Personal Computer)?
3. Sebutkan seri keluarga Microcontroller AVR yang anda ketahui? 4. Apakah fungsi dari Downloader atau sering juga disebut Programmer ? 5. Sebutkan macam-macam downloader bertipe USB yang anda ketahui? 6. Sebutkan perangkat lunak downloader yang anda ketahui?
7. Selain WinAVR, ada beberapa perangkat lunak yang digunakan untuk menuliskan kode program AVR. Sebutkan adan jelaskan secara singkat masing-masing perangkat lunak tersebut!
MODUL AJAR PRAKTIKUM INTERFACING 22
1.6. Lembar Kerja
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...MODUL AJAR PRAKTIKUM INTERFACING 23 ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
MODUL AJAR PRAKTIKUM INTERFACING 24 ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
MODUL AJAR PRAKTIKUM INTERFACING 25
1.7. Lembar Kerja Praktikum
1.7.1 Alat dan BahanAlat :
No. Nama Jenis
Perangkat Jumlah
1. Komputer Keras 1
2. AVR Trainer Board yang dilengkapi dengan
AVR910 Downloader Keras 1
3. Driver AVR910 USB downloader Lunak 1
4. Installer WinAVR Lunak 1
Bahan :
No. Nama Jenis
Perangkat Jumlah
1. Kabel USB Printer Keras 1
2. Kabel data pelangi Keras 4
3. Kabel power 220VAC Keras 1
1.7.2 Prosedur Keselamatan
Untuk mencegah hal-hal yang tidak diinginkan, Ikutilah prosedur keselamatan kerja berikut ini selama praktikum berlangsung:
1. Sebelum menggunakan perangkat hendaknya periksa dahulu kelengkapannya. 2. Sebelum menyalakan perangkat periksa dan pastikan koneksi kabel dan
konektor-konektor yang terhubung.
3. Periksa dahulu tombol power perangkat dan pastikan dalam keadaan OFF sebelum dikonfigurasi.
4. Periksa kembali konfigurasi kabel dan konektor dan pastikan tidak ada yang terbalik polaritasnya.
1.7.3 Langkah Kerja
Ikuti langkah-langkah kerja praktikum berikut ini sesuai dengan prosedur:
1. Konfigurasi perangkat sesuai dengan sub bab gambar kerja setelah sub bab ini.
2. Instal driver AVR910 USB downloader sesuai dengan prosedur yang ada setelah sub bab ini.
MODUL AJAR PRAKTIKUM INTERFACING 26 4. Instal driver Giveio sesuai prosedur setelah sub bab berikut.
5. Buat program dengan tool Programmer Notepad (WinAVR) sesuai prosedur. 6. Kompilasi program WinAVR untuk menghasilkan file *.hex sesuai dengan
prosedur.
7. Download program ke AVR ATmega16 sesuai dengan prosedur. 8. Kerjakan tugas praktikum pada sub bab berikutnya.
9. Buat analisa dan laporan dari hasil praktikum yang telah dilakukan.
1.7.3.1 Prosedur Instalasi driver AVR910 USB downloader
Berikut ini adalah cara instalasi AVR 910 USB pada PC atau notebook dengan operasi Windows XP 32/64 bit:
1. Hubungkan AVR 910 dengan PC atau notebook anda menggunakan kabel USB Printer.
2. PC atau notebook anda akan mengenali adanya perangkat keras (hardware) baru yang terpasang yang ditandai dengan pesan ‘Found New Hardware’ pada layar monitor sebelah kanan bawah.
3. Kemudian PC atau notebook akan meminta driver dari perangkat keras tersebut dan meminta anda untuk menginstal driver dengan munculnya dialog wizard seperti gambar 1.8.
MODUL AJAR PRAKTIKUM INTERFACING 27 4. Pilih Install from a list or specific location (Advanced), lalu tekan tombol
Next, tekan Browser lalu pilih folder Driver\2k_xp_32 yang ada pada CD. Kemudian tekan Next seperti ditunjukkan gambar 1.9 sampai gambar 1.11.
Gambar 1.9. Wizard dialog pilihan lokasi file driver.
MODUL AJAR PRAKTIKUM INTERFACING 28
Gambar 1.11. Wizard dialog setelah driver selesai diinstal.
5. Setelah langkah di atas selesai, maka PC atau notebook anda telah siap menggunakan AVR 910 USB. Untuk memastikan, buka device manager melalui control panel, performance and Maintenance, kemudian System, pilih Hardware kemudian tekan Device Manager. Perhatikan driver AVR910 USB pada bagian port seperti gambar 1.12.
MODUL AJAR PRAKTIKUM INTERFACING 29
1.7.3.2 Prosedur Instalasi Program WinAVR
1. Jalankan program installer WinAVR, pada praktikum ini yang digunakan adalah WinAVR versi 20100110 (tampak pada nama file‐nya seperti gambar 1.13).
Gambar 1.13. Nama file installer WinAVR.
2. Kemudian akan muncul dialog pilihan instalasi bahasa seperti gambar 1.14 berikut ini:
Gambar 1.14. Dialog pilihan bahasa instalasi.
3. Lalu, tekan OK jika diinginkan bahasa Inggris sebagai bahasa pengantar instalasinya.
4. Proses instalasi selanjutnya adalah berisi Lisence Agreement yang harus kita ikuti, kemudian pada pemilihan lokasi instalasi WinAVR. (Ubah lokasi
instalasi menjadi C:\WinAVR seperti ditunjukkan gambar 1.15 ).
5. Selanjutnya, pastikan seluruh (tiga) komponen dipilih untuk diinstal. Pemilihan ini ditandai dengan tanda centang (√) seperti ditunjukkan gambar 1.16.
MODUL AJAR PRAKTIKUM INTERFACING 30
Gambar 1.15. Dialog pilihan lokasi instalasi WinAVR.
Gambar 1.16. Dialog pilihan komponen instalasi WinAVR.
1.7.3.3 Prosedur Instalasi Driver GiveIO
Driver GiveIO dibutuhkan agar pemprograman dengan AVRDude dapat digunakan dengan WinAVR. Berikut ini langkah –langkah instalasi driver GiveIO: 1. Jalankan Command Prompt dengan mengetikan “cmd” pada kotak Run pada
MODUL AJAR PRAKTIKUM INTERFACING 31
Gambar 1.17. Tampilan menu ‘Run’ pada windows.
2. Lalu, tekan Enter (untuk Win XP) atau Ctrl+Shift+Enter (untuk Win Vista atau Windows 7), sehingga Command Prompt yang muncul dengan mode Administrator seperti terlihat pada gambar 1.18 berikut:
Gambar 1.18. Tampilan menu ‘Command Run’ untuk administrator.
Jika command prompt belum dalam mode administrator maka instalasi GiveIO tidak dapat dilakukan berikut gambar contoh yang salah belum pada mode administrator seperti gambar 1.19.
Gambar 1.19. Tampilan menu ‘Command Run’ untuk selain administrator.
MODUL AJAR PRAKTIKUM INTERFACING 32 command prompt “cd c:\winavr\bin” kemudian tekan enter hasilnya seperti gambar 1.20 berikut ini.
Gambar 1.20. Tampilan menu ‘Command Run’ lokasi direktori WinAVR.
4. Kemudian, ketik “install_giveio” dan tekan Enter dan hasilnya seperti terlihat pada gambar 1.21 berikut.
Gambar 1.21. Tampilan menu ‘Command Run’ instalasi giveio yang telah berhasil.
5. Apabila pada Command Promt ditampilkan sebagaimana gambar di atas, maka instalasi driver GiveIO telah berhasil. Namun, apabila tidak seperti itu, kemungkinan besar karena Command Prompt tidak berjalan dalam
MODUL AJAR PRAKTIKUM INTERFACING 33 mode Administrator. Gambar 1.22 berikut merupakan contoh instalasi GiveIO yang gagal.
Gambar 1.22. Tampilan menu ‘Command Run’ instalasi giveio yang telah gagal.
1.7.3.4 Prosedur Pemrograman AVR dengan Programmer Notepad
1. Jalankan Programmers Notepad pada start menu program WinAVR seperti ditunjukkan gambar 1.23.
Gambar 1.23. Programmer Notepad pada start menu program WinAVR.
2. Buatlah New Project dengan menekan urutan menu: “File New Project “ seperti ditunujkkan pada gambar 1.24.
MODUL AJAR PRAKTIKUM INTERFACING 34 3. Beri nama New Project tersebut, misalnya “Modul1” seperti ditunjukkan gambar
1.25 berikut.
Gambar 1.25. Pemberian nama project baru pada Programmer Notepad.
4. Pilih Folder dimana New Project akan disimpan: a. Klik Kotak “…”
Gambar 1.26. Pilihan folder project baru pada Programmer Notepad.
b. Misalkan folder baru ditempatkan pada Drive C, kemudian, klik “Make New Folder” lalu beri nama folder “Modul1”
MODUL AJAR PRAKTIKUM INTERFACING 35 c. Kemudian pilih folder baru tersebut sehingga “Folder: New folder” berubah menjadi “Folder: Modul1” kemudian klik OK seperti tampak pada gambar 1.28.
d. Klik OK sekali lagi maka project baru dengan nama “Modul1” telah siap seperti tampak pada gambar 1.29..
Gambar 1.28. Penamaan folder baru pada Programmer Notepad.
Gambar 1.29. Konfirmasi folder yang telah dibuat pada Programmer Notepad.
5. Selanjutnya adalah menyiapkan file editor bahasa C dengan nama “Tugas1.c” a. Klik: File->Save As…
MODUL AJAR PRAKTIKUM INTERFACING 36 b. Beri nama file “Tugas1.c” seperti tampak pada gambar 1.31.
c. Pastikan file “Tugas1.c” berada pada folder baru yang tadi dibuat, yaitu folder “Modul1”. Kemudian, akhiri dengan klik Save.
Gambar 1.31. Kotak dialog penamaan ‘Save As’ pada Programmer Notepad.
6. Ikutsertakan file “Tugas1.c” pada project “Modul1” dengan cara sebgai berikut: a. Klik kanan (Porject)(New Project Group)Modul1->pilih Add Files
Gambar 1.32. Cara menambahakan file C ke dalam project baru.
b. Pilih file “Tugas1.c” yang telah dibuat.
c. Akhiri dengan klik Open seperti ditunjukkan pada gamabr 1.33.
d. Kemudian akan muncul sebuah editor kosong yang bernaman “Tugas1.c” dan telah siap untuk dituliskan kode program seperti tampak pada gambar1.34.
MODUL AJAR PRAKTIKUM INTERFACING 37
Gambar 1.33. Kotak dialog penambahan file C ke dalam project baru yang telah
dibuat pada Programmer Notepad.
Gambar 1.34. Ruang kosong editor file C yang siap untuk deprogram.
MODUL AJAR PRAKTIKUM INTERFACING 38 7. Ketikkan baris‐baris program Tugas1 seperti pada bagian tugas 1 pada modul 1
praktikum ini atau sebagaimana tampak pada gambar 1.35.
1.7.3.5 Prosedur pembuatan MakeFile untuk kompilasi progam
Program yang telah ditulis tadi tidak dapat di‐compile langsung jika belum disiapkan file “Makefile” yang berada pada folder yang sama dengan file “Tugas1.c”, yaitu pada folder “Modul1”.
Langkah-langkah untuk membuat MakeFile adalah sebagai berikut: 1. Jalankan MFile [WinAVR] seperti tampak pada gambar 1.36.
Gambar 1.36. Menu program pembuatan MakeFile pada Programmer Notepad.
2. Atur “TARGET = Tugas1” dengan langkah:
a. Pilih menu “Makefile --> Main file name…” seperti pada gambar 1.37. b.
Gambar 1.37. Menambahkan main filename untuk MakeFile.
c. Pada kotak Main file -> Ketikan nama “Tugas1”, sebagaimana ditunjukkan pada gambar 1.38.
d. Akhiri dengan klik OK seperti tampak pada gambar 1.38. e. Kemudian jika sudah selesai akan tampak pada gambar 1.39.
MODUL AJAR PRAKTIKUM INTERFACING 39
Gambar 1.38. Konfirmasi dialog untuk menambahkan main filename.
Gambar 1.39. TARGET Filename pada MakeFile yang telah ditambahkan.
3. Selanjutnya pilih jenis microcontroller yang akan dijadikan target pemrograman dengan memilih sub menu “Makefile --> MCU type --> ATmega”.
a. Pilih atmega16 karena yang dipakai pada modul pelatihan ini adalah ATmega16 seperti tampak pada gambar 1.40.
MODUL AJAR PRAKTIKUM INTERFACING 40
Gambar 1.40. Sub menu pilihan jenis Microcontroller pada mfile.
b. Kemudian muncul tampilan setelah dipilih atmega16 seperti tampak pada gambar 1.41.
Gambar 1.41. Tampilan jenis Microcontroller setelah dipilih.
4. Pilih programmer atau downloader yang digunakan untuk memprogram AVR dengan memilih sub menu : “Makefile --> Programmer”.
a. Pilih avr910 programmer sesuai dengan modul pelatihan ini seperti tampak pada gambar 1.42.
MODUL AJAR PRAKTIKUM INTERFACING 41
Gambar 1.42. Tampilan menu untuk memilih jenis Programmer.
b. Kemudian tampilan setelah dipilih avr910 tampak seperti gambar 1.43.
Gambar 1.43. Tampilan jenis Programmer setelah dipilih.
5. Pilih Port yang digunakan oleh programmer tersebut dengan memilih menu: “Makefile --> Port” seperti pada gambar 1.44.
MODUL AJAR PRAKTIKUM INTERFACING 42
Gambar 1.44. Tampilan menu pilihan port Programmer yang digunakan.
b. Tampilan setelah dipilih com tampak seperti gambar 1.45.
Gambar 1.45. Tampilan pilihan port Programmer setelah selesai dipilih.
6. Atur nilai Kristal yang digunakan dengan mengetikan nilai Kristal tersebut secara langsung seperti langkah-langkah berikut:
MODUL AJAR PRAKTIKUM INTERFACING 43 a. Pilih menu “Makefile --> Enable Editing of Makefile” seperti tampak pada
gambar 1.46.
Gambar 1.46. Tampilan menu pilihan “Enable Editing of Makefile”.
b. Kemudian, edit “Makefile” dengan mengetikan nilai Kristal yang sesuai, misalnya 8 Mhz, sehingga tertulis “F_CPU = 8000000” seperti tampak pada gambar 1.47.
Gambar 1.47. Tampilan setelah nilai Kristal selesai diedit.
7. Simpan file “Makefile” tersebut di folder file “Tugas1.c” berada yaitu folder “Modul1” dengan langkah-langkah sebagai berikut:
MODUL AJAR PRAKTIKUM INTERFACING 44
Gambar 1.48. Tampilan menu penyimpanan makefile.
b. Pastikan berada pada foler “Modul1”
Gambar 1.49. Tampilan tempat penyimpanan makefile menjadi satu folder.
c. Akhiri dengan klik Save (Catatan: Jangan mengubah nama file biarkan
tetap Makefile)
8. Terakhir, tutup program Mfile dengan memilih menu : “File --> Exit”
MODUL AJAR PRAKTIKUM INTERFACING 45
1.7.3.6 Prosedur Kompilasi Program WinAVR
Berikut ini adalah langkah untuk meng‐compile sekaligus membuat file *.hex (pada contoh kasus ini adalah file “Tugas1.hex”) yang akan didownload ke ATMega16. Langkah-langkah untuk menkompilasi program WinAVR adalah sebgai berikut:
1. Kembali programmers notepad editor yang telah dibuat pada bagian sebelumnya
2. Pada menu WinAVR pilih “Tools --> [WinAVR] Make All” seperti ditunjukkan pada gambar 1.51.
Gambar 1.51. Tampilan menu untuk kompilasi program pada WinAVR.
3. Apabila tidak ada kesalahan pada program, maka pada Output ditampilkan “Process Exit Code : 0” seperti gambar 1.52 berikut:
Gambar 1.52. Tampilan pesan keluaran setelah program berhasil dikompilasi.
4. Apabila terjadi kesalahan, pada Output diberikan informasi kesalahan tersebut. Seperti ditunjukkan pada gambar 1.53.
MODUL AJAR PRAKTIKUM INTERFACING 46
Gambar 1.53. Tampilan pesan keluaran apabila terjadi kesalahan pada program.
5. Perbaiki kesalahan yang terjadi, kemudian kembali ke langkah 1 (satu).
1.7.3.7 Prosedur Download Program ke Microcontroller AVR
Berikut ini merupakan langkah-langkah untuk download program ke Microcontroller AVR pada modul ini digunakan pada ATmega16:
1. Pastikan programmer telah terhubung dengan AVR Trainer Board dan AVR910 USB programmer telah terhubung dengan USB pada PC.
2. Kemudian pada menu pilih “Tools --> [WinAVR] Programm” seperti tampak pada gambar 1.54.
Gambar 1.54. Tampilan menu pilihan program kompilasi pada WinAVR.
3. Apabila proses memprogram/ mendownload “Tugas1.hex” ke prosesor ATMega16 berhasil, maka pada Output ditampilkan “Process Exit Code: 0”.
MODUL AJAR PRAKTIKUM INTERFACING 47
AVR Trainer Board
AVR910
4. Apabila proses memprogram tidak berhasil, periksa kembali koneksi antara programmer dan PC serta programmer dan AVR Trainer Board periksa juga kemungkinan koneksi yang lain. Kemudian, kembali ke langkah 1 (satu).
5. Setelah proses memprogram sukses, amatilah hasilnya.
1.7.4. Gambar Kerja
Gambar 1.55 menunjukkan koneksi antara PC/Notebook dengan AVR Trainer Board melalui kabel USB Printer.
Gambar 1.55. Koneksi PC ke AVR Trainer Board melalui kabel USB Printer.
Skematik dari rangkaian modul LED pada AVR Trainer Board seperti ditunjukkan pada gambar 1.56.
MODUL AJAR PRAKTIKUM INTERFACING 48
1.7.5. Lembar Tugas
Kerjakan tugas-tugas praktikum dibawah ini secara berurutan!
(Catatan: Tugas-tugas praktikum tersebut menggunakan modul LED yang sudah tersedia pada AVR Trainer Board sebagai Output dari Microcontroller dimana skematik rangkaian modul LED tesebut seperti ditunjukkan gambar 1.56. Gunakan kabel data pelangi sebagai koneksi dari port yang dipakai pada AVR Trainer Board ke port ampenol pada modul LED).
1. Tanpa memperhatikan pengaturan fuse, jalankan contoh program di bawah ini, analisis dan buatlah flowchart‐nya.
2. Modifikasi program di atas sehingga menghasilkan keluaran LED pada port B, C, dan D. Buatlah analisa dengan membandingkan programnya dengan program pada tugas 1.
3. Jalankan program berikut dan amati hasilnya kemudian buat analisanya.
4. Modifikasi program di atas menggunakan port B, C, dan D. #include <avr/io.h>
int main(void) {
//inisialisasi PORTA sebagai OUTPUT DDRA = 0xFF;
//nilai OUTPUT pada PORTA PORTA =0xFF; return 0; } #include <avr/io.h> int main(void) {
//inisialisasi PORTA sebagai OUTPUT DDRA = 0xFF;
//nilai OUTPUT pada PORTA
PORTA = (1<<PA6)|(1<<PA4)|(1<<PA2)|(1<<PA0); return 0;
MODUL AJAR PRAKTIKUM INTERFACING 49 5. Jalankan program di bawah ini dan amati hasilnya, kemudian buatlah analisanya
dengan membandingkan dengan program pada tugas 3.
6. Modifikasi program di atas menggunakan port B, C, dan D.
7. Jalankan program di bawah ini dan amati hasilnya, kemudian buatlah analisanya dengan membandingkan dengan program pada tugas 3 dan 5.
8. Modifikasi program di atas menggunakan port B, C, dan D.
9. Buatlah laporan resmi dari analisa-analisa pada percobaan diatas dengan format laporan dan cover seperti dicontohkan pada lampiran A dalam modul ini.
#include <avr/io.h> int main(void) {
//inisialisasi PORTA sebagai OUTPUT DDRA = 0b11111111;
//nilai OUTPUT pada PORTA PORTA =0b11111111; return 0; } #include <avr/io.h> int main(void) {
//inisialisasi PORTA sebagai OUTPUT DDRA = 255;
//nilai OUTPUT pada PORTA PORTA =255;
return 0; }
MODUL AJAR PRAKTIKUM INTERFACING 50
1.8. Jawaban Latihan Soal
1. Sudah dijelaskan pada uraian materi. 2. Sudah dijelaskan pada uraian materi. 3. Sudah dijelaskan pada uraian materi. 4. Sudah dijelaskan pada uraian materi. 5. USBASP, AVR911, JTAG
MODUL 2
AVR OUTPUT MENGGUNAKAN MODUL DISPLAY
(LED, SEVEN SEGMENT, LCD)
Penyusun:
Noorman Rinanto, S.T., M.T.
NIP
PROGRAM STUDI TEKNIK OTOMASI
JURUSAN TEKNIK KELISTRIKAN KAPAL
POLITEKNIK PERKAPALAN NEGERI SURABAYA
MODUL AJAR PRAKTIKUM INTERFACING 51
2.1. Sub Kompetensi
Kemampuan yang akan dimiliki oleh mahasiswa setelah memahami isi modul ini adalah sebagai berikut :
- Mahasiswa mampu mengendalikan port output AVR yang diaplikasikan pada perangkat display berupa Seven Segment dan LCD (Liquid Crystal Display) serta memahami sistem kerja kedua perangkat display tersebut menggunakan bahasa C pada editor WinAVR.
2.2. Uraian Materi
2.2.1. I/O Register
Sebelum penjelasan materi tentang seven segment dan LCD perlu diketahui materi tentang dasar I/O pada modul AVR. AVR dengan paket 40-pin PDIP seperti modul pelatihan yang digunakan pada modul ajar ini menggunakan ATmega 16 yang memiliki 32 I/O lines.
Masing-masing I/O lines pada AVR mempunyai fungsi yang khusus seperti ADC, Analog Comparator, PWM, USART dan External Interrupt. Selain fungsi-fungsi khusus tersebut I/O juga memiliki fungsi-fungsi dasar yaitu sebagai keluar dan masuknya data ‘0’ yang berupa tegangan level 0 volt dan data ‘1’ yang berupa tegangan 5 volt. Jika port I/O tersebut berfungsi sebagai input maka AVR akan memfungsikan port tersebut untuk membaca level tegangan 0 volt atau 5 volt dari perangkat luar. Sedangkan jika port I/O difungsikan sebagai output maka port akan mengeluarkan tegangan 0 volt atau 5 volt tergantung pada instruksi program AVR. Microcontroller AVR memiliki 3 (tiga) register yang berkaitan dengan fungsi dasar I/O, yaitu:
1. Register DDRx
Data Direction Register atau lebih sering disebut DDRx merupakan register yang berfungsi sebagai pengatur arah port microcontroller baik untuk input atau output, dimana (x) adalah port microcontroller yang dipakai. Nilai register ini adalah 8 bit. Setiap bit tersebut mewakili tiap pin pada port microcontroller. Jika pin ingin difungsikan sebagai input maka register ini diberi nilai ‘0’ (nol) begitu sebaliknya jika pin ingin difungsikan sebagai output maka register ini diberi nilai ‘1’ (satu). Sebagai contoh jika pin pada
MODUL AJAR PRAKTIKUM INTERFACING 52 port A ingin difungsikan sebagai input maka perintah untuk register ini dapat ditulis dengan berbagai format numeric sebagai berikut:
− DDRA = 0x00; (heksadesimal), − DDRA = 0b11111111; (binari), − DDRA = 0; (desimal)
Untuk lebih memahami register DDRx, berikut diberikan sebuah contoh pada port A dimana pada pin ke 0 (A.0) difungsikan sebagai input dan pin yang lain sebagai output maka perintahnya adalah sebagai berikut:
− DDRA = 0xFE; (heksadesimal), − DDRA = 0b11111110; (binari), − DDRA = 254; (desimal)
2. Register PORTx
Register PORTx merupakan jalur masuk atau keluar dari data yang digunakan pada microcontroller, dimana (x) adalah tipe port yang dipakai misal port yang digunakan adalah port A maka penulisan perintahnya adalah PORTA.
Jika Port digunakan sebagai input, maka register ini berfungsi sebagai penentu apakah kondisi Port di Pull Up atau Floating. Jika Port digunakan sebagai output, maka register ini menentukan kondisi Port High atau Low. Untuk memahami apa yang dimaksud demgan Pull Up coba perhatikan gambar 2.1.
MODUL AJAR PRAKTIKUM INTERFACING 53 Pada gambar 2.1 dapat dilihat bahwa PIN.1 dihubungkan ke VCC (tegangan 5 Volt) melalui resistor (R), maka kondisi inilah yang di maksud dengan (pullup). Saat tidak ada tegangan dari luar, PIN.1 akan cenderung berkondisi HIGH (logika 1). Sedangkan PIN.2 dibiarkan begitu saja sehingga kondisi logika dari PIN.2 begitu rentan terhadap pengaruh tegangan disekitarnya. PIN.2 bisa berlogika HIGH, bisa juga berlogika LOW, kondisi PIN.2 inilanh yang disebut mengambang (floating).
Kondisi floating biasanya dipakai saat PIN sebuah mikrokontroler memerlukan nilai logika input dari perangkat luar seperti misalnya sensor. Hal tersebut diperlukan karena jika sebuah PIN pada microcontroller di
pullup, maka dikhawatirkan kondisi logika PIN tersebut mengganggu kondisi
logika pin-pin sensor yang bersangkutan.
3. Register PINx
Register PINx digunakan untuk membaca masukan pada pin tertentu atau semua PIN pada PORT yang bersangkutan, dimana (x) adalah PORT yang dipakai.
Sebagai contoh jika ingin membaca masukan pada PORT A pada pin 3 penulisan perintahnya adalah data = PINA.3, dimana data merupakan variable dalam program yang digunakan untuk menyimpan data logika PIN tersebut. Sedangkan untuk mendapatkan data input logika dari seluruh PIN pada PORT tertentu cukup dengan menuliskan peritah data = PINA.
Untuk lebih memudahkan pemahaman tentang register-register pada microcontroller tersebut, berikut diberikan contoh-contoh perintahnya:
− DDRA=0x00; − PORTA = 0xFF; − Data = PINA;
Ini berarti seluruh pin-pin pada PORTA dijadikan sebagai masukan dan di-pullup, artinya pada rangkaian yang terkait, jika menggunakan tombol atau pushbutton, jika tidak ditekan akan terbaca HIGH dan jika ditekan akan terbaca LOW. Sedangakan isi variable data sesuai dengan kondisi logika PORT A.
MODUL AJAR PRAKTIKUM INTERFACING 54 Contoh lainnya:
− DDRB= 0x00; − PORTB=0x0F; − Data = PINB;
Ini artinya seluruh pin-pin PORTB dijadikan masukan, dengan konfigurasi 0x0F(Hexadecimal) atau 0b00001111 (Binary) dengan kata lain PORTB.0 sampai PORTB.3 di-pullup, Sedangkan PORTB.4 sampai PORTB.7 dikonfigurasi floating. Sedangkan variable data akan berisi kondisi logika dari semua pin pada PORT B yang ada.
Untuk lebih memahami tentang topik AVR output pada modul ini digunakan 3 (tiga) buah modul keluaran yaitu:
1. Modul LED (8 bit)
2. Modul Seven Segment (4 digit) 3. Modul LCD (4 bit dan 8 bit)
2.2.2. Modul LED
Modul keluaran LED (Light Emitting Diode) AVR Trainer Board telah dijelaskan dan dicoba pada modul 1 menggunakan 8 (delapan) buah LED yang dihubungkan secara parallel ke tiap port keluaran Microprocessor AVR. Rangkaian schematic seperti ditunjukkan pada gambar 1.56 dan foto modul keluaran LED pada AVR Trainer Board ditunjukkan pada gambar 2.2.
MODUL AJAR PRAKTIKUM INTERFACING 55 Pada gambar 1.56 yang merupakan schematic rangkaian modul keluaran LED tampak bahwa semua LED bersifat common cathode atau semua cathode LED mendapatkan power GND (Ground). Dengan demikian LED akan menyala jika keluaran port AVR HIGH (+5V). Tahanan R1-R8 berfungsi untuk mengurangi tegangan yang mengalir ke LED dimana tegangan yang dibutuhkan LED untuk menyala sekitar 0.7V.
2.2.3. Modul Seven Segment
Modul keluran seven segment pada AVR Trainer Board terdiri dari 4 (empat) buah seven segment common Anode yang datanya disusun secara seri dan pengendalian seven segment menggunakan switching transistor tipe NPN. Rangkaian schematic modul keluaran ini seperti ditunjukkan pada gambar 2.3 dan foto modul pada AVR Trainer Board seperti tampak pada gambar 2.4.
Gambar 2.3 Rangkaian schematic modul keluaran seven segment.
MODUL AJAR PRAKTIKUM INTERFACING 56 Prinsip kerja dari rangkaian modul keluaran seven segment tersebut menggunakan teknik scanning yaitu data angka yang akan ditampilkan dikirim secara seri atau berurutan kemudian untuk memilih digit yang berupa ribuan, ratusan, puluhan dan satuan dipilih dengan menyalakan transistor secara bergantian. Data yang dikirim berupa data 4 bit karena sudah terdapat IC TTL BCD converter yang terkoneksi dengan port AVR pada bit ke 0-3 dan pengendali transistor yang berjumlah 4 bit yang terkoneksi pada port AVR pada bit ke 4-7.
Sebagai contoh jika ingin menampilkan angka 1234 pada modul keluran ini makan data yang dikirim terlebih dahulu dipisahkan (parse) menurut kelompok ribuan, ratusan, puluhan dan satuan kemudian dijumlah dengan nilai pengendali transistor yang diingkan. Jika angka 1 untuk digit ribuan maka data yang dikirim dalam binary pada bit ke [0…3 ]adalah [0001] maka transistor pada bit ke 4 harus dinyalakan dan transistor yang lain dengan nilai binary [1000] kemudian kedua data tersebut dijumlahkan atau dilakukan operasi OR, sehingga didapat data 8 bit dalam binary [00011000]. Demikian seterusnya sampai semua data dapat ditampilkan. Untuk lebih memahami lihat tabel 2.1 dengan contoh pengendaliannya.
Tabel 2.1 Contoh pengendalian modul keluaran seven segments
2.2.4. Modul LCD
Modul keluaran LCD (Liquid Crystal Display) yang digunakan pada modul AVR Trainer Board menggunakan LCD tipe 2x16, dima kode 2x16 bermakna LCD tersebut mempunyai lebar layar 2 baris karakter dan 16 kolom karakter sehingga jumlah karakter yang dapat ditampilkan penuh dalam satu waktu berjumlah 32 karakter. LCD tersebut mempunyai pin keluaran berjumlah 16 seperti ditunjukkan pada gambar 2.5. Untuk penjelasan masing-masing pin pada LCD tersebut dapat dilihat pada tabel 2.2.
Port AVR D7 D6 D5 D4 D3 D2 D1 D0
DIGIT 3 DIGIT2 DIGIT 1 DIGIT 0 DIGIT 3 DIGIT2 DIGIT 1 DIGIT 0
1 1 1 0 0 0 0 0 E0H RIBUAN Angka 0
1 1 0 1 0 0 0 1 D1H RATUSAN Angka 1
1 0 1 1 0 0 1 0 B2H PULUHAN Angka 2
0 1 1 1 0 0 1 1 73H SATUAN Angka 3
MODUL AJAR PRAKTIKUM INTERFACING 57
Gambar 2.5 Konfigurasi pin LCD
MODUL AJAR PRAKTIKUM INTERFACING 58 Prinsip kerja dari LCD tersebut adalah sebagai berikut:
› Tampilan karakter pada LCD diatur oleh pin EN, RS dan RW, dimana jalur EN disebut juga pin Enable. Jalur ini digunakan untuk memberitahu LCD bahwa sedang ada pengiriman sebuah data.
› Untuk mengirimkan data ke LCD, maka melalui program EN harus dibuat logika low “0” dan set pada dua jalur kontrol yang lain RS dan RW. Ketika dua jalur yang lain telah siap, set EN dengan logika “1” dan tunggu untuk sejumlah waktu tertentu (sesuai dengan datasheet dari LCD tersebut) dan berikutnya set
EN ke logika low “0” lagi.
› Jalur RS adalah jalur Register Select. Ketika RS berlogika low “0”, data akan dianggap sebagi sebua perintah atau instruksi khusus (seperti clear screen, posisi kursor dll). Ketika RS berlogika high “1”, data yang dikirim adalah data text yang akan ditampilkan pada display LCD. Sebagai contoh, untuk menampilkan huruf “T” pada layar LCD maka RS harus diset logika high “1”.
› Jalur RW adalah jalur kontrol Read/ Write. Ketika RW berlogika low (0), maka informasi pada bus data akan dituliskan pada layar LCD. Ketika RW berlogika high ”1”, maka program akan melakukan pembacaan memori dari LCD. Sedangkan pada aplikasi umum pin RW selalu diberi logika low ”0”.
› Mode pengiriman data pada LCD dapat terdiri dari 4 atau 8 jalur/bit (bergantung pada mode operasi yang dipilih oleh user). Pada kasus bus data 8 bit, jalur yang digunakan sebagai data adalah DB0 s/d DB7, dan pada data 4 bit jalur yang digunakan adalah data DB4 s/d DB7.
› Jika LCD mendukung backlight LED maka pin ke 16 pada LCD diberi logika HIGH.
Rangkaian schematic untuk modul LCD pada AVR Trainer Board ini seperti ditunjukkan pada gambar 2.6. Pada rangkaian schematic tersebut dapat dilihat jika menginginkan LCD beroperasi dengan data 4 bit, maka port keluaran AVR yang dipakai hanya cukup 1 port saja. Dimana 4 bit untuk data dan 4 bit lainnya untuk pin control (RS, EN, dan RW). Sedangkan jika menginginkan LCD beroperasi dengan 8 bit data, maka dibutuhkan 2 (dua) port AVR. Dimana satu port berfungsi sebagai pin control dan satu port lain berfungsi sebagai pin data 8 bit.
MODUL AJAR PRAKTIKUM INTERFACING 59
Gambar 2.6 Rangkaian schematic modul keluaran LCD
Gambar 2.7 Modul keluaran LCD pada AVR Trainer Board
2.3. Rangkuman
Modul keluaran LED pada AVR Trainer Board menggunakan 8 bit data yang dihubungkan dengan port AVR, dimana LED akan menyala ketika bit pada port AVR mengeluarkan nilai HIGH (1) dikarenakan LED mempunyai common Cathode atau posisi cathode LED dihubungkan dengan GND (Ground).
Modul keluaran seven segments pada AVR Trainer Board menggunakan teknik scanning untuk menyalakannya, dimana data yang dikirimkan dipisahkan antara nilai ribuan, ratusan, puluhan dan satuan. Jadi terdapat 4 (empat) digit seven segments yang penyalaannya dilakukan secara bergantian menggunakan switching transistor
MODUL AJAR PRAKTIKUM INTERFACING 60 tipe NPN. Data yang dikirim pada modul keluaran seven segments tersebut berupa 4 bit data binary pada posisi MSB dan 4 bit data binary pada posisi bit LSB.
Modul keluaran LCD pada AVR Trainer Board dapat difungsikan untuk menulis dan membaca data dalam dua tipe data yaitu 4 bit dan 8 bit. Dimana untuk data 4 bit hanya dibutuhkan satu port AVR dan untuk 8 bit data dibutuhkan 2 (dua) port AVR.
2.4. Referensi
a) Agfianto Eko Putra (2009), Tip dan trik Mikrontroler AT89 dan AVR. Penerbit Gavamedia.
b) Budiharto, Widodo (2006), Panduan Praktikum Mikrokontroler AVR ATmega 16. Elex Media Komputindo.
c) Takashi, (2007), AVR GCC Tutorial. German: (www.mikrocontroller.net). d) Atmel Co., (2010). Datasheet AVR ATmega16.
2.5. Latihan Soal
1. Bagaimana caranya untuk memfungsikan port AVR sebagai input dan output? 2. Berapa bit data yang bisa dikeluarkan masing-masing port pada AVR Trainer
Board tersebut? Jelaskan alasannya!
3. Tenik apa yang dipakai untuk menampilkan angka pada seven segments pada AVR Trainer Board tersebut?
4. Berapa macam tipe data yang dapat digunakan untuk menampilkan data pada modul LCD pada AVR Trainer Board? Sebutkan dan jelaskan perbedaanya!
MODUL AJAR PRAKTIKUM INTERFACING 61
2.6. Lembar Kerja
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...MODUL AJAR PRAKTIKUM INTERFACING 62
2.7. Lembar Kerja Praktek/Praktikum
2.7.1 Alat dan BahanAlat :
No. Nama Jenis
Perangkat Jumlah
1. Komputer/Notebook Keras 1
2. AVR Trainer Board yang dilengkapi dengan
AVR910 Downloader Keras 1
3. Driver AVR910 USB downloader Lunak 1
4. WinAVR Editor Notepad Lunak 1
Bahan :
No. Nama Jenis
Perangkat Jumlah
1. Kabel USB Printer Keras 1
2. Kabel data pelangi Keras 4
3. Kabel power 220VAC Keras 1
2.7.2 Prosedur Keselamatan
Untuk mencegah hal-hal yang tidak diinginkan, Ikutilah prosedur keselamatan kerja berikut ini selama praktikum berlangsung:
1. Sebelum menggunakan perangkat hendaknya periksa dahulu kelengkapannya. 2. Sebelum menyalakan perangkat periksa dan pastikan koneksi kabel dan
konektor-konektor yang terhubung.
3. Periksa dahulu tombol power perangkat dan pastikan dalam keadaan OFF sebelum dikonfigurasi.
4. Periksa kembali konfigurasi kabel dan konektor dan pastikan tidak ada yang terbalik polaritasnya.
2.7.3 Langkah Kerja
Ikuti langkah-langkah kerja praktikum berikut ini sesuai dengan prosedur: 1. Ketikan program menggunakan notepad WinAVR.
2. Konfigurasi compiler WinAVR pada menggunakan M-File.