Friday, November 29, 2013

Membuat Countdown menggunakan Seven Segment

Dexter / / 0
Membuat countdown seven segment merupakan pelajaran yang menarik untuk mengenalkan kita pemrograman mikrokontroler, karena didalamnya kita akan belajar apa itu array, variabel, aritmatika, input output mikrokontroler.

Langsung saja saya berikan contohnya seven segment untuk satu buah seven segment, nanti kalau udah bisa dan paham, teman-teman bisa mencobanya dengan 2 atau lebih seven segment dengan format angka satuan(1digit), puluhan(2digit), ratusan(3digit), ribuan(4digit).

saya sarankan anda menggunakan software proteus untuk ujicoba ini jika anda tidak mempunyai peralatanya langsung.. Btw Apa sih proteus itu?anda bisa membacanya diartikel " Software simulasi elektronika - proteus "

Oke selanjutnya anda akan merangkai rangkaian mikrokontroler seven segment seperti gambar berikut :
Seven Segment Countdown

Dalam hal software pemrograman, saya lebih menyukai menggunakan AVR Studio, karena software ini gratis, dan dengan software ini saya dibuat membuat semua librarynya sendiri karena kita tidak dimanjakan dengan autogenerate code seperti pada codevision. 

#include
#include
int  X[5]= {0b11000000,0b11111001,0b10100100,0b10110000,0b10011001};
int satuan,puluhan;
int main()
{
DDRA = 0xff;
int i;
while(1)
    {
     i=4;
     for(i=4;i>0;i--)
     {
        pecah(i);
        _delay_ms(5000);
     }
    }
}

void pecah(int VALUE)
{
        satuan = (VALUE%10)+0x30;
        puluhan = (VALUE%100)/10;
        puluhan += 0x30;
        PORTA = X[puluhan];
        PORTB = X[satuan];         
}

Penjelasan dari kode diatas adalah berikut :
 int  X[5]= {0b11000000,0b11111001,0b10100100,0b10110000,0b10011001};

kode diatas berfungsi untuk mendeklarasikan pin mana yang digunakan sebagai bagian dari seven segment untuk membentuk angka tertentu , dimana 0 adalah led7 on dan 1 led7 off, seven segment terdiri dari beberapa part led seperti gambar dibawah

 pada mikrokontroler, pin yang digunakan hanya 7 buah dimulai dari pin0 - pin 6. seperti angka 0, memiliki nilai 11000000, maka seven segment akan menyalakan led F,E,D,C,B,A dan mematikan led G. dimana setiap pin terhubung dengan susunan berikut :
A - PIN0
B - PIN1
C - PIN2
D - PIN3
E - PIN4
F - PIN5
G - PIN 6

untuk memisahkan antara nilai ratusan dan puluhan serta satuan, teman-teman bisa menggunakan rumus berikut 
        satuan = (VALUE%10)+0x30;
        puluhan = (VALUE%100)/10;
        puluhan += 0x30;
        PORTA = X[puluhan];
        PORTB = X[satuan]; 

value adalah nilai variabel, misalnya 81;
untuk mencari satuan dihitung dengan rumus value%10+0x30; ini maksudnya adalah (81%10) dimana % adalah modulo atau sisa bagi, dimana 81%10 sisa baginya adalah 1, dan ditambahkan dengan nilai 0x30 yang merupakan kode ascii untuk 0. jika ingin paham apa itu kode ascii, teman-teman bisa gunakan tabel berikut untuk referensi :
 

0 comments:

Latest