RSS

KARAKTER BERJALAN (RUNNING CHARACTER) PADA SEVEN SEGMENT MENGGUNAKAN CODEVISION AVR

30 Apr

Pada project ini saya akan membuat sebuah aplikasi yang disebut running character atau karakter berjalan dengan menggunakan seven segment tipe CA (common anoda). Untuk mendapatkan datasheet penampil seven segment silakan download disini. Pada aplikasi ini saya menggunakan 8 buah seven segment CA yang akan digunakan untuk menampilkan angka dari 0-9 yang kemudian akan digeser dari sebelah kanan kesebelah kiri (dari digit8 sampai digit1). Saya menggunakan metode scanning untuk menampilkan angka pada seven segment, setiap 1 detik dengan menggunakan fitur timer1 AVR, saya melakukan penggeseran untuk tiap digitnya. Yaitu yang awalnya ditampilkan pada digit8 digeser kedigit7, dari digit7 ke digit6 dan seterusnya sampai digit1 kemudian diulangi lagi ke awal.

Untuk project ini sudah saya realisasikan dalam bentuk hardware yang sesungguhnya, tetapi belum saya simulasikan, karena saya agak malas. Bagi yang belum jelas mengenai metode scanning dan dasar-dasar seven segment dapat dilihat pada menu tutorial AVR tentang Seven Segment dan untuk timer dapat dibaca pada Timer dan Counter AVR.

Untuk karakter yang saya gunakan, disini saya menggunkan angka 0-9, karekter 0-9 dapat teman-teman ganti sesuai denga keinginan sendiri. Berikut schematic dan listing program lengkapnya:

#include <mega16.h>
#include <delay.h>

unsigned char huruf0, huruf1, huruf2, huruf3, huruf4, huruf5, huruf6, huruf7, huruf8;
unsigned char huruf9, huruf10, huruf11;

void geser() //fungsi untuk menggeser
{
     huruf11 = huruf0;  
     huruf0 = huruf1;
     huruf1 = huruf2;
     huruf2 = huruf3;
     huruf3 = huruf4;
     huruf4 = huruf5;  
     huruf5 = huruf6;
     huruf6 = huruf7;
     huruf7 = huruf8;
     huruf8 = huruf9;
     huruf9 = huruf10;
     huruf10 = huruf11;
}

// Timer 1 overflow interrupt service routine
interrupt [TIM1_OVF] void timer1_ovf_isr(void)
{
// Reinitialize Timer 1 value
TCNT1H=0xD23A >> 8;
TCNT1L=0xD23A & 0xff;
geser();
}

void karakter()
{
huruf0=0xc0; huruf1=0xf9; huruf2=0xa4; huruf3=0xb0;
huruf4=0x99; huruf5=0x92; huruf6=0x82; huruf7=0xf8;
huruf8=0x80; huruf9=0x90; huruf10=0xff;
}

void tampil_7segment()
{
      PORTC=huruf0;//mengirimkan data kedigit1
      PORTD=0b01111111;//menyalakan digit1
      delay_ms(2);

      PORTC=huruf1;//mengirimkan data kedigit2
      PORTD=0b10111111;//menyalakan digit2
      delay_ms(2);

      PORTC=huruf2;//mengirimkan data kedigit3
      PORTD=0b11011111;//menyalakan digit3
      delay_ms(2);

      PORTC=huruf3;//mengirimkan data kedigit4
      PORTD=0b11101111;//menyalakan digit4
      delay_ms(2);           

      PORTC=huruf4;//mengirimkan data kedigit5
      PORTD=0b11110111;//menyalakan digit5
      delay_ms(2);

      PORTC=huruf5;//mengirimkan data kedigit6
      PORTD=0b11111011;//menyalakan digit6
      delay_ms(2);

      PORTC=huruf6;//mengirimkan data kedigit7
      PORTD=0b11111101;//menyalakan digit7
      delay_ms(2);

      PORTC=huruf7;//mengirimkan data kedigit8
      PORTD=0b11111110;//menyalakan digit8
      delay_ms(2);
      //lamanya waktu scanning ditentukan oleh intruksi delay
}

void main(void)
{
PORTC=0xff;
DDRC=0xff;

PORTD=0xff;
DDRD=0xff;

// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: 11.719 kHz
// Mode: Normal top=FFFFh
// OC1A output: Discon.
// OC1B output: Discon.
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer 1 Overflow Interrupt: On
// Input Capture Interrupt: Off
// Compare A Match Interrupt: Off
// Compare B Match Interrupt: Off
TCCR1A=0x00;
TCCR1B=0x05;
TCNT1H=0xD2;
TCNT1L=0x3A;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;

// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x04;

// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x80;
SFIOR=0x00;

// Global enable interrupts
#asm(“sei”)
karakter();

while (1)
      {
      tampil_7segment();
      };
}

Untuk mendapatkan file program dalam bentuk CodeVision AVR silakan download pada link dibawah ini.

File program CodeVision AVR

Semoga bermanfaat..

 
Leave a comment

Posted by on April 30, 2011 in AVR Projects

 

Tags: , , , , , ,

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

 
%d bloggers like this: