EXPERIMENT MANUAL
PETUNJUK PRAKTIKUM MIKROKONTROLER AVR ATMEGA8535
Oleh: Tsalits Agus Salim, SST
PROGRAM VOKASI JURUSAN TEKNIK ELEKTROMEDIK UNIVERSITAS MUHAMMADIYAH YOGYAKARTA 2012 Petunjuk Praktikum-Tsalits Agus Salim
Page 1
CODEVISIONAVR
A. Pengenalan CodevisionAVR CodeVisionAVR merupakan sebuah cross-compiler C, Integrated Development Environtment (IDE), dan Automatic Program Generator yang didesain untuk mikrokontroler buatan Atmel seri AVR. CodeVisionAVR dapat dijalankan pada sistem operasi Windows 95, 98, Me, NT4, 2000, dan XP. Cross-compiler C mampu menerjemahkan hampir semua perintah dari bahasa ANSI C, sejauh yang diijinkan oleh arsitektur dari AVR, dengan tambahan beberapa fitur untuk mengambil kelebihan khusus dari arsitektur AVR dan kebutuhan pada sistem embedded. File object COFF hasil kompilasi dapat digunakan untuk keperluan debugging pada tingkatan C, dengan pengamatan variabel, menggunakan debugger Atmel AVR Studio. IDE mempunyai fasilitas internal berupa software AVR Chip In-System Programmer yang memungkinkan Anda untuk melakukan transfer program kedalam chip mikrokontroler setelah sukses melakukan Programmer
kompilasi/asembli didesain
secara untuk
otomatis. bekerja
Software
In-System
dengan
Atmel
STK500/AVRISP/AVRProg, Kanda Systems STK200+/300, Dontronics DT006, Vogel Elektronik VTEC-ISP, Futurlec JRAVR dan MicroTronics ATCPU/Mega2000 programmers/development boards.
Petunjuk Praktikum-Tsalits Agus Salim
Page 2
Untuk keperluan debugging sistem embedded, yang menggunakan komunikasi serial, IDE mempunyai fasilitas internal berupa sebuah Terminal. Selain library standar C, CodeVisionAVR juga mempunyai library tertentu untuk:
Modul LCD alphanumeric
Bus I2C dari Philips
Sensor Suhu LM75 dari National Semiconductor
Real-Time Clock: PCF8563, PCF8583 dari Philips, DS1302 dan DS1307 dari Maxim/Dallas Semiconductor
Protokol 1-Wire dari Maxim/Dallas Semiconductor
Sensor Suhu DS1820, DS18S20, dan DS18B20 dari Maxim/Dallas Semiconductor
Termometer/Termostat DS1621 dari Maxim/Dallas Semiconductor
EEPROM DS2430 dan DS2433 dari Maxim/Dallas Semiconductor
SPI
Power Management
Delay
Konversi ke Kode Gray
Petunjuk Praktikum-Tsalits Agus Salim
Page 3
CodeVisionAVR juga mempunyai Automatic Program Generator bernama CodeWizardAVR, yang mengujinkan Anda untuk menulis, dalam hitungan menit, semua instruksi yang diperlukan untuk membuat fungsi-fungsi berikut:
Set-up akses memori eksternal
Identifikasi sumber reset untuk chip
Inisialisasi port input/output
Inisialisasi interupsi eksternal
Inisialisasi Timer/Counter
Inisialisasi Watchdog-Timer
Inisialisasi UART (USART) dan komunikasi serial berbasis buffer yang digerakkan oleh interupsi
Inisialisasi Pembanding Analog
Inisialisasi ADC
Inisialisasi Antarmuka SPI
Inisialisasi Antarmuka Two-Wire
Inisialisasi Antarmuka CAN\
Inisialisasi Bus I2C, Sensor Suhu LM75, Thermometer/Thermostat DS1621 dan Real-Time Clock PCF8563, PCF8583, DS1302, dan DS1307
Inisialisasi Bus 1-Wire dan Sensor Suhu DS1820, DS18S20
Inisialisasi modul LCD
Petunjuk Praktikum-Tsalits Agus Salim
Page 4
B. Persiapan Instalasi CodeVisionAVR Anda dapat memperoleh file instalasi CodeVisionAVR dengan cara mendownload
pada
situs
pembuatnya
yaitu
HP
InfoTech
di
http://www.hpinfotech.com. File yang dapat didownload adalah tipe evaluation yang artinya mempunyai keterbatasan, salah satunya adalah ukuran program yang dapat dikompilasi terbatas. Contoh yang digunakan adalah CodeVisionAVR versi 2.03. Klik ganda file setup.exe yang didapat dari proses download dari situs HP InfoTech.
Gambar 1. Ikon file setup.exe
Untuk pilihan bahasa pilih English, klik OK, seperti pada Gambar 2.
Gambar 2. Pilihan bahasa
Petunjuk Praktikum-Tsalits Agus Salim
Page 5
Kemudian akan muncul kotak dialog seperti pada Gambar 3, klik tombol next.
Gambar 3. Klik tombol next
Selanjutnya pada kotak dialog Licence Agreement, pilih I accept the agreement lalu klik tombol next seperti pada Gambar 4.
Gambar 4. Menyetujui syarat-syarat yang diberikan
Petunjuk Praktikum-Tsalits Agus Salim
Page 6
Berikutnya kotak dialog Select Destination Location seperti pada Gambar 5 menanyakan tempat dimana software akan diletakkan. Gunakan tempat yang telah ditentukan lalu klik tombol next.
Gambar 5. Menentukan lokasi tujuan
Akan muncul kotak dialog yang menginformasikan bahwa tempat tersebut belum ada sebelumnya. Klik tombol Yes untuk membuat tempat baru tersebut seperti yang ditunjukkan oleh Gambar 6.
Gambar 6. Setuju untuk membuat tempat baru
Petunjuk Praktikum-Tsalits Agus Salim
Page 7
Kemudian muncul kotak dialog seperti pada Gambar 7 untuk menanyakan nama program shortcut pada menu Start dari Windows. Lanjutkan dengan menekan tombol next
Gambar 7. Nama folder pada Start Menu
Program CodeVisionAVR telah siap untuk di-install. Tekan tombol Install seperti pada Gambar 8. Maka proses instalasi akan bekerja seperti ditunjukkan oleh Gambar 9. Setelah selesai akan dimunculkan kotak dialog informasi seperti pada Gambar 10.
Gambar 8. Nama folder pada Start Menu Petunjuk Praktikum-Tsalits Agus Salim
Page 8
Gambar 9. Proses instalasi sedang berlangsung
Gambar 10. Informasi tambahan
Klik tombol next pada Gambar 10 untuk mengakhiri proses instalasi. Setelah kotak dialog seperti yang ditunjukkan oleh Gambar 11 muncul, Anda dapat menekan tombol Finish dengan pilihan langsung menjalankan software CodeVisionAVR atau tidak.
Petunjuk Praktikum-Tsalits Agus Salim
Page 9
Gambar 11. Proses instalasi selesai
C. Penggunaan CodeVisionAVR CodeVision AVR mempunyai suatu keunggulan dari compiler lain, yaitu adanya codewizard, fasilitas ini memudahkan kita dalam inisialisasi mikrokontroler yang akan kita gunakan, codevision telah menyediakan konfigurasi yang bisa diatur pada masing-masing chip mikrokontroler yang akan kita gunakan, sehingga kita tidak perlu melihat datasheet untuk sekedar mengonfigurasi mikrokontroler. Berikut ini langkah-langkah menggunakan codevision.
Petunjuk Praktikum-Tsalits Agus Salim
Page 10
1. Membuat Project dengan CodeVisionAVR. Jalankan aplikasi CodeVisionAVR dengan cara melakukan klik ganda pada shortcut ikon CodeVisionAVR yang ada pada Desktop atau klik START MENU cari file exe CodeVisionAVR.
Gambar 12. Icon CodeVisionAVR pada Desktop Sebuah Splash Screen akan muncul seperti ditunjukkan oleh Gambar 13. Informasi tentang versi yang dipakai dan keterangan evaluation akan terlihat.
Gambar 13. Tampilan Splash Screen
Petunjuk Praktikum-Tsalits Agus Salim
Page 11
Beberapa detik kemudian aplikasi CodeVisionAVR akan muncul seperti yang ditunjukkan oleh Gambar 14.
Gambar 14. IDE CodeVisionAVR
Untuk memulai membuat project baru, pada menubar, pilih File → New, seperti yang ditunjukkan oleh Gambar 15a selain itu kita juga dapat membuka dengan cara klik icon seperti ditunjukkan pada gambar 15b yang berada pada Toolbar.
Gambar 15a. Membuat file baru
Petunjuk Praktikum-Tsalits Agus Salim
Page 12
Gambar 15b. Icon untuk membuat file baru
Anda harus membuat sebuah project sebagai induk desain dengan memilih Project, lalu klik tombol OK seperti pada Gambar 16.
Gambar 16. Membuat project baru
Berikutnya
Anda
akan
ditanya
apakah
akan
menggunakan
CodeWizardAVR. Tentu saja lebih menyenangkan bila Anda memilih jawaban “ya” dengan cara menekan tombol Yes seperti pada Gambar 17.
Petunjuk Praktikum-Tsalits Agus Salim
Page 13
Gambar 17. Memilih untuk menggunakan CodeWizardAVR
Tampilan CodeWizardAVR yang sederhana namun lengkap ditunjukkan oleh Gambar 18. Pilih Chip dengan IC yang Anda gunakan. Sebagai contoh Anda memilih Chip ATmega8535. Tab-tab pada CodeWizardAVR menunjukkan fasilitas yang dimiliki oleh chip yang Anda pilih. Cocokkan pula frekuensi kristal yang Anda gunakan pada bagian Clock. Pengisian frekuensi clock digunakan oleh software untuk menghitung rutin-rutin seperti delay agar diperoleh perhitungan yang cukup akurat.
Gambar 18. CodeWizardAVR pada tab Chip
Petunjuk Praktikum-Tsalits Agus Salim
Page 14
Selanjutnya merupakan inisialisasi dari PORT yang ditunjukkan Gambar 19. Terdapat 4 PORT, yaitu PORT A, PORT B, PORT C, dan PORT D. kita bisa menginisialisasi port-port ini sebagai INPUT ataupun sebagai OUTPUT. Selain itu kita dapat memilih aktif HIGH (1) atau aktif LOW (0) untuk OUTPUT ataupun INPUT.
Gambar 19. Setting Port
Untuk selanjutnya yaitu merupakan inisialisasi LCD (Liquid Crystal Display). LCD alphanumeric yang dihubungkan dengan Port C haruslah mempunyai pengkawatan seperti yang ditunjukkan oleh Gambar 20. Pada tab LCD, pilihlah Port C.
Petunjuk Praktikum-Tsalits Agus Salim
Page 15
Gambar 20. Setting LCD pada Port C
Selanjutnya yaitu inisialisasi pada USART (Komunikasi Serial). Pertama pilih/centang pada bagian “Receiver “ dan ” Transmiter”, apabila menginginkan interupsi pada USART maka beri centang pula pada “Rx_Interrupt” dan “Tx_Interrupt”. Untuk Baud Rate pilih “9600”. Dan untuk Communication Parameters pilih “8 Data, 1 Stop, No Pariti. Ini merupakan setting sederhana dari USART. Seperti tampak pada gambar 21.
Gambar 21. Setting USART (Komunikasi Serial)
Petunjuk Praktikum-Tsalits Agus Salim
Page 16
Selanjutnya yaitu seting ADC (Analog to Digital Converter). Pertama centang pada bagian “ADC Enabled dan Use 8 bits”. Kemudian kita pilih Volt Ref, yaitu tegangan referensi dari ADC kita. Disini terdapat 3 pilihan yaitu dari PIN AREF, PIN AVCC, dan Int., Cap. On AREF. Untuk clock pilih 86.400 KHz.
Gambar 22. Setting ADC (Analog to Digital Converter)
Setelah setting yang kita inginkan dari mikrokontroler selesai, maka seting CodeWizardAVR siap disimpan dalam file. Pada menu CodeWizardAVR, pilih File → Generate, Save and Exit, seperti yang ditunjukkan oleh Gambar 23.
Petunjuk Praktikum-Tsalits Agus Salim
Page 17
Gambar 23. Menyimpan setting
Agar file yang dihasilkan tidak berantakan, buatlah sebuah folder baru, untuk nama terserah dari anda. Kemudian masuk kedalam folder tersebut untuk menyimpan file-file yang dihasilkan oleh CodeWizardAVR. Yang pertama Anda diminta untuk memberikan nama file C yang dihasilkan. Misalnya beri nama “coba2”, lalu klik tombol Save. Lebih jelas pada Gambar 24. File tersebut nantinya akan mempunyai akhiran “.C”.
Petunjuk Praktikum-Tsalits Agus Salim
Page 18
Gambar 24. Menyimpan file pertama
Yang kedua Anda diminta untuk memberikan nama file project yang dihasilkan. Misalnya beri nama “coba2”, lalu klik tombol Save. Lebih jelas pada Gambar 25. File tersebut nantinya akan mempunyai akhiran .prj.
Gambar 25. Menyimpan file kedua
Petunjuk Praktikum-Tsalits Agus Salim
Page 19
Yang terakhir Anda diminta untuk memberikan nama file project CodeWizard yang dihasilkan. Misalnya beri nama “coba”, lalu klik tombol Save. Lebih jelas pada Gambar 26. File tersebut nantinya akan mempunyai akhiran .cwp.
Gambar 26. Menyimpan file ketiga
Setelah ketiga file disimpan maka akan muncul lembar kerja kita. Pada bagian atas merupakan nama dari projek kita. Selanjut pada bagian bawah dari nama projek yaitu merupakan program bahasa C yang merupakan program yang telah kita setting pada langkah awal (pada form inisialisasi). Jadi dari program “#include <mega8535.h> sampai // LCD module initialization lcd_init(16);” merupakan program yang telah kita setting pada langkah awal (pada form inisialisasi) yang ditunjukkan oleh Gambar 27-28.
Petunjuk Praktikum-Tsalits Agus Salim
Page 20
Gambar 27. Lembar Kerja Dari Codevision AVR
Sekarang Anda coba untuk menyisipkan instruksi utama. Instruksi ini ditambahkan pada badan program file coba.c, dibawah instruksi “while” seperti yang ditunjukkan oleh Gambar 28.
Gambar 28. Menambahkan inti program
Petunjuk Praktikum-Tsalits Agus Salim
Page 21
Setelah program utama telah ditambahkan, kemudian pilih menu Project → Compile untuk melakukan kompilasi seperti yang ditunjukkan oleh Gambar 29a, atau dengan klik icon seperti pada Gambar 29b pada menu Toolbar. Lalu kotak dialog seperti ditunjukkan Gambar 30 akan muncul. Klik tombol OK.
Gambar 29a. Melakukan kompilasi
Gambar 29b. Icon untuk melakukan kompilasi Setelah kita kompliasi dan tidak ada informasi error (apabila terdapat informasi warning program kita masih dapat dijalankan/tidak apa-apa) pada program kita, selanjutnya klik tombol OK yang berada pada kanan bawah.
Petunjuk Praktikum-Tsalits Agus Salim
Page 22
Gambar 30. Informasi hasil kompilasi
Setelah itu kita buka file tempat dimana kita menyimpan projek kita tadi. Kemudian buka file folder bernama ‘Exe’ seperti ditunjukkan pada Gambar 31.
Gambar 31. Folder ‘Exe’ tempat projek kita
Petunjuk Praktikum-Tsalits Agus Salim
Page 23
Setelah itu akan muncul file ber-extensi ‘hex’. File inilah yang nantinya akan kita downloadkan ke dalam mikrokontroler kita.
Gambar 32. File ‘.hex’ yang nantinya dimasukkan ke mikro
Petunjuk Praktikum-Tsalits Agus Salim
Page 24
PROTEUS
A. Pengenalan PROTEUS Proteus adalah sebuah software untuk mendesain PCB yang juga dilengkapi dengan simulasi pspice pada level skematik sebelum rangkaian skematik diupgrade ke PCB shingga sebelum PCBnya dicetak kita akan tahu apakah PCB yang akan kita cetak sudah benar atau tidak.
Gambar 33. Proteus Isis Schematic Capture Proteus mengkombinasikan program ISIS untuk membuat skematik desain rangkaian dengan program ARES untuk membuat layout PCB dari skematik yang kita buat. Pengalaman saya menggunakan Proteus ini, software ini bagus digunakan untuk desain rangkaian mikrokontroller. Proteus juga bagus untuk belajar elektronika seperti dasar2 elektronika sampai pada aplikasi mikrokontroller. Software ini jika di install menyediakan banyak contoh aplikasi desain yang disertakan sehingga kita bisa belajar dari contoh2 yang sudah ada.
Petunjuk Praktikum-Tsalits Agus Salim
Page 25
Fitur-fitur dari PROTEUS adalah sebagai berikut : 1. Memiliki kemampuan untuk mensimulasikan hasil rancangan baik digital maupun analog maupun gabungan keduanya,Mendukung simulasi yang menarik dan simulasi secara grafis, 2. Mendukung simulasi berbagai jenis microcontroller seperti PIC, 8051 series. 3. Memiliki model-model peripheral yang interactive seperti LED, tampilan LCD, RS232, dan berbagai jenis library lainnya, 4. Mendukung instrument-instrument virtual seperti voltmeter, ammeter, oscciloscope, logic analyser, dll, 5. Memiliki kemampuan menampilkan berbagi jenis analisis secara grafis seperti transient, frekuensi, noise, distorsi, AC dan DC, dll. 6. Mendukung berbagai jenis komponen-komponen analog, 7. Mendukung open architecture sehingga kita bisa memasukkan program seperti C++ untuk keperluan simulasi, 8. Mendukung pembuatan PCB yang di-update secara langsung dari program ISIS ke program pembuat PCB-ARES.
Petunjuk Praktikum-Tsalits Agus Salim
Page 26
B. Cara Menginstal PROTEUS Untuk menginstall proteus kita harus mengatur patch nya, berikut cara instalnya: 1. Pilih Proteus 7.6 sp 4 set up.exe
2. Pilih Next sampai option setup type, pilih "Use a locally installed licensed key
3. “Next”akan tampil jendela berikut
Petunjuk Praktikum-Tsalits Agus Salim
Page 27
4. Tekan “browse for key file” 5. Carilah key pada folder misal C:\Documents and Settings\xp\My Documents\Proteus 7.6 SP4 \ dengan nama file Sonsivri.lxk (letak key tergantung dimana folder master proteus disimpan)
6. Tekan “open”, akan tampil jendela berikut
7. Tekan “instal” kemudian “yes” akan tampak jendela berikut
Petunjuk Praktikum-Tsalits Agus Salim
Page 28
8. Tekan “close”, sampai muncul jendela berikut
9. Pilih Next sampai proses penginstalan selesai
10.
Masuk ke master Proteus 7.6 sp 4, pilih file di bawah ini, lalu copy
Petunjuk Praktikum-Tsalits Agus Salim
Page 29
11.
Masuk ke Program Files, pilih Labcenter Electronics, masuk ke BIN dari Proteus 7 profesional, paste kan file-file yang sudah dicopy
12.
Klik Patch, cari patch pada bagian MODELS, pilih 82XX.DLL dan open.
13. Patch sudah selesai pilih exit, maka program Proteus 7.6 sp 4 sudah dapat digunakan
Petunjuk Praktikum-Tsalits Agus Salim
Page 30
C. Cara Menggunakan PROTEUS 1.
Cara Menggunakan Aplikasi Aplikasi Proteus terdiri dari dua aplikasi yang terpisah yaitu ISIS dan
ARES. ISIS digunakan untuk merancang skematik dari rangkaian yang ingin kita buat sedangkan ARES digunakan untuk perancangan PCB. Pada dokumen ini, penulis akan mencoba memberikan contoh penggunaan kedua aplikasi ini untuk membuat suatu rangkaian LED. Penulis akan mencontohkan bagaimana cara untuk membuat rancangan, membuat komponen, melakukan simulasi dan juga membuat rancangan PCB. Berikut adalah contoh rangkaian sederhana yang akan di rancang:
Petunjuk Praktikum-Tsalits Agus Salim
Page 31
2. Perancangan Skematik Seperti
telah
disinggung
sebelumnya,
untuk
melakukan
perancangan skematik, gunakan ISIS. Jalankan ISIS hingga muncul tampilan sebagai berikut:
Toolbar yang ditandai dengan no.1 (P dan L) digunakan untuk: ●
P –> Mengambil sebuah komponen.
●
L –> Menambah/menghapus Library.
Toolbar yang ditandai dengan Bagian no.2 digunakan untuk simulasi. Bagian No.3 digunakan untuk menunjukkan list komponen ketika kita akan memilih memilih komponen. Bagian No.4 digunakan untuk meletakkan rancangan skematik rangkaian yang akan kita buat. Selain itu, perhatikan toolbar yang memanjang dari atas ke bawah pada bagian pojok kiri dari aplikasi karena toolbar-toolbar
Petunjuk Praktikum-Tsalits Agus Salim
Page 32
itu merupakan toolbar yang penting dan sering digunakan dalam aplikasi ini. 3. Pengambilan komponen Dari rangkaian berarti kita membutuhkan 1 buah LED, 1 buah Resistor, dan Header (TBLOK) untuk input tegangan 5 V. Di sini penulis menganggap Header belum ada dalam library sehingga perlu dibuat terlebih dahulu (untuk memberikan contoh bagaimana pembuatan suatu package yang belum ada sebelumnya). Tapi sebelumnya, penulis membuat rangkaian yang langsung terhubung dengan poweruntuk melakukan simulasi dan melihat apakah rancangan berjalan dengan benar atau tidak. Pertama, pilih toolbar paling kiri ke mode terminal, kemudian pilih Ground. Untuk menempatkan terminal, cukup klik pada bagian No.4 seperti ditunjukkan pada gambar sebelumnya.
Petunjuk Praktikum-Tsalits Agus Salim
Page 33
Untuk terminal ini, pada contoh digunakan terminal POWER dan GROUND. Langkah berikutnya, pilih toolbar “component” kemudian pilih ‘P’ pada toolbar yang ditandai dengan no.1 pada gambar sebelumnya. Kemudian cari komponen LED dan RESISTOR.
Petunjuk Praktikum-Tsalits Agus Salim
Page 34
Perlu diperhatikan, bahwa untuk komponen LED tidak diberikan footprint yang benar (gambar yang di-highlight). Untuk LED, isi PCB Package dengan LED. Untuk membuka window edit component di atas, cukup double klik pada komponen LED. Selanjutnya, lakukan hal yang sama seperti sebelumnya untuk pengambilan komponen resistor. Untuk resistor, footprint sudah tersedia dengan nama RES40. 4. Wiring Diagram Wiring adalah pembentukan interkoneksi antar komponen yang telah kita ambil tadi sehingga sesuai dengan rangkaian yang kita inginkan. Caranya cukup menggunakan mouse, namun sebelumnya pilih toolbar ke gambar panah . Untuk menarik wire, cukup arahkan pointer mouse anda ke ujung salah satu komponen, klik kemudian tarik ke arah komponen lain yang ingin dihubungkan, kemudian klik lagi.
Petunjuk Praktikum-Tsalits Agus Salim
Page 35
Hasil dan simulasi :
Petunjuk Praktikum-Tsalits Agus Salim
Page 36
PERCOBAAN 1 LED
I. Pendahuluan Pada praktikum ini, anda akan mempelajari cara mengembangkan sebuah system menggunakan mikrokontroler AVR buatan Atmel menggunakan software CodeVisionAVR.CodeVisionAVR merupakan software C-cross compiler, dimana program dapat ditulis menggunakan bahasa-C. Dengan menggunakan pemrograman bahasa-C diharapkan waktu disain (deleloping time) akan menjadi lebih singkat. Setelah program dalam bahasa-C ditulis dan dilakukan kompilasi tidak terdapat kesalahan (error) maka proses download dapat dilakukan. Pada percobaan ini anda akan mengendalikan LED ON dan OFF.
II. Tujuan Setelah menyelesaikan praktikum ini, yang anda peroleh adalah : 1. Dapat menjelaskan arsitektur umum dan keistimewaan dari mikrokontroler AVR ATmega8535. 2. Dapat menceritakan kembali alur pengembangan software pada mikrokontroler AVR menggunakan CodeVisionAVR. 3. Dapat menggunakan fungsi output pada mikrokontroler AVR 4. Dapat mengerjakan tugas yang diberikan dengan bahasa-C. Petunjuk Praktikum-Tsalits Agus Salim
Page 37
III. Dasar Teori Port Sebagai Input / Output Digital Atmega 8535 mempunyai empat buah port yang bernama PortA, PortB, PortC, dan PortD. Keempat port tersebut merupakan jalur bidirectional dengan pilihan internal pull-up. Tiap port mempunyai tiga buah register bit, yaitu DDxn, PORTxn, dan PINxn. Huruf ‘x’ mewakili nama huruf dari port sedangkan huruf ‘n’ mewakili nomor bit. Bit DDxn terdapat pada I/O address DDRx, bit PORTxn terdapat pada I/O address PORTx, dan bit PINxn terdapat pada I/O address PINx. Bit DDxn dalam register DDRx (Data Direction Register) menentukan arah pin. Bila DDxn diset 1, maka Px berfungsi sebagai pin output. Bila DDxn diset 0 maka Px berfungsi sebagai pin input. Bila PORTxn diset 1 pada saat pin terkonfigurasi sebagai pin input, maka resistor pull-up akan diaktifkan. Untuk mematikan resistor pull-up, PORTxn harus diset 0 atau pin dikonfigurasi sebagai pin output. Pin port adalah tri-state setelah kondisi reset. Bila PORTxn diset 1 pada saat pin terkonfigurasi sebagai pin output maka pin port akan berlogika 1. Dan bila PORTxn diset 0 pada saat pin terkonfigurasi sebagai pin output maka pin port akan berlogika 0. Saat mengubah kondisi port dari kondisi tri-state (DDxn=0, PORTxn=0) ke kondisi output high (DDxn=1, PORTxn=1) maka harus ada kondisi peralihan apakah itu kondisi pull-up enabled (DDxn=0, PORTxn=1) atau kondisi output low (DDxn=1, PORTxn=0). Biasanya, kondisi pull-up enabled dapat diterima sepenuhnya, selama lingkungan impedansi tinggi
Petunjuk Praktikum-Tsalits Agus Salim
Page 38
tidak memperhatikan perbedaan antara sebuah strong high driver dengan sebuah pull-up. Jika ini bukan suatu masalah, maka bit PUD pada register SFIOR dapat diset 1 untuk mematikan semua pull-up dalam semua port. Peralihan dari kondisi input dengan pull-up ke kondisi output low juga menimbulkan masalah yang sama. Maka harus menggunakan kondisi tristate (DDxn=0, PORTxn=0) atau kondisi output high (DDxn=1, PORTxn=0) sebagai kondisi transisi. Tabel Konfigurasi Pin Port
Tabel diatas menunjukkan konfigurasi pin pada port- port mikrokontroler. Bit 2 – PUD = Pull-up Disable, bila bit diset bernilai 1 maka pull-up pada port I/O akan dimatikan walaupun register DDxn dan PORTxn
dikonfigurasikan
untuk
menyalakan
pull-up
(DDxn=0,
PORTxn=1).
Petunjuk Praktikum-Tsalits Agus Salim
Page 39
IV. Peralatan 1. Satu set PC yang dilengkapi dengan software CodeVision AVR dan Proteus.
V. Prosedure Percobaan 1. Proteus Simulation
U1 1 2 3 4 5 6 7 8
R1 10k
C1 10uF
14 15 16 17 18 19 20 21 13 12 9
PB0/T0/XCK PB1/T1 PB2/AIN0/INT2 PB3/AIN1/OC0 PB4/SS PB5/MOSI PB6/MISO PB7/SCK PD0/RXD PD1/TXD PD2/INT0 PD3/INT1 PD4/OC1B PD5/OC1A PD6/ICP1 PD7/OC2
PA0/ADC0 PA1/ADC1 PA2/ADC2 PA3/ADC3 PA4/ADC4 PA5/ADC5 PA6/ADC6 PA7/ADC7 PC0/SCL PC1/SDA PC2 PC3 PC4 PC5 PC6/TOSC1 PC7/TOSC2
XTAL1 XTAL2 RESET
AREF AVCC
40 39 38 37 36 35 34 33
D1
D2
D3
D4
D5
D6
D7
D8
LED-BIBY
LED-BIBY
LED-BIBY
LED-BIBY
LED-BIBY
LED-BIBY
LED-BIBY
LED-BIBY
R2
R3
R4
R5
R6
R7
R8
R9
220
220
220
220
220
220
220
220
22 23 24 25 26 27 28 29
32 30
ATMEGA8535
2. CodeVisionAVR
Petunjuk Praktikum-Tsalits Agus Salim
Page 40
A. Percobaan LED ON Pada percobaan ini akan menghidupkan LED sejumlah 4 buah: Contoh Program: #include <mega8535.h> void main(void) { DDRC=0xFF; PORTC=0x0F; }
B. Percobaan LED On/ Off dengan fungsi delay Pada percobaan ini LED akan ON dan OFF dengan waktu tunda tertentu, yang ditentukan dengan fungsi delay_ms.
#include <mega8535.h> #include <delay.h> void main(void) { DDRC= 0xFF; } while (1) { PORTC=0xFF; delay_ms(1000); PORTC=0x00; delay_ms(1000); }
Petunjuk Praktikum-Tsalits Agus Salim
Page 41
C. Percobaan LED dengan data Tabel Pada percobaan ini kombinasi display LED yang ON ditentukan berdasarkan table pada array urutan[8] dengan perpindahan satu pola ke pola yang lainnya berdasarkan delay. #include <mega8535.h> #include <delay.h> void main(void) { Charurutan[8]={0x1,0x2,0x4 ,0x8,0x10,0x20,0x40,0x80}; char i; DDRC=0xFF; PORTC=0xFF; while(1) { for (i=0;i<8;i++) { PORTC=urutan[i]; delay_ms(1000); } }
D. Tugas Buatlah laporan praktikum untuk percobaan tersebut diatas dalam bentuk PDF, dengan uraian meliputi: 1. Gambar rangkaian dan penjelasannya 2. Rencanakan flowchart untuk masing-masing percobaan tersebut diatas 3. Jelaskan masing-masing program tersebut diatas. 4. Laporan dibuat dalam bentuk PDF, dikerjakan per individu 5. Gambar Simulasi percobaan tersebut dengan dengan menggunakan Proteus, file gambar di PASTE pada laporan praktikum.
Petunjuk Praktikum-Tsalits Agus Salim
Page 42
PERCOBAAN 2 SW PushButton
I. Pendahuluan Pada praktikum ini, anda akan mempelajari cara mengembangkan sebuah system menggunakan mikrokontroler AVR buatan Atmel menggunakan software CodeVisionAVR.. CodeVisionAVR merupakan software C-cross compiler, dimana program dapat ditulis menggunakan bahasa-C. Dengan menggunakan pemrograman bahasa-C diharapkan waktu disain (deleloping time) akan menjadi lebih singkat. Setelah program dalam bahasa-C ditulis dan dilakukan kompilasi tidak terdapat kesalahan (error) maka proses download dapat dilakukan. Pada percobaan ini anda akan mengendalikan LED dengan menggunakan Saklar Push Button.
II. Tujuan Setelah menyelesaikan praktikum ini, yang anda peroleh adalah : 1. Dapat menjelaskan arsitektur umum dan keistimewaan dari mikrokontroler AVR ATmega8535. 2. Dapat menceritakan kembali alur pengembangan software pada mikrokontroler AVR menggunakan CodeVisionAVR.
Petunjuk Praktikum-Tsalits Agus Salim
Page 43
3. Dapat menggunakan fungsi input/ output pada mikrokontroler AVR 4. Dapat mengerjakan tugas yang diberikan dengan bahasa-C.
III. Peralatan 1. Satu set PC yang dilengkapi dengan software CodeVision AVR dan Proteus.
IV. Prosedur Percobaaan 1. Proteus Simulation
U1 1 2 3 4 5 6 7 8 14 15 16 17 18 19 20 21 13 12 9
PB0/T0/XCK PB1/T1 PB2/AIN0/INT2 PB3/AIN1/OC0 PB4/SS PB5/MOSI PB6/MISO PB7/SCK PD0/RXD PD1/TXD PD2/INT0 PD3/INT1 PD4/OC1B PD5/OC1A PD6/ICP1 PD7/OC2 XTAL1 XTAL2 RESET
PA0/ADC0 PA1/ADC1 PA2/ADC2 PA3/ADC3 PA4/ADC4 PA5/ADC5 PA6/ADC6 PA7/ADC7 PC0/SCL PC1/SDA PC2 PC3 PC4 PC5 PC6/TOSC1 PC7/TOSC2
AREF AVCC
40 39 38 37 36 35 34 33
D1
D2
D3
D4
D5
D6
D7
D8
LED-BIBY
LED-BIBY
LED-BIBY
LED-BIBY
LED-BIBY
LED-BIBY
LED-BIBY
LED-BIBY
R2
R3
R4
R5
R6
R7
R8
R9
220
220
220
220
220
220
220
220
22 23 24 25 26 27 28 29 32 30
ATMEGA8535
R1 10k
C1 10uF
Petunjuk Praktikum-Tsalits Agus Salim
Page 44
2. CodeVisionAVR
A. Percobaan Input/Ouput Pada percobaan ini PORTB difungsikan sebagai input dan PORTC difungsikan sebagai output.
#include <mega8535.h> void main(void) { DDRC=0xFF; DDRB=0x00; PORTB=0xFF; while (1) { PORTC=PINB; } }
Petunjuk Praktikum-Tsalits Agus Salim
Page 45
B. Percobaan Input/ Output dengan fungsi BIT. Pada percobaan ini, anda akan belajar bagaimana mengambil data per bit. Dengan menggunakan instruksi PINB.X, dengan X adalah nilai bit.
#include <mega8535.h> void main(void) { DDRC=0xFF; DDRB=0x00; PORTB=0xFF; while(1) { if (PINB.0==0) {PORTC=0x01;} else if (PINB.1==0){PORTC=0x02;} else if (PINB.2==0){PORTC=0x04;} else if (PINB.3==0){PORTC=0x08;} else {PORTC=0x00;} } }
Petunjuk Praktikum-Tsalits Agus Salim
Page 46
C. Percobaan SW dengan pemilihan kombinasi LED Pada
percobaan
ini
anda
akan
mengambil
data
dengan
menggunakan SW push button, setiap penekanan SW akan menampilkan pola LED tertentu. #include <mega8535.h> #include <delay.h> //declare global arrays for two patterns unsigned char p1[4]= { 0b10000001, 0b01000010, 0b00100100, 0b00011000 }; unsigned char p2[4] = { 0b11111111, 0b01111110, 0b00111100, 0b00011000 }; void main() { unsigned char i; //loop counter DDRC = 0xFF; //PortC as output PORTC= 0x00; //keep all LEDs on DDRB = 0x00; //PortB as input PORTB.0 = 1; //enable pull ups for PORTB.1 = 1; //only first two pins
Petunjuk Praktikum-Tsalits Agus Salim
Page 47
while(1) { //# if SW0 is pressed show pattern 1 if(PINB.0==0) { for(i=0;i<3;i++) { PORTC=p1[i]; //output data delay_ms(300); //wait for some time } PORTC=0; //turn on all LEDs } //# if SW1 is pressed show pattern 2 if(PINB.1==0) { for(i=0;i<3;i++) { PORTC=p2[i]; //output data delay_ms(300); //wait for some time } PORTC=0; //turn on all LEDs } }; }
Petunjuk Praktikum-Tsalits Agus Salim
Page 48
D. Tugas Buatlah laporan praktikum untuk percobaan tersebut diatas dalam bentuk PDF, dengan uraian meliputi: 1. Gambar rangkaian dan penjelasannya 2. Rencanakan flowchart untuk masing-masing percobaan tersebut diatas 3. Jelaskan masing-masing program tersebut diatas. 4. Laporan dibuat dalam bentuk PDF, dikerjakan per individu 5. Gambar Simulasi percobaan tersebut dengan dengan menggunakan Proteus, file gambar di PASTE pada laporan praktikum.
Petunjuk Praktikum-Tsalits Agus Salim
Page 49
PERCOBAAN 3 DISPLAY 7 SEGMENT
I. Pendahuluan Seven Segment adalah komponen yang terdiri dari tujuh led yang tersusun sedemikian rupa sehingga dapat digunakan untuk menampilkan angka 0-9 dan titik atau koma. Seven Segment seperti led pada umunya memiliki berbagai macam tampilan warna, yaitu merah, kuning, hijau, dsb dan berbagai macam ukuran. Seven segment berdasarkan input logikanya terbagi menjadi dua macam, yaitu Common Anoda (aktif jika input logika 0) dan Common Cathoda (aktif jika input logika 1). Hal yang perlu diperhatikan dalam setiap komponen 7 segment adalah pin-pin pada yang mewakili urutan segmentnya (A-G dan titik), karena tidak semua kaki 7 segment sama urutannya walaupun sama ukurannya. Salah satu contoh urutan kaki pada seven segment adalah sbb:
Gambar 3.1. Konfigurasi Kaki 7 Segment Petunjuk Praktikum-Tsalits Agus Salim
Page 50
Pada percobaan ini akan menggunakan display 7 segmen sebanyak 4 buah, dengan menggunakan scanning data, maka jumlah port yang dibutuhkan menjadi sedikit. Display 7 segment yang digunakan pada percobaan ini adalah 7 segment common anoda, dengan driver transistor PNP dan decoder/ demultiplexer 74LS138 untuk scanning 7 segment.
II. Tujuan Setelah menyelesaikan praktikum ini, yang anda peroleh adalah : 1. Dapat menceritakan kembali alur pengembangan software pada mikrokontroler AVR menggunakan CodeVisionAVR. 2. Dapat menggunakan fungsi output pada mikrokontroler AVR dengan interface ke 7 segment common anoda 3. Dapat mengerjakan tugas yang diberikan dengan bahasa-C.
III. Dasar Teori Tabel kebenaran 74LS138
Petunjuk Praktikum-Tsalits Agus Salim
Page 51
1. Pada tabel kebenaran tersebut tampak bahwa seven segment yang hidup tergantung pada output dari dekoder 74LS138, yang sedang mengeluarkan logika low ”0”, sehingga dari 8 buah display tersebut, selalu hanya satu display yang akan dihidupkan. Agar display tampak nyala secara bersamaan maka ketiga display tersebut harus dihidupkan secara bergantian dengan waktu tunda tertentu. 2. Pada gambar tersebut seven segment commont anoda dikendalikan dengan menggunakan transistor PNP melalui decoder/de multiplexer 74LS138, apabila ada logika low pada basis transistor, maka 7 segment akan nyala dan sebaliknya akan padam.
Gambar 3.2. Modul Display 7 Segment tunggal
Tabel Data Display 7 Segment
Petunjuk Praktikum-Tsalits Agus Salim
Page 52
Pada tabel tersebut tampak bahwa untuk menghidupkan sebuah segmen, harus dikirimkan data logika low ”0” dan sebaliknya untuk mematikan segment, harus dikirimkan data logika high ”1”.
III. Peralatan 1. Satu set PC yang dilengkapi dengan software CodeVision AVR dan Proteus.
IV. Prosedur Percobaaan 1. Proteus
Q1 R2 C1
Q2
Q3
Q4
R3
R5
R6
100
100
100
R7 100
10k 2N2907
2N2907
2N2907
2N2907
10uF Reset
U2 1 2 3 6 4 5
A B C
Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7
E1 E2 E3
15 14 13 12 11 10 9 7
74LS138
R1
R9
10k
100
Reset
R10 U1 13 12 9 1 2 3 4 5 6 7 8 14 15 16 17 18 19 20 21
XTAL1 XTAL2 RESET PB0/T0 PB1/T1 PB2/AIN0 PB3/AIN1 PB4/SS PB5/MOSI PB6/MISO PB7/SCK PD0/RXD PD1/TXD PD2/INT0 PD3/INT1 PD4/OC1B PD5/OC1A PD6/ICP PD7/OC2
PA0/ADC0 PA1/ADC1 PA2/ADC2 PA3/ADC3 PA4/ADC4 PA5/ADC5 PA6/ADC6 PA7/ADC7 PC0 PC1 PC2 PC3 PC4 PC5 PC6/TOSC1 PC7/TOSC2 AREF AGND AVCC
40 39 38 37 36 35 34 33 22 23 24 25 26 27 28 29 32 31 30
100
R11 100
D1 Indikator
R12 220
R13
R4 220
100
R14 100
R15 100
AT90S8535
Petunjuk Praktikum-Tsalits Agus Salim
Page 53
A. Percobaan Display 7 Segment Pada percobaan ini anda akan belajar bagaimana mencetak sebuah karakter ke 7 segmen, konversi data decimal ke 7 segmen, menggunakan fungsi SWITCH. 1. Konfigurasi pada Code Vision
Gambar 3.3. Konfigurasi PORTC dan PORTD
2. Listing Program #include <mega8535.h> #include<delay.h> unsigned char data; void convert(){ switch(data) { // gfedcba case 0: PORTC=0b11000000;break; case 1: PORTC=0b11111001;break; case 2: PORTC=0b10100100;break;
Petunjuk Praktikum-Tsalits Agus Salim
Page 54
case 3: PORTC=0b10110000;break; case 4: PORTC=0b10011001;break; case 5: PORTC=0b10010010;break; case 6: PORTC=0b10000010;break; case 7: PORTC=0b10010000;break; case 8: PORTC=0b10000000;break; case 9: PORTC=0b10010000;break; default: PORTC=0xff; } } void main (void) { DDRC=DDRD=PORTC=0xff; PORTD.5=0; PORTD.6=0; PORTD.7=0; { data=3; convert(); } }
B. Percobaan Display 7 segmen increment data 0 sd 9 Pada percobaan ini data ditampilkan ke sebuah 7 segmen, data ditampilkan secara berurutan mulai dari 0 sd 9, dengan waktu tunda 1 detik. Untuk setiap kenaikan angka.
Petunjuk Praktikum-Tsalits Agus Salim
Page 55
1. Konfigurasi Code Vision
Gambar 3.4. Konfigurasi PORTC dan PORTD
2. Listing Program #include <mega8535.h> #include<delay.h> unsigned char data; void convert(){ switch(data) { // gfedcba case 0: PORTC=0b11000000;break; case 1: PORTC=0b11111001;break; case 2: PORTC=0b10100100;break; case 3: PORTC=0b10110000;break; case 4: PORTC=0b10011001;break; case 5: PORTC=0b10010010;break;
Petunjuk Praktikum-Tsalits Agus Salim
Page 56
case 6: PORTC=0b10000010;break; case 7: PORTC=0b10010000;break; case 8: PORTC=0b10000000;break; case 9: PORTC=0b10010000;break; default: PORTC=0xff; } } void main (void) { DDRC=DDRD=PORTC=0xff; PORTD.5=0; PORTD.6=0; PORTD.7=0; { convert(); data=data+1; if(data==10){data=0;}; delay_ms(1000); } }
C. Display 7 Segmen dengan Simulasi Setting data Pada percobaan ini anda akan belajar bagaimana mensimulasikan setting data dengan display pada 7 segmen.
Petunjuk Praktikum-Tsalits Agus Salim
Page 57
1. Konfigurasi Code Vision
Gambar 3.5. Konfigurasi PORTC dan PORTD
Petunjuk Praktikum-Tsalits Agus Salim
Page 58
2. Listing Program #include <mega8535.h> #include <delay.h> void convert(); int data,dataTemp,dataPul,dataSat; void main(void) { DDRC=0xFF; DDRB=0x00; PORTB=0xFF; PORTC=0xFF; DDRD=0xFF; data=00; while(PINB.2==1) { if (PINB.0==0) { data=data+1; } else if (PINB.1==0) { data=data-1; } dataTemp=data; dataSat = dataTemp % 10;
// sat = sisa dari data dibagi 10
dataPul = dataTemp / 10; dataTemp=dataSat; convert(); PORTD.5=0; PORTD.6=0;
Petunjuk Praktikum-Tsalits Agus Salim
Page 59
PORTD.7=0; dataTemp=dataPul; convert(); PORTD.5=1; PORTD.6=0; PORTD.7=0; delay_ms(30); } PORTC=0x00; delay_ms(2000); } void convert(){ switch(data) { // gfedcba case 0: PORTC=0b11000000;break; case 1: PORTC=0b11111001;break; case 2: PORTC=0b10100100;break; case 3: PORTC=0b10110000;break; case 3: PORTC=0b10110000;break; case 4: PORTC=0b10011001;break; case 5: PORTC=0b10010010;break; case 6: PORTC=0b10000010;break; case 7: PORTC=0b10010000;break; case 8: PORTC=0b10000000;break; case 9: PORTC=0b10010000;break; default: PORTC=0xff; } }
Petunjuk Praktikum-Tsalits Agus Salim
Page 60
D. Tugas Buatlah laporan praktikum untuk percobaan tersebut diatas dalam bentuk PDF, dengan uraian meliputi: 1. Gambar rangkaian dan penjelasannya 2. Rencanakan flowchart untuk masing-masing percobaan tersebut diatas 3. Jelaskan masing-masing program tersebut diatas. 4. Laporan dibuat dalam bentuk PDF, dikerjakan per individu 5. Gambar Simulasi percobaan tersebut dengan dengan menggunakan Proteus, file gambar di PASTE pada laporan praktikum.
Petunjuk Praktikum-Tsalits Agus Salim
Page 61
PERCOBAAN 4 LCD KARAKTER 16x2
I. Pendahuluan Pada percobaan ini anda akan mempelajari interface LCD (liquid crystal display) dengan mikrokontroler AVR ATMEGA8535. LCD merupakan komponen display yang dapat menampilkan berbagai macam karakter. Jenis LCD ada berbagai macam, dan yang paling sering digunakan adalah LCD Karakter 16 x 2. Pada percobaan ini akan menggunakan LCD karakter 16 x 2, dengan interface pada PORTC, Codevision menyediakan fungsi-fungsi untuk keperluan pengelolaan LCD.
II. Tujuan Setelah menyelesaikan praktikum ini, yang anda peroleh adalah : 1. Dapat menceritakan kembali alur pengembangan software pada mikrokontroler AVR ATMEGA8535 menggunakan CodeVisionAVR. 2. Dapat menggunakan fungsi output pada mikrokontroler AVR dengan interface ke LCD Karakter 16 x 2 3. Dapat mengerjakan tugas-tugas yang diberikan dengan bahasa-C.
Petunjuk Praktikum-Tsalits Agus Salim
Page 62
III. Dasar Teori Modul LCD Character 16 x 2 dapat dengan mudah dihubungkan dengan mikrokontroler seperti AVR ATMEGA8535 atau sejenisnya. LCD yang akan kita praktikumkan ini mempunyai lebar display 2 baris 16 kolom atau biasa disebut sebagai LCD Character 16 x 2, dengan 16 pin konektor, yang didefinisikan sebagai berikut:
Gambar 4.1. Modul LCD Karakter 16 x 2
Tabel 4.1 Pin dan Fungsi Modul LCD Karakter 16 x 2
PIN
NAME
FUNCTION
1
VSS
Ground Voltage
2
VCC
+5V
3
VEE
Contrast Voltage Register Select
4
RS
0 = Instruction Register 1 = Data Register Read/ Write, to choose write or read mode
5
R/W
0 = write mode 1 = read mode
6
EN
Petunjuk Praktikum-Tsalits Agus Salim
Enable
Page 63
0 = start to lacht data to LCD character 1= disable 7
DB0
LSB
8
DB1
-
9
DB2
-
10
DB3
-
11
DB4
-
12
DB5
-
13
DB6
-
14
DB7
MSB
15
BPL
Black Panel Light
16
GND
Ground Voltage
Display karakter pada LCD diatur oleh pin EN, RS dan RW: Jalur EN dinamakan Enable. Jalur ini digunakan untuk memberitahu LCD bahwa anda sedang mengirimkan 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
Petunjuk Praktikum-Tsalits Agus Salim
Page 64
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”. Memori LCD A. DDRAM ( Display Data RAM ) Memori DDRAM digunakan untuk
menyimpan karakter yang
akan ditampilkan. Semua teks yang kita tuliskan ke modul LCD adalah disimpan didalam memory ini, dan modul LCD secara berturutan membaca memory ini untuk menampilkan teks ke modul LCD itu sendiri.
Gambar 4.2. Lokasi Memori Display LCD Karakter 16 x 2
Pada peta memori tersebut, daerah yang berwarna kuning ( 00 s/d 0F dan 40 s/d 4F ) adalah display yang tampak. Sebagaimanan yang anda lihat, jumlahnya sebanyak 16 karakter per baris dengan dua baris. Angka
Petunjuk Praktikum-Tsalits Agus Salim
Page 65
pada setiap kotak adalah alamat memori yang bersesuaian dengan posisi dari layar. Demikianlah karakter pertama di sudut kiri atas adalah menempati alamah 00h. Posisi karakter berikutnya adalah alamat 01h dan seterusnya.
B. INISIALISASI Sebelum kita dapat menggunakan modul LCD, kita harus melakukan inisialisasi dan mengkonfigurasikannya.
Gambar 4.3. Konfigurasi Codevision dan koneksi hardware
C. Fungsi LCD Fungsi LCD terletak pada header lcd.h yang harus di-include-kan sebelum digunakan. Sebelum melakukan include terlebih dahulu sebutkan
Petunjuk Praktikum-Tsalits Agus Salim
Page 66
port mikrokontroller yang akan dihubungkan ke LCD. Hal ini juga dapat dengan mudah dilakukan dengan menggunakan CodeWizardAVR. /* modul LCD dihubungkan dengan PORTC */ #asm . equ __lcd_port=0x15 #endasm /* Sekarang fungsi LCD dapat di-include*/ #include Fungsi-fungsi untuk mengakses LCD diantaranya adalah : 1. unsigned char lcd_init(unsigned char lcd_columns) Untuk menginisialisasi modul LCD, menghapus layar dan meletakkan posisi karakter pada baris ke-0 kolom ke-0. Jumlah kolom pada LCD harus disebutkan (misal, 16). Kursor tidak ditampakkan. Nilai yang dikembalikan adalah 1 bila modul LCD terdeteksi, dan bernilai 0 bila tidak terdapat modul LCD. Fungsi ini harus dipanggil pertama kali sebelum menggunakan fungsi yang lain. 2. void lcd_clear(void) Menghapus layar LCD dan meletakkan posisi karakter pada baris ke-0 kolom ke-0. 3. void lcd_gotoxy(unsigned char x, unsigned char y) Meletakkan posisi karakter pada kolom ke-x baris ke-y. Nomor baris dan kolom dimulai dari nol.
Petunjuk Praktikum-Tsalits Agus Salim
Page 67
4. void lcd_putchar(char c) Menampilkan karakter pada LCD. 5. void lcd_puts(char *str) Menampilkan string yang disimpan pada SRAM pada LCD.
IV. Peralatan 1. Satu set PC yang dilengkapi dengan software CodeVision AVR dan Proteus.
IV. Prosedur Percobaaan 1. Proteus
Petunjuk Praktikum-Tsalits Agus Salim
Page 68
A. Percobaan Cetak Karakter pada baris 1 Listing Program
#include <mega8535.h> #include <delay.h> // Alphanumeric LCD Module functions #asm .equ __lcd_port=0x15 ; PORTC #endasm // #include // Declare your global variables here void main(void) { PORTB=0xFF; DDRB=0x00; // LCD module initialization lcd_init(16); while (1) { lcd_gotoxy(0,0); lcd_putsf("Selamat Datang"); } }
Petunjuk Praktikum-Tsalits Agus Salim
Page 69
B. Percobaan manipulasi nilai Listing Program #include <mega8535.h> #include #include <stdio.h> #include <delay.h> // Alphanumeric LCD Module functions bisa di copy dari codeWizard CAVR #asm .equ __lcd_port=0x15 ;PORTC #endasm unsigned char tulis[5]={'m','i','c','r','o'}; char lcd_buffer[33]; unsigned char i; void main(void) {; lcd_init(16); // inisialisasi lcd, kolom modul lcd =16. while(1) { for(i=0;i<5;i++) { lcd_clear(); lcd_gotoxy(i,0);
// ke kolom x=i dan baris y=0
sprintf(lcd_buffer,"%c",tulis[i]); lcd_puts(lcd_buffer); delay_ms(200); } } }
Petunjuk Praktikum-Tsalits Agus Salim
Page 70
%f=menampilkan tipe float %d=menampilkan bilangan bulat Operasi-operasi valid yang dapat dijalankan oleh variables tipe data. Gunakan yang sesuai, pemilihan data memepengaruhi memory yang dipakai dan ketelitian.
C. Percobaan Cetak Karakter Interaksi dengan Saklar Pada percobaan ini interaksi cetak karakter dilakukan dengan penekanan pada sebuah saklar yang terhubung pada PORTB.
1. Konfigurasi pada Code Vision
Gambar 4.4. Konfigurasi LCD dan PORTB
Petunjuk Praktikum-Tsalits Agus Salim
Page 71
2. Listing Program #include <mega8535.h> #include <delay.h> // Alphanumeric LCD Module functions #asm .equ __lcd_port=0x15 ;PORTC #endasm // #include // Declare your global variables here void main(void) { PORTB=0xFF; DDRB=0x00; // LCD module initialization lcd_init(16); lcd_gotoxy(0,0); lcd_putsf("Welcome"); delay_ms(1000); while (1) if (PINB.0==1) { lcd_gotoxy(0,1); lcd_putsf("Button Released"); delay_ms(500); } else { lcd_gotoxy(0,1); lcd_putsf("Button Pressed"); delay_ms(500); } }
Petunjuk Praktikum-Tsalits Agus Salim
Page 72
D. Percobaan Cetak Karakter Interaksi dengan Saklar 2 Pada percobaan ini interaksi cetak karakter dilakukan dengan penekanan pada sebuah saklar yang terhubung pada PORTB, dengan konfigurasi pada codevision sama dengan percobaan sebelumnya. Listing Program #include <mega8535.h> #include <delay.h> // Alphanumeric LCD Module functions #asm .equ __lcd_port=0x15 ;PORTC #endasm // #include // Declare your global variables here void main(void) { PORTB=0xFF; DDRB=0x00; // LCD module initialization lcd_init(16); lcd_gotoxy(0,0); lcd_putsf("Welcome"); delay_ms(1000); while (1) if (PINB==0xff) { lcd_gotoxy(0,0); lcd_putsf("No Button"); delay_ms(500);
Petunjuk Praktikum-Tsalits Agus Salim
Page 73
} if else (PINB.0==0) { lcd_gotoxy(0,0); lcd_putsf("Button 0"); delay_ms(500); } if else (PINB.1==0) { lcd_gotoxy(0,0); lcd_putsf("Button 1"); delay_ms(500); } else { lcd_gotoxy(0,0); lcd_putsf("No Button"); delay_ms(500); } }
Petunjuk Praktikum-Tsalits Agus Salim
Page 74
E. Tugas Buatlah laporan praktikum untuk percobaan tersebut diatas dalam bentuk PDF, dengan uraian meliputi: 1. Gambar rangkaian dan penjelasannya 2. Rencanakan flowchart untuk masing-masing percobaan tersebut diatas 3. Jelaskan masing-masing program tersebut diatas. 4. Laporan dibuat dalam bentuk PDF, dikerjakan per individu 5. Gambar Simulasi percobaan tersebut dengan dengan menggunakan Proteus, file gambar di PASTE pada laporan praktikum.
Petunjuk Praktikum-Tsalits Agus Salim
Page 75
Tugas Akhir Mata Kuliah Mikrokontroler 1. Membuat rangkaian Downloader/ Programer (Hardware) 2. Membuat rangkaian minimum Sistem dari AVR Atmega8535 (Hardware) 3. Rancanglah aplikasi dari minimum system yang sudah anda buat tersebut untuk keperluan elektronika medik,(Hardware + Software) (batas pengumpulan selama 3 minggu dan akan dinilai progress per minggunya). Contoh rangkaian Downloader/ Programer
+
VCC C1 4U7
VCC
VCC
VCC
VCC
C3 100n R4 1k
D3 VCC
IC1
R6 1 2 3 4 5 6 7 8 9 10 11 12 13 14
10k
C4 22p
C5
12M
VCC Y1
22p
LED
PC6 (RESET)(SCL/ADC5) PC5 PD0 (RxD) (SDA/ADC4) PC4 PD1 (TxD) (ADC3) PC3 PD2 (INT0) (ADC2) PC2 PD3 (INT1) (ADC1) PC1 PD4 (XCK/T0) (ADC0) PC0 VCC AGND GND AREF PB6 (XT1/TOSC1) AVCC PB7 (XT2/TOSC2) (SCK) PB5 PD5 (T1) (MISO) PB4 PD6 (AIN0) (OC2/MOSI) PB3 PD7 (AIN1) (SS/OC1B) PB2 PB0 (ICP) (OC1A) PB1 ATmega8-DIL28
R1 68 D1
3V6
D2
3V6
28 27 26 25 24 23 22 21 20 19 18 17 16 15
R5 1k
D4 LED
VCC HEADER 6 6 5 4 3 2 1 JP5
R2 68
R3
VCC
2k2
1 2 3 4
VCC
USB JP4
Petunjuk Praktikum-Tsalits Agus Salim
Page 76