Monday 15 December 2014

Simulasi Keypad Matrix 4x4 dengan Proteus

Sekedar share tugas kuliah nih gan yah mumpung lagi semangat banget ngeblog hahaha.

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