Upload
ainul-istiadzah
View
37
Download
0
Embed Size (px)
DESCRIPTION
sae mawon
Citation preview
LAPORANPRAKTIKUM MIKROKONTROLLER
PERCOBAAN DISPLAY 7 SEGMEN
Nama : Dwinta MussetyarsihNim : P27838012044Kelas : 2A(3,4)
LABORATORIUM MIKROKONTROLLERJURUSAN TEKNIK ELEKTROMEDIK
POLTEKKES KEMENKES SURABAYA2013
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
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
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
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
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.
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;
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).
{
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.