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. 1 set Personal Computer/Laptop yang sudah berisi program Code Vision dan Extreme Burner
  2. 1 buah catu daya DC +5V
  3. 1 buah multimeter
  4. 1 buah ISP Downloader AVR
  5. 1 buah sistem minimum AVR
  6. 1 buah I/O
  7. 1 buah kabel printer USB
  8. 1 buah kabel pita hitam





4.      PROSEDUR
  1. 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

  1. Buka program Code Vision AVR

  1. 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

  1. Deklarasikan fungsi keypad() dengan bilangan yang dikembalikan ke program utama sebagai bilangan integer.

unsigned char keypad();

  1. Tuliskan script berikut dalam program utama:


while (1)
{   
     PORTC=keypad();    //menampilkan hasil yang dikembalikan oleh fungsi ke LED
}

  1. 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

Postingan Populer