Anda di halaman 1dari 11

Pemrograman 7 Segmen

PERCOBAAN 14

PEMROGRAMAN 7 SEGMEN

I. JUDUL PERCOBAAN

Pemrograman 7 Segment.

II. TUJUAN PERCOBAAN

Setelah menyelesaikan praktikum ini, yang anda peroleh adalah :

1. dapat mengimplementasikan, memprogram 7 Segmen sebagai penampilan

keluaran data pada mikrokontroler AVR.

III. TEORI SINGKAT

Modul 8x7 Segmen Display dengan metode sanning adalah salah satu bentuk

keluaran. Display 7 segmen biasanya digunakan dalam rangkaian counter, timer,

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).

Untuk mengatasi kerumitan hardware dan konsumsi daya inilah maka

Pend. Teknik Elektro, Universitas Negeri Semarang 176


Pemrograman 7 Segmen

metode multiplex digunakan. Pada metode multiplex, penyalaan masing -masing

display dilakukan secara bergantian, artinya dalam satu waktu hanya ada satu

digit yang menyala. Metode ini disebut juga dengan system scann ing dimana

masing-masing display dinyalakan secara berurutan dalam waktu yang sangat

cepat diatas 50Hz sehingga mata manusia akan menganggap display tersebut

menyala bersamaan.

Keuntungan dari metode multipleks ini adalah konsumsi daya yang kecil dan

efisiensi pemakaian port mikrokontroler, sehingga untuk menampilkan 8 digit

display, kita hanya membutuhkan 2 port saja. Satu Port untuk mengatur data

tampilan (SEGMEN.CON) dan satu Port lagi untuk mengatur penyalaan display

(SCANNING.CON). Rangkaia n lengkapnya adalah sebagai berikut:

Gambar 14.1. Circuit 7 segment pada modul Trainer

Seperti terlihat di atas, penyalaan digit diatur oleh data scanning yang

diberikan melalui konektor SCANNING.CON, data ini akan mengaktifkan

Pend. Teknik Elektro, Universitas Negeri Semarang 177


Pemrograman 7 Segmen

common katoda dari masing -masing digit, jadi hanya digit yang diberi logika 1

saja yang akan menyala.

Sementara untuk tampilan 7 segmen, data segmen diberikan melalui

konektor SEGMEN.CON, data ini diberikan pada rangkaian Buffer 74LS244

untuk memberikan arus yang lebih besar dan kestabilan sistem yang lebih baik.

IV. ALAT & BAHAN YANG DIGUNAKAN

1. Satu set PC yang dilengkapi dengan software CodeVision AVR.

2. Satu set Trainer Mikrokontroller AVR ATmega 8535

Gambar 14.2. Pin diskription dari 7 Segment

V. LANGKAH PERCOBAAN

Berikut adalah beberapa aplikasi praktik yang nantinya dapat lebih

menjelaskan fungsi modul modul 8x 7 Segmen Display dengan metode sanning .

Peserta diharapkan mengikuti petunjuk langkah demi langkah.

Percobaan 1, Menampilkan Counter 1 s./d. 9

langkah-langkahnya sebagai berikut:

1. Rangkailah modul seperti pada gambar belikut :

Pend. Teknik Elektro, Universitas Negeri Semarang 178


Pemrograman 7 Segmen

Pend. Teknik Elektro, Universitas Negeri Semarang 179


Pemrograman 7 Segmen

2. Operasikan software CodeVisionAVR

3. Buatlah project baru dengan, menggunakan CodeWizardAVR

a. mensetting chipe menggunakan ATmega 8535 pada clock

11.05092Mhz

b. mensetting PORTB dan PORTC sebagai Output sebagai berikut :

4. Pada CodeWizardAVR tersebut pilih File  Generate, Save and Exit. Beri

nama dan simpan pada direktori baru di dalam direktori d: \mikrokontroler

5. Pada source program-C yang dihasilkan, tambahkan header delay.h.

6. Pada bagian bawah didalam main -program, tambahkan perintah (yang

berwarna merah) berikut

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

Pend. Teknik Elektro, Universitas Negeri Semarang 180


Pemrograman 7 Segmen

Project :
Version :
Date : 14/07/2010
Author : Rohmadi
Company : Edwar Technology
Comments:

Chip type : ATmega8535


Program type : Application
Clock frequency : 11,059200 MHz
Memory model : Small
External SRAM size : 0
Data Stack size : 128
*****************************************************/

#include <mega8535.h>
#include <delay.h>

#define Digit_Satuan PORTB.7


#define Digit_Puluhan PORTB.6
#define Digit_Ratusan PORTB.5
#define Digit_Ribuan PORTB.4
#define Digit_Puluh_Ribu PORTB.3
#define Digit_Ratus_Ribu PORTB.2
#define Digit_Jutaan PORTB .1
#define Digit_Puluh_Juta PORTB.0

#define SCANNING_CON PORTD

#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

unsigned char NilaiSegmen (int Nilai)


{
unsigned char Hasil;

if (Nilai==0)
{Hasil=Nol;}
else if (Nilai==1)

Pend. Teknik Elektro, Universitas Negeri Semarang 181


Pemrograman 7 Segmen

{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;
}

// Declare your global variables here


int i;
unsigned long int Satuan, Puluhan, Ratusan, Ribuan,
PuluhRibuan, RatusRibuan, Jutaan, PuluhJutaan;
unsigned long int Nilai;

// Timer 1 overflow interrupt service routine


interrupt [TIM1_OVF] void timer1_ovf_isr(void)
{
// Reinitialize Timer 1 value
TCNT1H=0xC2;
TCNT1L=0xF7;
// Place your code here
if (Nilai < 9)
{
Nilai=Nilai+1;
}
else if (Nilai>=9)
{
Nilai=0;
}

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

Pend. Teknik Elektro, Universitas Negeri Semarang 182


Pemrograman 7 Segmen

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

// Declare your global variables here

void main(void)
{
// Declare your local variables here

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

Pend. Teknik Elektro, Universitas Negeri Semarang 183


Pemrograman 7 Segmen

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

// External Interrupt(s) initialization


// INT0: Off
// INT1: Off
// INT2: Off
MCUCR=0x00;
MCUCSR=0x00;

// Timer(s)/Counter(s) Interrupt(s) initialization

Pend. Teknik Elektro, Universitas Negeri Semarang 184


Pemrograman 7 Segmen

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")
while (1)
{
// Place your code here
PORTB=0b01000000;
PORTD=NilaiSegmen(Puluhan);delay_us(900);

PORTB=0b10000000;
PORTD=NilaiSegmen(Satuan);delay_us(900);
};
}

7. Lakukan check syntax, compile. Bila tidak ada error, programkan ke dalam

flash.

8. Jalankan avrdude-GUI untuk proses pengisian ke dalam flash mikrokontroler.

9. Jika percobaan sudah sesuai dengan benar, hasil akan tampak angka pada

modul rangkaian seven segment.

Seven segment akan muncul angka counter dari 1 naik + 1, sampai dengan

99 kemudian hitungan angka akan kembali ke 1 lagi.

Pend. Teknik Elektro, Universitas Negeri Semarang 185


Pemrograman 7 Segmen

VI. TUGAS/PERTANYAAN

Jawablah pertanyaan berikut untuk bagian analisa pada laporan resmi:

1. Apa yang kamu ketahui tentang 7 segment common anoda dan 7 segment

common katoda?

2. Seven Segmen Display Selain menggunakan metode dengan metode

sanning. Bisakah dalam suatu project dengan menggunakan metode yang

lain berhubungan dengan seven segment display, Tolong di jelaskan!

3. Buatlah flowchart dari praktek yang telah anda kerjakan!

Catatan :

Laporan sementara dikumpulkan setelah menyelesaikan praktikum.

Tugas dikumpulkan 1 minggu setelah praktek berlangsung.

Pend. Teknik Elektro, Universitas Negeri Semarang 186

Anda mungkin juga menyukai