Keypad matrix adalah kumpulan push button yang dibuat dalam bentuk matriks. Keypad matrix digunakan untuk mensiasati keterbatasan alokasi PORT pada perangkat elektronik sementara untuk keperluan inputnya membutuhkan jumlah yang banyak. Penggunaan satu pin untuk satu tombol akan mengakibatkan kekurangan ketersediaan port, sehingga dibuatlah skema keypad matriks.
Seperti halnya penggunaan dot matrix yang digunakan sebagai output, keypad matriks bekerja berdasarkan aturan yang sama, perbedaannya hanya dari arah komunikasi data, keypad digunakan sebagai input dan dot untuk keperluan output.
Hampir semua perangkat key based berbasis keypad matriks, entah keypad hp maupun keyboard PC. itulah mengapa jumlah tombol keyboard mencapai puluhan tetapi konektornya cukup USB/ PS2. Hal itu terjadi karena penggunaan algoritma matriks yang kemudian dikirimkan dalam komunikasi serial.
Program Keypad Matrix Pengendali 7 Segment
Pada postingan kali ini akan membahas penggunaan keypad matriks untuk mengendalikan output 7segmen. Nilai pada 7 segmen akan berubah sesuai dengan tombol yang ditekan pengguna. Matriks yang digunakan adalah 3×4 setara dengan keypad handphone lama. Dari 12 tombol yang ada 2 tombol sisi kanan dan kiri bagian bawah tidak digunakan, karena hanya untuk simulasi penekanan angka 0-9 saja.
Listing code menggunakan Codevision 2.03 standar, nilai 7segmen dikendalikan variabel bertipe array.
/*****************************************************
This program was produced by the
CodeWizardAVR V2.03.0 Standard
Automatic Program Generator
© Copyright 1998-2010 Pavel Haiduc, HP InfoTech s.r.l.
http://www.hpinfotech.com
Project : Keypad Matriks untuk kendali 7segmen
Version : 1
Date : 03/06/2013
Author : Priyo Harjiyono
Company : https://anotherorion.com
Chip type : ATmega16
Program type : Application
AVR Core Clock frequency: 8,000000 MHz
Memory model : Small
External RAM size : 0
Data Stack size : 256
*****************************************************/
#include <mega16.h>
#include <delay.h>
unsigned char bil[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
void main (void)
{
DDRB=0x00;
DDRA=0x0f;
DDRC=0xff;
PORTC=0xff;
while(1)
{
PORTA=0x01; //baris 1
delay_ms(1);
if(PINB.0==1)
{
PORTC=bil[3];
}
else if(PINB.1==1)
{
PORTC=bil[2];
}
else if(PINB.2==1)
{
PORTC=bil[1];
}
PORTA=0x02; //baris 2
delay_ms(1);
if(PINB.0==1)
{
PORTC=bil[6];
}
else if(PINB.1==1)
{
PORTC=bil[5];
}
else if(PINB.2==1)
{
PORTC=bil[4];
}
PORTA=0x04; //baris 3
delay_ms(1);
if(PINB.0==1)
{
PORTC=bil[9];
}
else if(PINB.1==1)
{
PORTC=bil[8];
}
else if(PINB.2==1)
{
PORTC=bil[7];
}
PORTA=0x08; //baris 4
delay_ms(1);
if(PINB.0==1)
{
PORTC=0xff;
}
else if(PINB.1==1)
{
PORTC=bil[0];
}
else if(PINB.2==1)
{
PORTC=0xff;
}
}
}
Output seven segment menggunakan jenis common anoda, rangkaian proteus skematiknya dapat digambarkan sebagai berikut
ngak bisa download file nya pak… :'(
gak bisa download tapi bisa ngetik… alhamdulillah RUNNING……
mas mau follow bagaimana caranya, tho?
via FB atau networked blog aja mbak, klo gak isi manual di dashboard WP/BS e mbak sarah