Contoh Pemrograman Dasar Keypad 4×4 untuk Menu Input Data Angka 4 digit

Hardware
– PC/Laptop
– Board Microcontroller AVR dgn RS232 Port
– Keypad 4×4
– USB to rs232 Converter
– Cable pita isi 10  female to female
– power suply untuk board microcontroller

Software
– Codevision
– Hyperterminal

Penjelasan

Pada Contoh berikut  setiap penekanan  dari Keypad akan di tampilkan pada Led di PORTC dan data angka 4 digit akan dikirim ke PC melalui serial Port.

Gambar :

menukeyboard1

koneksi header  PortA dan  Keypad 4X4

headerkeypad4x4

Gambar Hyperterminal Pada PC

menuhyperterminal

Ringkasan code proggramnya spt ini :

while (1)
{
keypad();

if(kode !=0xff)             // jika keypad ditekan
{
if(digit==4)                //input digit menu pilihan (1~4)
if(menu==1) digit--
else if(menu==2) digit--
else if(menu==3) digit--
else if(menu==4) digit--
else                       // "pilihlah menu"
else if(digit==3) digit-- // masukan input ribuan
else if(digit==2) digit-- // masukan input satuan
else if(digit==1) digit-- // masukan input puluhan
else if(digit==0) digit=4 // masukan input satuan

kode =0xff ;   // kembalikan kode ke 0ff setiap 1 digit angka diketik (tombol dilepas)
}

} end of while

Code Program Selengkapnya:

/*****************************************************
CodeWizardAVR V1.24.8d
Chip type : ATmega16
Clock frequency : 11.059200 MHz

*****************************************************/
#include  < mega8535.h >
#include <stdio.h >
#include <stdlib.h>
#include <delay.h>
#define waktuTekanTombol 500



// Declare your global variables here
unsigned char menu,digit=4;
unsigned int ribuan,ratusan,puluhan,satuan,hasil;
char kode ;
void keypad(void);
void origin(void);
void LED_kelap_kelip(char jml_looping, unsigned int waktu_delay);
void LED_berjalan(unsigned int waktu_delay);

void main(void)
{

// Port A initialization untuk KEYPAD 4X4
// PA.0-PA3 sbg input,,  PA4-PA& sebagai Output
PORTA=0xFF;
DDRA=0xF0;

// Port B initialization
PORTB=0x00;
DDRB=0xF0;

// Port C initialization

//PORTC=0xFF;
//DDRC=0xF0;
PORTC=0x00;
DDRC=0xFF;

// Port D initialization
PORTD=0x00;
DDRD=0xB0;
// USART initialization
// Communication Parameters: 8 Data, 1 Stop, No Parity, Baud rate: 9600
UCSRA=0x00;
UCSRB=0x18;
UCSRC=0x86;
UBRRH=0x00;
UBRRL=0x47;

kode =0xff ;
LED_kelap_kelip(5,500);

while (1)
{

keypad();
if(kode !=0xff)
{

//================input data==========
if(digit==4) //menu pilihan
{
menu= kode;
//=======================================x
if(menu==1)
{

PORTC=menu;
putchar(48+kode);
delay_ms(waktuTekanTombol);
digit--;
putchar(13);
putchar(10);
}
else if(menu==2)
{

PORTC=menu;
putchar(48+kode) ;
delay_ms(waktuTekanTombol);
digit--;
putchar(13);
putchar(10);
}
else if(menu==3)
{

PORTC=menu;
putchar(48+kode);
delay_ms(waktuTekanTombol);
digit--;
putchar(13);
putchar(10);
}
else if(menu==4)
{

PORTC=menu;
putchar(48+kode);
delay_ms(waktuTekanTombol);
digit--;
putchar(13);
putchar(10);
}
else
{
LED_kelap_kelip(3,200);
}
//=======================================x

}
else if(digit==3) // masukan input ribuan
{
ribuan= kode;
PORTC = kode;
putchar(48+kode);
delay_ms(waktuTekanTombol);

digit--;
}
else if(digit==2)
{
ratusan = kode;
PORTC = kode ;
putchar(48+kode);
delay_ms(waktuTekanTombol);

digit--;
}
else if(digit==1)
{
puluhan = kode;
PORTC = kode;
putchar(48+kode);
delay_ms(waktuTekanTombol);

digit--;
}
else if(digit==0)
{
satuan = kode;
PORTC = kode ;
putchar(48+kode);
delay_ms(waktuTekanTombol);
putchar(10);
putchar(13);

putchar(48+menu);
putchar('@');
putchar(48+ribuan);//48+ribuan);
putchar(48+ratusan);//48+ribuan);
putchar(48+puluhan);//48+ribuan);
putchar(48+satuan);//48+ribuan);

LED_berjalan(1000);
origin();
delay_ms(waktuTekanTombol);

}

kode =0xff ; // kembalikan kode ke 0ff setiap 1 digit angka diketik (tombol tak ditekan)

} // penutup if(kode !=0xff)

} // end of while
} // end of main

 
 
//=================function definition==================
//=======================================================
void origin(void)
{ putchar(13);
putchar(10);
putchar('M');
putchar('e');
putchar('n');
putchar('u');
putchar('');
putchar('1');
putchar('-');
putchar('4');
putchar(':');
digit=4;
menu=0;
kode =0xff ;
ribuan=0;
ratusan=0;
puluhan=0;
satuan=0;
}

//============================================================
void keypad() //void untuk program keypad pada PORTA
{
PORTA.4=0;
delay_ms(3);
if (PINA.0==0) {kode=20;}
else if (PINA.1==0){kode=-13;}
else if (PINA.2==0){kode=0;}
else if (PINA.3==0){kode=-6;}

PORTA.4=1;
PORTA.5=0;
delay_ms(3);
if (PINA.0==0) {kode=19;}
else if (PINA.1==0){kode=9;}
else if (PINA.2==0){kode=8;}
else if (PINA.3==0){kode=7;}

PORTA.5=1; PORTA.6=0;
delay_ms(3);
if (PINA.0==0) {kode=18;}
else if (PINA.1==0){kode=6;}
else if (PINA.2==0){kode=5;}
else if (PINA.3==0){kode=4;}

PORTA.6=1; PORTA.7=0;
delay_ms(3);
if (PINA.0==0) {kode=17;}
else if (PINA.1==0){kode=3;}
else if (PINA.2==0){kode=2;}
else if (PINA.3==0){kode=1;}

PORTA.7=1;
delay_ms(3);
}

//============================================
void LED_kelap_kelip(char jml_looping, unsigned int waktu_delay)
{
char i;

PORTC=255;
for(i =0;i<jml_looping;i++)
{
PORTC =~PORTC;

delay_ms(waktu_delay);
}

PORTC=255;

}
//============================================

void LED_berjalan(unsigned int waktu_delay)
{
char i,data;
PORTC=255;
delay_ms(waktu_delay);
PORTC=254;
delay_ms(waktu_delay);
PORTC=253;

//255-254-253-251-247-239-223-191-127
for(i=0; i<7;i++)
{

PORTC=255-2^i;

delay_ms(waktu_delay);
}

PORTC=255;

}

About pccontrol

Berisi Tutorial Menggunakan PC untuk mengontrol Peralatan dengan cara mudah & praktis.

Posted on 14/09/2014, in AVR, Contoh-contoh Aplikasi. Bookmark the permalink. Leave a comment.

Komentar ,Saran atau Pertanyaan

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: