Keypad
4×4 merupakan suatu komponen yang terdiri dari push button sebanyak 16 buah dan
memiliki 8 pin. Adanya 8 pin ini disebabkan penyusunan push button dibagi
menjadi penyusunan horizontal yang akan membentuk baris dan penyusunan vertikal
akan membentuk kolom. Bayangkan apabila push button dihubungkan satu-satu ke
mikrokontroler tentunya akan menghabiskan banyak pin bukan (16 pin), jika
dibandingkan dengan penyusunan baris dan kolom hanya akan menghabiskan 8 pin
saja (4 pin baris & 4 pin kolom).
Sebelum menghubungkan keypad ke mikrokontroler, perlu
ditentukan terlebih dahulu pin mana yang akan dijadikan sebagai input dan pin
yang akan dijadikan sebagai output. Pada umumnya kebanyakan penggemar
mikrokontroler menggunakan baris sebagai input dan kolom sebagai outputannya.
Namun jika ingin menggunakan sistem kebalikannya bisa juga hanya dibalik saja
nanti pada programnya. Pembacaan input
dari keypad 4x4 dilakukan menggunakan
proses scanning dimana per setiap
satu tombol merupakann kombinasi antara jalur baris dan kolom.
Gambar : Keypad 4x4 + Sismin + LCD
Program Keypad
void keypad()
{
PORTA=0x7f; delay_ms(5);
while(PIN.3==0){while(PIN.3==0){lcd_gotoxy(14,0);lcd_putsf("D
");}x=15;}
while(PIN.2==0){while(PIN.2==0){lcd_gotoxy(14,0);lcd_putsf("#
");}x=11;}
while(PIN.1==0){while(PIN.1==0){lcd_gotoxy(14,0);lcd_putsf("0
");}x=0;}
while(PIN.0==0){while(PIN.0==0){lcd_gotoxy(14,0);lcd_putsf("*
");}x=10;}
PORTA=0xbf;delay_ms(5);
while(PIN.3==0){while(PIN.3==0){lcd_gotoxy(14,0);lcd_putsf("C
");}x=14;}
while(PIN.2==0){while(PIN.2==0){lcd_gotoxy(14,0);lcd_putsf("9
");}x=9;}
while(PIN.1==0){while(PIN.1==0){lcd_gotoxy(14,0);lcd_putsf("8
");}x=8;}
while(PIN.0==0){while(PIN.0==0){lcd_gotoxy(14,0);lcd_putsf("7
");}x=7;}
PORTA=0xdf;delay_ms(5);
while(PIN.3==0){while(PIN.3==0){lcd_gotoxy(14,0);lcd_putsf("B
");}x=13;}
while(PIN.2==0){while(PIN.2==0){lcd_gotoxy(14,0);lcd_putsf("6
");}x=6;}
while(PIN.1==0){while(PIN.1==0){lcd_gotoxy(14,0);lcd_putsf("5
");}x=5;}
while(PIN.0==0){while(PIN.0==0){lcd_gotoxy(14,0);lcd_putsf("4
");}x=4;}
PORTA=0xef; delay_ms(5);
while(PIN.3==0){while(PIN.3==0){lcd_gotoxy(14,0);lcd_putsf("A
");}x=12;}
while(PIN.2==0){while(PIN.2==0){lcd_gotoxy(14,0);lcd_putsf("3
");}x=3;}
while(PIN.1==0){while(PIN.1==0){lcd_gotoxy(14,0);lcd_putsf("2
");}x=2;}
while(PIN.0==0){while(PIN.0==0){lcd_gotoxy(14,0);lcd_putsf("1
");}x=1;}
}

Comments