ANTARMUKA MIKROKONTROLER KEYPAD DENGAN LED SEBAGAI OUPUTAN
Program kombinasi keypad dan LED
1     Hubungkan miko ke keypad sebagai inputan dan 8 buah LED sebagai Outputan:
a.       Gambarlah rangkaiannya.
b.      Buatlah program untu, mengeluarkan output LED jika tombol di tekan.
| 
Keypad | 
Konidi LED | 
| 
1. | 
LED 0-3 nyala,delay, LED 4 – 7 nyala, delay, LED 0- 3 nyala, delay, dst. | 
| 
2. | 
LED 0, 2, 4, 6 nyala, delay, LED 1, 3, 5,7 nyala, delay, LED 0,2,3,4,6 | 
| 
3. | 
LED bergerak dari tengah ke pinggir, ke tengah lagi. | 
| 
4. | 
LED nyala berjalan dari kiri ke kanan, dari kanan ke kiri, dst. | 
| 
5. | 
LED nyala berjalan dari kanan ke kiri, dari kiri ke kanan, dst. | 
=======================================================================
TUGAS BESAR
ANTARMUKA
MIKROKONTROLER 
 KEYPAD DENGAN LED SEBAGAI OUPUTAN
Diajukan
kepada
Universitas
Negeri Malang
untuk
memenuhi tugas besar matakuliah
Mikroproseesor
dan Teknik Antarmuka
Oleh  :
Bustanul Arifin                                   ( 100531302369 )
Habieb Nur Atmojo                            ( 100531302358 )
Bagus Jefri Dwinanda                        ( 100531302357 )
UNIVERSITAS
NEGERI MALANG
FAKULTAS
TEKNIK JURUSAN TEKNIK ELEKTRO
PROGRAM
STUDI D3 TEKNIK ELEKTRO
DESEMBER
2011
TUGAS BESAR
ANTARMUKA
MIKROKONTROLER 
 KEYPAD DENGAN LED SEBAGAI OUPUTAN
1.     
TUJUAN
1.      Mengetahui
dan memahami cara mengantarmukakan mikrokontroler dengan rangkaian LED.
2.      Mengetahui
dan memahami bagaimana memrogram mikrokontroler untuk menyalakan LED.
3.      Mengetahui
dan memahami cara mengantarmukakan mikrokontroler dengan keypad.
4.      Mengetahui
dan memahami bagaimana memprogram mikrokontroler untuk membaca masukan dari
keypad.
2.     
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
memperlihatkan bentuk fisik LED dan simbol rangkaiannya.
(a)   LED warna merah, hijau
dan biru
(b) Simbol elektronik
Gambar 2.1 LED
Untuk menyalakan
sebuah LED perlu rangkaian tambahan yang dapat dilihat dalam Gambar 2.2.
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 5.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 5.1 Keypad 4x4
Dalam gambar 5.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 5.2 Rangkaian
keypad dan LED 
3.     
ALAT
DAN BAHAN YANG DIGUNAKAN
- 1 set
     Personal Computer/Laptop yang sudah berisi program Code Vision dan Extreme Burner
- 1 buah catu
     daya DC +5V
- 1 buah
     multimeter
- 1 buah ISP
     Downloader AVR
- 1 buah
     sistem minimum AVR
- 1 buah I/O
- 1 buah
     kabel printer USB
- 1 buah
     kabel pita hitam
4.     
PROSEDUR
- Rangkailah
     peralatan yang diperlukan seperti dalam Gambar 5.3. 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.
Gambar
5.3 Rangkaian antarmuka mikrokontroler
- Buka
     program Code Vision AVR
- Buatlah
     project baru dengan inisialisasi 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 pada program bagian
     inisialisasi PORTB dan PORTC terlihat sebagai berikut:
PORTB=0xff;
DDRB=0x0f;      //portb sebagai input dan output,
0b00001111
PORTC=0x00;
DDRC=0xff;   // portc sebagai output
- Deklarasikan
     fungsi keypad() dengan bilangan yang dikembalikan ke program utama sebagai
     bilangan integer.
unsigned char keypad();
- Tuliskan
     script berikut dalam program utama:
while (1)
{    
     PORTC=keypad();    //menampilkan hasil yang dikembalikan oleh
fungsi ke LED
}
- Tambahkan
     fungsi berikut di bawah program utama:
unsigned char keypad()
{
   
PORTB = 0b11111110;               //aktifkan baris1 (memberi
logika 0 ke baris1)
   
delay_ms(100);
   
if(PINB.7==0) return (10);
   
if(PINB.6==0) return (1);
   
if(PINB.5==0) return (2);
   
if(PINB.4==0) return (3);
   
//========================
   
PORTB = 0b11111101;               //aktifkan baris2
   
delay_ms(100);       
   
if(PINB.7==0) return (11);
   
if(PINB.6==0) return (6);
   
if(PINB.5==0) return (5);
   
if(PINB.4==0) return (4);
   
//========================
   
PORTB = 0b11111011;               //aktifkan baris3
   
delay_ms(100);       
   
if(PINB.7==0) return (12);
   
if(PINB.6==0) return (9);
   
if(PINB.5==0) return (8);
   
if(PINB.4==0) return (7);
   
//========================
   
PORTB = 0b11110111;               //aktifkan baris4
   
delay_ms(100);       
   
if(PINB.7==0) return (13);
   
if(PINB.6==0) return (15);
   
if(PINB.5==0) return (0);
   
if(PINB.4==0) return (14);
}
5.     
Data hasil
percobaan
Program untuk menampilkan LED
/*****************************************************
This program was produced by the
CodeWizardAVR V2.04.6 Evaluation
Automatic Program Generator
© Copyright 1998-2010 Pavel Haiduc, HP InfoTech s.r.l.
http://www.hpinfotech.com
Project : 
Version : 
Date    :
21/11/2011
Author  : Freeware,
for evaluation and non-commercial use only
Company : 
Comments: 
Chip type              
                : ATmega8535
Program type           
              : Application
AVR Core Clock frequency 
: 8,000000 MHz
Memory model           
           : Small
External RAM size      
          : 0
Data Stack size       
               : 128
*****************************************************/
#include <mega8535.h>
#include <delay.h>
// Declare your global variables here
unsigned char key, keypad();
void main(void)
{
// Declare your local variables here
// Input/Output Ports initialization
// Port A initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In
Func1=Out Func0=Out 
// State7=T State6=T State5=T State4=T State3=T State2=T
State1=0 State0=0 
PORTA=0x00;
DDRA=0x00;
// Port B initialization
// Func7=In Func6=In Func5=In Func4=In Func3=Out
Func2=Out Func1=Out Func0=Out 
// State7=P State6=P State5=P State4=P State3=1 State2=1
State1=1 State0=1 
PORTB=0xFF;
DDRB=0x0F;
// Port C initialization
// Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out
Func2=Out Func1=Out Func0=Out 
// State7=0 State6=0 State5=0 State4=0 State3=0 State2=0
State1=0 State0=0 
PORTC=0x00;
DDRC=0xFF;
// Port D initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In
Func1=In Func0=In 
// State7=T State6=T State5=T State4=T State3=T State2=T
State1=T State0=T 
PORTD=0x00;
DDRD=0x00;
// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: Timer 0 Stopped
// Mode: Normal top=FFh
// OC0 output: Disconnected
TCCR0=0x00;
TCNT0=0x00;
OCR0=0x00;
// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: Timer1 Stopped
// Mode: Normal top=FFFFh
// OC1A output: Discon.
// OC1B output: Discon.
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer1 Overflow Interrupt: Off
// Input Capture Interrupt: Off
// Compare A Match Interrupt: Off
// Compare B Match Interrupt: Off
TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;
// Timer/Counter 2 initialization
// Clock source: System Clock
// Clock value: Timer2 Stopped
// Mode: Normal top=FFh
// OC2 output: Disconnected
ASSR=0x00;
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;
// External Interrupt(s) initialization
// INT0: Off
// INT1: Off
// INT2: Off
MCUCR=0x00;
MCUCSR=0x00;
// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x00;
// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1:
Off
ACSR=0x80;
SFIOR=0x00;
while (1)
      {
            //
Place your code here
           
PORTB=key;    //menampilkan hasil
yang dikembalikan oleh fungsi ke LED
           
key=keypad();
            while
(key == 1)
            {
                   
PORTC=0x0f;
                   
delay_ms(1000); 
                   
PORTC=0xf0;
                   
delay_ms(1000); 
                   
key=keypad ();       
            } ;
            while
(key == 2)
            {
                   
PORTC=0b01010101;
                   
delay_ms(1000); 
                   
PORTC=0b10101010;
                   
delay_ms(1000); 
                   
PORTC=0b01010101;
                   
delay_ms(1000); 
                   
PORTC=0b10101010;
                   
delay_ms(1000);  
                   
key=keypad ();             
            } ; 
             while
(key == 3)
            {
                    PORTC=0b00011000;
                   
delay_ms(1000); 
                   
PORTC=0b00100100;
                   
delay_ms(1000);  
                   
PORTC=0b01000010;
                   
delay_ms(1000);
                   
PORTC=0b10000001;
                    delay_ms(1000);
                   
PORTC=0b01000010;
                   
delay_ms(1000);
                   
PORTC=0b00100100;
                   
delay_ms(1000);
                   
PORTC=0b00011000;
                   
delay_ms(1000); 
                   
key=keypad ();       
            } ;
             while
(key == 4)
            {
                   
PORTC=0b00000001;
                   
delay_ms(1000);
                   
PORTC=0b00000010;
                   
delay_ms(1000);
                   
PORTC=0b00000100;
                   
delay_ms(1000);
                   
PORTC=0b00001000;
                   
delay_ms(1000);
                   
PORTC=0b00010000;
                   
delay_ms(1000);
                    PORTC=0b00100000;
                   
delay_ms(1000);
                   
PORTC=0b01000000;
                   
delay_ms(1000);
                   
PORTC=0b10000000;
                   
delay_ms(1000);  
                   
PORTC=0b01000000;
                   
delay_ms(1000); 
                   
PORTC=0b00100000;
                   
delay_ms(1000); 
                   
PORTC=0b00010000;
                   
delay_ms(1000); 
                   
PORTC=0b00001000;
                   
delay_ms(1000);    
                   
PORTC=0b00000100;
                   
delay_ms(1000); 
                   
PORTC=0b00000010;
                   
delay_ms(1000);
                   
PORTC=0b00000001;
                   
delay_ms(1000);
                   
key=keypad ();       
            }
;  
             while
(key == 5)
            {
                   
PORTC=0b10000000;
                   
delay_ms(1000);  
                    PORTC=0b01000000;
                   
delay_ms(1000); 
                   
PORTC=0b00100000;
                   
delay_ms(1000); 
                   
PORTC=0b00010000;
                   
delay_ms(1000); 
                   
PORTC=0b00001000;
                    delay_ms(1000);    
                   
PORTC=0b00000100;
                   
delay_ms(1000); 
                   
PORTC=0b00000010;
                   
delay_ms(1000);
                   
PORTC=0b00000001;
                   
delay_ms(1000); 
                   
PORTC=0b00000010;
                   
delay_ms(1000);
                   
PORTC=0b00000100;
                   
delay_ms(1000);
                   
PORTC=0b00001000;
                   
delay_ms(1000);
                   
PORTC=0b00010000;
                   
delay_ms(1000);
                   
PORTC=0b00100000;
                   
delay_ms(1000);
                   
PORTC=0b01000000;
                   
delay_ms(1000);
                   
key=keypad ();         
            } ;
      }      
}     
unsigned char keypad()
{    
    PORTB =
0b11111110;               //aktifkan
baris1 (memberi logika 0 ke baris1)
    delay_ms(100);
    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(100);    
    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(100);    
    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(100);    
    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 *
}
6.     
Tabel percobaan
| 
No | 
Tombol keypad
  yang ditekan | 
Tampilan LED | 
| 
1. | 
1 | 
00001111  
11110000 | 
| 
2. | 
2 | 
01010101  
10101010 | 
| 
3. | 
3 | 
00011000  
00100100 
01000010 
10000001 
01000010 
00100100 
00011000  | 
| 
4. | 
4 | 
00000001 
00000010 
00000100 
00001000 
00010000 
00100000 
01000000 
10000000 
01000000 
00100000 
00010000 
00001000 
00000100 
00000010 
00000001 | 
| 
5. | 
5 | 
10000000 
01000000 
00100000 
00010000 
00001000 
00000100 
00000010 
00000001 
00000010 
00000100 
00001000 
00010000 
00100000 
01000000 
10000000 | 
7.     
Gambar rangakaian
Gambar : rangakaian Keypad dengan outputan LED
Gambar rangkaian










Komentar
Posting Komentar