You are on page 1of 13

LAPORAN

PRAKTIKUM MIKROKONTROLLER

PERCOBAAN DISPLAY 7 SEGMEN






Nama : Dwinta Mussetyarsih
Nim : P27838012044
Kelas : 2A(3,4)






LABORATORIUM MIKROKONTROLLER
JURUSAN TEKNIK ELEKTROMEDIK
POLTEKKES KEMENKES SURABAYA
2013






1. Gambar Rangkaian dan penjelasan percobaan Display 7 Segment .

Gambar Rangkaian





Penjelasan cara kerja rangkaian :

Rangkaian diatas merupakan Rangkaian decoder dan driver 7 segmen,
display 7 segmen yang digunakan pada percobaan ini adalah 7 segmen common
anoda, dengan driver transistor PNP dan decoder 74LS138
untuk scanning 7 segmen.
seven segmen yang hidup tergantung pada output dari dekoder 74LS138
apabila ada logika low pada basis transistor, maka 7 segment akan nyala dan
sebaliknya akan padam. sehingga dari 8 buah display tersebut, selalu hanya satu
display yang akan dihidupkan. Agar display tampak nyala secara bersamaan maka
ketiga display tersebut harus dihidupkan secara bergantian dengan waktu tunda
tertentu.





2. Flow Chart masing-masing percobaan
Flowchart Percobaan display 7 segmen






































Start
Inisialisasi
PORTC,PORTD
Case 0
END
Case 3
Case 2
Case 1
Case 6
Case 5
Case 4
Case 8
Case 7
Case 9
PORTC=0xff;
Data=5;
Convert(){
PORTC=0b11000000

PORTC=0b11111001

PORTC=0b10100100

PORTC=0b10000000

PORTC=0b11111000

PORTC=0b10000010

PORTC=0b10010010

PORTC=0b10011001

PORTC=0b10110000

PORTC=0b10010000




Flowchart Percobaan Display 7 segmen increment data 0 sd 9


























Yes










Start
Inisialisasi data,
PORTC, PORTD
Case 0
PORTC=0b11000000
Case 5
Case 6
Case 1
Case 2
Case 3
Case 4
Case 7
PORTC=0b11111001
PORTC=0b10100100
PORTC=0b10110000
PORTC=0b10110000
PORTC=0b1001001
PORTC=0b10000010
PORTC=0b11111000
PORTC=0xff
Stop
Case 9
Case 8 PORTC=0b10000000
PORTC=0b10010000
data==1
0
convert();
data=data+1;
data=0;
Flowchart Percobaan Display 7 Segmen dengan Simulasi Setting data





























No









Start
Inisialisasi data,
PORTC, PORTD
Case 0
PORTC=0b11000000
Case 5
Case 6
Case 1
Case 2
Case 3
Case 4
Case 7
PORTC=0b11111001
PORTC=0b10100100
PORTC=0b10110000
PORTC=0b10110000
PORTC=0b1001001
PORTC=0b10000010
PORTC=0b11111000
PORTC=0xff
Stop
Case 9
Case 8 PORTC=0b10000000
PORTC=0b10010000
PINB.2==1
data=data+1; dataTemp=dataSat;
convert();
delay_ms(30);
dataTemp=dataPul;
convert();
delay_ms(30);
PORTC=0x00;
PINB.0==0 PINB.1==0
data=data-1;
3. Penjelasan kode program masing-masing percobaan :
Perintah untuk mencetak sebuah karakter ke 7 segmen, mengkonversikan data decimal
ke 7 segmen.

#include<mega.8535.h>
#include<delay.h>
Unsigned char data;
Void convert(){
Switch(data)
{
// gfedcba
Case 0: PORTC=0b11000000;break;
Case 1: PORTC=0b11111001;break;
Case 2: PORTC=0b10100100;break;
Case 3: PORTC=0b10110000;break;
Case 4: PORTC=0b10011001;break;
Case 5: PORTC=0b10010010;break;
Case 6: PORTC=0b10000010;break;
Case 7: PORTC=0b11111000:break;
Case 8: PORTC=0b10000000;break;
Case 9: PORCT=0b10010000;break;
Default: PORTC=0Xff;
}
}
Void main (void)
{
DDRC=DDRD=PORTC=0Xff;
PortD.5=1;
PORTD.6=1;
PORTD.7=1;
While(1)
{
Data=5;
Convert();
}
}
#include <mega8535.h>
Menginputkan library mega8535 agar perintah-perintah yang akan kita gunakan dapat
dibaca oleh program.

#include <delay.h>
Menginputkan library delay agar perintah yang akan kita gunakan dapat dibaca oleh
program.

Unsigned char data;
Mendeklarasikan variabel data dengan tipe data unsigned char data .

Switch(data)
{
Case 0: PORTC=0b11000000;break;
. . . .
. . . .
Case 9: PORCT=0b10010000;break;
}
Switch case untuk pemilihan data, sama dengan pernyataan if. Jika kita memlih case 0
maka yang akan muncul di 7 segmen adalah angka 0. Jika case 1 maka yang akan muncul
angka 1 begitu seterusnya sampai angka 9.

Default: PORTC=0Xff;
Kondisi awal LED dalam keadaan mati.

Void main (void)
{
}
Struktur awal program(harus selalu ada)

DDRC=DDRD=PORTC=0Xff;
Memberikan perintah pada PORTC &PORTD sebagai outputan dan keadaan awal
PORTC dalam keadaan mati .

PortD.5=1;
PORTD.6=1;
PORTD.7=1;
Perintah untuk input mengkonfigurasi PORTD.5, PORTD.6, PORT.7 sebagai input untuk
menyalakan segmen. (member logika 1 pada basis transistor agar saturasi) karena semua
selector mendapat logika 1, maka 7 segmen akan muncul di Y7.

While(1)
{
Perintah yang akan terus mengeksekusi program selama program bernilai benr (1).

Data=5;
Convert();
}
}
Mencetak data ke 5 yang outputannya sudah di tentukan di fungsi convert.
(pemanggilan fungsi convert) .

Perintah untuk menampilkan data secara berurutan mulai dari 0 sd 9 , dengan fungsi
delay untuk setiap kenaikan angka .

#include <mega8535.h>
#include<delay.h>
unsigned char data;
void convert(){
switch(data)
{
// gfedcba
case 0: PORTC=0b11000000;break;
case 1: PORTC=0b11111001;break;
case 2: PORTC=0b10100100;break;
case 3: PORTC=0b10110000;break;
case 4: PORTC=0b10011001;break;
case 5: PORTC=0b10010010;break;
case 6: PORTC=0b10000010;break;
case 7: PORTC=0b11111000;break;
case 8: PORTC=0b10000000;break;
case 9: PORTC=0b10010000;break;
default: PORTC=0xff;
}
}
void main (void)
{
DDRC=DDRD=PORTC=0xff;
PORTD.5=1;
PORTD.6=1;
while(1)
{
convert();
data=data+1;
if(data==10)
{
data=0;
};
Delay_ms(1000);
}
}

#include <mega8535.h>
Menginputkan library mega8535 agar perintah-perintah yang akan kita gunakan dapat
dibaca oleh program.

#include <delay.h>
Menginputkan library delay agar perintah yang akan kita gunakan dapat dibaca oleh
program.

Unsigned char data;
Mendeklarasikan variabel data dengan tipe data unsigned char data .

Switch(data)
{
Case 0: PORTC=0b11000000;break;
. . .
. . .
Case 9: PORCT=0b10010000;break;
}
Switch case untuk pemilihan data, sama dengan pernyataan if. Jika kita memlih case 0
maka yang akan muncul di 7 segmen adalah angka 0. Jika case 1 maka yang akan muncul
angka 1 begitu seterusnya sampai angka 9.

Default: PORTC=0Xff;
Kondisi awal LED dalam keadaan mati.

Void main (void)
{
}
Struktur awal program(harus selalu ada)

DDRC=DDRD=PORTC=0Xff;
Memberikan perintah pada PORTC &PORTD sebagai outputan dan keadaan awal
PORTC dalam keadaan mati .

PortD.5=1;
PORTD.6=1;
Perintah untuk input mengkonfigurasi PORTD.5, PORTD.6, sebagai input untuk
menyalakan segmen. (member logika 1 pada basis transistor agar saturasi) karena semua
selector mendapat logika 1, maka 7 segmen akan muncul di Y3.

while(1)
{
Perintah yang akan terus mengeksekusi program selama program bernilai benr (1).
{
convert();
data=data+1;
if(data==10)
{
data=0;
};
Memanggil fungsi convert dan mencetak data yang dimulai dari 0 secara increment maju
(0,1,2,....dst). Jika data mempunyai outpu 10, maka data langsung kembali ke 0. Jadi nilai
akhir increment adalah angka 9 (setelah 10 kembali lagi ke 0).

delay_ms(1000);
Delay digunakan jika kita ingin mempause atau menghentikan program hanya beberapa
saat saja. Dalam code diatas menggunakan satuan milisekon. Jadi jika kita menginputkan
1000 maka outputannya menjadi 1 sekon.

Perintah untuk mensimulasikan setting data dengan display pada 7 segmen.
#include <mega8535.h>
#include <delay.h>
void convert();
int data,dataTemp,dataPul,dataSat;
void main(void)
{
DDRC=0xFF;
DDRB=0x00;
PORTB=0xFF;
PORTC=0xFF;
DDRD=0xFF;
data=00;
while(PINB.2==1)
{
if (PINB.0==0)
{
data=data+1;
}
else if (PINB.1==0)
{
data=data-1;
}
dataTemp=data;
dataSat = dataTemp % 10; // sat=sisa data dibagi 10
dataPul = dataTemp / 10;
dataTemp=dataSat;
convert();
PORTD.5=1;
PORTD.6=0;
delay_ms(30);
dataTemp=dataPul;
convert();
PORTD.5=0;
PORTD.6=0;
delay_ms(30);
}
PORTC=0x00;
delay_ms(2000);
}
void convert()
{
switch(dataTemp)
{ // pg fe dcba
case 0: PORTC=0b11000000;break;
case 1: PORTC=0b11111001;break;
case 2: PORTC=0b10100100;break;
case 3: PORTC=0b10110000;break;
case 4: PORTC=0b10011001;break;
case 5: PORTC=0b10010010;break;
case 6: PORTC=0b10000010;break;
case 7: PORTC=0b11111000;break;
case 8: PORTC=0b10000000;break;
case 9: PORTC=0b10010000;break;
default: PORTC=0xff;
}
}

#include <mega8535.h>
Menginputkan library mega8535 agar perintah-perintah yang akan kita gunakan dapat
dibaca program.

#include <delay.h>
Menginputkan library delay agar perintah yang akan kita gunakan dapat dibaca program.

void convert()
Membuat suatu fungsi dengan nama convert.

int data,dataTemp,dataPul,dataSat;
Mendeklarasikan variabel data, dataTemp, dataPul, dan dataSat dengan tipe data int.

void main(void)
{
}
Struktur awal program (harus selalu ada)

DDRC=0xFF;
Perintah untuk mengkonfigurasi PORT C sebagai Output.

DDRB=0x00;
Perintah untuk mengkonfigurasi PORT B sebagai Input.

PORTB=0xFF;
Kondisi awal button aktif (berlogika 1).

PORTC=0xFF;
Perintah untuk mematikan semua LED pada PORTC.

DDRD=0xFF;
Perintah untuk mengkonfigurasi PORT D sebagai Output.

data=00;
Kondisi awal data bernilai 0.

while(PINB.2==1)

if (PINB.0==0)
{
data=data+1;
}
else if (PINB.1==0)
{
data=data-1;
}
Jika button pertama ditekan maka variabel data akan mengeluarkan outputan increament
(0, 1, 2, 3, .... dst). Sedangkan jika button kedua ditekan maka outputan data akan
mengeluarkan outputan descreament (9, 8, 7, .... dst).

dataTemp=data;
Variabel dataTemp berisi nilai dari variabel data.

dataSat = dataTemp % 10; // sat=sisa data dibagi 10
Variabel dataSat didapat dari sisa hasil bagi (modulus 10) dari dataTemp.

dataPul = dataTemp / 10;
Variabel dataPul didapat dari hasil pembagian 10 dari dataTemp .

dataTemp=dataSat;
Nilai dari Variabel dataTemp sama dengan nilai dari variabel dataSat.

convert();
Pemanggilan fungsi convert.

PORTD.5=1;
PORTD.6=0;
Perintah untuk input mengkonfigurasi PORTD5 , dan PORTD6 sebagai input untuk
menyalakan segmen. (memberi logika 1 pada basis transistor agar saturasi). Karena
selector A yang mendapat logika 1 dan selector B mendapat logika 0, maka 7segmen
akan muncul di Y1.

delay_ms(30);
Mempause / memberi waktu jeda program selama 30 milisekon.

dataTemp=dataPul;
Nilai dari Variabel dataTemp sama dengan nilai dari variabel dataPul.

convert();
Pemanggilan fungsi convert.

PORTD.5=0;
PORTD.6=0;
Perintah untuk input mengkonfigurasi PORTD5 , dan PORTD6 sebagai input untuk
menyalakan segmen. (memberi logika 1 pada basis transistor agar saturasi). Karena kedua
selector (selector A dan selector B) mendapat logika 0, maka 7segmen akan muncul di
Y0.

delay_ms(30);
Mempause / memberi waktu jeda program selama 30 milisekon.

PORTC=0x00;
Kondisi awal semua led menyala.

delay_ms(2000);
Mempause / memberi waktu jeda program selama 2000 milisekon (2 sekon).

switch(dataTemp)
{
case 0: PORTC=0b11000000;break;
.....
case 9: PORTC=0b10010000;break;
default:PORTC=0xff;
}
Switch case untuk pemilihan data yang terdapat pada variabel dataTemp, sama halnya
dengan pernyataan if. Jika kita memilih case 0 maka yang akan muncul di 7segmen
adalah angka 0. Jika case 1 yang akan muncul angka 1 begitu seterusnya sampai angka 9.
Dan kondisi awal semua led akan mati.

4. Simulasi masing-masing percobaan
Simulasi proteus percobaan konversi data decimal ke 7 segmen .



Simulasi proteus percobaan menampilkan data secara berurutan mulai dari 0 sd 9,
dengan waktu tunda 1 detik untuk setiap kenaikan angka .

Simulasi proteus tampilan data urutan ke 0


Simulasi proteus tampilan data urutan ke 9.




Simulasi proteus percobaan mensimulasikan setting data dengan display pada 7
segment.

You might also like