ADC
Tujuan praktikum :
..................................................................................................................................................................
..................................................................................................................................................................
..................................................................................................................................................................
Peralatan :
..................................................................................................................................................................
..................................................................................................................................................................
Praktikum
1. Sebutkan Langkah – langkah Konfigurasi ADC pada Mini32 Beserta
Gambarnya.
2. Jelaskan fungsi ADC
menjembatani pemrosesan data berupa sinyal analog oleh sistem digital
pengatur proses industri
rangkaian pengukuran atau pengujian
komunikasi digital
Program :
#include <mega32.h>
#include <delay.h>
#include <stdio.h>
#include <alcd.h>
#define ADC_VREF_TYPE 0x00
char screen[32];
unsigned int read_adc(unsigned char adc_input)
{
ADMUX=adc_input | (ADC_VREF_TYPE & 0xff);
delay_us(10);
ADCSRA|=0x40;
while ((ADCSRA & 0x10)==0);
ADCSRA|=0x10;
return ADCW;
}
void main(void)
{
ADMUX=ADC_VREF_TYPE & 0xff;
lcd_init(16);
while (1)
{
lcd_clear();
lcd_gotoxy(0,0);
sprintf(screen,"%d",read_adc(0));
lcd_puts(screen);
delay_ms(50);
}
}
4. Jelaskan Fungsi Rangkain Proteus Di Bawah Ini Dan Lengkapi
Perintah Programnya serta tuliskan apa saja bahan yang perlukan
untuk membuat rangkain di bawah ini pada Software Proteus :
Bahan :
ATMEGA32
LM016L
LM35
POT-HG
OSCILLOSCOPE
GROUND
POWER
#include <mega32.h>
#include <lcd.h>
#include <delay.h>
#include <stdlib.h>
#asm
.equ __lcd_port=0x15 //PORTC
#endasm
#define ADC_VREF_TYPE 0x40
unsigned int read_adc(unsigned char adc_input) {
ADMUX=adc_input | (ADC_VREF_TYPE & 0xff);
delay_us(10);
ADCSRA|=0x40;
while ((ADCSRA & 0x10)==0);
ADCSRA|=0x10;
return ADCW;
}
int data;
float suhu;
char temp[8];
void baca_suhu() {
data = read_adc(1);
}
void hitung_suhu() {
suhu = (float)(data)/2;
}
void main(void) {
PORTD.0=1; DDRD.0=1;
ACSR=0x80;
SFIOR=0x00;
ADMUX=ADC_VREF_TYPE & 0xff;
ADCSRA=0x84;
lcd_init(16);
lcd_clear();
lcd_gotoxy(2, 0);
lcd_putsf("Data ADC");
while (1) {
if(suhu <= 20) {
PORTD.0=1;
} else {
PORTD.0=0;
}
baca_suhu();
hitung_suhu();
ftoa(suhu,1,temp);
lcd_gotoxy(0,1);
lcd_puts(temp);
lcd_gotoxy(5,1);
lcd_putchar(0xdf);
lcd_putsf("C");
}
}