Belajar Mikrokontroler Menggunakan Port ADC dengan AVR-ATMEGA8

Kali ini saya sharing pengalaman saya dengan  mikrokontroller atmega8, saya sangat penasaran yang membuat chip ini sangat terkenal. Padahal untuk aplikasi - aplikasi yang menggunakan ADC, kita juga bisa menggunakan mikro MCS51 yang bisa kita katakan harganya lebih murah dari IC Atmega, tentu dengan menambahkan sebuah ic lagi yaitu ic ADC.

Ternyata setelah beberapa kali mencoba dan mempelajarinya memang harga g bohong… Fitur internal ADC yang ada pada mikro AVR ini khusus nya Atmega8 yang sedang kita coba, membuat pekerjaan kita jauh lebih mudah dan simpel.  Beda kalau kita membuat program dalam bahasa assembler, tetap saja hasil nya memusingkan..hehe. Disini Saya menggunakan bahasa pascal , dengan compiler nama nya  “mikropascal for AVR” ada versi freenya kok tapi Cuma bisa compile 2K ROM cukup untuk belajar aja, bisa di unduh di situs resmi nya ( www.mikroe.com ) .

Oke kita mulai saya menggunakan schema seperti ini :

 

Bisa dilihat saya menggunakan potensio sebagai masukan ADC agar nantinya input akan bermain dari 0 – 5 volt dan hasilnya akan ditampilkan lewat LCD standard 1 baris.

 

 

Sekarang kita lihat firmwarenya :

 

program ADC_on_LEDs;

 

// LCD module connections

var LCD_RS : sbit  at PORTD0_bit;

var LCD_EN : sbit  at PORTD1_bit;

var LCD_D4 : sbit  at PORTD5_bit;

var LCD_D5 : sbit  at PORTD6_bit;

var LCD_D6 : sbit  at PORTD7_bit;

var LCD_D7 : sbit  at PORTB0_bit;

 

var LCD_RS_Direction : sbit at DDD0_bit;

var LCD_EN_Direction : sbit at DDD1_bit;

var LCD_D4_Direction : sbit at DDD5_bit;

var LCD_D5_Direction : sbit at DDD6_bit;

var LCD_D6_Direction : sbit at DDD7_bit;

var LCD_D7_Direction : sbit at DDB0_bit;

// End LCD module connections

 

 

var adc_rd : word;

    des: real;

var txt1 : array[16] of char;

var txt2 : array[16] of char;

 

  begin

   Lcd_Init();                        // Initialize LCD

   Lcd_Cmd(_LCD_CLEAR);               // Clear display

   Lcd_Cmd(_LCD_CURSOR_OFF);          // Cursor off

 

    while (TRUE) do

      begin

        adc_rd := ADC_Read(0);  // get ADC value from 2nd channel

        des:= adc_rd;

        des:= (des/1023)*5;

        WordToStr(adc_rd, txt1);

        floattostr(des,txt2);

        LCD_Out(1,1,txt1);

        lcd_out(1,7,txt2);

      end;

  end.

 

Saatnya simulasi: untuk simulasi saya percayakan pada software proteus karena proteus mempunyai banyak library untuk microcontroller. Mari kita lihat simulasinya

 

 

Dan berikut ini adalah foto dan videonya pada saat saya  melakukan pengetesan:

 

Dan cukup sekian dari article ini dan selanjutnya saya serahkan pada anda, dibawah ini ada file – file dari hal2 yang saya sebutkan di atas silahkan download dan comment semoga kita bisa belajar bersama – sama.

Silahkan unduh disni,

 



 

Add comment


Security code
Refresh