16
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

Gambar Rangkaian Dan Penjelasan Percobaan Display 7 Segment

Embed Size (px)

DESCRIPTION

sae mawon

Citation preview

Page 1: Gambar Rangkaian Dan Penjelasan Percobaan Display 7 Segment

LAPORANPRAKTIKUM MIKROKONTROLLER

PERCOBAAN DISPLAY 7 SEGMEN

Nama : Dwinta MussetyarsihNim : P27838012044Kelas : 2A(3,4)

LABORATORIUM MIKROKONTROLLERJURUSAN TEKNIK ELEKTROMEDIK

POLTEKKES KEMENKES SURABAYA2013

Page 2: Gambar Rangkaian Dan Penjelasan Percobaan Display 7 Segment

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.

Page 3: Gambar Rangkaian Dan Penjelasan Percobaan Display 7 Segment

2. Flow Chart masing-masing percobaan

Flowchart Percobaan display 7 segmen

Start

Inisialisasi PORTC,PORTD

Case

END

Case 3

Case

Case 1

Case

Case

Case

Case

Case

Case

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

Page 4: Gambar Rangkaian Dan Penjelasan Percobaan Display 7 Segment

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==10convert(); data=data+1;

data=0;

Flowchart Percobaan Display 7 segmen increment data 0 sd 9

Yes

Page 5: Gambar Rangkaian Dan Penjelasan Percobaan Display 7 Segment

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;

Flowchart Percobaan Display 7 Segmen dengan Simulasi Setting data

No

Page 6: Gambar Rangkaian Dan Penjelasan Percobaan Display 7 Segment

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

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

Page 7: Gambar Rangkaian Dan Penjelasan Percobaan Display 7 Segment

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 awalPORTC 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 fungsidelay 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;

Page 8: Gambar Rangkaian Dan Penjelasan Percobaan Display 7 Segment

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

{

Page 9: Gambar Rangkaian Dan Penjelasan Percobaan Display 7 Segment

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

Page 10: Gambar Rangkaian Dan Penjelasan Percobaan Display 7 Segment

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)

Page 11: Gambar Rangkaian Dan Penjelasan Percobaan Display 7 Segment

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

Page 12: Gambar Rangkaian Dan Penjelasan Percobaan Display 7 Segment

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

Page 13: Gambar Rangkaian Dan Penjelasan Percobaan Display 7 Segment

Simulasi proteus tampilan data urutan ke 9.

Simulasi proteus percobaan mensimulasikan setting data dengan display pada 7

segment.