Rabu, 15 Desember 2010

ANTARMUKA MIKROKONTROLER DENGAN SEVEN SEGMEN


1.      TUJUAN
1.                  Mengetahui dan memahami cara mengantarmukakan mikrokontroler dengan rangkaian penampil seven segment.
2.                  Mengetahui dan memahami bagaimana memprogram mikrokontroler untuk menampilkan karakter ke penampil seven segment.

2.      DASAR TEORI
Penampil seven segment adalah sebuah piranti penampil untuk menampilkan angka desimal. Penampil seven segment banyak digunakan dalam jam digital, meter elektronik, dan piranti elektronik yang lain. Gambar 4.1 memperlihatkan bentuk fisik dan layout dasar penampil seven segment. Penampil seven segment terdiri atas 8 LED yang disusun seperti dalam Gambar 4.1(b). Setiap LED diidentifikasi sebagai huruf a, b, c, d, e, f, g, yang dimulai dari huruf a di sebelah atas. Di sebelah kanan terdapat satu LED tambahan yang digunakan sebagai koma (dp).


(a)   Penampil seven segment


Segment designations for a seven-segment digit display.

(b) Layout LED

Gambar 4.1 Seven segment

Untuk menampilkan sebuah karakter, minimal 2 LED harus dinyalakan. Tabel 4.1 memperlihatkan kode heksadesimal untuk menampilkan angka 0 sampai 9.
Dalam modul I/O yang dipakai dalam praktikum, seven segment yang digunakan ada 2 buah, semuanya bertipe common anoda.  Kedua seven segment tersebut dimultipleks sehingga data diperoleh dari satu kaki (D0-D7), sedangkan untuk menyalakannya digunakan kaki kontrol yang berbeda (DO1 dan DO2). Rangkaian lengkap seven segment dapat dilihat dalam Gambar 4.2.

Tabel 4.1 Kode heksadesimal untuk angka 0-9
Digit
gfedcba
abcdefg
a
b
c
d
e
f
g
0
0x3F
0x7E
on
on
on
on
on
on
off
1
0x06
0x30
off
on
on
off
off
off
off
2
0x5B
0x6D
on
on
off
on
on
off
on
3
0x4F
0x79
on
on
on
on
off
off
on
4
0x66
0x33
off
on
on
off
off
on
on
5
0x6D
0x5B
on
off
on
on
off
on
on
6
0x7D
0x5F
on
off
on
on
on
on
on
7
0x07
0x70
on
on
on
off
off
off
off
8
0x7F
0x7F
on
on
on
on
on
on
on
9
0x6F
0x7B
on
on
on
on
off
on
on


Gambar 4.2 Rangkaian penampil seven segment


3.      ALAT DAN BAHAN YANG DIGUNAKAN
1.                  1 set Personal Computer/Laptop yang sudah berisi program Code Vision dan Khazama
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.                  2 buah kabel pita hitam




4.        PROSEDUR

1.      Rangkailah peralatan yang diperlukan seperti dalam Gambar 2.3. Hubungkan soket jumper PORTB pada minimum system dengan soket jumper DATA7S pada I/O dan soket jumper PORTC pada minimum system dengan soket jumper I/P S KEY pada I/O.

Gambar 4.3 Rangkaian antarmuka mikrokontroler

2.      Buka program Code Vision AVR
3.      Buatlah project baru dengan inisialisasi PORTB sebagai output (DDRB = FFH) dan output value = 0 (PORTB=00H), dan  PORTC.0-PORTC.3 sebagai input, PORTC.4-PORTC.7 sebagai output (DDRC = F0H) dan (PORTC=F0H) sehingga pada program bagian inisialisasi PORTB dan PORTC terlihat sebagai berikut:

PORTB=0x00;
DDRB=0xff;      //portb sebagai output, 0b11111111

PORTC=0xf0;
DDRC=0xf0;   // portc sebagai input dan output, 0b11110000





4.      Tuliskan dalam program utama sebagai berikut:

PROGRAM SEGMEN1
//Menampilkan angka 5 pada seven segmen sebelah kanan.
while (1)
      {
      // Place your code here
      PORTC.7=1;
      PORTC.6=0;         //AKTIFKAN SEVEN SEGMEN KANAN
      PORTB=0x6d;     // DATA ANGKA 5
      delay_ms(100);
      }

5.      Amati nyala seven segment.
6.      Ulangi langkah 3-5 untuk program berikut:

PROGRAM SEGMEN2
//Menampilkan angka 2 pada seven segmen sebelah kiri.
while (1)
                        {
                        // Place your code here
                        PORTC.7=0;   // AKTIFKAN SEVEN SEGMEN KIRI
                        PORTC.6=1;
                        PORTB=0x5b // DATA ANGKA 2 
                        delay_ms(100)
                        }

7.      Gabungkan kedua program di atas dan lihat nyala seven segmen.




8.      Ulangi langkah 3-5 untuk program berikut:

PROGRAM SEGMEN3
//Membuat counter 0-9 di segmen sebelah kanan

// Declare your global variables here
unsigned char bil[10] = {0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f};

// Declare your local variables here
int kanan;

while (1)
     {
     // Place your code here
     kanan=0;
     for (kanan=0;kanan<10;kanan++)
        {  
         PORTC.7=1;
         PORTC.6=0;  
         PORTB=bil[kanan];
         delay_ms(1000);
         }
     }

9.      Buat program untuk menampilkan 00-99 di kedua seven segmen.







5.                  DATA HASIL PERCOBAAN

v  Program Segmen1

 //PROGRAM SEGMEN1
//Menampilkan angka 5 pada seven segmen sebelah kanan.
while (1)
{
// Place your code here
PORTC.7=1;
PORTC.6=0;     //AKTIFKAN SEVEN SEGMEN KANAN
PORTB=0x6d;          // DATA ANGKA 5
delay_ms(100);
}

 
     













Nyala Seven Segment








v  Program Segmen2

PROGRAM SEGMEN2
//Menampilkan angka 2 pada seven segmen sebelah kiri.
while (1)
{
// Place your code here
PORTC.7=0; // AKTIFKAN SEVEN SEGMEN KIRI
PORTC.6=1;
PORTB=0x5b // DATA ANGKA 2 
delay_ms(100)
}


 
 




                                                                                                                    



Nyala Seven Segment







v  Program Segmen1 dan Segmen2

while (1)
      {
      // Place your code here
      PORTC.7=1;
      PORTC.6=0;     //AKTIFKAN SEVEN SEGMEN KANAN
      PORTB=0x6d;          // DATA ANGKA 5
      delay_ms(100);    // Ada delay waktu 100ms
            PORTC.7 =0;   // AKTIFKAN SEVEN SEGMEN KIRI
      PORTC.6= 1;   
      PORTB =0X5b  // DATA ANGKA 2
      delay_ms (100);   //      Ada delay waktu 100 ms
   }
 
 















Nyala Seven Segment

Setelah jeda waktu 100ms, maka tampilan selanjutnya adalah sebagai berikut :
 
Tampilan awal
 





v  Program Segmen3

//Membuat counter 0-9 di segmen sebelah kanan

// Declare your global variables here
unsigned char bil[10] = {0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f};

// Declare your local variables here
int kanan;

while (1)
{
// Place your code here
kanan=0;
for (kanan=0;kanan<10;kanan++)
{  
PORTC.7=1;
PORTC.6=0;  
PORTB=bil[kanan];
delay_ms(1000);
}
}


 
 
























Nyala Seven Segment

-          Nyala seven segment dimulai dari 0 sampai 9 dengan jeda waktu 100ms pada seven segment sebelah kanan

1.                                                                            2.
 








      3.                                                                         4.
 








5.                                                                         6.
 








7.                                                                         8.       
 








9.                                                                        10.   
 






v  Program untuk menampilkan 00-99 di kedua seven segment


while (1)
     {
     int kanan;
     int kiri; 
     int u;
     // Place your code here
     kiri=0;
     kanan=0;  
     u=0;     
     for (kiri=0;kiri<10;kiri++)
        {
        for (kanan=0;kanan<10;kanan++)
        {                   
         for (u=0;u<10;u++)
         {
         PORTC.7=0;
         PORTC.6=1;  
         PORTB=bil[kiri];
         delay_ms(10);
           
         PORTC.7=1;
         PORTC.6=0;  
         PORTB=bil[kanan];
         delay_ms(10);
        
         } 
         }
         }
     }

 
 































6.                  PEMBAHASAN

1.                              Buatlah kesimpulan hasil masing-masing program.

Program Segmen1

-          Pada program segmen1, PORTC.7 sebagai DO2( seven segmen kiri) diberi logika 1 untuk menonaktifkan seven segment sebelah kiri. PORTC.6 sebagai DO1( seven segmen sebelah kanan) diberi logika 0 untuk mengaktifkan seven segment sebelah kanan untuk mengeluarkan output dari input dari mikrokontroler.PORTB yang sudah diprogram sebagai  output. PORTB=0x6d; // dimaksudkan memunculkan angka 5 pada seven segmen sebelah kanan.
Untuk memunculkan angka 5, maka yang akan diaktifkan adalah bagian a,f,g,c,d.
dp
g
f
e
d
c
b
a
0
1
1
0
1
1
0
1

-          Penulisan dalam PORTB dapat dituliskan dalam bentuk biner: PORTB = 0b01101101 ; atau dalam bentuk heksadesimal adalah PORTB =0x6d ;. Fungsi delay dalam program ini tidak ada pengaruh karena hanya memunculkan satu karakter angka 5 dalam seven segmen

Program Segmen2

-          Pada program segmen2, PORTC.7 dilogikankan nol untuk mengaktifkan seven segment sebelah kiri. PORTC.6 dilogikakan satu untuk menonaktifkan seven segment sebelah kanan. Data akan ditunjukkan pada seven segment sebelah kiri akan menunjukkan angka 2. PORTB=0x5b; // dimaksudkan memunculkan angka 2 pada seven segmen sebelah kiri.
Untuk memunculkan angka 2, maka yang akan diaktifkan adalah bagian a,b,g,e,d.
dp
g
F
e
D
C
b
a
0
1
0
1
1
0
1
1

-          Penulisan  dalam bentuk desimal adalah PORTB = 0b01011011 ; apabila ditulis dalam bentuk heksa desimal adalah PORTB = 0x5b ; fungsi delay dalam program ini tidak ada pengaruh karena hanya memunculkan satu karakter angka 2 dalam seven segmen.   

Program Segmen1 dan Segmen2

-          Pada program, PORTC.7 sebagai DO2 (seven segment kiri) dilogikakan 1 untuk menonaktifkan seven segment sebelah kiri. PORTC.6 sebagai DO1( seven segmen sebelah kanan) dilogikakan 0 untuk mengaktifkan seven segment sebelah kanan untuk mengeluarkan output dari input dari mikrokontroler.PORTB yang sudah deprogram sebagai output. PORTB=0x6d; // dimaksudkan memunculkan angka 5 pada seven segmen sebelah kanan.
-          Setelah delay selama 100 ms maka akan dijalankan perintah untuk memunculkan angka 2 pada seven segment. Selanjutnya, dengan mengeset PORTC.7 dengan logika nol untuk mengaktifkan seven segmen sebelah kiri. Dan mengeset PORTC.6 dengan logika satu untuk menonaktifkan seven segment sebelah kanan. Dan memberi perintah pada PORTB. PORTB=0x5b; // dimaksudkan memunculkan angka 2 pada seven segmen sebelah kiri.
-          Maka program akan muncul angka 5 di seven segmen  sebelah kanan, setelah jeda 100ms maka akan muncul angka 2 di seven segment sebelah kiri.

Program Segmen3

-          Pada program segmen3, program counter dijalankan pada seven segment sebelah kanan dengan mengeset PORTC.6=0. Kemudian PORTB= bil[kanan]; bilangan yang didefinisikan yang memunculkan angka 0 sampai 9 akan dilakukan counter 0-9 dengan jeda waktu 100 ms. Memunculkan angka 0-9 secara urut dengan jeda waktu 100 ms.
-          Pada program segmen3, dalam program didefinisikan variabel global “unsigned char bil[10] = {0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f};” dan mendefinisikan deklarasi local bertipe integer dengan nama “kanan”. Dengan menggunakan pernyataan for yang akan melakukan perulangan berapa kali sesuai yang diinginkan. Yang diberi nilai awal ”kanan” adalah 0 sampai nilai akhir “kanan” kurang dari 10. Dan melakukan penambahan dari nilai awal.

2.                  Instruksi yang digunakan untuk mengeluarkan data ke seven segmen adalah :
PORTC.7 dan PORTC.6 yang di set 1 atau 0

3.                  Instruksi yang digunakan untuk mengontrol nyala seven segmen adalah
Inputan pada PORTB = nilai
Misalnya : PORTB = 0x5b
4.                  Tuliskan program untuk menampilkan counter 00-99.
while (1)
     {
     int kanan;
     int kiri; 
     int u;
     // Place your code here
     kiri=0;
     kanan=0;  
     u=0;     
     for (kiri=0;kiri<10;kiri++)
        {
        for (kanan=0;kanan<10;kanan++)
        {                   
         for (u=0;u<10;u++)
         {
         PORTC.7=0;
         PORTC.6=1;  
         PORTB=bil[kiri];
         delay_ms(10);
           
         PORTC.7=1;
         PORTC.6=0;  
         PORTB=bil[kanan];
         delay_ms(10);
        
         } 
         }
         }
     }

 
 





























7.                  KESIMPULAN

1.                  Cara mengantarmukakan mikrokontroler dengan rangkaian penampil seven segment adalah sebagai berikut :
a.       Menyusun program untuk mengantarmukakan rangkaian penampil seven segment dengan program Code Vision AVR . Membuat project baru dengan inisialisasi PORT-PORT yang akan digunakan sesuai dengan tampilan seven segment yang diinginkan.
b.      Program yang sudah dibuat ditransfer dari computer ke dalam mikrokontroler dengan menggunakan ISP downloader.
c.       Jika program yang dibuat sudah benar, maka seven segment akan menyala sesuai dengan yang diinginkan.
2.                  Cara memprogram mikrokontroler untuk menampilkan karakter ke penampil seven segment adalah sebagai berikut :
a.       Inisialisasi PORT yang akan digunakan.
Inisialisasinya adalah sebagai berikut :
PORTB=0x00;
DDRB=0xff;      //portb sebagai output, 0b11111111

PORTC=0xf0;
DDRC=0xf0;   // portc sebagai input dan output, 0b11110000
  1. Untuk mengaktifkan segment sebelah kanan maka dalam main program harus diberi script :
PORTC.7=1;
Sebaliknya untuk mengaktifkan segment sebelah kiri maka dalam main program harus diberi script :
PORTC.7=0
  1. Instruksi yang digunakan untuk mengeluarkan data ke seven segmen adalah :
PORTC.7 dan PORTC.6 yang di set 1 atau 0

  1. Instruksi yang digunakan untuk mengontrol nyala seven segmen adalah
Inputan pada PORTB = nilai
Misalnya : PORTB = 0x5b
DAFTAR PUSTAKA

Modul 4.2010. Antarmuka Mikrokontroler Dengan Seven Segment.Malang:Universitas Negeri Malang, Jurusan Teknik Elektro.

2 komentar:

bayu pipit sugiri mengatakan...

,

alexanderpradipta mengatakan...

hmm lumayan

Posting Komentar