Adc Display Led

20
Nama : Dianesty Trisuciyani NIM : P27838012002 Kelas: 2A, 1-2 LABORATORIUM MIKROKONTROLLER JURUSAN TEKNIK ELEKTROMEDIK LAPORAN PRAKTIKUM MIKROKONTROLLER PERCOBAAN LED DAN SW PUSH BUTTON

description

baca nih

Transcript of Adc Display Led

Page 1: Adc Display Led

Nama : Dianesty Trisuciyani

NIM : P27838012002

Kelas: 2A, 1-2

LABORATORIUM MIKROKONTROLLER

JURUSAN TEKNIK ELEKTROMEDIK

POLTEKKES KEMENKES SURABAYA

2013

LAPORANPRAKTIKUM MIKROKONTROLLER

PERCOBAAN LED DAN SW PUSH BUTTON

Page 2: Adc Display Led

PERCOBAAN 5

ANALOG TO DIGITAL CONVERTER

1. GAMBAR RANGKAIAN DAN PENJELASAN

PENJELASAN RANGKAIAN

Rangkaian di atas merupakan rangkaian ADC. Pada bit ADC di inputkan tegangan. Tegangan yang masuk melalui bit ADC ini diatur dengan variabel resistor. Adc ini berfungsi untuk merubah tegangan yang sifatya analog ke digital untuk dioutputkan melalui led, 7segment, atau display.

Output led

Page 3: Adc Display Led

Jika ADC di outputkan pada led maka katoda led dihubungkan pada port c (0)-port c (7). Sedangkan anoda mendapatkan VCC. Untuk menyalakan led tersebut output port c harus berlogika 0. Jika portc berlogika 1 maka led akan mati.

Output 7 segment

Jika adc dioutputkan pada 7segment, Rangkaian Seven segment disini terlebih dahulu dihubungkan dengan 74LS138 sebagai IC dekoder. Pada ic ini PD5,PD6,PD7 berfungsi untuk mengaktikan Y0-Y7. Ic ini digunakan karena dapat meminimalisir jumlah portD yang diperlukan jika 7segment yang di pakai jumlahnya banyak. Sedanhkan untuk portC di hubungkan dengan 7segment. Adc di sini langsung di outputkan pada portc dengan display 7segment.

Output lcd

Untuk output lcd sama seperti utput yang lain yaitu dihubungkan dengan portc namun display yang dipakai adalah lcd.

Page 4: Adc Display Led

Start

InisialisasiADC, PORTC

PORTC = read_adc(0); delay_ms(100);

End

2. Flowchart tiap Rangkaian1. ADC display LED

Page 5: Adc Display Led

Start

InisialisasiADC, 7segment, PORTC

data = baca_adc(0); sat = data % 10; pul = data / 10;pul = pul % 10; rat = data / 100; rat = rat % 10; rib = data / 1000; ubah=sat; ubah_ke_format7segment(); sat=ubah;// ubah=pul; ubah_ke_format7segment(); pul=ubah; // ubah=rat; ubah_ke_format7segment(); rat=ubah; // ubah=rib; ubah_ke_format7segment(); rib=ubah; // tampil_7segment();

End

2. PercobaanADC Display7Segmen

Page 6: Adc Display Led

Start

InisialisasiADC, 7segment, PORTC

suhu = (float)(baca_adc(0)*4.8875)+1; rib= suhu/1000; // rat= suhu%1000; rat= rat/100; // pul= suhu%1000; pul= pul%100; pul= pul/10; // sat= suhu%1000; sat= sat%100; sat= sat%10;ubah=sat; ubah_ke_format7segment(); sat=ubah;ubah=pul; ubah_ke_format7segment(); pul=ubah;ubah=rat; ubah_ke_format7segment(); rat=ubah;ubah=rib; ubah_ke_format7segment(); rib=ubah;tampil_7segment();

End

3. Simulasi konversidataADC keTegangan0.000sd5.000V

Page 7: Adc Display Led

4. SimulasiThermometerdengandisplayLCD 0.000sd100.000oC

Start

InisialisasiADC, 7segment, PORTC

SUHU= read_adc(0); suhu_c=(float)SUHU*100/1023; lcd_gotoxy(0,0); ftoa(suhu_c,3,temp);lcd_gotoxy(0,1) ; lcd_puts(temp); lcd_gotoxy(7,1) ; lcd_putchar(0xdf); lcd_putsf("C"); delay_ms(100);

End

Page 8: Adc Display Led

3. Listing Program1. PercobaanADC display LED

Coding:

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

unsignedintread_adc(unsignedcharadc_input){ ADMUX=adc_input|(ADC_VREF_TYPE&0xff);delay_us(10); ADCSRA|=0x40; while((ADCSRA&0x10)==0);ADCSRA|=0x10; returnADCW;}voidmain(void){ DDRC = 0xFF; ADMUX=ADC_VREF_TYPE&0xff; ADCSRA=0xA3; SFIOR&=0x0F;while(1)

{PORTC = read_adc(0);// pembacaan data adc pada channel 0 yang ditampilkan ke PORTCdelay_ms(100);// lamanya waktu scanning perintah}

}2. PercobaanADC Display7Segmen

Coding:

#include<mega8535.h>#include<delay.h>#definemode_ADC 0x00 intubah;intsat,pul,rat,rib;unsignedintdata;

Page 9: Adc Display Led

unsignedintbaca_adc(unsignedcharpin_adc){ADMUX =pin_adc|mode_ADC; ADCSRA

|=0x40;while ((ADCSRA&0x10)==0);ADCSRA|= 0x10;returnADCW;}

voidubah_ke_format7segment(){

if(ubah==0){ubah=0xc0;}

if(ubah==1){ubah=0xf9;}

if(ubah==2){ubah=0xa4;}

if(ubah==3){ubah=0xb0;}

if(ubah==4){ubah=0x99;}

if(ubah==5){ubah=0x92;}

if(ubah==6){ubah=0x82;}

if(ubah==7){ubah=0xf8;}

if(ubah==8){ubah=0x80;}

if(ubah==9){ubah=0x90;}}voidtampil_7segment(){

PORTC=rib;//mengirimkandatakedigit5PORTD.5=0;//pada PD5 berlogika 0.

PORTD.6=0;//pada PD6 berlogika 0

PORTD.7=0; //pada PD7 berlogika 0

delay_ms(20);PORTC=rat;//mengirimkandatakedigit6PORTD.5=1; //pada PD5 berlogika 1

PORTD.6=0; //pada PD6 berlogika 0

PORTD.7=0; //pada PD7 berlogika 0

delay_ms(20);PORTC=pul;//mengirimkandatakedigit7

Page 10: Adc Display Led

Mengkonversi sat sesuai list pada void ubah_ke_format7segment();

Mengkonversi pul sesuai list pada void ubah_ke_format7segment();

PORTD.5=0;//pada PD5 berlogika 0

PORTD.6=1;//pada PD6 berlogika 1

PORTD.7=0;//pada PD7 berlogika 0

delay_ms(20);PORTC=sat;//mengirimkandatakedigit8PORTD.5=1;//pada PD5 berlogika 1

PORTD.6=1;//pada PD6 berlogika 1

PORTD.7=0;//pada PD7 berlogika 0

delay_ms(20);

}voidmain(void){DDRD = 0XFF; DDRC = 0xFF; ADMUX=mode_ADC; ADCSRA=0x85;while(1){

data=baca_adc(0); //pembacaan data adc pada channel 0 oleh “data”sat=data%10;// sat = sisa dari data dibagi 10

pul=data/10; //pul = data yang habis dibagi 10

pul=pul%10; // pul = sisa dari pul dibagi 10

rat=data/100; // rat = data yang habis dibagi 100

rat=rat%10; // rat = sisa dari rat dibagi 10rib=data/1000; // rib = data yang habis dibagi 1000

ubah=sat;ubah_ke_format7segment();sat=ubah;

ubah=pul;

ubah_ke_format7segment();

pul=ubah;

Page 11: Adc Display Led

Mengkonversi rat sesuai list pada void ubah_ke_format7segment();

Mengkonversi rib sesuai list pada void ubah_ke_format7segment();

ubah=rat;ubah_ke_format7segment();rat=ubah;

ubah=rib;ubah_ke_format7segment();rib=ubah;

tampil_7segment(); // perintah untuk mengambil list di void tampil_7segment();

} }

3. Simulasi konversidataADC keTegangan0.000sd5.000VCoding:

#include<mega8535.h>#include<delay.h>#definemode_ADC 0x00unsignedint ubah,sat,pul,rat,rib,suhu;

unsignedintbaca_adc(unsignedcharpin_adc){ ADMUX =pin_adc|mode_ADC; ADCSRA|=0x40; while ((ADCSRA&0x10)==0); ADCSRA|= 0x10; returnADCW;}

voidubah_ke_format7segment(){

if(ubah==0){ubah=0xc0;} if(ubah==1){ubah=0xf9;} if(ubah==2){ubah=0xa4;} if(ubah==3){ubah=0xb0;} if(ubah==4)

Page 12: Adc Display Led

{ubah=0x99;}if(ubah==5){ubah=0x92;} if(ubah==6){ubah=0x82;} if(ubah==7){ubah=0xf8;} if(ubah==8){ubah=0x80;} if(ubah==9){ubah=0x90;}

}

voidtampil_7segment(){

PORTC=rib;//mengirimkandatakedigit5PORTD.5=0; PORTD.6=0; delay_ms(10);

PORTC=rat;//mengirimkandatakedigit6PORTD.5=1; PORTD.6=0; delay_ms(10);

PORTC=pul;//mengirimkandatakedigit7P

Page 13: Adc Display Led

ORTD.5=0; PORTD.6=1; delay_ms(10);

PORTC=sat;//mengirimkandatakedigit8PORTD.5=1;PORTD.6=1;delay_ms(10);//lamanyawaktuscanningditentukanolehintruksidelay

}

voidmain(void){

DDRD = 0XFF; DDRC=0xFF;

ADMUX=mode_ADC; ADCSRA=0x85;

while(1){suhu=(float)(baca_adc(0)*4.8875)+1; //pembacaan data adc pada channel 0 yang dikalikan 4.8875 kemudian ditambah 1 dengan tipe data (bilangan) decimal oleh “suhu”

rib= suhu/1000;// rib = suhu yang habis dibagi 1000

rat= suhu%1000; // rat = sisa dari suhu dibagi 1000rat= rat/100; // rat = rat yang habis dibagi 100

pul=suhu%1000; // pul = sisa dari suhu dibagi 1000pul=pul%100; // pul = sisa dari pul dibagi 100

Page 14: Adc Display Led

Mengkonversi sat sesuai list pada void ubah_ke_format7segment();

Mengkonversi pul sesuai list pada void ubah_ke_format7segment();

Mengkonversi rat sesuai list pada void ubah_ke_format7segment();

Mengkonversi rib sesuai list pada void ubah_ke_format7segment();

pul=pul/10; //pul = pul yang habis dibagi 10

sat= suhu%1000; pul = sisa dari suhu dibagi 1000sat= sat%100; sat = sat dari pul dibagi 100sat= sat%10;sat = sat yang habis dibagi 10

ubah=sat; ubah_ke_format7segment(); sat=ubah;

ubah=pul; ubah_ke_format7segment(); pul=ubah;

ubah=rat; ubah_ke_format7segment(); rat=ubah;

ubah=rib; ubah_ke_format7segment(); rib=ubah;

tampil_7segment();// perintah untuk mengambil list di void tampil_7segment();

}}

4. SimulasiThermometerdengandisplayLCD 0.000sd100.000oC

Coding:

#asm.equ

lcd_port=0x15;POR

TC#endasm#defineADC_VREF_TYPE0x00

Page 15: Adc Display Led

unsignedintread_adc(unsignedcharadc_input){

ADMUX=adc_input|(ADC_VREF_TYPE&0xff);voltage delay_us(10);ADCSRA|=0x40;complete while((ADCSRA&0x10)==0); ADCSRA|=0x10;returnADCW;

}

voidmain(void){

SFIOR=0x00;ADMUX=ADC_VREF_TYPE&0xff; ADCSRA=0xA3;SFIOR&=0x0F;

initialization lcd_init(16);lcd_clear(); lcd_gotoxy(0,0); lcd_putsf("DISP.THERMOMETER");while(1){SUHU=read_adc(0); //pembacaan data adc channel 0 oleh “SUHU”suhu_c=(float)SUHU*100/1023;//rumusubahkederajatcelcius lcd_gotoxy(0,0);ftoa(suhu_c,3,temp);//floattoascii (dari decimal berubah ke ascii)

lcd_gotoxy(0,1); //menentukan koordinat kolom 0, baris 1lcd_puts(temp); //pengambilan/peletakkan data oleh lcd dari templatelcd_gotoxy(7,1); //menentukan koordinat kolom 7, baris 1lcd_putchar(0xdf);//menampilkankarakterderajat lcd_putsf("C");delay_ms(100); //lamanya waktu scanning perintah

};}}

Page 16: Adc Display Led

Gambar Simulasi pada Proteus

ADC DISPLAY LED

Page 17: Adc Display Led

ADC DISPLAY 7 SEGMEN

Page 18: Adc Display Led

SIMULASI KONVERSI DATA ADC KE TEGANGAN 0.000 SD 5.000V

Page 19: Adc Display Led

SIMULASI THERMOMETER DENGAN DISPLAY LCD 0.000SD 100.000OC