Counter Up and Down 7 - Segment Menggunakan Button Berbasis Mikrokontroller AT Mega 32
Teori [kembali]
Seven Segment Display
Seven Segment Display (7 Segment Display) dalam bahasa Indonesia disebut dengan Layar Tujuh Segmen adalah komponen Elektronika yang dapat menampilkan angka desimal melalui kombinasi-kombinasi segmennya. Seven Segment Display pada umumnya dipakai pada Jam Digital, Kalkulator, Penghitung atau Counter Digital, Multimeter Digital dan juga Panel Display Digital seperti pada Microwave Oven ataupun Pengatur Suhu Digital.
Seven Segment Display memiliki 7 Segmen dimana setiap segmen dikendalikan secara ON dan OFF untuk menampilkan angka yang diinginkan. Angka-angka dari 0 (nol) sampai 9 (Sembilan) dapat ditampilkan dengan menggunakan beberapa kombinasi Segmen. Selain 0 – 9, Seven Segment Display juga dapat menampilkan Huruf Hexadecimal dari A sampai F. Segmen atau elemen-elemen pada Seven Segment Display diatur menjadi bentuk angka “8” yang agak miring ke kanan dengan tujuan untuk mempermudah pembacaannya. Pada beberapa jenis Seven Segment Display, terdapat juga penambahan “titik” yang menunjukan angka koma decimal. Terdapat beberapa jenis Seven Segment Display, diantaranya adalah Incandescent bulbs, Fluorescent lamps (FL), Liquid Crystal Display (LCD) dan Light Emitting Diode (LED).
Pada rangkaian ini saya menggunakan 7 segment tipe common anode. Pada LED 7 Segmen jenis Common Anode (Anoda), Kaki Anoda pada semua segmen LED adalah terhubung menjadi 1 Pin, sedangkan kaki Katoda akan menjadi Input untuk masing-masing Segmen LED. Kaki Anoda yang terhubung menjadi 1 Pin ini akan diberikan Tegangan Positif (+) dan Signal Kendali (control signal) akan diberikan kepada masing-masing Kaki Katoda Segmen LED.
Button Switch
Push button switch (saklar tombol tekan) adalah perangkat / saklar sederhana yang berfungsi untuk menghubungkan atau memutuskan aliran arus listrik. Sebagai device penghubung atau pemutus, push button switch hanya memiliki 2 kondisi, yaitu On dan Off (1 dan 0).
AT Mega 32
AVR Atmega32 merupakan sebuah mikrokontroler low power CMOS 8 bit berdasarkan arsitektur AVR RISC. Mikrokontroler ini memiliki karakteristik sebagai berikut.
· Menggunakan arsitektur AVR RISC
- 131 perintah dengan satu clock cycle
- 32 x 8 register umum
· Data dan program memori
- 32 Kb In-System Programmable Flash
- 2 Kb SRAM
- 1 Kb In- System EEPROM
· 8 Channel 10-bit ADC
· Two Wire Interface
· USART Serial Communication
· Master/Slave SPI Serial Interface
· On-Chip Oscillator
· Watch-dog Timer
· 32 Bi-directional I/O
· Tegangan operasi 2,7 – 5,5 V
Arsitektur AVR ini menggabungkan perintah secara efektif dengan 32 register umum. Semua register tersebut langsung terhubung dengan Arithmetic Logic Unit (ALU) yang memungkinkan 2 register terpisah diproses dengan satu perintah tunggal dalam satu clock cycle. Hal ini menghasilkan kode yang efektif dan kecepatan prosesnya 10 kali lebih cepat dari pada mikrokontroler CISC biasa.
Rangkaian Simulasi [kembali]

Pada postingan kali ini kita akan membahas tentang counter up and down dengan 7 - segment dengan menggunakan button sebagai switch up/down. Button juga berperan sebagai input dan outputnya akan ditampilkan pada 7 - segment. Mikrokontroller yang digunakan yaitu AT Mega 32. Untuk compiler saya menggunakan CodeVision AVR.
Dalam rangkaian kita menggunakan 4 buah 7-segmen sebagai output yang masing - masingnya menampilkan bilangan satuan, puluhan, ratusan dan ribuan. Program akan di-compile dengan CodeVision AVR, setelah itu program akan di-input ke mikrokontroller yang nantinya akan memproses intpu/output. Terdapat 2 button, button up dan down yang akan memberikan input ke mikrokontroller. Jika kita menekan button up, maka 7 - segment menampilkan counter up. Dan jika menekan button down, maka 7 segment menampilkan counter down.
Untuk lebih jelasnya, mari kita perhatikan listing programnya.
Listing Program
[kembali]Untuk lebih jelasnya, mari kita perhatikan listing programnya.
Listing Program
#include <mega32.h>;
#include <delay.h>;
#define yes 1;
#define no 0;
int data, data_temp, tampil;
int status_in;
char ribuan=0, ratusan=0, puluhan=0, satuan=0, ubah;
void data_counter ();
void Display_7segment ();
void data_counter ()
{
if (TCNT1==10000)
{
TCNT1=0;
}
if (PINA.0==1)
{
status_in=1;
}
if ((PINA.0==0)&&(status_in==1))
{
status_in=0;
if (TCNT1>=1)
{
TCNT1--;
}
if (TCNT1<=0)
{
TCNT1=0;
}
}
data=TCNT1;
}
void Display_7segment ()
{
PORTC=ribuan;
PORTD=0b11110111;
delay_ms(5);
PORTC=ratusan;
PORTD=0b11111011;
delay_ms(5);
PORTC=puluhan;
PORTD=0b11111101;
delay_ms(5);
PORTC=satuan;
PORTD=0b11111110;
delay_ms(5);
}
void Convert_ke_7segment ()
{
if (ubah==0){tampil=0x3f;}
if (ubah==1){tampil=0x79;}
if (ubah==2){tampil=0x24;}
if (ubah==3){tampil=0x30;}
if (ubah==4){tampil=0x66;}
if (ubah==5){tampil=0x6d;}
if (ubah==6){tampil=0x7d;}
if (ubah==7){tampil=0x07;}
if (ubah==8){tampil=0x7f;}
if (ubah==9){tampil=0x6f;}
}
void Kirim_data_Perdigit ()
{
data_temp=data;
satuan=data_temp%10;
ubah=satuan;
Convert_ke_7segment ();
satuan=tampil;
data_temp=data_temp/10;
puluhan=data_temp%10;
ubah=puluhan;
Convert_ke_7segment ();
puluhan=tampil;
data_temp=data_temp/10;
ratusan=data_temp%10;
ubah=ratusan;
Convert_ke_7segment ();
ratusan=tampil;
data_temp=data_temp/10;
ribuan=data_temp%10;
ubah=ribuan;
Convert_ke_7segment ();
ribuan=tampil;
}
void main(void)
{
PORTA=0xff;
DDRA=0xff;
PORTC=0xff;
DDRC=0xff;
PORTD=0x0f;
DDRD=0x0f;
TCCR1A=0x00;
TCCR1B=0x06;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;
ACSR=0x80;
SFIOR=0x00;
status_in=0;
while (1)
{
data_counter ();
Kirim_data_Perdigit ();
Display_7segment ();
}
}
ter
Video [kembali]
Agar lebih memahami simulasi percobaan ini, anda dapat melihat video simulasi berikut.
Kesalahan dapat terjadi pada saat simulasi rangkaian. Diantaranya disebabkan oleh kesalahan dalam listing untuk output 7 segment (binary) atau pada aplikasi simulator maupun kemampuan processing komputer.
Link Download [kembali]
Untuk mempelajari lebih lanjut, anda dapat mendownload file c dan rangkaian simulasinya melalui link berikut.
http://www.mediafire.com/file/fg6qxnd9ypnmdw9/counter.rar
Jika terjadi kesalahan, mohon dimaafkan. Semoga bermanfaat! ;)