nur 016

16
Nama : Nur Hudatu Munawaroh NIM : P27838012016 Kelas: 2A,1-2 LABORATORIUM MIKROKONTROLLER JURUSAN TEKNIK ELEKTROMEDIK POLTEKKES KEMENKES SURABAYA 2013 LAPORAN PRAKTIKUM MIKROKONTROLLER ANALOG TO DIGITAL CONVERTER

Upload: nur-hudatu-munawaroh

Post on 07-Feb-2016

16 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: nur 016

Nama : Nur Hudatu Munawaroh

NIM : P27838012016

Kelas: 2A,1-2

LABORATORIUM MIKROKONTROLLER

JURUSAN TEKNIK ELEKTROMEDIK

POLTEKKES KEMENKES SURABAYA

2013

LAPORAN PRAKTIKUM MIKROKONTROLLER

ANALOG TO DIGITAL CONVERTER

Page 2: nur 016

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,maupun display.

Output 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.

Page 3: nur 016

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: nur 016

//>>> portc akan menampilkanpembacaan dari tegangan yang masuk di adc nol dengan delay selama 100ms

PENJELASAN PROGRAM DARI MASING-MASING PERCOBAAN

a. Percobaan ADC display LED

#include <mega8535.h> //>>> menginputkan library dari mikrokontroller yang kita gunakan ,disini menggunakan Atmega 8535

#include <delay.h> //>>> menginputkan library delay#define ADC_VREF_TYPE 0x00 //>>>type diatas menggunnakan Vref…artinya

kita bisa memasukkan tegangan Vref yang diinginkan

unsigned int read_adc(unsigned char adc_input) //>>> mendeklarasikan variabel data read_adc

{ADMUX=adc_input | (ADC_VREF_TYPE & 0xff);delay_us(10);ADCSRA|=0x40;while ((ADCSRA & 0x10)==0);ADCSRA|=0x10;return ADCW;}

void main(void){DDRC = 0xFF;ADMUX=ADC_VREF_TYPE & 0xff;ADCSRA=0xA3;SFIOR&=0x0F;

while(1){PORTC = read_adc(0);Delay_ms(100);

//>>>fungsi program ini adalah melakukan pembacaan ADC berdasarkan pin masukan ADC

//>>>untuk memangil inisialisasi ADC

Page 5: nur 016

b. Percobaan ADC Display 7 Segmen

#include <mega8535.h>#include <delay.h>#define mode_ADC 0x00int ubah;int sat,pul,rat,rib;unsigned int data;unsigned int baca_adc (unsigned char pin_adc)

//>>> menginputkan library dari mikrokontroler yang digunakan yaitu 8535

//>>>meniputkan ibrar delay

//>>>mendeklarasikan variabel data

ADMUX =pin_adc | mode_ADC;ADCSRA |=0x40;while ((ADCSRA & 0x10)==0);ADCSRA |= 0x10;return ADCW;

//>>>fungsi program ini adalah melakukan pembacaan ADC berdasarkan pin masukan ADC

void ubah_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;}}

//fungsi untuk mengubah kedalam format 7segment

Page 6: nur 016

PORTC=rib;//mengirimkan data kedigit5PORTD.5=0;PORTD.6=0;PORTD.7=0;delay_ms(20);PORTC=rat;//mengirimkan data kedigit6PORTD.5=1;PORTD.6=0;PORTD.7=0;delay_ms(20);PORTC=pul;//mengirimkan data kedigit7PORTD.5=0;PORTD.6=1;PORTD.7=0delay_ms(20);PORTC=sat;//mengirimkan data kedigit8PORTD.5=1;PORTD.6=1;PORTD.7=0;delay_ms(20);//lamanya waktu scanning ditentukan delay}

//>>>Menentukan posisi 7segmen yang menyala. Disini untuk bagian ribuan akan ditampilkan pada Y0. Untuk bagian ratusan akan ditampilakn pada Y1. Untuk bagian puluhan akan ditampilkan pada Y2. Untuk bagian puluhan akan ditampilkan pada Y3. Untuk bagian satuan akan ditampilkan pada Y4. Semuanya akan ditampilakan dengan delay 20ms.

void main(void){DDRD = 0XFF;DDRC = 0xFF;ADMUX=mode_ADC;ADCSRA=0x85

//>>>untuk memanggil inisialisasi adc

Page 7: nur 016

c. Simulasi konversi data ADC ke Tegangan 0.000 sd 5.000 V

{data = baca_adc(0);sat = data % 10;// sat = sisa dari data dibagi 10pul = data / 10;

pul = pul % 10;rat = data / 100;rat = rat % 10;rib = data / 1000;

//>>>data yang diambil dari pembacaan adc 0

//>>> data satuan merupakan sisa dari hasil dari data / 10

//>>>data puluhan adaah hasil dari data / 10

//>>> data puluhan merupakan hasil dari data /10

//>>>data puluhan adalah sisa dari data / 10

//>>> data ratusan merupakan hasil dari data /10

//>>>data ratusan adalah sisa dari data / 10

//>>> data ribuan merupakan hasil dari data /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();

//>>>mengubah data ke format 7segment dan menampilkanya ke 7segment

#include <mega8535.h>#include <delay.h>#define mode_ADC 0x00

//>>>berfungsi untuk menginputkan librar yang digunakan. Disini kita menggunakan atmega8535 dan library delay

unsigned int ubah,sat,pul,rat,rib,suhu;unsigned int baca_adc (unsigned char pin_adc)//

//>>>mendeklarasikan variabel data ubah,satuan,puluhan,ratusan,ribuan,suhu,baca_adc.

Page 8: nur 016

ADMUX =pin_adc | mode_ADC;ADCSRA |=0x40;while ((ADCSRA & 0x10)==0);ADCSRA |= 0x10;return ADCW;

//>>>untuk memanggil inisialisasi adc

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;

//>>>suhu diperoleh dari pembacaan tegangan yang masuk dari adc 0 x 4.8875 +1

//>>> data ribuan merupakan hasil dari suhu / 1000

//>>>data ratusan adalah sisa dari suhu / 1000

//>>> data ratusan merupakan hasil dari suhu/100

//>>>data puluhan adalah sisa dari suhu / 10 0

//>>> data puluhan merupakan hasil dari suhu /10

//>>>data satuan adalah sisa dari suhu / 10

//>>> data satuan merupakan hasil dari suhu /100

//>>>data puluhan adalah sisa dari data / 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();

//>>>mengubah data ke format 7segment dan menampilkanya ke 7segment

Page 9: nur 016

d. Simulasi Thermometer dengan display LCD 0.000 sd 100.000 oC

#include <stdlib.h>#include <lcd.h>#include <delay.h>#include <mega8535.h>

//>>>meninputkan ibrary yang digunakan seperti atmeg 8535, delay,dan lcd

unsigned int SUHU;char temp[10];float suhu_c;

//>>>mendeklarasikan variabel data suhu

ADMUX=adc_input | (ADC_VREF_TYPE & 0xff);// Delay needed for the stabilization of the ADC input voltagedelay_us(10);// Start the AD conversionADCSRA|=0x40;// Wait for the AD conversion to completewhile ((ADCSRA & 0x10)==0);ADCSRA|=0x10;return ADCW;

//>>>memanggil inisialisasi adc

lcd_init(16);lcd_clear();lcd_gotoxy(0,0);lcd_putsf("DISP.THERMOMETER");

//>>>menggunakan lcd karakter 16

//>>>letak karakter yang akan ditampilkan pada koordinat (0,0);

//>>>menampilkan tulisan DISP. THERMOMETER pada lcd

SUHU= read_adc(0);suhu_c=(float)SUHU*100/1023;//rumus ubah ke derajat celciuslcd_gotoxy(0,0);ftoa(suhu_c,3,temp);//float to ascii

//>.>>suhu di dapata dari pembacaan tegangan yang masuk dari adc 0

//>>suhu dapat diperoleh dengan rumus untuk menguah ke derajat celcius SUHU*100/1023

//>>>karakter akan di tampilkan pada koordinat (0,0)

//>>>suhu yang diperoleh akan diubah ke bentuk ascii

Page 10: nur 016

FLOWCHART DARI MASING-MASING PROGRAM

a. Percobaan adc dengan led

lcd_gotoxy(0,1) ;lcd_puts(temp);lcd_gotoxy(7,1) ;lcd_putchar(0xdf);//menampilkan karakter derajatlcd_putsf("C");delay_ms(100);

//>>>suhu atau karakter akan ditampilkan pada koordinat (0,0)

//>>>suhu yang diperoleh dari rumus dan telah di ubah ke ascii akan di tampilkan di lcd

//>>> akan menampilkan karakter derajat

//>>>menampilkan tulisan C pada lcd

//>>>memberikan waktu delay selama 100 ms

Start

InisialisasiADC, PORTC

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

End

Page 11: nur 016

b. Percobaan adc dengan display 7segment

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

Page 12: nur 016

c. SIMULASI KONVERSI DATA ADC KE TEGANGAN 0.000 SD 5.0

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

Page 13: nur 016

d. SIMULASI THERMOMETER DENGAN DISPLAY LCD 0.000SD 100.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 14: nur 016

PROTEUS DARI MASING-MASING PROGRAM

e. Percobaan dengan led

Page 15: nur 016

f. Percobaan adc dengan display 7segment

g. SIMULASI KONVERSI DATA ADC KE TEGANGAN 0.000 SD 5.0

Page 16: nur 016

h. SIMULASI THERMOMETER DENGAN DISPLAY LCD 0.000SD 100.000OC