Sunday 13 December 2015

Aplikasi 7 Segment

Seven segmen merupakan kumpulan dari 8 buah led A, B, C, D, E, F, G, Dp yang disusun sedemikian rupa sehingga membentuk seven segmen. gambar disamping adalah konfigurasi pin dari seven segmen.

Pada trainer mikrokontroler yang kita gunakan, menggunakan 2 buah seven segmen common anoda yang masing-masing dikendalikan melalui PD4, PD5. Sebenarnya yang bisa dinyalakan dari empat buah seven segmen tersebut hanya salah satu saja.

Maka agar tampak nyala bersamaan ke empat seven segmen harus dihidupkan secara bergantian dengan waktu tunda yang sangat cepat. Oleh kerena itu pada masing-masing segmen di drive oleh transistor NPN pada common anodanya. Sehingga seven segmen akan nyala jika common anoda berlogika 1 dan kaki lainya berlogika 0. Berikut adalah tabel format penyalaan seven segmen aktive low.



1. Percobaan

a. Alat dan Bahan

1. DT-COMBO AVR-51 Stater Kit

2. Kabel Konektor Komponen pada Project board

3. USB AVR ISP Downloader

4. Power Supply 9-12 Volt

5. Seven Segment : 1 bh



b. Langkah Percobaan

1. Klik File à New à Project à OK


Gambar 1.0 New Project



Gambar 2.0 Create New File



2. Maka akan tampil konfirmasi seperti gambar dibawah ini, klik Yes.


Gambar 3.0 Konfirmasi



3. Selanjutnya akan tampil seperti gambar dibawah ini, pilih AT90,


Gambar 4.0 Pilihan



4. Setelah itu, Pilih Chip prosesor yaitu ATmega8535 dan Clock Kristal yang digunakan. Chip dan Clock Kristal disesuaikan dengan perangkat yang terpasang.


Gambar 5.0 Setting Chip dan Clock



Setelah itu pilih Port, sesuaikan dengan port yang dipasang Kabel Jumper Port untuk aktifasi modul LED. Out kan semua data direction dan pilih lampu Led mana yang akan dihidupkan pada Pullup/Ouput Value seperti gambar dibawah ini :



Gambar 6.0 Setting Port

5. Selanjutnya Klik File à Generate, Save and Exit. Dan simpan proyek anda sebanyak tiga kali yang masing-masing akan menghasilkan ekstensi file .c, .asm dan .prj



Gambar 6.0 Simpan Proyek



6. Kemudian atur setting programmernya untuk pembacaan ISP downloadernya seperti berikut:



Gambar 7.0 Setting Programer Pilih



Pilih ATmel AVR Prog (AVR910) pada AVR Chip Programer Type, pilih COM (sesuai dengan port yang dibaca pada device manager) pada Communication Port dan 115.200 pada BaudRate. Klik OK.


Gambar 8.0 Setting Programer

7. Atur konfigurasinya untuk pemilihan pemograman chip prosesornya dengan cara pilih Project à Configure à After Build à ceklis Program The Chip à OK.


Gambar 9.0 Konfigurasi

8. Setelah langkah pengerjaan selesai, klik Build All Project File lalu Klik Program the chip.


Gambar 10.0 Program The Chip



2. Hasil Percobaan

a. Program I

#include <mega8535.h>

#include <delay.h>



#define SI PORTD.0

#define SCLK PORTD.1

#define RCLK PORTD.2

#define SCLR PORTD.3

#define input1 PIND.4

#define input2 PIND.5

#define input3 PIND.6

#define input4 PIND.7

#define posisi PORTC

#define DDR_ctrl DDRD

#define DDR_posisi DDRC

#define ctrl PORTD //0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
22 23 24 25 26 27 28 29

// 0 1 2 3 4 5 6 7 8 9 A B C D E F G H J L N P R T U Y OFF [-] [-] -

flash unsigned char huruf[30]={0xFC,0x60,0xDA,0xF2,0x66,0xB6,0xBE,0xE0,0xFE,0xF6,0xEE,0x3E,
0x9C,0x7A,0x9E,0x8E,0xBC,0x6E,0xF0,0x1c,0xEC,0xCE,0x8c,0x1e,
0x7c,0x76,0x00,0x10,0X80,0x02 };



unsigned char posisi_awal;

unsigned char kata[8];



void init(void){

ctrl = 0xff;

DDR_ctrl = 0x0f;

posisi = 0xff;

DDR_posisi = 0xff;



TCCR0=0x02;

TCNT0=0x00;



ACSR=0x00;



TIMSK=0x01;



#asm("sei");

}



void send_data(unsigned char nilai){

unsigned char i,tmp;



SCLR = 0;

SCLR = 1;



SCLK = 0;

SI = 0;

RCLK = 0;



for (i=0; i<8; i++){

tmp = (nilai & 1);

if (tmp==1) SI = 1;

else

SI = 0;

SCLK = 1;

SCLK = 0;

nilai >>= 1;

}

RCLK = 1;

RCLK = 0;

}



void huruf1(void){





kata[0] = 23;

kata[1] = 22;

kata[2] = 5;

kata[3] = 29;

kata[4] = 2;

kata[5] = 0;

kata[6] = 1;

kata[7] = 4;





}

void animasi2(void){





kata[0] = +28; delay_ms(150); kata[0] = +26;

kata[1] = +27; delay_ms(150); kata[1] = +26;

kata[2] = +28; delay_ms(150); kata[2] = +26;

kata[3] = +27; delay_ms(150); kata[3] = +26;

kata[4] = +28; delay_ms(150); kata[4] = +26;

kata[5] = +27; delay_ms(150); kata[5] = +26;

kata[6] = +28; delay_ms(150); kata[6] = +26;

kata[7] = +27; delay_ms(150); kata[7] = +26;



}



void huruf3(void){



kata[0] = 23;

kata[1] = 14;

kata[2] = 10;

kata[3] = 3;

kata[4] = 29;

kata[5] = 1;

kata[6] = 26;

kata[7] = 26;

}



void animasi4(void){





kata[7] = +28; delay_ms(150); kata[7] = +26;

kata[6] = +27; delay_ms(150); kata[6] = +26;

kata[5] = +28; delay_ms(150); kata[5] = +26;

kata[4] = +27; delay_ms(150); kata[4] = +26;

kata[3] = +28; delay_ms(150); kata[3] = +26;

kata[2] = +27; delay_ms(150); kata[2] = +26;

kata[1] = +28; delay_ms(150); kata[1] = +26;

kata[0] = +27; delay_ms(150); kata[0] = +26;

}







interrupt [TIM0_OVF] void timer0_ovf_isr(void){

static unsigned char cnt;



posisi = posisi_awal;

send_data(huruf[kata[cnt]]);

if (posisi_awal!=0x7f){

posisi_awal <<= 1;

posisi_awal |= 1;

}else posisi_awal = 0xfe;



if (cnt<7) cnt++;

else cnt=0;

send_data(0);

delay_us(50);

}





void main(void){

init();

huruf1();

posisi_awal = 0xfe;

while (1){

if (!input1){

while (!input1);

huruf1();

}

else

if (!input2){

while (!input2);

animasi2();

}

else

if (!input3){

while (!input3);

huruf3();

}

else

if (!input4){

while (!input4);

animasi4();

}

}

}



Hasilnya adalah ketika ditekan switch tombol 1 maka media tampilan seven segmen akan bertuliskan TRS-2014, lalu ketika ditekan switch tombol 2 maka media tampilan seven segmen akan menampilkan animasi garis atas dan garis bawah secara bergantian yang bergerak kearah kanan, lalu ketika ditekan switch tombol 3 maka media tampilan seven segmen akan bertuliskan TEAM-1 dan ketika ditekan switch tombol 4 maka media tampilan seven segmen akan menampilkan animasi garis atas dan garis bawah secara bergantian yang bergerak kearah kiri dengan gambar sebagai berikut.




Gambar Percobaan I Switch 1 Tulisan TRS-2014



Gambar Percobaan II Switch 2 Tulisan TEAM-1