Halaman

Kamis, 02 Mei 2013

Aplikasi Antarmuka Mikrokontroler Keypad dan Seven Segmen pada Counter Up dan Counter Down


Dewasa ini pemanfaatan mikrokontroler sudah menjadi hal yang tidak asing lagi, banyak peralatan yang telah diciptakan berbasis mikrokontroler. Misalnya stopwatch, dalam stopwatch tersebut memanfaatkan aplikasi antarmuka mikrokontroler dengan keypad dan seven segment. Dalam project akhir ini penulis mencoba merancang sebuah alat sejenis stopwatch, yaitu mengantarmukakan mikrokontroler ATmega 8535 dengan keypad dan seven segmen. Dalam miniature ini menggunakan 2 buah seven segmen dan sebuah keypad. Yang diprogram untuk penghitung waktu seperti stopwatch.

PERANCANGAN

Melakukan counter up dan counter down sesuai permintaan

 

Angka yang di tekan muncul pada seven segment

 

Tekan keypad
 
Blog diagram cara kerja penghitung waktu






Blog diagram rancangan penghitung waktu

Mengantarmukakan mikrokontroler dengan keypad dan seven segmen
 

Mendownload program ke dalam  mikrokontroler

 

Membuat listing program counter up dan counter down
 

Membuat  miniature rangkaian output

 

Membuat minimum system ATmega8535
 
                                                                       






Gambar 5. Blog diagram rancangan penghitung waktu
Penjelasan blog diagram
1.      Membuat rangkaian minimum system dari ATmega 8535 yaitu merupakan mikrokontroler 8 bit dengan kapasitas ROM 4KB dan RAM 128 bytes, yang nantinya dihubungkan dengan rangkaian output, yaitu rangkaian yang mencakup seven segmen,  rangkaian minimum system digunakan sebagai pengontrolnya, dan sebagai rangkaian aplikasi tertentu berdasarkan program yang dibuat.  dibawah ini merupakan gambar rangkaian dalam pcb minimum system dan simulasi dari rangkaian keypad dan seven segment

Gambar . Simulasi dari rangkaian penghitung waktu
2.      Membuat listing program traffic light,
//Library yang digunakan
#include <mega8535.h>
#include <delay.h>
//deklarasi array untuk menampilkan karakter pada seven sgmen
unsigned char bil[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
//deklarasi untuk keypad
unsigned char keypad();
//fungsi utama
void main(void){
//variabel lokal
int satu ;
int dua ;
int one ;
int two ;
int t ;
int langkah=1 ;
 //setting port pada mikrokontroler
    PORTA=0x00;
DDRA=0xFF;

PORTB=0x0f;
DDRB=0xf0;

PORTC=0x00;
DDRC=0xff;

PORTD=0x00;
DDRD=0x00;
    //program utama
while (1)
      {      
      if (langkah==1){
      one=keypad();
      langkah=2;
}
      if (langkah==2){
      two=keypad();
}
        if (one>50){ goto x;
        }
        else  { goto y;
        }
      // Place your code here
     

//untuk counter up
 x:
      satu=0;
      dua=0;
for (satu=0;satu<10;satu++)
{
for (dua=0;dua<10;dua++)
{
     for (t=1;t<100;t++) 
     if(satu==9&dua==9)
    
     goto x;
     else  
        {
                PORTD.7=1;
                PORTD.6=0;
                PORTA=bil[dua];
                delay_ms(1); 
               
                PORTD.7=0;
                PORTD.6=1;
                PORTA=bil[satu];
                delay_ms(1);      
            

//untuk counter down
y:
for (satu=9;satu>=0;satu--)
{
for (dua=9;dua>0;dua--)
{            
         for (t=1;t<100;t++)
         if(satu==9&dua==9)
         goto x;
         else 
        {
                PORTD.7=1;
                PORTD.6=0;
                PORTA=bil[dua];
                delay_ms(1); 
               
                PORTD.7=0;
                PORTD.6=1;
                PORTA=bil[satu];
                delay_ms(1);             
                }
                }
               }    
                 }
                   }

}}}
//deklarasi untuk keypad
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 (3); if(PINB.5==0) return (2); if(PINB.4==0) return (1);
//========================
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);
}
Berdasarkan program diatas dapat diketahui bahwa:
PORT pada ATMEGA8535 yang I gunakan yaitu PORT B untuk inisialisasi pada keypad. keypad tidak di buat rangkaian output karena port pada keypad akan langsung di letakkan pada PORT B pada minimum sistemnya.
PORT D dan PORT A pada ATMEGA8535 di gunakan untuk inisialisasi seven segment. PORTA sebagai output untuk data seven segment sedangkan PORTD sebagai output dan input pada seven segment untuk control seven segment digit 1 dan 2.


3.      Setelah selesai listing program langkah selanjutnya adalah mendownload program kedalam mikrokontroler ATmega 8535 sehingga dapat mengantarmukakan seven segmen dan keypad.
Setelah rangkaian diberi sumber tegangan DC sebesar 5V maka penghitung waktu dapat berjalan sesuai dengan perintah program.

Tidak ada komentar:

Posting Komentar