ANTARMUKA MIKROKONTROLER KEYPAD DENGAN LED SEBAGAI OUPUTAN
Program kombinasi keypad dan LED
1 Hubungkan miko ke keypad sebagai inputan dan 8 buah LED sebagai Outputan:
a. Gambarlah rangkaiannya.
b. Buatlah program untu, mengeluarkan output LED jika tombol di tekan.
Keypad
|
Konidi LED
|
1.
|
LED 0-3 nyala,delay, LED 4 – 7 nyala, delay, LED 0- 3 nyala, delay, dst.
|
2.
|
LED 0, 2, 4, 6 nyala, delay, LED 1, 3, 5,7 nyala, delay, LED 0,2,3,4,6
|
3.
|
LED bergerak dari tengah ke pinggir, ke tengah lagi.
|
4.
|
LED nyala berjalan dari kiri ke kanan, dari kanan ke kiri, dst.
|
5.
|
LED nyala berjalan dari kanan ke kiri, dari kiri ke kanan, dst.
|
=======================================================================
TUGAS BESAR
ANTARMUKA
MIKROKONTROLER
KEYPAD DENGAN LED SEBAGAI OUPUTAN
Diajukan
kepada
Universitas
Negeri Malang
untuk
memenuhi tugas besar matakuliah
Mikroproseesor
dan Teknik Antarmuka
Oleh :
Bustanul Arifin ( 100531302369 )
Habieb Nur Atmojo ( 100531302358 )
Bagus Jefri Dwinanda ( 100531302357 )
UNIVERSITAS
NEGERI MALANG
FAKULTAS
TEKNIK JURUSAN TEKNIK ELEKTRO
PROGRAM
STUDI D3 TEKNIK ELEKTRO
DESEMBER
2011
TUGAS BESAR
ANTARMUKA
MIKROKONTROLER
KEYPAD DENGAN LED SEBAGAI OUPUTAN
1.
TUJUAN
1. Mengetahui
dan memahami cara mengantarmukakan mikrokontroler dengan rangkaian LED.
2. Mengetahui
dan memahami bagaimana memrogram mikrokontroler untuk menyalakan LED.
3. Mengetahui
dan memahami cara mengantarmukakan mikrokontroler dengan keypad.
4. Mengetahui
dan memahami bagaimana memprogram mikrokontroler untuk membaca masukan dari
keypad.
2.
DASAR
TEORI
2.1 LED
Sebuah LED
(Light Emitting Diode) adalah sebuah sumber cahaya yang terbuat dari
semikonduktor. Biasanya LED digunakan sebagai lampu indikator dalam beberapa
piranti, dan mulai banyak digunakan sebagai penerangan/lampu. Gambar 1
memperlihatkan bentuk fisik LED dan simbol rangkaiannya.
(a) LED warna merah, hijau
dan biru
(b) Simbol elektronik
Gambar 2.1 LED
Untuk menyalakan
sebuah LED perlu rangkaian tambahan yang dapat dilihat dalam Gambar 2.2.
Rangkaian tersebut berupa sebuah transistor yang difungsikan sebagai saklar dan
dua buah resistor untuk pembatas arus. Dalam modul I/O yang dipakai dalam
praktikum, kedelapan rangkaian LED tersebut dihubungkan ke sebuah soket jumper
bernama OUTPUT.
Gambar 2.2
Rangkaian LED
2.2 Keypad
Keypad
merupakan tombol push button yang disusun sebagai baris dan kolom sehingga
membentuk matriks. Keypad banyak digunakan sebagai piranti masukan dalam
piranti elektronik. Gambar 5.1 memperlihatkan bentuk fisik keypad. Keypad ini
memiliki 16 tombol yaitu 0,1,2,3,4,5,6,7,8,9,A,B,C,D,* dan #.
Gambar 5.1 Keypad 4x4
Dalam gambar 5.2
keypad dihubungkan ke PORTB mikrokontroler dengan posisi baris (b1-b4)
terhubung ke PORTB.0-PORTB.3 dan posisi kolom (c1-c4) terhubung ke
PORTB.4-PORTB.7. Sedangkan untuk mengetahui tombol apa yang ditekan oleh user,
8 buah LED yang terdapat dalam MODUL I/O dihubungkan ke PORTC.
Gambar 5.2 Rangkaian
keypad dan LED
3.
ALAT
DAN BAHAN YANG DIGUNAKAN
- 1 set
Personal Computer/Laptop yang sudah berisi program Code Vision dan Extreme Burner
- 1 buah catu
daya DC +5V
- 1 buah
multimeter
- 1 buah ISP
Downloader AVR
- 1 buah
sistem minimum AVR
- 1 buah I/O
- 1 buah
kabel printer USB
- 1 buah
kabel pita hitam
4.
PROSEDUR
- Rangkailah
peralatan yang diperlukan seperti dalam Gambar 5.3. Hubungkan soket jumper
PORTB pada minimum system dengan soket jumper KEYPAD dan soket jumper
PORTC pada minimum system dengan soket jumper OUTPUT pada I/O.
Gambar
5.3 Rangkaian antarmuka mikrokontroler
- Buka
program Code Vision AVR
- Buatlah
project baru dengan inisialisasi PORTB.0-PORTB.3 sebagai output dengan
kondisi awal berlogika HIGH dan PORTB.4-PORTB.7 sebagai input dengan
pull-up (DDRB = 0FH dan PORTB=FFH), serta PORTC sebagai output dan kondisi
awal LOW (DDRC = FFH dan PORTC=00H), sehingga pada program bagian
inisialisasi PORTB dan PORTC terlihat sebagai berikut:
PORTB=0xff;
DDRB=0x0f; //portb sebagai input dan output,
0b00001111
PORTC=0x00;
DDRC=0xff; // portc sebagai output
- Deklarasikan
fungsi keypad() dengan bilangan yang dikembalikan ke program utama sebagai
bilangan integer.
unsigned char keypad();
- Tuliskan
script berikut dalam program utama:
while (1)
{
PORTC=keypad(); //menampilkan hasil yang dikembalikan oleh
fungsi ke LED
}
- Tambahkan
fungsi berikut di bawah program utama:
unsigned char keypad()
{
PORTB = 0b11111110; //aktifkan baris1 (memberi
logika 0 ke baris1)
delay_ms(100);
if(PINB.7==0) return (10);
if(PINB.6==0) return (1);
if(PINB.5==0) return (2);
if(PINB.4==0) return (3);
//========================
PORTB = 0b11111101; //aktifkan baris2
delay_ms(100);
if(PINB.7==0) return (11);
if(PINB.6==0) return (6);
if(PINB.5==0) return (5);
if(PINB.4==0) return (4);
//========================
PORTB = 0b11111011; //aktifkan baris3
delay_ms(100);
if(PINB.7==0) return (12);
if(PINB.6==0) return (9);
if(PINB.5==0) return (8);
if(PINB.4==0) return (7);
//========================
PORTB = 0b11110111; //aktifkan baris4
delay_ms(100);
if(PINB.7==0) return (13);
if(PINB.6==0) return (15);
if(PINB.5==0) return (0);
if(PINB.4==0) return (14);
}
5.
Data hasil
percobaan
Program untuk menampilkan LED
/*****************************************************
This program was produced by the
CodeWizardAVR V2.04.6 Evaluation
Automatic Program Generator
© Copyright 1998-2010 Pavel Haiduc, HP InfoTech s.r.l.
http://www.hpinfotech.com
Project :
Version :
Date :
21/11/2011
Author : Freeware,
for evaluation and non-commercial use only
Company :
Comments:
Chip type
: ATmega8535
Program type
: Application
AVR Core Clock frequency
: 8,000000 MHz
Memory model
: Small
External RAM size
: 0
Data Stack size
: 128
*****************************************************/
#include <mega8535.h>
#include <delay.h>
// Declare your global variables here
unsigned char key, keypad();
void main(void)
{
// Declare your local variables here
// Input/Output Ports initialization
// Port A initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In
Func1=Out Func0=Out
// State7=T State6=T State5=T State4=T State3=T State2=T
State1=0 State0=0
PORTA=0x00;
DDRA=0x00;
// Port B initialization
// Func7=In Func6=In Func5=In Func4=In Func3=Out
Func2=Out Func1=Out Func0=Out
// State7=P State6=P State5=P State4=P State3=1 State2=1
State1=1 State0=1
PORTB=0xFF;
DDRB=0x0F;
// Port C initialization
// Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out
Func2=Out Func1=Out Func0=Out
// State7=0 State6=0 State5=0 State4=0 State3=0 State2=0
State1=0 State0=0
PORTC=0x00;
DDRC=0xFF;
// Port D initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In
Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T
State1=T State0=T
PORTD=0x00;
DDRD=0x00;
// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: Timer 0 Stopped
// Mode: Normal top=FFh
// OC0 output: Disconnected
TCCR0=0x00;
TCNT0=0x00;
OCR0=0x00;
// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: Timer1 Stopped
// Mode: Normal top=FFFFh
// OC1A output: Discon.
// OC1B output: Discon.
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer1 Overflow Interrupt: Off
// Input Capture Interrupt: Off
// Compare A Match Interrupt: Off
// Compare B Match Interrupt: Off
TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;
// Timer/Counter 2 initialization
// Clock source: System Clock
// Clock value: Timer2 Stopped
// Mode: Normal top=FFh
// OC2 output: Disconnected
ASSR=0x00;
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;
// External Interrupt(s) initialization
// INT0: Off
// INT1: Off
// INT2: Off
MCUCR=0x00;
MCUCSR=0x00;
// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x00;
// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1:
Off
ACSR=0x80;
SFIOR=0x00;
while (1)
{
//
Place your code here
PORTB=key; //menampilkan hasil
yang dikembalikan oleh fungsi ke LED
key=keypad();
while
(key == 1)
{
PORTC=0x0f;
delay_ms(1000);
PORTC=0xf0;
delay_ms(1000);
key=keypad ();
} ;
while
(key == 2)
{
PORTC=0b01010101;
delay_ms(1000);
PORTC=0b10101010;
delay_ms(1000);
PORTC=0b01010101;
delay_ms(1000);
PORTC=0b10101010;
delay_ms(1000);
key=keypad ();
} ;
while
(key == 3)
{
PORTC=0b00011000;
delay_ms(1000);
PORTC=0b00100100;
delay_ms(1000);
PORTC=0b01000010;
delay_ms(1000);
PORTC=0b10000001;
delay_ms(1000);
PORTC=0b01000010;
delay_ms(1000);
PORTC=0b00100100;
delay_ms(1000);
PORTC=0b00011000;
delay_ms(1000);
key=keypad ();
} ;
while
(key == 4)
{
PORTC=0b00000001;
delay_ms(1000);
PORTC=0b00000010;
delay_ms(1000);
PORTC=0b00000100;
delay_ms(1000);
PORTC=0b00001000;
delay_ms(1000);
PORTC=0b00010000;
delay_ms(1000);
PORTC=0b00100000;
delay_ms(1000);
PORTC=0b01000000;
delay_ms(1000);
PORTC=0b10000000;
delay_ms(1000);
PORTC=0b01000000;
delay_ms(1000);
PORTC=0b00100000;
delay_ms(1000);
PORTC=0b00010000;
delay_ms(1000);
PORTC=0b00001000;
delay_ms(1000);
PORTC=0b00000100;
delay_ms(1000);
PORTC=0b00000010;
delay_ms(1000);
PORTC=0b00000001;
delay_ms(1000);
key=keypad ();
}
;
while
(key == 5)
{
PORTC=0b10000000;
delay_ms(1000);
PORTC=0b01000000;
delay_ms(1000);
PORTC=0b00100000;
delay_ms(1000);
PORTC=0b00010000;
delay_ms(1000);
PORTC=0b00001000;
delay_ms(1000);
PORTC=0b00000100;
delay_ms(1000);
PORTC=0b00000010;
delay_ms(1000);
PORTC=0b00000001;
delay_ms(1000);
PORTC=0b00000010;
delay_ms(1000);
PORTC=0b00000100;
delay_ms(1000);
PORTC=0b00001000;
delay_ms(1000);
PORTC=0b00010000;
delay_ms(1000);
PORTC=0b00100000;
delay_ms(1000);
PORTC=0b01000000;
delay_ms(1000);
key=keypad ();
} ;
}
}
unsigned char keypad()
{
PORTB =
0b11111110; //aktifkan
baris1 (memberi logika 0 ke baris1)
delay_ms(100);
if(PINB.7==0)
return (10); //untuk keypad no A
if(PINB.6==0)
return (3); //untuk keypad no 3
if(PINB.5==0)
return (2); //untuk keypad no 2
if(PINB.4==0)
return (1); //untuk keypad no 1
//========================
PORTB =
0b11111101; //aktifkan
baris2
delay_ms(100);
if(PINB.7==0)
return (11); //untuk keypad no B
if(PINB.6==0)
return (6); //untuk keypad no 6
if(PINB.5==0)
return (5); //untuk keypad no 5
if(PINB.4==0)
return (4); //untuk keypad no 4
//========================
PORTB =
0b11111011; //aktifkan
baris3
delay_ms(100);
if(PINB.7==0)
return (12); //untuk keypad no C
if(PINB.6==0)
return (9); //untuk keypad no 9
if(PINB.5==0) return (8); //untuk keypad no 8
if(PINB.4==0)
return (7); //untuk keypad no 7
//========================
PORTB =
0b11110111; //aktifkan
baris4
delay_ms(100);
if(PINB.7==0)
return (13); //untuk keypad no D
if(PINB.6==0)
return (15); //untuk keypad no #
if(PINB.5==0)
return (0); //untuk keypad no 0
if(PINB.4==0)
return (14); //untuk keypad no *
}
6.
Tabel percobaan
No
|
Tombol keypad
yang ditekan
|
Tampilan LED
|
1.
|
1
|
00001111
11110000
|
2.
|
2
|
01010101
10101010
|
3.
|
3
|
00011000
00100100
01000010
10000001
01000010
00100100
00011000
|
4.
|
4
|
00000001
00000010
00000100
00001000
00010000
00100000
01000000
10000000
01000000
00100000
00010000
00001000
00000100
00000010
00000001
|
5.
|
5
|
10000000
01000000
00100000
00010000
00001000
00000100
00000010
00000001
00000010
00000100
00001000
00010000
00100000
01000000
10000000
|
7.
Gambar rangakaian
Gambar : rangakaian Keypad dengan outputan LED
Gambar rangkaian
Komentar
Posting Komentar