Hot Posts

6/recent/ticker-posts











Scaning Keypad (versi II)

Alhamdulilah setelah sekian lama tidak berbagi ilmu sekarang diberikan lagi kesempatan untuk sedikit berbagi pengetahuan, tentunya tidak jauh dari mikrokontroler. Pada artikel yang dulu mungkin sudah pernah saya ungkap tentang bagaimana caranya membaca tombol keypad atau sering disebut keypad matrik, kenapa disebut matrik? konon katanya karena keypad ini tersusun dari beberapa tombol tekan (push button) yang disusun secara matrik, hehe..

Perbedaan yang mendasar dari artikel sebelumnya adalah sebenarnya tidak ada, tetapi yang membedakan adalah cara ataupun alur program yang lebih singkat dan lebih pendek dari cara yang sebelumnya. Seperti biasa masih menggunakan software favorit saya yaitu CodeVisionAVR. Potongan programnya adalah sebagai berikut:

void key()
{
  lcd_gotoxy(0,0);
  lcd_putsf(" Anda Menekan: ");

  PORTD=0b11111101;
  delay_ms(50);
  if(PIND.7==0){lcd_gotoxy(0,1);lcd_putsf(" 1 ");delay_ms(100);}
  if(PIND.6==0){lcd_gotoxy(1,1);lcd_putsf(" 2 ");delay_ms(100);}
  if(PIND.5==0){lcd_gotoxy(2,1);lcd_putsf(" 3 ");delay_ms(100);}

  PORTD=0b11111011;
  delay_ms(50);
  if(PIND.7==0){lcd_gotoxy(3,1);lcd_putsf(" 4 ");delay_ms(100);}
  if(PIND.6==0){lcd_gotoxy(4,1);lcd_putsf(" 5 ");delay_ms(100);}
  if(PIND.5==0){lcd_gotoxy(5,1);lcd_putsf(" 6 ");delay_ms(100);}

  PORTD=0b11110111;
  delay_ms(50);
  if(PIND.7==0){lcd_gotoxy(0,1);lcd_putsf(" 7 ");delay_ms(100);}
  if(PIND.6==0){lcd_gotoxy(0,1);lcd_putsf(" 8 ");delay_ms(100);}
  if(PIND.5==0){lcd_gotoxy(0,1);lcd_putsf(" 9 ");delay_ms(100);}

  PORTD=0b11101111;
  delay_ms(50);
  if(PIND.7==0){lcd_gotoxy(0,1);lcd_putsf(" * ");delay_ms(100);}
  if(PIND.6==0){lcd_gotoxy(0,1);lcd_putsf(" 0 ");delay_ms(100);}
  if(PIND.5==0){lcd_gotoxy(0,1);lcd_putsf(" # ");delay_ms(100);}
}


Program diatas untuk menampilkan hasil penekanan tombol keypad 3x4 ke layar LCD 2x16 karakter, baris 0 atau baris paling atas pada LCD akan menampilkan tulisan " Anda Menekan: " dan baris satu atau dibawah tulisan tersebut akan muncul angka sesuai dengan tombol mana yang ditekan. Dalam aplikasi dilapangan mungkin akan terdapat perbedaan, misalkan untuk nilai PORTD dan PINX yang dibaca. Ini terjadi karena urutan pin pada keypad antara jenis satu dengan yang lain tidak sama dan tidak urut. Berikut rangkaian lengkapnya menggunakan proteus:















Semoga bermanfaat

Post a Comment

0 Comments