Top Banner
Laporan Praktikum Laboratorium MIKROKONTROLER 1 AVR ATmega8535 Proyek 05 Keypad Disusun oleh: Kelompok EK-2A / 06 06 - Bayu Triatmono NIM 3.32.13.0.06 09 - Hanfil Lutfia Anisa NIM 3.32.13.0.09 Dosen: Dr. Samuel BETA; Ing-Tech.,M.T.
28

Program AVR keypad

Dec 16, 2015

Download

Documents

mikrokontroler
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript

Template Laporan

Lab. Mikrokontroler I21Laporan Praktikum

Laboratorium MIKROKONTROLER 1AVR ATmega8535

Proyek 05Keypad

Disusun oleh:

Kelompok EK-2A / 0606- Bayu TriatmonoNIM3.32.13.0.06

09- Hanfil Lutfia AnisaNIM3.32.13.0.09

Dosen: Dr. Samuel BETA; Ing-Tech.,M.T.

PROGRAM STUDI TEKNIK ELEKTRONIKAJURUSAN TEKNIK ELEKTROPOLITEKNIK NEGERI SEMARANG2014-2015

Proyek - 05Keypad

1. Tujuan Tujuan dari percobaan ini praktikan dapat : Memahami cara kerja sistem pengendali masukan luaran digital secara keseluruhan dan mampu membuat sistem untuk membaca masukan dan menghasilkan luaran digital Memahami cara kerja perangkat keras (rangkaian) pengendali masukan luaran digital dan mampu menghubungkan mikrokontroler AVR ATmega8535 dengan rangkaian penggerak masukan luaran Memahami cara kerja perangkat lunak (program) dan perintah bahasa rakitan mikrokontroler AVR ATmega8535 dan mampu membuat program untuk rangkaian penggerak masukan luaran Memahami cara kerja sistem tunda pada perangkat lunak dan mampu membuat program menu

2. Dasar Teori ATmega8535 yang menggunakan teknologi RISC (Reduce Instruction Set Computing) dimana program berjalan lebih cepat karena hanya membutuhkan satu siklus clock untuk mengeksekusi satu instruksi program. Secara umum, AVR dapat dikelompokkan menjadi 4 kelas, yaitu kelas ATtiny, keluarga AT90Sxx, keluarga ATmega, dan AT86RFxx. Pada dasarnya yang membedakan masing-masing kelas adalah memori, peripheral, dan fungsinya. Dari segi arsitektur dan instruksi yang digunakan, mereka bisa dikatakan hampir sama.Mikrokontroler ATmega8535 memiliki 3 jenis m emori, yaitu memori program, memori data dan memori EEPROM. Ketiganya memiliki ruang sendiri dan terpisah. a. Memori programATmega8535 memiliki kapasitas memori progam sebesar 8 Kbyte yang terpetakan dari alam at 0000h 0FFFh dimana masing-masing alamat memiliki lebar data 16 bit. Memori program ini terbagi menjadi 2 bagian yaitu bagian program boot dan bagian program aplikasi. b. Memori dataATmega8535 memiliki kapasitas memori data s ebesar 608 byte yang terbagi menjadi 3 bagian yaitu register serba guna, register I/O dan SRAM. ATmega8535 memiliki 32 byte register serba guna, 64 byte register I/O yang dapat diakses sebagai bagian dari memori RAM (menggunakan instuksi LD atau ST) atau dapat juga diakses sebagai I/O (menggunakan instruksi IN atau OUT), dan 512 byte digunakan untuk memori data SRAM. c. Memori EEPROM ATmega8535 memiliki memori EEPROM sebesar 512 byte yang terpisah dari memori program maupun memori data. Memori EEPROM ini hanya dapat diakses dengan menggunakan register-register I/O yaitu register EEPROM Address, register EEPROM Data, dan register EEPROM Control. Untuk mengakses memori EEPROM ini diperlakukan seperti mengakses data eksternal, sehingga waktu eksekusinya relatif lebih lama bila dibandingkan dengan mengakses data dari SRAM.

Setiap port ATmega8535 terdiri dari 3 register I/O yaitu DDRx, PORTx, dan PINx DDRx (Data Direction Register)Register DDRx digunakan untuk memilih arah pin. Jika DDRx=1 maka pin x sebagai keluaran dan jika DDRx=0 makan pin x sebagai masukan PORTx (Port Data Register)Register Portx digunakan untuk 2 keperluan yaitu untuk jalur keluaran atau untuk mengaktifkan resistor pull up internal PINx (Port Input Pin Addres)Digunakan sebagai register masukanATmega8535 memiliki 3 modul timer yang terdiri dari 2 buah tim er/counter 8 bit dan 1 buah timer/counter 16 bit. Ketiga modul timer/counter ini dapat diatur dalam mode yang berbeda secara individu dan tidak saling mempengaruhi satu sama lain. Selain itu, semua timer/counter juga dapat difungsikan sebagai sumber interupsi. Masing-masing timer/counter ini memiliki register tertentu yang digunakan untuk mengatur mode dan cara kerjanya.KEYPAD

Keypad adalah bagian penting dari suatu perangkat elektronika yang membutuhkan interaksi manusia. Keypad berfungsi sebagai interface antara perangkat (mesin) elektronik dengan manusia atau dikenal dengan istilah HMI (Human Machine Interface). Matrix keypad 44 pada artikel ini merupakan salah satu contoh keypad yang dapat digunakan untuk berkomunikasi antara manusia dengan mikrokontroler. Matrix keypad 44 memiliki konstruksi atau susunan yang simple dan hemat dalam penggunaan port mikrokontroler. Konfigurasi keypad dengan susunan bentuk matrix ini bertujuan untuk penghematan port mikrokontroler karena jumlah key (tombol) yang dibutuhkan banyak pada suatu sistem dengan mikrokontroler. Konstruksi matrix keypad 44 untuk mikrokontroler dapat dibuat seperti pada gambar berikut.

Konstruksi Matrix Keypad 44 Untuk MikrokontrolerKonstruksi matrix keypad 44 diatas cukup sederhana, yaitu terdiri dari 4 baris dan 4 kolom dengan keypad berupas saklar push buton yang diletakan disetiap persilangan kolom dan barisnya. Rangkaian matrix keypad diatas terdiri dari 16 saklar push buton dengan konfigurasi 4 baris dan 4 kolom. 8 line yang terdiri dari 4 baris dan 4 kolom tersebut dihubungkan dengan port mikrokontroler 8 bit. Sisi baris dari matrix keypad ditandai dengan nama Row1, Row2, Row3 dan Row4 kemudian sisi kolom ditandai dengan nama Col1, Col2, Col3 dan Col4. Sisi input atau output dari matrix keypad 44 ini tidak mengikat, dapat dikonfigurasikan kolom sebagi input dan baris sebagai output atau sebaliknya tergantung programernya.3. Praktikum 3.1. Keypad3.1.1. PermasalahanProgram untuk menampilkan tombol KEYPAD yang ditekan pada LED (hanya 1 kolom).Masukan: Pintu PA (Keypad)Proses: Peralihan data segera ke pintu PDKeluaran: Pintu PD (LED)

Gambar rangkaian :

3.1.2. Penyelesaianluaran LED menampilkan kode (hex) sesuai dengan masukan Keypad yang ditekan pada kolom ke 3.3.1.2.1. Diagram Alir

3.1.2.2. Program Program untuk menampilkan tombol keypad yang ditekan pad LED (kolok ke 3)/* =========================================Proyek 05-Papan Tombol KeypadP051a-Keypad LED program untuk menampilkan tombol KEYPAD yang ditekan pada LED (hanya 1 kolom)----------------------------------------Materi baru:- KEYPAD 4x4----------------------------------------Komponen:- 1x modul KEYPAD 4 kolom x 4 baris- 1x Bargraf (8xLED)- 1x R Net 120 ohm======================================== */

//=== Daftar Pustaka ===#include //AVR ATmega 8535#include //tunda

//=== Deklarasi sub program ===unsigned char bacaKeypad(void); //membaca tombol Keypad yang ditekan

//=== Deklarasi variabel ===unsigned char keypad [4][4]= { //tombol keypad {0x01, 0x02, 0x03, 0x0C}, {0x04, 0x05, 0x06, 0x0D}, {0x07, 0x08, 0x09, 0x0E}, {0x0A, 0x00, 0x0B, 0x0F} },//keypad kode, tombol; //tombol yang ditekan void main (void){ //=== Pengesetan Awal ==== DDRD = 0b11111111; //semua pin pada pintu Py sebagai luaran DDRA = 0b11110000; //Px 7-4:luaran (kolom) 3-0:masukan (baris) //=== Program Utama === while(1) { kode = bacaKeypad(); //baca tombol Leypad yang ditekan PORTD= kode; //tampilkan kode di 7 ruas(pintu Py) }//while}//main

//=== Sub program ===

//-bacaKeypad: untuk membaca tombol Keypad yang ditekanunsigned char bacaKeypad(void){ PORTA = 0b01111111; //kolom 3 diaktifkan delay_ms(5); if (PINA.0 == 0) //cek baris 0 tombol = keypad[0][3]; if (PINA.1 == 0) //cek baris 1 tombol = keypad[1][3]; if (PINA.2 == 0) //cek baris 2 tombol = keypad[2][3]; if (PINA.3 == 0) //cek baris 3 tombol = keypad[3][3]; return(tombol); //kembalikan nilai tombol}

/* =========================================

3.1.2.3 Hasil Percobaan

Untuk mendapatkan hasil percobaan ini, langkah percobaan yang dilakukan adalah sebagai berikut:1. Membuka aplikasi CodeVisionAVR, klik file New Project pilih target ATmega pada CodeWizardAVR pilih ATmega8535 lalu klik Generate Program Simpan dengan nama P05-Keypad.prj. 2. Memasukkan program, mengkompilasi [.c] amati apakah ada peringatan kesalah error. 3. Selanjutnya, buka software simulasi Proteus > ISIS 8.1 Profesional .4. Program yang sudah jadi disimulasikan ke Proteus, masukkan file P05-Keypad.hex ke Mikrokontroler ATmega8535. Lalu klik tombol play untuk menjalankan simulasinya. Dan amati hasilnya.5. Menghubungkan bootloader ke pintu USB komputer dan ke konektor [PROGRAMER]. Menyalakan modul pelatihan.6. Membuka program isp. Jika USB sudah terhubung maka progamstate bertuliskan PROGSIP akan menyala hijau.7. Membuka program progisp, pilih ATmega8535 pada SelectChip, klik load Flash, unggah file P05-Keypad.hex ke kit, klik erase, kemudian klik auto.8. Lihat hasil nya pada layar LED di modul pelatihan 1.1.3. Pembahasan Program dengan menggunakan keypad sebagai input pada pintu PA dan LED sebagai output pada pintu PD. Tampilan pada Led yaitu data yang telah dibuat sebelumnya yang ditampung pada Array dua dimensi//=== Deklarasi variabel ===unsigned char keypad [4][4]= { //tombol keypad {0x01, 0x02, 0x03, 0x0C}, {0x04, 0x05, 0x06, 0x0D}, {0x07, 0x08, 0x09, 0x0E}, {0x0A, 0x00, 0x0B, 0x0F} },//Pada program diatas menunjukan data yang akan ditampilkan pada led yaitu data yang akan ditampilkan dengan susunan yang diibaratkan sebuah tombol keypad sebagai contoh:Kolom ke empat baris ke dua (keypad[1][3]) berisi data hex 0x0D bila tombol pada keypad pada kolom dan baris tersebut ditekan maka Led menampilan data hex 0DProgram pada keypad adalah://-bacaKeypad: untuk membaca tombol Keypad yang ditekanunsigned char bacaKeypad(void){ PORTA = 0b01111111; //kolom 3 diaktifkan delay_ms(5); if (PINA.0 == 0) //cek baris 0 tombol = keypad[0][3]; if (PINA.1 == 0) //cek baris 1 tombol = keypad[1][3]; if (PINA.2 == 0) //cek baris 2 tombol = keypad[2][3]; if (PINA.3 == 0) //cek baris 3 tombol = keypad[3][3]; return(tombol); //kembalikan nilai tombol}

Penyambungan keypad ke mikrokontroler seperti ditunjukan pada gambar rangkaian yaitu pada PORTA bit 0 3 sebagai masukan dan bit 4 7 sebagai luaran, pengaktifan setiap kolom pada keypad secara bergantian, seperti pada program di atas bit ke 7 bernilai Low (0) maka hanya kolom ke 4 yang dicek keadaannya dan bila PinA 0 = 0 maka akan menjalankan perintah tombol sama dengan data pada array keypad [0] [3] = 0x0C begitu pula pada pengaktifan baris lainnya.3.2. Keypad3.2.1. PermasalahanProgram untuk menampilkan tombol KEYPAD yang ditekan pada LED (hanya 1 kolom).Masukan: Pintu PA (Keypad)Proses: Peralihan data segera ke Pintu PDKeluaran: Pintu PD (LED)Gambar rangkaian :

3.2.2. PenyelesaianLuaran LED menampilkan kode (hex) sesuai dengan masukan Keypad yang ditekan.3.2.2.1. Diagram Alir

3.2.2.2. Program Program untuk menampilkan tombol keypad yang ditekan pad LED./* =========================================Proyek 05-Papan Tombol KeypadP051a-Keypad LED program untuk menampilkan tombol KEYPAD yang ditekan pada LED (hanya 1 kolom)----------------------------------------Materi baru:- KEYPAD 4x4----------------------------------------Komponen:- 1x modul KEYPAD 4 kolom x 4 baris- 1x Bargraf (8xLED)- 1x R Net 120 ohm======================================== */

//=== Daftar Pustaka ===#include //AVR ATmega 8535#include //tunda

//=== Deklarasi sub program ===unsigned char bacaKeypad(void); //membaca tombol Keypad yang ditekan

//=== Deklarasi variabel ===unsigned char keypad [4][4]= { //tombol keypad {0x01, 0x02, 0x03, 0x0C}, {0x04, 0x05, 0x06, 0x0D}, {0x07, 0x08, 0x09, 0x0E}, {0x0A, 0x00, 0x0B, 0x0F} },//keypad b,k, kode, tombol; //tombol yang ditekan void main (void){ //=== Pengesetan Awal ==== DDRD = 0b11111111; //semua pin pada pintu Py sebagai luaran DDRA = 0b11110000; //Px 7-4:luaran (kolom) 3-0:masukan (baris) //=== Program Utama === while(1) { kode = bacaKeypad(); //baca tombol Leypad yang ditekan PORTD= kode; //tampilkan kode di 7 ruas(pintu Py) }//while}//main

//=== Sub program ===

//-bacaKeypad: untuk membaca tombol Keypad yang ditekanunsigned char bacaKeypad(void){ for(k=0;k