Anda di halaman 1dari 27

Keypad_LCD

Sistem Mikrokontroler
• KEYPAD
• Keypad 4x3 di sini adalah sebuah keypad matrix dengan susunan empat baris dan
tiga kolom dengan sebuah common.
Seperti terlihat dalam gambar di atas, apabila saklar ‘1’ ditekan, maka baris 1 dan
kolom 1 akan terhubung ke common.
Apabila saklar ‘2’ ditekan, maka baris 1 dan kolom 2 akan terhubung ke common
dan seterusnya.
Sedangkan saat tombol ditekan, maka baris dan kolom akan terhubung ke
ground sehingga kondisi pada baris dan kolom tersebut akan menjadi low. Apabila
tombol ‘1’ ditekan, maka baris 1 dan kolom 1 akan terhubung ke ground sehingga
kondisi baris dan kolom tersebut akan berubah menjadi low, demikian pula pada
tombol ‘2’ dan seterusnya sehingga terbentuk tabel berikut.
Cara kerja rangkaian Keypad 3x4 :

·         Apabila Kolom 1 diberi logika ‘0’, kolom kedua dan kolom ketiga diberi
logika ‘1’ maka program akan mengecek tombol 1, 4, 7, dan *, sehingga apabila
salah satu baris berlogika '0' maka ada tombol yang ditekan.

·         Apabila Kolom 2 diberi logika ‘0’, kolom pertama dan kolom ketiga
diberi logika ‘1’ maka program akan mengecek tombol 2, 5, 8, dan 0, sehingga
apabila salah satu baris berlogika '0' maka ada tombol yang ditekan.

·         Apabila Kolom 3 diberi logika ‘0’, kolom pertama dan kolom kedua
diberi logika ‘1’ maka program akan mengecek tombol 3, 6, 9, dan #, sehingga
apabila salah satu baris berlogika '0' maka ada tombol yang ditekan.
• Contoh pada table diatas keypad terhung pada PORTA mikrokontroler
Program pembacaan keypad
• Jika keypad terhubung pada port B dengan ketentuan seperti gambar
• Baris 1 terhubung pada PB.1, baris 2 pada PB.2, baris 3 pada PB.3 dan baris 4 pada
PB.4, sedangkan colom 1 pada PB.5, clom 2 pada PB.6 dan kolom 3 pada PB.7
• Program pembacaan keypad
• PORTB = 0b11111100; // baris 1
if(PINB.5==0) return ('1');
if(PINB.6==0) return ('2');
if(PINB.7==0) return ('3');

• PORTB = 0b11111010; // baris 2


if(PINB.5=0) return ('4');
if(PINB.6=0) return ('5');
if(PINB.7=0) return ('6');
//==========================
PORTB = 0b11110110; // baris 3
if(PINB.5=0) return ('7');
if(PINB.6=0) return ('8');
if(PINB.7=0) return ('9');
//==========================
PORTB = 0b11101110; // baris 4
if(PINB.5=0) return ('*');
if(PINB.6=0) return ('0');
if(PINB.7=0) return ('#');
}
• Berikut contoh program penggunaan keypad dengan tampilan LCD:
#include <mega8535.h>
#include <delay.h>
#asm
.equ__lcd_port=0x18;PORTC
#endasm
#include <lcd.h>

unsigned char key;


unsigned char keypad( );

void main(void)
{
 PORTB=0xFE;
 DDRB=0x1F;

 lcd_init(16);
• while(1)
 {
  key = keypad();
  if (key=='1');
 {
   lcd_gotoxy(0,0);
   lcd_putsf("keypad = 1");
 }
  if (key=='2');
 {
   lcd_gotoxy(0,0);
   lcd_putsf("keypad = 2");
 }
  if (key=='3');
 {
   lcd_gotoxy(0,0);
   lcd_putsf("keypad = 3");
 }
  if (key=='4');
 {
   lcd_gotoxy(0,0);
   lcd_putsf("keypad = 4");
 }
  if (key=='5');
 
• {
   lcd_gotoxy(0,0);
   lcd_putsf("keypad = 5");
 }
if (key=='6');
 {
   lcd_gotoxy(0,0);
   lcd_putsf("keypad = 6");
 }
  if (key=='7');
 {
   lcd_gotoxy(0,0);
   lcd_putsf("keypad = 7");
 }
  if (key=='8');
 {
   lcd_gotoxy(0,0);
   lcd_putsf("keypad = 8");
 }
  if (key=='9');
 {
   lcd_gotoxy(0,0);
   lcd_putsf("keypad = 9");
 }
• if (key=='0');
 {
   lcd_gotoxy(0,0);
   lcd_putsf("keypad = 0");
 }
  if (key=='*');
 {
   lcd_gotoxy(0,0);
   lcd_putsf("keypad = *");
 }
  if (key=='#');
 {
   lcd_gotoxy(0,0);
   lcd_putsf("keypad = #");
 }

 };
}
• unsigned Char keypad()
{
PORTB = 0b11111100;
if(PINB.5==0) return ('1');
if(PINB.6==0) return ('2');
if(PINB.7==0) return ('3');
//==========================
• PORTB = 0b11111010;
if(PINB.5=0) return ('4');
if(PINB.6=0) return ('5');
if(PINB.7=0) return ('6');
//==========================
PORTB = 0b11110110;
if(PINB.5=0) return ('7');
if(PINB.6=0) return ('8');
if(PINB.7=0) return ('9');
//==========================
PORTB = 0b11101110;
if(PINB.5=0) return ('*');
if(PINB.6=0) return ('0');
if(PINB.7=0) return ('#');
}
• Keypad 4x4

• Pada dasarnya keypad yang ada dipasaran baik yang berukuran keypad 3×3, 3×4 atau 4×4,
hanya tersusun dari beberapa push button yang dikonfigurasikan antara kolom dengan baris.
Sehingga sering disebut juga keypad matriks nxm (n=kolom m=baris). Kolom dan baris ini
nantinya yang digunakan untuk pendeteksian penekanan tombol. Berikut adalah konfigurasi
dasar untuk keypad 4×4.


B1, B2, B3 dan B4 merupakan baris ke 1 sampai baris ke 4, sedangkan C1, C2, C3 dan C4
merupakan kolom ke 1 sampai kolom ke 4 keypad. Terlihat jelas betapa sederhananya
rangkaian dasar keypad untuk ukuran keypad 4×4 yang terdiri dari 16 buah push button yang
dikonfigurasikan seperti matriks
pada keypad ini jika ada penekanan tombol maka terbentuk kombinasi logika akibat
terhubungnya baris dan kolom seperti yang terlihat pada tabel dibawah ini :

Biner
Tombol Heksadesimal
(PORTA.7 ... PORTA.0)
# 01101110 6EH
0 10101110 AEH
. 11001110 CE
9 01110110 76H
8 10110110 B6H
7 11010110 D6H
6 01111010 7AH
5 10111010 BAH
4 11011010 DAH
3 01111100 7CH
2 10111100 BCH
1 11011100 DCH
• Keypad
• Konfigurasi Keypad
• Pada dasarnya keypad adalah sejumlah tombol yang disusun sedemikian rupa
sehingga membentuk susunan tombol angka dan beberapa menu lainnya. Berikut
adalah contoh konfigurasi keypad 4x4 :
• Cara Mengakses Keypad
• Berikut ini adalah cara menghubungkan keypad ke mikrokontroler :
• Untuk mengetahui tombol mana yang ditekan maka kita harus melakukan proses
scanning pada keypad dengan langkah sebagai berikut :
• Langkah 1 :
contoh
• Aplikasi keypad dengan lCD, keypad terhubung pada port B
• Kolom 1 terhubung pada PB.0
• Kolom 2 terhubung pada PB.1
• Kolom 3 terhubung pada PB.2
• Kolom 4 terhung pada PB.3
• Baris 1 terhubung pada PB.4
• Baris 2 terhubung pada PB.5
• Baris 3 terhubung pada PB.6
• Baris 4 terhubung pada PB.7
• #include <mega8535.h>
#include <stdlib.h>
#include <delay.h>
#include <lcd.h>
• // Alphanumeric LCD Module functions
#asm
.equ __lcd_port=0x15 ;PORTC
#endasm
• void tekan_keypad_tampil_lcd() //penekanan keypad kemudian ditampilkan di LCD
{
PORTB = 0b11111110;
delay_ms(30);
if (PINB.4 == 0)
• {
• lcd_putsf(“1”);
• delay_ms(300);}


if (PINB.5 == 0) {lcd_putsf(“4”); delay_ms(300);}
if (PINB.6 == 0) {lcd_putsf(“7”); delay_ms(300);}
if (PINB.7 == 0) {lcd_putsf(“*”); delay_ms(300);}
• PORTB = 0b11111101;
delay_ms(30);
• if (PINB.4 == 0) {lcd_putsf(“2”); delay_ms(300);}
if (PINB.5 == 0) {lcd_putsf(“5”); delay_ms(300);}
if (PINB.6 == 0) {lcd_putsf(“8”); delay_ms(300);}
if (PINB.7 == 0) {lcd_putsf(“0”); delay_ms(300);}
• PORTB = 0b11111011;
delay_ms(30);
if (PINB.4 == 0) {lcd_putsf(“3”); delay_ms(300);}
if (PINB.5 == 0) {lcd_putsf(“6”); delay_ms(300);}
if (PINB.6 == 0) {lcd_putsf(“9”); delay_ms(300);}
if (PINB.7 == 0) {lcd_putsf(“#”); delay_ms(300);}
• PORTB = 0b11110111;
delay_ms(30);
if (PINB.4 == 0) {lcd_putsf(“A”); delay_ms(300);}
if (PINB.5 == 0) {lcd_putsf(“B”); delay_ms(300);}
if (PINB.6 == 0) {lcd_putsf(“C”); delay_ms(300);}
if (PINB.7 == 0) {lcd_putsf(“D”); delay_ms(300);}
}
• void tampil_string()
{
lcd_gotoxy(0,0);   //menempatkan kursor lcd pada baris 0 kolom 0
lcd_putsf(“tampilan lcd2x16”);  //menampilkan tulisan tampilan lcd2x16
lcd_gotoxy(0,1);  //menempatkan kursor lcd pada baris 1 kolom 0
lcd_putsf(“Elektro-cOntrOl”);   //menampilkan tulisan ElektrO-cOntrOl
}
• void tampil_variabel()
{
//sebuah variabel yg akan ditampilkan kedalam LCD harus diubah dahulu kedalam tipe data
array
char temp[6];
int a=500;
float b=123.45;
itoa(a,temp); //Kemudian data tersebut di konversi menjadi desimal dengan sintac itoa
lcd_gotoxy(0,0);
lcd_puts(temp);
• itoa(b,2,temp); //angka 2, banyaknya digit dibelakang koma yg ditampilkan
lcd_gotoxy(0,1);
lcd_puts(temp);
}
• void main(void)
{
while(1) //program utama
{
//tinggal dilakukan pemanggilan fungsi saja, contoh:
tampil_string(); //pemanggilan fungsi tampil_string()
};
}
• Tugas
• Buat program menggunakan keypad-LCD 4x3
dan 4x4 , dengan keypad terhubung pada
portD menampilkan angka sesuai yang ada
pada keypad
Portb = &B11101111
If Pinb.0 = 0 Then
Angka = 1
Gosub Entri_data
Waitms 200
Elseif Pinb.1 = 0 Then
Angka = 4
Gosub Entri_data
Waitms 200
Elseif Pinb.2 = 0 Then
Angka = 7
Gosub Entri_data
Waitms 200
Elseif Pinb.3 = 0 Then
Cls
Waitms 200
End If
'KOLOM 2
Portb = &B11011111
If Pinb.0 = 0 Then
Angka = 2
Gosub Entri_data
Waitms 200
Elseif Pinb.1 = 0 Then
Angka = 5
Gosub Entri_data
Waitms 200
Elseif Pinb.2 = 0 Then
Angka = 8
Gosub Entri_data
Waitms 200
Elseif Pinb.3 = 0 Then
Angka = 0
Gosub Entri_data
Waitms 200
End If
'KOLOM 3
Portb = &B10111111
If Pinb.0 = 0 Then
Angka = 3
Gosub Entri_data
Waitms 200
Elseif Pinb.1 = 0 Then
Angka = 6
Gosub Entri_data
Waitms 200
Elseif Pinb.2 = 0 Then
Angka = 9
Gosub Entri_data
Waitms 200
Elseif Pinb.3 = 0 Then
Flag = 0
I = 19000
Kode = 0
Goto Mulai
Waitms 200
include <mega8535.h>
#include <stdlib.h>
#include <delay.h>
#include <lcd.h>

// Alphanumeric LCD Module functions


#asm
.equ __lcd_port=0×15 ;PORTC
#endasm
/
******************************
***********************
CodeWizardAVR V1.24.8d
Professional
/
*******************************
**********************
CodeWizardAVR V1.24.8d
Professional
Chip type : ATmega16
*******************************
**********************/
#include &lt;mega16.h&gt;

Anda mungkin juga menyukai