Menggunakan Keypad 4×4 Berbasis Mikrokontroler Atmega16

Keypad merupakan salah satu masukan dari sistem pengendali, masukan bentuk keypad memberikan kode biner pada pengendali yang bisa dioleh menjadi bentuk keluaran display atau gerakan aktuator.

Pada jejak kali ini menggunakan keypad 4×4 dengan pengendali mikrokontroler Atmega16 untuk menghasilkan keluaran yang sesauai dengan karakter pada keypad dalam hal ini, yaitu karakter 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, *, dan # atau karakter 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, /, X , -,  , =, dan +.

Bentuk fiik keypad 4×4 seperti gambar di bawah ini.

Skema keypad 4×4 seperti gambar di bawah ini.

Pada skema keypad 4×4 di atas bisa kita buat bilangan biner yang digunakan sebagai kode untuk masukan pada mikrokontroler sesuai urutan R1R2R3R4C1C2C3C4 sebagai berikut:

1 : 10001000

2 : 10000100

3 : 10000010

A : 10000001

4 : 01001000

5 : 01000100

6 : 01000010

B : 01000001

7 : 00101000

8 : 00100100

9 : 00100010

C : 00100001

* : 00011000

0 : 00010100

# : 00010010

D : 00010001

Kode masukan biner di atas menjadi kode untuk membedakan perintah pada program mikrokontroler.

Rangkaian lengkap yang dibuat berbasis mikrokontroler Atmega16 seperti pada gambar di bawah ini,

Rangkaian Kendali Keypad 4×4 dan LCD Berbasis Mikrokontroler Atmega16

Rangkaian di atas menggunakan LCD 2×16 sebagai keluarannya yang dapat menampilkan karakter yang sesuai dengan karakter yang ditekan pada keypad 4×4. Masukan Keypad terhubung ke pin PD.0 s.d. PD.3, sedangkan untuk keluran keypad terhubung ke pin PD.4 s.d. PD.7.

JEJAK TERKAIT :  Perbedaan Arsitektur Mikroprosesor dengan Mikrokontroler

 

List Program menggunakan keypad 4×4 pada Mikrokontroler Atmega 16:

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

void main(void)
{
DDRC = 0XFF;
PORTC = 0X00;
DDRD = 0x0F;//PD0-3 sebagai output, PD4-7 sebagai input

lcd_init(16); // Characters/line: 16

while(1) //program utama
{
PORTD = 0b11111110;
if (PIND.4 == 0) {lcd_gotoxy(15,1);lcd_putsf(“7”);delay_ms(300);}
if (PIND.5 == 0) {lcd_gotoxy(15,1);lcd_putsf(“8”);delay_ms(300);}
if (PIND.6 == 0) {lcd_gotoxy(15,1);lcd_putsf(“9”);delay_ms(300);}
if (PIND.7 == 0) {lcd_gotoxy(15,1);lcd_putsf(“/”);delay_ms(300);}
delay_ms(30);

PORTD = 0b11111101;
if (PIND.4 == 0) {lcd_gotoxy(15,1);lcd_putsf(“4”);delay_ms(300);}
if (PIND.5 == 0) {lcd_gotoxy(15,1);lcd_putsf(“5”);delay_ms(300);}
if (PIND.6 == 0) {lcd_gotoxy(15,1);lcd_putsf(“6”);delay_ms(300);}
if (PIND.7 == 0) {lcd_gotoxy(15,1);lcd_putsf(“X”);delay_ms(300);}
delay_ms(30);

PORTD = 0b11111011;
if (PIND.4 == 0) {lcd_gotoxy(15,1);lcd_putsf(“1”);delay_ms(300);}
if (PIND.5 == 0) {lcd_gotoxy(15,1);lcd_putsf(“2”);delay_ms(300);}
if (PIND.6 == 0) {lcd_gotoxy(15,1);lcd_putsf(“3”);delay_ms(300);}
if (PIND.7 == 0) {lcd_gotoxy(15,1);lcd_putsf(“-“);delay_ms(300);}
delay_ms(30);

PORTD = 0b11110111;
if (PIND.4 == 0) {lcd_gotoxy(15,1);lcd_putsf(” “);delay_ms(300);}
if (PIND.5 == 0) {lcd_gotoxy(15,1);lcd_putsf(“0”);delay_ms(300);}
if (PIND.6 == 0) {lcd_gotoxy(15,1);lcd_putsf(“=”);delay_ms(300);}
if (PIND.7 == 0) {lcd_gotoxy(15,1);lcd_putsf(“+”);delay_ms(300);}
delay_ms(30);
}
}

 

Untuk lebih jelasnya dapat dilihat dalam video simulasi di bawah ini.

 

 

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *