Percobaan Praktikum IV Keypad [PDF]

  • 0 0 0
  • Suka dengan makalah ini dan mengunduhnya? Anda bisa menerbitkan file PDF Anda sendiri secara online secara gratis dalam beberapa menit saja! Sign Up
File loading please wait...
Citation preview

PERCOBAAN PRAKTIKUM IV ANTARMUKA MIKROKONTROLER DENGAN KEYPAD



I.



TUJUAN  Mengetahui dan memahami cara mengantarmukakan mikrokontroler dengan keypad.  Mengetahui dan memahami bagaimana memrogram mikrokontroler untuk membaca masukan dari keypad.



II. DASAR TEORI 2.1 LED Sebuah LED (Light Emitting Diode) adalah sebuah sumber cahaya yang terbuat dari semikonduktor. Biasanya LED digunakan sebagai lampu indikator dalam beberapa piranti, dan mulai banyak digunakan sebagai penerangan/lampu. Gambar 1.1 memperlihatkan bentuk fisik LED dan simbol rangkaiannya.



Gambar 2.1 Bentuk fisik LED dan Simbol elektronik Untuk menyalakan sebuah LED perlu rangkaian tambahan yang dapat dilihat pada gambar disamping. Rangkaian tersebut berupa sebuah transistor yang difungsikan sebagai saklar dan dua buah resistor untuk pembatas arus. Dalam modul I/O yang dipakai dalam praktikum, kedelapan rangkaian LED tersebut dihubungkan ke sebuah soket jumper bernama OUTPUT.



Gambar 2.2 Rangkaian LED



2.2 KEYPAD Keypad merupakan tombol push button yang disusun sebagai baris dan kolom sehingga membentuk matriks. Keypad banyak digunakan sebagai piranti masukan dalam piranti elektronik. Gambar 4.1 memperlihatkan bentuk fisik keypad. Keypad ini memiliki 16 tombol yaitu 0,1,2,3,4,5,6,7,8,9,A,B,C, D,* dan #.



Gambar 2. 3 Keypad 4x4 Dalam modul I/O yang di Dalam gambar 4.2 keypad dihubungkan ke PORTB mikrokontroler dengan posisi baris (b1-b4) terhubung ke PORTB.0-PORTB.3 dan posisi kolom (c1-c4) terhubung ke PORTB.4-PORTB.7. Sedangkan untuk mengetahui tombol apa yang ditekan oleh user, 8 buah LED yang terdapat dalam MODUL I/O dihubungkan ke PORTC.



Gambar 2.4 Rangkaian keypad dan LED



III.



ALAT DAN BAHAN YANG DIGUNAKAN  1 set PC/Laptop yang sudah berisi program Code Vision dan Khazama  1 buah catu daya DC +5V  1 buah multimeter  1 buah ISP Downloader AVR  1 buah sistem minimum AVR  1 buah modul I/O



   IV. 1. 2. 3. 4. 5.



1 buah keypad 1 buah kabel printer USB 2 buah kabel pita hitam



PROSEDUR Hubungkan soket jumper PORTB pada minimum system dengan soket jumper KEYPAD dan soket jumper PORTC pada minimum system dengan soket jumper OUTPUT pada I/O. Buat program dengan menggunakan aplikasi Code Vision AVR Buatlah file project (.prj) kemudian pilih IC yang digunakan (ATmega8535) dan atur clock 4.000 Mhz. (seperti praktikum sebelumnya) Buatlah file source (.c) kemudian hubungkan file project dengan file source seperti pada praktikum sebelumnya. Tambahkan file header



6. Buatlah program utama dan inisialisasikan PORTB.0-PORTB.3 sebagai output dengan kondisi awal berlogika HIGH dan PORTB.4-PORTB.7 sebagai input dengan pull-up (DDRB = 0FH dan PORTB=FFH), serta PORTC sebagai output dan kondisi awal LOW (DDRC = FFH dan PORTC=00H), sehingga inisialisasi PORTB dan PORTC terlihat sebagai berikut:



7. Deklarasikan fungsi keypad() dengan bilangan yang dikembalikan ke program utama sebagai bilangan integer pada global variabel ( diluar program utama).



8. Tambahkan fungsi keypad berikut di luar program utama :



9. Tuliskan program berikut pada program utama tepatnya di dalam while(1).



10. Compile dan Build program jika ada yang error perbaiki program. Masukkan file hex menggunakan Khanzama AVR Programer. Klik auto program, tekan tombol keypad, amati nyala LED dan isi Tabel 4.1. 11. Ubah program utama untuk algoritma berikut: a. Jika tombol 0 ditekan semua LED mati. b. Jika tombol 1 ditekan semua LED menyala. 12. Buatlah satu program dengan algoritma sebagai berikut: a. Jika tombol 0 ditekan LED bit 0 menyala. b. Jika tombol 1 ditekan LED bit 1 menyala. c. Jika tombol 2 ditekan LED bit 2 menyala. d. Jika tombol 3 ditekan LED bit 3 menyala. e. Jika tombol 4 ditekan LED bit 4 menyala. f. Jika tombol 5 ditekan LED bit 5 menyala. g. Jika tombol 6 ditekan LED bit 6 menyala. h. Jika tombol 7 ditekan LED bit 7 menyala. i. Jika tombol 8 ditekan LED menyala sesuai gambar dibawah ini ber urutan dari atas kebawah dengan delay 1 detik. (Gunakan perulangan for ...)  LED Menyala  LED Mati



j.



Jika tombol 9 ditekan LED menyala sesuai gambar dibawah ini ber urutan dari atas kebawah dengan delay 1 detik. (Gunakan perulangan for ...)  LED Menyala  LED Mati



k. Jika tombol A ditekan LED bit 0,2,4,6 menyala dan bit 1,3,5,7 mati. l. Jika tombol B ditekan LED bit 0,2,4,6, mati dan bit 1,3,5,7 menyala. m. Jika tombol C ditekan ditekan algoritma k dan l dilaksanakan bergantian dengan delay 1 detik. n. Jika tombol D ditekan ditekan maka LED menyala menunjukkan nilai biner dua digit terakhir NIM anda. o. Jika tombol * semua LED mati. p. Jika tombol # semua LED menyala.



V.



ANALISA DATA A. Tabel Hasil Praktikum



Nama Tombol 1 2 3 A 4 5 6 B 7 8 9 C * 0 # D



7



6



5



0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0



0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0



0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0



Keterangan :  



Lampu mati : Lampu menyala :



Tabel 1. Hasil Praktikum Pertama Nyala LED Lampu LED 4 3 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0



0 0 0 1 0 0 0 1 0 1 1 1 1 0 1 1



0 0 0 0 1 1 1 0 1 0 0 1 1 0 1 1



0 1 1 1 0 0 1 1 1 0 0 0 1 0 1 0



1 0 1 0 0 1 0 1 1 0 1 0 0 0 1 1



Nilai tampilan LED (dalam desimal) 1 4 5 10 8 5 6 11 7 8 9 12 14 15 13



Nama 7



6



5



1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0



1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0



1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0



Nyala LED 4 3 2



Tabel 2. Hasil Praktikum Kedua Lampu LED 1 0



Nilai tampilan LED (dalam desimal) 256 2 3 10 8 5 6 11 7 8 9 12 14



Tombol 1 2 3 A 4 5 6 B 7 8 9 C * 0 # D



1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0



1 0 0 1 0 0 0 1 0 1 1 1 1 0 1 1



1 0 0 0 1 1 1 0 1 0 0 1 1 0 1 1



1 1 1 1 0 0 1 1 1 0 0 0 1 0 1 0



1 0 1 0 0 1 0 1 1 0 1 0 0 0 1 1



15 13



Keterangan :  



Lampu mati : Lampu menyala :



Nama Tombo l 1 2 3 A 4 5 6 B 7 8



7



6



5



0 0 0 0 0 0 0 1 1 1



0 0 0 1 0 0 1 0 0 1



0 0 0 0 0 1 0 1 0 1



Nyala LED 4 3 2



0 0 0 1 1 0 0 0 0 1



0 0 0 0 0 0 0 1 0 0



0 0 1 1 0 0 0 0 0 0



Tabel 3. Hasil Praktikum Ketiga Lampu LED 1 0



0 1 0 0 0 0 0 1 0 0



Nilai tampilan LED (dalam desimal) 2 4 8 85 16 32 64 170 128 240



1 0 0 1 0 0 0 0 0 0 Delay 1000



1



1



1



0



0



0



0



0



224 Delay 1000



1



1



0



1



0



0



0



0



208 Delay 1000



1



1



0



0



0



0



0



0



1



0



1



1



0



0



0



0



192 Delay 1000 176 Delay 1000



1



0



1



0



0



0



0



0



1



0



0



1



0



0



0



0



160 Delay 1000 144 Delay 1000



1



0



0



0



0



0



0



0



0



1



1



1



0



0



0



0



0



1



1



0



0



0



0



0



128 Delay 1000 112 Delay 1000 96 Delay 1000



0



1



0



1



0



0



0



0



80 Delay 1000



0



1



0



0



0



0



0



0



64 Delay 1000



0



0



1



1



0



0



0



0



0



0



1



0



0



0



0



0



48 Delay 1000 32 Delay 1000



9



0 0



0 0



0 0



1 1



0 1



0 0



0 0



0 0



16 24 Delay 1000



0



0



1



1



1



1



0



0



0



1



1



1



1



1



1



0



64 Delay 1000 126 Delay 1000



1



1



1



1



1



1



1



1



1



1



1



1



1



1



1



1



256 Delay 1000 256 Delay 1000



1



1



1



1



1



1



1



1



256 Delay 1000



0



1



1



1



1



1



1



0



126 Delay 1000



0



0



1



1



1



1



0



0



64 Delay 1000



C



0 0



0 1



0 0



1 1



1 0



0 1



0 0



0 1



1



0



1



0



1



0



1



0



0



0



0



0



0



0



0



0



24 85 Delay 1000



*



170



0 # D







0 1 0



0 1 0



0 1 0



0 1 0



0 1 1



0 1 1



0 1 0



0 1 1



B. Source Kode Program KodeProgram 1 : #include #include unsigned char keypad(); unsigned char keypad() { PORTB=0b11111110; //aktifkan baris1 (memberi logika 0 ke baris 1 delay_ms(1); if(PINB.7==0)return(10); // untuk keypad no A if(PINB.6==0)return(3); // untuk keypad no 3 if(PINB.5==0)return(2); // untuk keypad no 2 if(PINB.4==0)return(1); // untuk keypad no 1 PORTB=0b11111101; //aktifkan baris2 delay_ms(1); if(PINB.7==0)return(11); // untuk keypad no B if(PINB.6==0)return(6); // untuk keypad no 6 if(PINB.5==0)return(5); // untuk keypad no 5 if(PINB.4==0)return(4); // untuk keypad no 4 PORTB=0b11111011; //aktifkan baris3 delay_ms(1); if(PINB.7==0)return(12); // untuk keypad no C if(PINB.6==0)return(9); // untuk keypad no 9 if(PINB.5==0)return(8); // untuk keypad no 8 if(PINB.4==0)return(7); // untuk keypad no 7 PORTB=0b11110111; //aktifkan baris4 delay_ms(1); if(PINB.7==0)return(13); // untuk keypad no D if(PINB.6==0)return(15); // untuk keypad no # if(PINB.5==0)return(0); // untuk keypad no 0 if(PINB.4==0)return(14); // untuk keypad no * } void main(void) { PORTB=0xff; //0b11111111 DDRB=0x0f; //PORTB sebagai input dan output, 0b00001111



1 256 37



PORTC=0x00; DDRC=0xff; //PORTC sebagai output while(1) { PORTC=keypad(); //menampilkan hasil yang dikembalikan oleh fungsi LED } } 



KodeProgram 2: #include #include unsigned char keypad(); unsigned char keypad() { PORTB=0b11111110; //aktifkan baris1 delay_ms(1); if(PINB.7==0)return(10); //untuk keypad no A if(PINB.6==0)return(3); //untuk keypad no 3 if(PINB.5==0)return(2); //untuk keypad no 2 if(PINB.4==0)return(0b11111111); //untuk keypad no 1 PORTB=0b11111101; //aktifkan baris2 delay_ms(1); if(PINB.7==0)return(11); //untuk keypad no B if(PINB.6==0)return(6); //untuk keypad no 6 if(PINB.5==0)return(5); //untuk keypad no 5 if(PINB.4==0)return(4); //untuk keypad no 4 PORTB=0b11111011; //aktifkan baris3 delay_ms(1); if(PINB.7==0)return(12); //untuk keypad no C if(PINB.6==0)return(9); //untuk keypad no 9 if(PINB.5==0)return(8); //untuk keypad no 8 if(PINB.4==0)return(7); //untuk keypad no 7 PORTB=0b11110111; //aktifkan baris4 delay_ms(1); if(PINB.7==0)return(13); //untuk keypad no D if(PINB.6==0)return(15); //untuk keypad no # if(PINB.5==0)return(0b00000000); //untuk keypad no 0 if(PINB.4==0)return(14); //untuk keypad no * } void main(void)



{ PORTB=0xff; //0b11111111 DDRB=0x0f; //PORTB sebagai input dan output, 0b00001111 PORTC=0x00; DDRC=0xff; //PORTC sebagai output while(1) { PORTC=keypad(); //menampilkan hasil yang dikembalikan oleh fungsi LED } } 



KodeProgram 3: #include #include unsigned char keypad(); int i; unsigned char a[16]={0xf0,0xe0,0xd0,0xd0,0xc0,0xb0,0xa0,0x90,0x80,0x70,0x60,0x50,0x40 ,0x30,0x20,0x10}; unsigned char b[9]={0x18,0x3c,0x7e,0xff,0xff,0xff,0x7e,0x3c,0x18}; unsigned char keypad() { PORTB=0b11111110; //aktifkan baris1 delay_ms(1); if(PINB.7==0)return(0b01010101); //untuk keypad no A if(PINB.6==0)return(0b00001000); //untuk keypad no 3 if(PINB.5==0)return(0b00000100); //untuk keypad no 2 if(PINB.4==0)return(0b00000010); //untuk keypad no 1 PORTB=0b11111101; //aktifkan baris2 delay_ms(1); if(PINB.7==0)return(0b10101010); //untuk keypad no B if(PINB.6==0)return(0b01000000); //untuk keypad no 6 if(PINB.5==0)return(0b00100000); //untuk keypad no 5 if(PINB.4==0)return(0b00010000); //untuk keypad no 4 PORTB=0b11111011; //aktifkan baris3 delay_ms(1); if(PINB.7==0)return(12); //untuk keypad no C { PORTC=0x55; delay_ms(1000); PORTC=0xaa;



delay_ms(1000); } if(PINB.6==0)return(9); //untuk keypad no 9 { for(i=0;i