Untuk menggunakan keypad matrix 4x4 dengan mikrokontroler terlebih dahulu kita harus mengetahui prisnisp kerja dari keypad tersebut
Keypad Matriks adalah tombol-tombol yang disusun secara maktriks (baris x kolom) sehingga dapat mengurangi penggunaan pin input. Sebagai contoh, Keypad Matriks 4×4 cukup menggunakan 8 pin untuk 16 tombol. Hal tersebut dimungkinkan karena rangkaian tombol disusun secara horizontal membentuk baris dan secara vertikal membentuk kolom:
Namun demikian, sebagai konsekuensi dari penggunaan bersama satu jalur (semisal baris satu (B1)), maka tidak dimungkinkan pengecekkan dua tombol sekaligus dalam satu slot waktu.
Proses pengecekkan dari tombol yang dirangkai secara maktriks adalah dengan teknik scanning, yaitu proses pengecekkan yang dilakukan dengan cara memberikan umpan-data pada satu bagian dan mengecek feedback (umpan-balik) – nya pada bagian yang lain. Dalam hal ini, pemberian umpan-data dilakukan pada bagian baris dan pengecekkan umpan-balik pada bagian kolom. Pada saat pemberian umpan-data pada satu baris, maka baris yang lain harus dalam kondisi inversi-nya. Tombol yang ditekan dapat diketahui dengan melihat asal data dan di kolom mana data tersebut terdeteksi:
Pada contoh di atas, tombol yang ditekan adalah tombol “5”. Seperti terlihat bahwa B2 bernilai nol, sedangkan B1, B3, dan B4 adalah satu. Kemudian dengan mengetahui bahwa asal data dari B2, dan umpan-baliknya terdeteksi pada K2, maka dapat disimpulkan bahwa tombol yang ditekan adalah tombol “5”.
Flowhcart berikut memperlihatkan proses scanning Keypad Matriks 4×4 secara lengkap:
Berikut contoh simulasi rangkaiannya mnggunakan proteus dan programnya menggunakan codevision AVR.
Nah untuk programnya ini dia agan-agan sekalian
//*Created By Ruli Adi Lestari (RCT & TNC)
//insthasa.blogspot.com
//MAN JADDA WA JADA
//PUNYANA KELOMPOK LCD
#include <mega16.h>
#include <alcd.h>
#include <delay.h>
// Declare your global variables here
int a;
void main(void)
{
PORTA=0x00;
DDRA=0x00;
PORTB=0x00;
DDRB=0x00;
PORTC=0x00;
DDRC=0x00;
PORTD=0xFF;
DDRD=0x0F;
TCCR0=0x00;
TCNT0=0x00;
OCR0=0x00;
// Alphanumeric LCD initialization
// Connections specified in the
// Project|Configure|C Compiler|Libraries|Alphanumeric LCD menu:
// RS - PORTB Bit 0
// RD - PORTB Bit 1
// EN - PORTB Bit 2
// D4 - PORTB Bit 4
// D5 - PORTB Bit 5
// D6 - PORTB Bit 6
// D7 - PORTB Bit 7
// Characters/line: 16
lcd_init(16);
a=0;
while (1)
{
lcd_gotoxy(2,0);
lcd_putsf("Kelompok LCD");
lcd_gotoxy(0,1);
lcd_putsf("=");
for (a=0;a<=3;a++)
{
if (a==0)
{
PORTD=0b11111110;
}
if (a==1)
{
PORTD=0b11111101;
}
if (a==2)
{
PORTD=0b11111011;
}
if (a==3)
{
PORTD=0b11110111;
}
// KOlom 1
if (PORTD.0==0 && PIND.4==0)
{
lcd_gotoxy(1,1);
lcd_putsf("7");
}
if (PORTD.1==0 && PIND.4==0)
{
lcd_gotoxy(1,1);
lcd_putsf("4");
}
if (PORTD.2==0 && PIND.4==0)
{
lcd_gotoxy(1,1);
lcd_putsf("1");
}
if (PORTD.3==0 && PIND.4==0)
{
lcd_gotoxy(1,1);
lcd_putsf(" ");
}
//Kolom 2
if (PORTD.0==0 && PIND.5==0)
{
lcd_gotoxy(1,1);
lcd_putsf("8");
}
if (PORTD.1==0 && PIND.5==0)
{
lcd_gotoxy(1,1);
lcd_putsf("5");
}
if (PORTD.2==0 && PIND.5==0)
{
lcd_gotoxy(1,1);
lcd_putsf("2");
}
if (PORTD.3==0 && PIND.5==0)
{
lcd_gotoxy(1,1);
lcd_putsf("0");
}
// Kolom 3
if (PORTD.0==0 && PIND.6==0)
{
lcd_gotoxy(1,1);
lcd_putsf("9");
}
if (PORTD.1==0 && PIND.6==0)
{
lcd_gotoxy(1,1);
lcd_putsf("6");
}
if (PORTD.2==0 && PIND.6==0)
{
lcd_gotoxy(1,1);
lcd_putsf("3");
}
if (PORTD.3==0 && PIND.6==0)
{
lcd_gotoxy(1,1);
lcd_putsf("= (Sama Dengan)");
}
//Kolom 4
if (PORTD.0==0 && PIND.7==0)
{
lcd_gotoxy(1,1);
lcd_putsf("'/. (BAGI)");
}
if (PORTD.1==0 && PIND.7==0)
{
lcd_gotoxy(1,1);
lcd_putsf("X (KALI)");
}
if (PORTD.2==0 && PIND.7==0)
{
lcd_gotoxy(1,1);
lcd_putsf("- (KURANG)");
}
if (PORTD.3==0 && PIND.7==0)
{
lcd_gotoxy(1,1);
lcd_putsf("+ (Tambah)");
}
delay_us(10);
}
}
}
sumber:
> http://depokinstruments.com/2011/07/27/teori-keypad-matriks-4x4-dan-cara-penggunaannya/.
> Penulis
Ok thanks for you attention.
coment aja kalau ada yang ingin ditanyakan
No comments:
Post a Comment