Jumat, 23 Januari 2015

Counter Up and Down 7 Segment Menggunakan ATMega 16


Baiklah pada kesempatan kali ini kita akan mempelajari bagaimana caranya membuat counter up and down pada seven segment. Bisa kita aplikasikan sebagai contoh pergantian dalam pertandingan sepak bola, untuk mesin penghitung dan lain lain.  Kita akan memakai mikrokontroller ATMega16, 7 segment, dan push button. Untuk rangkaiannya dapat kita lihat berikut:



Pada kali ini saya mengunakan software simulasi Proteus 7 profesional. Pada gambar tersebut kita susun 7 segment pada PORTC secara parelel dan push button pada PORTB. Untuk bagian katoda 7 segment kita pasang pada PORTD.


Untuk listing progamnya kita mengunakan software CV AVR:


/*****************************************************
Chip type               : ATmega16
Program type            : Application
AVR Core Clock frequency: 11,059200 MHz
Memory model            : Small
External RAM size       : 0
Data Stack size         : 256
*****************************************************/

#include <mega16.h>
#include <delay.h>
unsigned char angka[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; 
int satuan,puluhan,ratusan,data,data_temp,x;



// Declare your global variables here

void ambil_data()
{
data_temp = data ;
satuan = data_temp%10;//rumus untuk satuan
puluhan = (data_temp/10)%10;//rumus untuk puluhan
ratusan = (data_temp/100)%10;//rumus untuk ratusan
}

void tampil ()
{
//mengatur nilai satuan
PORTD.0 = 1;
PORTD.1 = 1 ;
PORTD.2 = 0 ;
PORTC = angka[satuan];
delay_ms(1);

//mengatur nilai puluhan 
PORTD.0 = 1;
PORTD.1 = 0 ;
PORTD.2 = 1 ;
PORTC = angka[puluhan];
delay_ms(1);

//mengatur nilai ratusan 
PORTD.0 = 0;
PORTD.1 = 1 ;
PORTD.2 = 1 ;
PORTC = angka[ratusan];
delay_ms(1);
}

while (1)
      {
      // Place your code here

        for(x=0;x<50;x++)  
        {
        ambil_data();
        tampil();
        } 
      
   //membatasi nilai maximum
      if (PINB.0==0)
        {
        data++;
        if (data>9999)
            {
            data=0;
            }
        }
//membatasi nilai minimum
     
      if (PINB.1==0)
        {
        data--;
        if (data<=0)
            {
            data=0;
            }
        }
          

         
      }


     dapat kita lihat bahwa untuk mengatur tampilan puluhan, satuan dan ratusan kita memainkan nilai logika pada kaki katoda.

4 komentar:

  1. Assalamualaikum kak, salam kenal dari Tg. Balai Karimun.
    Boleh sy mintak nomer hp nya atau nama FB nya? Mau tanya langsung tentang counter up satu digit 7 segment annode mnggunakan atmega 16. Sy ada lomba LKS Kamis ini jadi mohon bantuan nya.

    Trimakasih

    BalasHapus
  2. gan nama komponennya apa aja ?

    BalasHapus