Post on 14-Oct-2015
5/24/2018 Gambar Rangkaian Dan Penjelasan Percobaan Display 7 Segment
http:///reader/full/gambar-rangkaian-dan-penjelasan-percobaan-display-7-segmen
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
5/24/2018 Gambar Rangkaian Dan Penjelasan Percobaan Display 7 Segment
http:///reader/full/gambar-rangkaian-dan-penjelasan-percobaan-display-7-segmen
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 satudisplay yang akan dihidupkan. Agar display tampak nyala secara bersamaan maka
ketiga display tersebut harus dihidupkan secara bergantian dengan waktu tunda
tertentu.
5/24/2018 Gambar Rangkaian Dan Penjelasan Percobaan Display 7 Segment
http:///reader/full/gambar-rangkaian-dan-penjelasan-percobaan-display-7-segmen
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
5/24/2018 Gambar Rangkaian Dan Penjelasan Percobaan Display 7 Segment
http:///reader/full/gambar-rangkaian-dan-penjelasan-percobaan-display-7-segmen
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
convert();
data=data+1;
data=0;
5/24/2018 Gambar Rangkaian Dan Penjelasan Percobaan Display 7 Segment
http:///reader/full/gambar-rangkaian-dan-penjelasan-percobaan-display-7-segmen
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;
5/24/2018 Gambar Rangkaian Dan Penjelasan Percobaan Display 7 Segment
http:///reader/full/gambar-rangkaian-dan-penjelasan-percobaan-display-7-segmen
3. Penjelasan kode program masing-masing percobaan :
Perintah untuk mencetak sebuah karakter ke 7 segmen, mengkonversikan data decimal
ke 7 segmen.
#include
#includeUnsigned 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 Menginputkan library mega8535 agar perintah-perintah yang akan kita gunakan dapat
dibaca oleh program.
#include
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.
5/24/2018 Gambar Rangkaian Dan Penjelasan Percobaan Display 7 Segment
http:///reader/full/gambar-rangkaian-dan-penjelasan-percobaan-display-7-segmen
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 untukmenyalakan 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
#include
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;
5/24/2018 Gambar Rangkaian Dan Penjelasan Percobaan Display 7 Segment
http:///reader/full/gambar-rangkaian-dan-penjelasan-percobaan-display-7-segmen
while(1)
{
convert();
data=data+1;
if(data==10)
{data=0;
};
Delay_ms(1000);
}
}
#include
Menginputkan library mega8535 agar perintah-perintah yang akan kita gunakan dapat
dibaca oleh program.
#include
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).
{
5/24/2018 Gambar Rangkaian Dan Penjelasan Percobaan Display 7 Segment
http:///reader/full/gambar-rangkaian-dan-penjelasan-percobaan-display-7-segmen
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
#include
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
5/24/2018 Gambar Rangkaian Dan Penjelasan Percobaan Display 7 Segment
http:///reader/full/gambar-rangkaian-dan-penjelasan-percobaan-display-7-segmen
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
Menginputkan library mega8535 agar perintah-perintah yang akan kita gunakan dapat
dibaca program.
#include
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)
5/24/2018 Gambar Rangkaian Dan Penjelasan Percobaan Display 7 Segment
http:///reader/full/gambar-rangkaian-dan-penjelasan-percobaan-display-7-segmen
{
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)
{
5/24/2018 Gambar Rangkaian Dan Penjelasan Percobaan Display 7 Segment
http:///reader/full/gambar-rangkaian-dan-penjelasan-percobaan-display-7-segmen
case 0: PORTC=0b11000000;break;
.....
case 9: PORTC=0b10010000;break;
default:PORTC=0xff;
}
Switch case untuk pemilihan data yang terdapat pada variabel dataTemp, sama halnyadengan 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
5/24/2018 Gambar Rangkaian Dan Penjelasan Percobaan Display 7 Segment
http:///reader/full/gambar-rangkaian-dan-penjelasan-percobaan-display-7-segmen
Simulasi proteus tampilan data urutan ke 9.
Simulasi proteus percobaan mensimulasikan setting data dengan display pada 7
segment.