Friday, January 23, 2015

COUNTER UP 4 DIGIT SevSeg Common kathoda Atmega8

Assalamualaikum sobat blogger...
Salam microver's...

Setelah lama vacum beberapa bulan karena kegiatan yang full version (hehehe seperti software aja kali :D) kembali lagi saya menulis catatan kecil saya di blog ini,,kali ini saya membuat sebuah Counter Up 4 digit menggunakan seven segment common kathode dimana yang telah saya kemas pada sebuah PCB yg saya beri nama PCB seven Segment Control versi 1.0 dan ini penampakan nya :




Dalam PCB ini saya menggunakan Transistor C1815 sebagai driver/saklar elektronik untuk men switch negatif supplay ke unit common seven segment,dimana saya menggunakan teknik SCANNING.Apa itu teknik scanning??  Pada prinsipnya scanning adalah teknik yang bergantian. Misalnya, kita ingin menampilkan 8 angka pada 7 segment, maka nyala lampu pada 7 segment dibuat bergantian sehingga jalur data dapat digunakan secara bersamaan oleh kedelapan 7 segment tersebut. Proses bergantian ini dilakukan sangat cepat sehingga mata manusia seoalah-olah akan melihat kedelapan 7 segment menyala.
Secara program scanning dapat dilakukan dengan cara polling maupun timer. Cara polling dilakukan dengan menjalankan program scanning secara terus menerus dimana program scanning biasanya diletakkan di program utama. Jika pada program utama terdapat terdapat program lain yang membutuhkan waktu pengerjaan yang lama, maka program untuk scanning akan teganggu. Sedangkan, cara timer lebih efektif dan efisien sebab mikrokontroler dapat mengerjakan program lain tanpa mengganggu scanning.
Sayamenggunakan PORTD sebagai output untuk data dari character digit,sedangkan PORTB sebagai output control basis Transistor.karena untuk menghemat pengkabelan,saya memberi nilai low/0 pada PINB.4 sebagai referensi ke negatif supplay,dan berikut listing program nya yang saya buat dengan CAVR :

#include <mega8.h>  // Memakai preposessor ATmega8
#include <delay.h>  // Memakai library delay
int; // mengalokasikan data sebagai integer
unsigned char satuan,puluhan,ratusan,ribuan,ulang; // mengalokasikan data digit
unsigned char data[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //data angka/character

void main(void)
{
PINB.4=0; //menjadikan PINB.0 sebagai pin negatif untuk common ke sevseg common kathoda

// Input/Output Ports initialization
// Port B 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
PORTB=0x00;
DDRB=0xFF;

// Port C initialization
// Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTC=0x00;
DDRC=0x00;

// Port D 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
PORTD=0x00;
DDRD=0xFF;

while (1)
      {
      for(ribuan=0;ribuan<=9;ribuan++)
        {
         for(ratusan=0;ratusan<=9;ratusan++)
         {
           for(puluhan=0;puluhan<=9;puluhan++)
           {
              for(satuan=0;satuan<=9;satuan++)
           {
                for(ulang=0;ulang<=250;ulang++)
           {
                  PORTD=data[satuan];
                    PORTB.0=1;PORTB.1=0;PORTB.2=0;PORTB.3=0;
                      delay_ms(1);
                        PORTD=data[puluhan];
                          PORTB.0=0;PORTB.1=1;PORTB.2=0;PORTB.3=0;
                            delay_ms(1);
                             PORTD=data[ratusan];
                              PORTB.0=0;PORTB.1=0;PORTB.2=1;PORTB.3=0;
                               delay_ms(1);
                                 PORTD=data[ribuan];
                                  PORTB.0=0;PORTB.1=0;PORTB.2=0;PORTB.3=1;
                                   delay_ms(1);
     }
    }
   }
  }
  }
 }
}



3 comments:

Unknown said...

mas kalo semua disegment diparalel apa bisa menggunakan sistem scanning ?? jadi hanya 1 port , jadi nanti kodingnya...

{
for(ribuan=0;ribuan<=9;ribuan++)
{
for(ratusan=0;ratusan<=9;ratusan++)
{
for(puluhan=0;puluhan<=9;puluhan++)
{
for(satuan=0;satuan<=9;satuan++)
{
for(ulang=0;ulang<=250;ulang++)
{
PORTB=data[satuan];
PORTB.0=1;PORTB.1=0;PORTB.2=0;PORTB.3=0;
delay_ms(1);
PORTB=data[puluhan];
PORTB.0=0;PORTB.1=1;PORTB.2=0;PORTB.3=0;
delay_ms(1);
PORTB=data[ratusan];
PORTB.0=0;PORTB.1=0;PORTB.2=1;PORTB.3=0;
delay_ms(1);
PORTB=data[ribuan];
PORTB.0=0;PORTB.1=0;PORTB.2=0;PORTB.3=1;
delay_ms(1);
}
}
}
}
}
}
}

. kira2 bisa mas ?? saya nggak paham logikanya,, tpi penasaran,, mohon bantuannya mas,, terimakasih

Reza said...

Kang saya minta skemanya & daftar komponen nya dong kang Khaizal, plis kang direspon, ini email saya muhamadreza.triputra@gmail.com TERIMAKASIH kang sebelumnya..semoga dibalas...

Unknown said...

Ada layout rangkaiannya om? :D

Post a Comment

Twitter Delicious Facebook Digg Stumbleupon Favorites More

 
Powered by KAMPUS UMT TANGERANG | Supported by Bebit Deartha - Ristu Sadewa | Kota Tangerang