You are on page 1of 6

INTERNAL ADC

Stefanus Suryo Sumarno


731103014
PERCOBAAN 1
Menampilkan data adc dan ditampilkan datanya ke led 8 bit.
1. Program
#include <mega128.h>
#include <delay.h>
#define ADC_VREF_TYPE 0x20
// Read the 8 most significant bits
unsigned char read_adc(unsigned char adc_input)
{
ADMUX=adc_input | (ADC_VREF_TYPE & 0xff);
// Delay needed for the stabilization of the ADC input voltage
delay_us(10);
// Start the AD conversion
ADCSRA|=0x40;
while ((ADCSRA & 0x10)==0);
ADCSRA|=0x10;
return ADCH;
}
void main(void)
{
int a;
DDRD=0xFF;
ADMUX=ADC_VREF_TYPE & 0xff;
ADCSRA=0x83;
while (1)
{
a=read_adc(0);
PORTD=a;
};
}

11
12
13
14
15
16
17
18
19
20

2. Simulasi Proteus
U2
LED-BARGRAPH-RED

20
24
23
51
50
49
48
47
46
45
44

35
36
37
38
39
40
41
42
62
64

XTAL1
XTAL2
PA0/AD0
PA1/AD1
PA2/AD2
PA3/AD3
PA4/AD4
PA5/AD5
PA6/AD6
PA7/AD7
PB0/SS
PB1/SCK
PB2/MOSI
PB3/MISO
PB4/OC0
PB5/OC1A
PB6/OC1B
PB7/OC2/OC1C
PC0/A8
PC1/A9
PC2/A10
PC3/A11
PC4/A12
PC5/A13
PC6/A14
PC7/A15
AREF
AVCC

PD0/SCL/INT0
PD1/SDA/INT1
PD2/RXD1/INT2
PD3/TXD1/INT3
PD4/ICP1
PD5/XCK1
PD6/T1
PD7/T2
PE0/RXD0/PDI
PE1/TXD0/PDO
PE2/XCK0/AIN0
PE3/OC3A/AIN1
PE4/OC3B/INT4
PE5/OC3C/INT5
PE6/T3/INT6
PE7/ICP3/INT7
PF0/ADC0
PF1/ADC1
PF2/ADC2
PF3/ADC3
PF4/ADC4/TCK
PF5/ADC5/TMS
PF6/ADC6/TDO
PF7/ADC7/TDI
PG0/WR
PG1/RD
PG2/ALE
PG3/TOSC2
PG4/TOSC1
PEN

25
26
27
28
29
30
31
32
2
3
4
5
6
7
8
9
61
60
59
58
57
56
55
54

Volts

+2.75

RV1
55%

10
11
12
13
14
15
16
17

RESET

10
9
8
7
6
5
4
3
2
1

U1

1k

33
34
43
18
19
1

ATMEGA128

3. DATA TABEL
No
1
2
3
4
5
6
7
8
9
10
11
12

Volt
0
0.1
0.5
1
1.5
2
2.5
3
3.5
4
4.5
5

Data Biner
0000 0000
0000 0101
0001 1001
0011 0011
0100 1100
0110 0110
1000 0000
1001 1001
101 10011
1100 1100
1110 0110
1111 1111

Data Desimal
0
5
25
51
76
102
128
153
179
204
230
255

PERCOBAAN 2
Menampilkan data adc dan ditampilkan datanya ke Display LCD dalam bentuk BAR
1. PROGRAM
#include <mega128.h>
// Alphanumeric LCD Module functions
#asm
.equ __lcd_port=0x1B ;PORTA
#endasm
#include <lcd.h>
#include <delay.h>
#define ADC_VREF_TYPE 0x20
unsigned char read_adc(unsigned char adc_input)
{
ADMUX=adc_input | (ADC_VREF_TYPE & 0xff);
// Delay needed for the stabilization of the ADC input voltage
delay_us(10);
// Start the AD conversion
ADCSRA|=0x40;
// Wait for the AD conversion to complete
while ((ADCSRA & 0x10)==0);
ADCSRA|=0x10;
return ADCH;
}
void main(void)
{
int a,n,j;
DDRA=0XFF;
DDRD=0XFF;
ADMUX=ADC_VREF_TYPE & 0xff;
ADCSRA=0x83;
// LCD module initialization
lcd_init(16);
while (1)
{
a=read_adc(0);
PORTD=a;
n=a/(255/14);
lcd_clear();

lcd_putchar('E');
lcd_gotoxy(15,0);
lcd_putchar('F');
lcd_gotoxy(1,0);
for(j=1;j<=n;j++)
{
lcd_putchar(255);
}
delay_ms(300);
};
}
2. SIMULASI
PROTEUS
LCD1

D0
D1
D2
D3
D4
D5
D6
D7

U2
LED-BARGRAPH-RED

20
24
23
51
50
49
48
47
46
45
44

35
36
37
38
39
40
41
42
62
64

XTAL1
XTAL2
PA0/AD0
PA1/AD1
PA2/AD2
PA3/AD3
PA4/AD4
PA5/AD5
PA6/AD6
PA7/AD7
PB0/SS
PB1/SCK
PB2/MOSI
PB3/MISO
PB4/OC0
PB5/OC1A
PB6/OC1B
PB7/OC2/OC1C
PC0/A8
PC1/A9
PC2/A10
PC3/A11
PC4/A12
PC5/A13
PC6/A14
PC7/A15
AREF
AVCC
ATMEGA128

PD0/SCL/INT0
PD1/SDA/INT1
PD2/RXD1/INT2
PD3/TXD1/INT3
PD4/ICP1
PD5/XCK1
PD6/T1
PD7/T2
PE0/RXD0/PDI
PE1/TXD0/PDO
PE2/XCK0/AIN0
PE3/OC3A/AIN1
PE4/OC3B/INT4
PE5/OC3C/INT5
PE6/T3/INT6
PE7/ICP3/INT7
PF0/ADC0
PF1/ADC1
PF2/ADC2
PF3/ADC3
PF4/ADC4/TCK
PF5/ADC5/TMS
PF6/ADC6/TDO
PF7/ADC7/TDI
PG0/WR
PG1/RD
PG2/ALE
PG3/TOSC2
PG4/TOSC1
PEN

25
26
27
28
29
30
31
32
2
3
4
5
6
7
8
9
61
60
59
58
57
56
55
54
33
34
43
18
19
1

Volts

+1.75

RV1
35%

10
11
12
13
14
15
16
17

RESET

10
9
8
7
6
5
4
3
2
1

U1

7
8
9
10
11
12
13
14

RS
RW
E
4
5
6

1
2
3

VSS
VDD
VEE

11
12
13
14
15
16
17
18
19
20

LM016L

1k

PERCOBAAN 3
Menampilkan data adc dan ditampilkan datanya ke Display LCD dalam bentuk angka
decimal
1. PROGRAM
#include <mega128.h>
// Alphanumeric LCD Module functions
#asm
.equ __lcd_port=0x1B ;PORTA
#endasm
#include <lcd.h>
#include <delay.h>
#define ADC_VREF_TYPE 0x20
unsigned char read_adc(unsigned char adc_input)
{
ADMUX=adc_input | (ADC_VREF_TYPE & 0xff);
// Delay needed for the stabilization of the ADC input voltage
delay_us(10);
// Start the AD conversion
ADCSRA|=0x40;
// Wait for the AD conversion to complete
while ((ADCSRA & 0x10)==0);
ADCSRA|=0x10;
return ADCH;
}
//////////////////////////////////////////
void H2BCD(int bilangan)
{
int R,P,S;
R=bilangan/100;
P=(bilangan-(R*100))/10;
S=bilangan-(P*10)-(R*100);
lcd_putchar(R+0x30);
lcd_putchar(P+0x30);
lcd_putchar(S+0x30);
}
void main(void)
{
int a;
DDRA=0XFF;

DDRD=0XFF;
ADMUX=ADC_VREF_TYPE & 0xff;
ADCSRA=0x83;
// LCD module initialization
lcd_init(16);
while (1)
{
a=read_adc(0);
PORTD=a;
lcd_gotoxy(0,0);
H2BCD(a);
};
}
2. SIMULASI
PROTEUS
LCD1

D0
D1
D2
D3
D4
D5
D6
D7

U2
LED-BARGRAPH-RED

20
24
23
51
50
49
48
47
46
45
44

35
36
37
38
39
40
41
42
62
64

XTAL1
XTAL2
PA0/AD0
PA1/AD1
PA2/AD2
PA3/AD3
PA4/AD4
PA5/AD5
PA6/AD6
PA7/AD7
PB0/SS
PB1/SCK
PB2/MOSI
PB3/MISO
PB4/OC0
PB5/OC1A
PB6/OC1B
PB7/OC2/OC1C
PC0/A8
PC1/A9
PC2/A10
PC3/A11
PC4/A12
PC5/A13
PC6/A14
PC7/A15
AREF
AVCC
ATMEGA128

PD0/SCL/INT0
PD1/SDA/INT1
PD2/RXD1/INT2
PD3/TXD1/INT3
PD4/ICP1
PD5/XCK1
PD6/T1
PD7/T2
PE0/RXD0/PDI
PE1/TXD0/PDO
PE2/XCK0/AIN0
PE3/OC3A/AIN1
PE4/OC3B/INT4
PE5/OC3C/INT5
PE6/T3/INT6
PE7/ICP3/INT7
PF0/ADC0
PF1/ADC1
PF2/ADC2
PF3/ADC3
PF4/ADC4/TCK
PF5/ADC5/TMS
PF6/ADC6/TDO
PF7/ADC7/TDI
PG0/WR
PG1/RD
PG2/ALE
PG3/TOSC2
PG4/TOSC1
PEN

25
26
27
28
29
30
31
32
2
3
4
5
6
7
8
9
61
60
59
58
57
56
55
54
33
34
43
18
19
1

Volts

+1.90

RV1
38%

10
11
12
13
14
15
16
17

RESET

10
9
8
7
6
5
4
3
2
1

U1

7
8
9
10
11
12
13
14

RS
RW
E
4
5
6

1
2
3

VSS
VDD
VEE

11
12
13
14
15
16
17
18
19
20

LM016L

1k

You might also like