Antarmuka Seven Segment menggunakan Metode Scanning

Antarmuka Seven Segment menggunakan Metode Scanning – Seven segmen (7 segmen) adalah komponen elektronika yang merepresentasikan angka numerik. 7 segmen sebenarnya  adalah led yang disusun sedemikian rupa membentuk angka dasar 8, yang bisa diatur segmennya sehingga dapat menampilkan digit 0 sampai 9. Seven segment terdapat 2 jenis, yaitu common anoda dan common katoda. Saat ini orang banyak menggunakan program 7segmen menggunakan metode scanning karena dapat menghemat penggunaan port dan sumber daya pada mikrokontroller. Sehingga mikrokontroller tidak dibebani dengan arus berlebih.  

skematik ekuivalent seven segment


Skematik Program

Skematik rangkaian yang terhubung dengan Mikrokontroller


Pada skematik proteus diatas 7 segment yang digunakan adalah 7 segment common catoda (cc) dan sebuah transistor NPN sebagai driver. artinya untuk menyalakan setiap segmen maka basis transistor yang terhubung ke PORTB.0, PORTB.1, dan PORTB.2 harus diberi logika high. Setelah itu tinggal mengatur segmen mana yang akan dinyalakan sehingga dapat merepresentasikan angka. Setiap digit Seven Segment terhubung pada PORTC. Baca juga : Pemograman LED menggunakan AVR ATmega 

Tabel kebenaran

tabel kebenaran common catode


Tabel dibawah adalah tabel untuk common chatode, bagi yang menggunakan common anode atau common catode dengan konfigurasi yang berbeda silahkan disesuaikan pada listing program dengan mengubah nilainya.


Listing program



Mikroontroller yang digunakan adalah Atmel AVR ATmega 16 dan Software yang digunakan adalah AVR studio 5. bisa juga menggunakan Codevision AVR.  Listing programnya adalah sebagai berikut :
Program Scanning biasa
#include           // Header Standard AVR
#define F_CPU 12000000UL    //  Set clock 12Mhz
#include h   //   Fungsi delay
void main (void)    // Program Utama
{
DDRB=0xff;       // Set PORTB sebagai OUTPUT
DDRC=0xff;      // Set PORTC sebagai OUTPUT
      
       while (1)// Prgram berulangan terus menerus
       {
              PORTB=0x01; // Set PINB.0 = 1, Mengaktifkan Segmen Satuan
              PORTC=0X4F; // Set PORTC = 0x4f, Menampilkan angka 3
              _delay_ms(1); // Tunda 1 Milidetik
              PORTB=0x00; // Mematikan semua segmen
             
              PORTB=0x02; // Set PINB.1 = 1, Mengaktifkan Segmen Puluhan
              PORTC=0X5b; // Set PORTC = 0x5b, Menampilkan angka 2
              _delay_ms(1); // Tunda 1 Milidetik
              PORTB=0x00; // Mematikan semua segmen
             
              PORTB=0x04; // Set PINB.1 = 1, Mengaktifkan Segmen Ratusan
              PORTC=0X508; // Set PORTC = 0x508, Menampilkan angka 1
              _delay_ms(1); // Tunda 1 Milidetik
              PORTB=0x00; // Mematikan semua segmen
       }
      
}
Pada listing Program diatas Kita akan memprogram 3 digit seven segment sehingga dapat menampilkan angka 123. Logika program ini sederhana, hanya dengan menyalakan Segmen satu persatu namun dengan input digit yang berbeda yaitu angka 1,2 dan 3. Proses menyalakan segmen  satu persatu berlangsing sangat cepat (hanya 1 Milidetik). Mata manusia tidak dapat menagkap perubahan seven segmen yang begitu cepat.
Program Scanning Dengan formula
#include           // Header Standard AVR
#define F_CPU 12000000UL    //  Set clock 12Mhz
#include h   //   Fungsi delay
unsigned char angka[0x3f,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f] // Variabel array untuk                                                    //                                                                   angka 0 sampai 9
void main (void)    // Program Utama
{
DDRB=0xff;       // Set PORTB sebagai OUTPUT
DDRC=0xff;      // Set PORTC sebagai OUTPUT
char a;        // membuat Variabel a dengan tipe data Char
int nilai;    // membuat Variabel nilai dengan tipe data integer
nilai=123;   
while (1)// Program berulangan terus menerus
{
       for (a=0; a<6 span="" style="color: maroon;"> a++)  // Perulangan 6 kali
              {
              PORTC=angka[nilai%10];  // Formula Ambil data Satuan  (menampilkan Satuan)
              PORTB=0x01;            //  Mengaktifkan digit satuan
              delay_ms(1);         //   Tunda 1 Milidetik
              PORTB=0x00;          //    matikan Segmen
                    
              PORTC=angka[nilai%10]; // Formula Ambil data Puluhan  (menampilkan Puluhan)
              PORTB=0x02;            //  Mengaktifkan digit puluhan
              delay_ms(1);         //   Tunda 1 Milidetik
              PORTB=0x00;          //    matikan Segmen
                    
              PORTC=angka[nilai%10];  // Formula Ambil data Ratusan (menampilkan Ratusan)
              PORTB=0x04;            //  Mengaktifkan digit ratusan
              delay_ms(1);         //   Tunda 1 Milidetik
              PORTB=0x00;          //    matikan Segmen
                    
              }
       }
      
}
Program diatas lebih mudah dari program pertama karena untuk mengubah tampilan  segment hanya dengan mengubah variabel �Nilai�. Pada Program diatas Nilai di set pada angka 123, sehingga segmen akan menampilkan angka 123. Namun jika nilai diganti angka 400 misalkan, maka digit seven segment akan langsung menyesuaikan.
Penutup
Untuk dapat memprogram sebuah mikrokontroller diperlukan pengetahuan dasar tentang karakteristik komponen elektronika dan dasar pemograman. 2 hal ini adalah �item Wajib� bagi seorang programmer untuk merancang sebuah sistem mikrokontroller.  Selain itu latihan terus menerus juga sangat penting untuk meningkatkan logika program kita. Ingat ! Pemograman itu gampang, Logikanya yang susah !. Dengan banyak latihan maka skill logika program kita akan semakin terasah. Semoga bermanfaat !

Leave a Comment