MIKROKONTROLER
(APLIKASI ATMega8535 PADA NIM MAHASISWA)
Dosen Pembimbing
(Ir.Azam MI,MT)
2. TEORI DASAR
INISIALISASI ADC
7 6 5 4 3 2 1 0
0 0 Pin VRef
0 1 Vcc
1 0 Not Used
1 1 2,56 V
Untuk mengatur format penyimpanan data ADC pada register ADCL dan ADCH.
0 D9 – D8 D7 – D0
1 D9 – D2 D1 – D0
Bit 4:0 – MUX4:0 : Analog Channel and Gain Selection Bits
Bit – bit MUX4:0 dapat digunakan untuk menentukan pin masukan analog ADC pada
mode konversi tunggal atau untuk menentukan pin- pin masukan analog dan nilai
penguatannya (gain) pada mode penguat beda.
SINGLE END
MUX4 MUX3 MUX2 MUX1 MUX0
Input
0 0 0 0 0 ADC0
0 0 0 0 1 ADC1
0 0 0 1 0 ADC2
0 0 0 1 1 ADC3
0 0 1 0 0 ADC4
0 0 1 0 1 ADC5
0 0 1 1 0 ADC6
0 0 1 1 1 ADC7
7 6 5 4 3 2 1 0
• Bit6 - ADCS
Digunakan untuk menetukan factor pembagi frekuensi Kristal yang kemudian hasilnya
digunakan sebagai frekuensi clock ADC.(Pengatur clock ADC).
0 0 0 2
0 0 1 2
0 1 0 4
0 1 1 8
1 0 0 16
1 0 1 32
1 1 0 64
1 1 1 128
3. SFIOR
0 0 1 Analisis Komparator
3. GAMBAR RANGKAIAN
4. FLOW-CHART
start
inisialisasi
Start ADC
Selesai konversi
Baca ADC
portB = ADCH
Delai 200ms
<100 T
<200 T
Y
Y
>200
Y
Tampilkan
0731130028
Tampilkan Y
0731130013
Tampilakan
0731130009
5. LISTING PROGRAM
#include<mega853 delay_ms(500);
5.h> PORTB=0xFF;
#include<delay.h> delay_ms(500);
void nim (unsigned char
level); PORTB=0xB0;//3
unsigned char level; delay_ms(500);
void main (void) PORTB=0xFF;
{ PORTB=0x00; delay_ms(500);
DDRB=0xff;
ADMUX=0x60; PORTB=0xC0;//0
ADCSRA=0x84; delay_ms(500);
SFIOR=0x1f; PORTB=0xFF;
while(1) delay_ms(500);
{ ADMUX=0x00|
0x60; PORTB=0xC0; //0
ADCSRA|=0x40; delay_ms(500);
while((ADCSRA&0x10)= PORTB=0xFF;
=0); delay_ms(500);
{ ADCSRA|=0x10;
level=ADCH; PORTB=0xA4;//2
nim (level); delay_ms(500);
}; PORTB=0xFF;
}; delay_ms(500);
}
void nim (unsigned PORTB=0x80;//8
char level) delay_ms(500);
{ if (level<=0x64) PORTB=0xFF;
{ //anggarica mudji pratama delay_ms(500);
PORTB=0xC0;//0 }
delay_ms(500);
PORTB=0xFF;
delay_ms(500);
else
PORTB=0xF8;//7 if((level>0x64)&&(level<=0xc
delay_ms(500); 8))
PORTB=0xFF; { //eko adi
delay_ms(500); santoso
PORTB=0xC0;//0
PORTB=0xB0;//3 delay_ms(500);
delay_ms(500); PORTB=0xFF;
PORTB=0xFF; delay_ms(500);
delay_ms(500);
PORTB=0xF8;//7
PORTB=0xF9;//1 delay_ms(500);
delay_ms(500); PORTB=0xFF;
PORTB=0xFF; delay_ms(500);
delay_ms(500);
PORTB=0xB0;//3
PORTB=0xF9;//1 delay_ms(500);
PORTB=0xFF; PORTB=0xFF;
delay_ms(500); delay_ms(500);
PORTB=0xF9;//1 PORTB=0xB0;//3
delay_ms(500); delay_ms(500);
PORTB=0xFF;
delay_ms(500);
PORTB=0xF9; //1
delay_ms(500); PORTB=0xFF;
PORTB=0xFF; delay_ms(500);
delay_ms(500);
PORTB=0xF9;//1
PORTB=0xB0; //3 delay_ms(500);
delay_ms(500); PORTB=0xFF;
PORTB=0xFF; delay_ms(500);
delay_ms(500);
PORTB=0xF9;//1
PORTB=0xC0;//0 delay_ms(500);
delay_ms(500); PORTB=0xFF;
PORTB=0xFF; delay_ms(500);
delay_ms(500);
PORTB=0xB0;//3
PORTB=0xC0;//0 delay_ms(500);
delay_ms(500); PORTB=0xFF;
PORTB=0xFF; delay_ms(500);
delay_ms(500);
PORTB=0xC0;//0
PORTB=0XF9; //1 delay_ms(500);
delay_ms(500); PORTB=0xFF;
PORTB=0xFF; delay_ms(500);
delay_ms(500);
PORTB=0xC0;//0
PORTB=0XB0;//3 delay_ms(500);
delay_ms(500); PORTB=0xFF;
PORTB=0xFF; delay_ms(500);
delay_ms(500);
} PORTB=0X90;//9
delay_ms(500);
PORTB=0xFF;
else if (level>0xc8) delay_ms(500);
{ //puspita
dewi PORTB=0xA4;//2
PORTB=0xC0;//0 delay_ms(500);
delay_ms(500); PORTB=0xFF;
PORTB=0xFF; delay_ms(500);
delay_ms(500);
PORTB=0xF8;//7 } }
delay_ms(500);
6. ANALISIS
1. Code PORTB=0x00 menunjukkan nilai awalnya adalah “low” atau off.
2. Code DDRB=0xff menunjukkan perintah port B sebagai output .
3. Code ADMUX=0x60 menunjukkan tegangan referensinya adalah VCC dan
menunjukkan bahwa single end input adalah terletak pada pin 40 yaitu ADC0 .
4. Code ADCSRA=0x84 menunjukkan ADC dalam keadaan ON , aktif start
otomatis saat input tepi positif , juga menunjukkan penanda akhir konversi
siap dibaca data ADC nya dan juga menunjukkan pengatur clock ADC sama
dengan foc / 16.
5. Code SFIOR=0x1f menunjukkan free running MODE.
6. Code ADMUX=0x00 menandakan start konversi.
7. Code ADCSRA|=0x40 menunjukkan ADCS = 1 sehingga program harus
menunggu dahulu selesai pengkonversian.
8. Code tingkat =ADCH merepresentasikan bahwa kata “tingkat” mewakili
memori ADCH yang nantinya akan diubah - ubah dengan bahasa C
9. void nim (unsigned char level) adalah berasal bahasa C yang menunjukkan
program utama yang selanjutnya akan diisi dengan bahasa C.
10. if (level<=0x64) … dst. Adalah program yang akan menampilkan NIM jika
keadaannya terpenuhi. Keadaan tersebut adalah yaitu ketika tingkat = 64
dalam hexa atau 0110 0100 dalam biner mencatu pin 40 maka display LED
akan menunjukkan NIM 0731130028. Dan akan menunjukkan NIM
0731130013 ketika tingkat berada diantara 64 dan c8. Begitu juga akan
menunjukkan NIM 0731130092 ketika tingkat sama dengan c8.
7. KESIMPULAN