PERCOBAAN 14
PEMROGRAMAN 7 SEGMEN
I. JUDUL PERCOBAAN
Pemrograman 7 Segment.
Modul 8x7 Segmen Display dengan metode sanning adalah salah satu bentuk
jam digital, voltmeter, dan aplikasi lain yang memerlukan tampilan digit angka.
Ada dua metode penyalaan 7 segmen yaitu metode direct (langsung) dan metode
multiplex (bergantian).
Pada metode langsung, semua digit dinyalakan secara bersamaan sehingga untuk
jumlah digit yang banyak akan menimbulkan kerumitan hardware dan konsumsi
daya yang besar. Selain itu jumlah Port I/O yang terbatas juga tidak
memungkinkan untuk mengendalikan lebih dari 4 digit display (32 Port I/O).
display dilakukan secara bergantian, artinya dalam satu waktu hanya ada satu
digit yang menyala. Metode ini disebut juga dengan system scann ing dimana
cepat diatas 50Hz sehingga mata manusia akan menganggap display tersebut
menyala bersamaan.
Keuntungan dari metode multipleks ini adalah konsumsi daya yang kecil dan
display, kita hanya membutuhkan 2 port saja. Satu Port untuk mengatur data
tampilan (SEGMEN.CON) dan satu Port lagi untuk mengatur penyalaan display
Seperti terlihat di atas, penyalaan digit diatur oleh data scanning yang
common katoda dari masing -masing digit, jadi hanya digit yang diberi logika 1
untuk memberikan arus yang lebih besar dan kestabilan sistem yang lebih baik.
V. LANGKAH PERCOBAAN
11.05092Mhz
4. Pada CodeWizardAVR tersebut pilih File Generate, Save and Exit. Beri
/*****************************************************
This program was produced by the
CodeWizardAVR V1.25.3 Professional
Automatic Program Generator
© Copyright 1998-2007 Pavel Haiduc, HP InfoTech s.r.l.
http://www.hpinfotech.com
Project :
Version :
Date : 14/07/2010
Author : Rohmadi
Company : Edwar Technology
Comments:
#include <mega8535.h>
#include <delay.h>
#define Nol 0x 3f
#define Satu 0x06
#define Dua 0x5b
#define Tiga 0x4f
#define Empat 0x66
#define Lima 0x6d
#define Enam 0x7d
#define Tujuh 0x07
#define Delapan 0x7f
#define Sembilan 0x6f
#define On 0
#define Off 1
if (Nilai==0)
{Hasil=Nol;}
else if (Nilai==1)
{Hasil=Satu;}
else if (Nilai==2)
{Hasil=Dua;}
else if (Nilai==3)
{Hasil=Tiga;}
else if (Nilai==4)
{Hasil=Empat;}
else if (Nilai==5)
{Hasil=Lima;}
else if (Nilai==6)
{Hasil=Enam;}
else if (Nilai==7)
{Hasil=Tujuh;}
else if (Nilai==8)
{Hasil=Delapan;}
else if (Nilai==9)
{Hasil=Sembilan;}
return Hasil;
}
PuluhJutaan=Nilai/10000000;
//1-->12345678/10000000=1,2345678
Jutaan=(Nilai%10000000)/1000000;
//2-->2345678/1000000=2,345678
RatusRibuan=((Nilai%10000000)%1000000)/100000;
//3-->345678/100000=3,45678
PuluhRibuan=(((Nilai%10000000)%1000000)%100000)/10000;
//4-->45678/10000=4,5678
Ribuan=((((Nilai%10000000)%1000000)%100000 )%10000)/ 1000;
//5-->5678/1000=5,678
Ratusan=(((((Nilai%10000000)%1000000)%100000)%10000)%10
00)/100; //6-->678/100=6,78
Puluhan=((((((Nilai%10000000)%1000000)%100000)%10000)%1
000)%100)/10; //7-->78/10=7,8
Satuan=((((((Nilai%10000000)%1000000)%100000)%10000)%10
00)%100)%10; //8-->8
void main(void)
{
// Declare your local variables here
// Port B 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
PORTB=0x00;
DDRB=0xFF;
// Port C 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
PORTC=0x00;
DDRC=0x00;
// 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: 43,200 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=0x04;
TCNT1H=0xC2;
TCNT1L=0xF7;
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;
TIMSK=0x04;
PORTB=0b10000000;
PORTD=NilaiSegmen(Satuan);delay_us(900);
};
}
7. Lakukan check syntax, compile. Bila tidak ada error, programkan ke dalam
flash.
9. Jika percobaan sudah sesuai dengan benar, hasil akan tampak angka pada
Seven segment akan muncul angka counter dari 1 naik + 1, sampai dengan
VI. TUGAS/PERTANYAAN
1. Apa yang kamu ketahui tentang 7 segment common anoda dan 7 segment
common katoda?
Catatan :