Cara membuat Running Text on Seven Segment dengan ATMega

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;

BACA JUGA:   USART CodevisionAVR [1]: kirim data USART

// 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;

BACA JUGA:   Pelatihan Codevision AVR

// 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

running segment

Begitu kira2, klo kurang jelas ya wis hahaha.

5 pemikiran pada “<span class='p-name'>Cara membuat Running Text on Seven Segment dengan ATMega</span>”

  1. Judul Harga Beli Sekarang
    Dasar Mikrokontroler Atmega8535 dengan CAVR BUKU ORIGINAL Rp64.000  
    Buku Belajar Sendiri Mikrokontroler AVR Seri ATMega8535 Simulasi, Hardware, Dan Aplikasi Rp70.000  
    Buku 20 Aplikasi Mikrokontroler ATMega 8535 & ATMega 16 Menggunakan Bascom-AVR+CD Rp70.500
    BUKU PRAKTIKUM TEKNOLOGI MICROCONTROLLER ATMEGA- 16 UNTUK SMK/ MAK Rp40.000  
    Buku Dasar Mikrokontroler Atmega8535 dengan CAVR Rp64.000
    BUKU MIKROKONTROLER AVR ATMEGA8535 + CD Rp80.750  
    buku pemrograman mikrokontrorler avr atmega 16 + cd Rp50.000  

Tinggalkan Balasan ke anotherorion Batalkan balasan

(Note, links and most HTML attributes are not allowed in comments)

Situs ini menggunakan Akismet untuk mengurangi spam. Pelajari bagaimana data komentar Anda diproses.

Ingin produk/website Anda kami ulas? Silahkan klik tombol dibawah ini