Penerapan Keypad 4×4 untuk Menyalakan 16 Lampu Berpengendali Mikrokontroler Atmega16

Pada jejak sebelumnya sudah dibuat penerapan keypad 4×4 yang tombolnya ditampilkan dalam LCD 16×2, LCD tersebut tampilannya sesuai dengan tombol keypad 4×4 yang ditekan. Misalkan jika menekan tombol 9 maka pada LCD akan tampil angka 9, jika menekan tombol A maka pada LCD akan tampil huruf A menggantikan angka 9, dan seterusnya.

Pada jejak kali ini dibuat keluaran tambahan berupa LED sebagai indikatornya, sinyal keluaran dari mikrokontroler dapat dioleh untuk menggerakan aktuator atau lampu yang memiliki daya yang besar, tetapi pada jejak ini hanya sebatas menyalakan LED saja sebagai penunjuk bahwa ada sinyal keluaran pada port mikrokontroler tersebut.

Berikut rRangkaian penerapan Keypad 4×4 untuk menyalakan 16 lampu atau indikator berpengendali mikrokontroler Atmega 16:

 

Pada rangkaian di atas ada sebuah keypad 4×4, LCD 16×2, 16 LED dan mikrokontroler Atmega16. Mengapa ada 16 LED ? Karena keypad 4×4 memiliki 16 tombol, jadi masing-masing tombol dapat digunakan untuk menyalakan masing-masing LED yang menyala bergantian sesuai dengan tombol yang ditekan.

 

List Program yang sesuai dengan tangkaian di atas seperti di bawah ini :

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

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

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

JEJAK TERKAIT :  Membatasi Bit Keluaran Port A Berbasis Mikroprosessor Zilog Z80

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

PORTD = 0b11111101;
if (PIND.4 == 0) {lcd_gotoxy(15,1);lcd_putsf(“4”);PORTA=0b00010000; PORTB=0b00000000;delay_ms(300);}
if (PIND.5 == 0) {lcd_gotoxy(15,1);lcd_putsf(“5”);PORTA=0b00100000; PORTB=0b00000000;delay_ms(300);}
if (PIND.6 == 0) {lcd_gotoxy(15,1);lcd_putsf(“6”);PORTA=0b01000000; PORTB=0b00000000;delay_ms(300);}
if (PIND.7 == 0) {lcd_gotoxy(15,1);lcd_putsf(“X”);PORTA=0b10000000; PORTB=0b00000000;delay_ms(300);}
delay_ms(30);

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

PORTD = 0b11110111;
if (PIND.4 == 0) {lcd_gotoxy(15,1);lcd_putsf(” “);PORTA=0b00000000; PORTB=0b00010000;delay_ms(300);}
if (PIND.5 == 0) {lcd_gotoxy(15,1);lcd_putsf(“0”);PORTA=0b00000000; PORTB=0b00100000;delay_ms(300);}
if (PIND.6 == 0) {lcd_gotoxy(15,1);lcd_putsf(“=”);PORTA=0b00000000; PORTB=0b01000000;delay_ms(300);}
if (PIND.7 == 0) {lcd_gotoxy(15,1);lcd_putsf(“+”);PORTA=0b00000000; PORTB=0b10000000;delay_ms(300);}
delay_ms(30);
}
}

Untuk lebih jelasnya dapat dilihat dalam video di bawah ini.

Tinggalkan Balasan

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