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


Simulasi ATMega16 dengan Proteus

Ok langsung aja.

Untuk mensimulasikan Mikrokontroler khususnya ATMega 16 cukup dengan menambahkan komponen ATMega16 ke dalam pilihan komponen yang ingin digunakan dalam simulasi.  Dalam mensimulasikan menggunakan Proteus ATMega16 tidak perlu diberi catu daya karena telah diberikan secara otomatis. Pada tutorial kali ini program rangkaian yang ingin disimulasikan adalah mengendalikan nyala LED yang ada pada PORTA.7-4 dengan menggunanak Codevision AVR untuk membuat programnya. Berikut tutorial singkatnya nih gan.

1. Tekan huruf P pada Proteus
2. Ketik pada bagian Keyword ="ATMega".
3. Pilih ATMega 16. Pada kolom DEVICES anda akan melihat tulisan ATMEGA16
4. Untuk menambahkan komponen tersebut ke board simulasi cukup lakukan klik Kiri pada daerah kerja simulasi setelah mengaktifkan komponen mode pada bagian toolbar.
5. Klik P lagi untuk menambahkan komponen LED. Untuk memudahkan ketik saja agan-agan sekalian komponen LED pada bagian keyword. Ingat gunakan LED yang animated agar dapat disimulasikan.
6. Selanjutnya tinggal menambahkan ground untuk LED. Ground dapat diperoleh dari terminals mode yang ada pada bagian toolbar.
7. Rangkailah seperti pada rangkaian berikut ini. Tapi kalo punya rangkaian sediri bisa lah asal sesuai program.


 8. Tahap selanjutnya adalah memasukkan program ke dalam mikrokontroler. Hanya file bereksistensi .hex yang dapat dimasukkan. Double klik mikrokontroler tersebut akan muncul jendela edit component.
9. Pada bagian Program File tambahkan file .hex dari program yang telah dibuat menggunakan cvavr.
10. Klik OK. Kemudian RUN.

Berikut contoh programnya.

#include <mega16.h>
void main(void)
{
PORTA=0x00;
DDRA=0xFF;
while (1)
      {
      PORTA.4=1;
      PORTA.5=0;
      PORTA.6=1;
      PORTA.7=1;

      }
}

Ini nih gan hasilnya setelah di RUN.



Sekian dari saya semoga bermanfaat untuk agan-agan pembaca sekalian. Kalo ada masalah silahkan coment.

Keep do the BEST