Tutorial Microcontroller MCS-51 ATMEL ISP
 

 

Super MCS51 Trainer

Standart MCS51 Trainer

Standart AVR Trainer

Programmer USBASP

Standart ARM Trainer

 

 

Percobaan Analog to Digital Converter

ADC merupakah salah satu fasilitas yang ada pada mikrokontroller, untuk melakukan konversi analog menjadi digital. Pada percobaan ini anda akan berlajar bagaimana konfigurasi ADC, menampilkan data ke LED, 7 segmen dan LCD Karakter.

Mikrokontroller atmega8535/mega16 telah memiliki fasilitas Analog to Digital Converter yang sudah built-in dalam chip. Atmega8535/mega16 memiliki resolusi ADC 10-bit dengan 8channel input dan mendukung 16 macam penguat beda. ADC ini bekerja dengan teknik successive approximation. Rangkaian internal ADC ini memiliki catu daya tersendiri yaitu pin AVCC

Prosedur Percobaan:

1. Percobaan ADC display LED
Pada percobaan ini LED terhubung ke PORTC, sehingga output data dari ADC dapat dipantau melalui display LED.

while(1)
{
PORTC = read_adc(0);
delay_ms(100);
}

2. Percobaan ADC dengan display 7 Segmen

Pada percobaan ini data ADC dikonfigurasikan dengan resolusi 10 bit, hasil peengambilan data adc, ditampilkan ke 7 segmen, dalam bentuk ribuan, ratusan, puluhan dan satuan.

#include <mega8535.h>
#include <delay.h>
#define mode_ADC 0x00
int ubah;
int sat,pul,rat,rib;
unsigned int data;
unsigned int baca_adc (unsigned char pin_adc)
// this is very important declaration uint
{
ADMUX =pin_adc | mode_ADC;
ADCSRA |=0x40;
while ((ADCSRA & 0x10)==0);
ADCSRA |= 0x10;
return ADCW;
}
void ubah_ke_format7segment()
//fungsi untuk mengubah kedalam format 7segment
{
           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;}
}
void tampil_7segment()
{ 
           PORTC=rib;//mengirimkan data kedigit5
           PORTD.5=0; 
           PORTD.6=0;
           PORTD.7=0;
           delay_ms(20);
           PORTC=rat;//mengirimkan data kedigit6 
           PORTD.5=1; 
           PORTD.6=0;
           PORTD.7=0;
           delay_ms(20); 
           PORTC=pul;//mengirimkan data kedigit7
           PORTD.5=0; 
           PORTD.6=1;
           PORTD.7=0
           delay_ms(20); 
           PORTC=sat;//mengirimkan data kedigit8
           PORTD.5=1; 
           PORTD.6=1;
           PORTD.7=0;
           delay_ms(20);
           //lamanya waktu scanning ditentukan delay
} 
void main(void)
{ 
 DDRD = 0XFF;
 DDRC = 0xFF; 
 ADMUX=mode_ADC;
 ADCSRA=0x85;
 while(1) 
 { 
  data = baca_adc(0);
  sat = data % 10;// sat = sisa dari data dibagi 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(); 
 } 
}
 		 

NEXT