Keypad Matrix untuk pengendali 7segmen

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.

BACA JUGA:   Membuat traffic light dengan codevision AVR (1)

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

keypad matrix kendali 7segment
gambar rangkaian keypad matrix kendali 7 segment

4 Comments

Add a Comment

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

(Note, links and most HTML attributes are not allowed in comments)

Situs ini menggunakan Akismet untuk mengurangi spam. Pelajari bagaimana data komentar Anda diproses.