Kamis, 02 Mei 2013

, ,

Antarmuka Mikrokontroler dengan Keypad

Waaaaaaahhhh....
baru kesampaian ni posting soal mikrokontroler......
kali ini saya akan membahas tentang bagaimana cara menggunakan dan memrogram untuk antarmuka keypad dengan mikrokontroler....

langsung saja, keypad merupakan tombol push button yang disusun sebagai baris dan kolomsehingga membentuk matriks. Keypad banyak digunakan sebagai piranti masukan dalam piranti elektronik.

untuk lebih jelasnya perhatikan gambar di bawah ini.

Gambar diatas merupakan rangkaian keypad 4x4. Terlihat bahwa terdapat 2 bagian yaitu baris dan kolom, baris dan kolom inilah yang nantinya akan disambungkan pada mikrokontroler untuk sistem scanning pada keypad.



pada rangkaian diatas terlihat bahwa baris pada keypad disambungkan dengan PORTB.0-PORTB.3 sedangkan bagian kolom PORT.4-PORT.7.
ketika salah satu tombol keypad ditekan, maka LCD akan menampilkan karakter sesuai dengan nama tombol tersebut.
untuk program rangkaian diatas sebagai berikut:

#include <mega8535.h>
#include <stdio.h>
#include <delay.h>

// Alphanumeric LCD Module functions
#include <alcd.h>

// Declare your global variables here
int hasil;
unsigned char buff[33];
unsigned char keypad()
{
PORTB = 0b11111110;  //aktifkan baris1 (memberi logika 0 ke baris1)
delay_ms(10);
if(PINB.7==0) return (10);
if(PINB.6==0) return (3);
if(PINB.5==0) return (2); 
if(PINB.4==0) return (1);
//========================
PORTB = 0b11111101;  //aktifkan baris2
delay_ms(10);
if(PINB.7==0) return (11);
if(PINB.6==0) return (6);
if(PINB.5==0) return (5);
if(PINB.4==0) return (4);
//========================
PORTB = 0b11111011;  //aktifkan baris3
delay_ms(10);
if(PINB.7==0) return (12);
if(PINB.6==0) return (9);
if(PINB.5==0) return (8);
if(PINB.4==0) return (7);
//========================
PORTB = 0b11110111;  //aktifkan baris4
delay_ms(10);
if(PINB.7==0) return (13);
if(PINB.6==0) return (15);
if(PINB.5==0) return (0);
if(PINB.4==0) return (14);
}

void main(void)
{
// Declare your local variables here
PORTB=0xFF;
DDRB=0x0F;

PORTD=0x00;
DDRD=0x00;

ACSR=0x80;
SFIOR=0x00;

// Alphanumeric LCD initialization
// Connections specified in the
// Project|Configure|C Compiler|Libraries|Alphanumeric LCD menu:
// RS - PORTD Bit 0
// RD - PORTD Bit 1
// EN - PORTD Bit 2
// D4 - PORTD Bit 4
// D5 - PORTD Bit 5
// D6 - PORTD Bit 6
// D7 - PORTD Bit 7
// Characters/line: 16
lcd_init(16);

while (1)
      {
      // Place your code here 
      hasil=keypad();
      lcd_clear();
      lcd_gotoxy(0,0);
      sprintf(buff,"hasil = %d",hasil);
      lcd_puts(buff);
      }
}

pada program diatas dapat kita ketahui bahwa untuk membuat keypad bekerja sesuai dengan tombol yang ditekan, memerlukan sistem scanning. Proses scanning tersebut memiliki prinsip kerja, pada baris secara bergantian diberi logika 0 (mulai baris pertama/ PORTB.0 sampai baris paling bawah PORTB.3). dan kolom pada PORTB4-PORTB.7 diberi logika 1. ketika salah satu kolom berlogika 0 pada baris tertentu maka pada function akan menghasilkan nilai balikan sesuai dengan nilai yang telah di set.
Contoh saja ketika menekan baris ke 2 (PORTB.2) berlogika 0 dan nilai masukkan dari kolom ke 2 (PINB.5) juga berlogika 0 maka nilai balikan pada function adalah 5. Nilai inilah yang nantinya akan ditampilkan pada LCD pada program diatas.

sekian dari saya...........semoga bermanfaat ^^



1 komentar:

  1. ADMIN mengatakan...

    nah keren ini gan, sengat bermanfaat bagi yang mau Belajar PLC

Posting Komentar