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 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 menggunakan angka 0-9, karakter 0-9 dapat teman-teman ganti sesuai denga keinginan sendiri. Berikut schematic dan listing program lengkapnya:
#include <mega16.h>
#include <delay.h>
#include <delay.h>
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=0×99; huruf5=0×92; huruf6=0×82; huruf7=0xf8;
huruf8=0×80; huruf9=0×90; 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=0×00;
TCCR1B=0×05;
TCNT1H=0xD2;
TCNT1L=0x3A;
ICR1H=0×00;
ICR1L=0×00;
OCR1AH=0×00;
OCR1AL=0×00;
OCR1BH=0×00;
OCR1BL=0×00;
// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0×04;
// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0×80;
SFIOR=0×00;
// 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..
untuk progam buat dc cdi sepeda motor ada ga gan?minta dunk....
BalasHapusboleh minta Schematic nya gan...
BalasHapuslagi butuh niech.....
schematiknya sama persis seperti gambar diatas. silakan anda buat sendiri saja
BalasHapusmas, aqq mau buat scoring board 4 digit, bisa bntu buat programnya ga, makasih :)
BalasHapusbang share tentang dot matrik donk,pengen belajar ni... thank's
BalasHapussaya belum punya modul dot matrik jadi belum pernah nyoba... seandainya saya punya pasti saya posting... hehehehe
Hapusmantap nih, bakalan ane coba. maju teruss !! :D
BalasHapus