Cara membuat Running Text on Seven Segment dengan ATMega. Pesanannya mas endrew minta bikinin running text yang berjalan di seven segment, hahaha secara males mengkodekan huruf yang mau ditulis dalam membuat running text di seven segment mending ngopas angka 0 – 9 buat dirunning.
Biar terkesan natural, data yang dikeluarkan selain bilangan 0 – 9 juga ada nilai2 kosong didepan dan dibelakang bilangan untuk mematikan tampilan seven segment, jadi terkesannya gerak dari sebelah kanan, kekiri, setelah semua habis baru muncul lagi dari sebelah kanan.
Program running led di seven segment nya kek gini; mangap nek nggak diringkas jadi dikit, lagi males hahahaha
/*****************************************************
This program was produced by the
CodeWizardAVR V2.03.4 Standard
Automatic Program Generator
© Copyright 1998-2008 Pavel Haiduc, HP InfoTech s.r.l.
http://www.hpinfotech.com
Project : running 7 segment
Version :
Date : 20/06/2012
Author : priyo harjiyono
Company : https://anotherorion.com
Comments:
cara membuat tulisan seven segment berjalan di cvavr
Chip type : ATmega16
Program type : Application
Clock frequency : 4,001000 MHz
Memory model : Small
External RAM size : 0
Data Stack size : 256
*****************************************************/
#include <mega16.h>
#include <delay.h>
// Declare your global variables here
void main(void)
{
// Declare your local variables here
unsigned int geser, tampil, kaki, tunda, tunda1;
unsigned char data[]={0,0,0,0,0,0,0,00x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f, 0x6f,0,0,0,0,0,0,0,0};
// Input/Output Ports initialization
// Port A initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTA=0x00;
DDRA=0x00;
// Port B initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTB=0x00;
DDRB=0x00;
// Port C initialization
// Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out
// State7=0 State6=0 State5=0 State4=0 State3=0 State2=0 State1=0 State0=0
PORTC=0x00;
DDRC=0xFF;
// Port D initialization
// Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out
// State7=0 State6=0 State5=0 State4=0 State3=0 State2=0 State1=0 State0=0
PORTD=0x00;
DDRD=0xFF;
// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: Timer 0 Stopped
// Mode: Normal top=FFh
// OC0 output: Disconnected
TCCR0=0x00;
TCNT0=0x00;
OCR0=0x00;
// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: Timer 1 Stopped
// Mode: Normal top=FFFFh
// OC1A output: Discon.
// OC1B output: Discon.
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer 1 Overflow Interrupt: Off
// Input Capture Interrupt: Off
// Compare A Match Interrupt: Off
// Compare B Match Interrupt: Off
TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;
// Timer/Counter 2 initialization
// Clock source: System Clock
// Clock value: Timer 2 Stopped
// Mode: Normal top=FFh
// OC2 output: Disconnected
ASSR=0x00;
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;
// External Interrupt(s) initialization
// INT0: Off
// INT1: Off
// INT2: Off
MCUCR=0x00;
MCUCSR=0x00;
// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x00;
// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x80;
SFIOR=0x00;
while (1)
{
// Place your code here
kaki=1;
for(geser=0;geser<20;geser++) //menggeser nilai seven segment agar maju satu step kedepan
{
for(tunda1=0;tunda1<50;tunda1++) //untuk memberikan tunda agar nilai tidak langsung bergeser
{
for(tampil=0;tampil<8;tampil++) //nilai total 7segment yang dipakai yaitu 8 buah 7segment
{
for(tunda=0;tunda<20;tunda++) //untuk memberikan tunda, menampilkan 8 karakter secara bersamaan
{
PORTD=kaki;
delay_us(5);
if(tampil+geser>20)
{
PORTC=0xff;
}
else
{
PORTC=~data[tampil+geser];
}delay_us(5);
}
kaki=kaki<<1;
if(kaki==0)
{
kaki=1;
//PORTC=0;
}
}
}
}
};
}
Dari program di atas make 4 kali for, yaitu for geser, tunda1, tampil dan tunda. Tunda1 dan tunda digunakan untuk men-delay tampilan seven segment agar tidak terlalu cepat berubah (for tampil) dan tidak terlalu cepat bergeser(for geser), dengan kecepatan perubahan nilai seven segment selama 5 mikro second tentu jika tidak menggunakan variable tunda maka semua seven segment akan terlihat bernilai sama, sementara jika kita tidak menggunakan tunda1 maka tampilan seven segment akan berjalan sangat cepat, kurang nyaman untuk melihat adanya “pergerakan” dari tulisan yang ingin ditampilkan.
Untuk rangkaian skematiknya dapat dilihat pada gambar dibawah
Begitu kira2, klo kurang jelas ya wis hahaha.
MAAF PAK, TERNYATA BERHASIL SAYA RUNNING….
Itu Komponennya apa aja pak???
pak,cara masukin listingan di avrnya gimana???
sya g ngerti mas pri.
bahasa alien dari mana itu? :p
alien dari planet resistor chi