Berikut cara mengaktifkan ADC pada atmega8535.
1. Buka CVAVR nya
2. Pilih File, New
3. Pilih Chip Atmega8535, pilih Xtall yang digunakan
5. Pilih Menu LCD
6. Pilih File,lalu generate save dan exit. Save dengan nama yang sama ya :D
Berikut potongan listing program untuk menampilakan nilai ADC pada LCD 16x2.
- #include <mega8535.h>
- #include <stdio.h>
- #include <stdlib.h>
- char buff[16]; // untuk menampilkan nilai adc di LCD
- int adc,logic; // untuk menampung nilai adc dari fungsi read_adc(0);
- int limit_adc=500;
- #asm
- .equ __lcd_port=0x15 ;PORTC
- #endasm
- #include <lcd.h>
- #include <delay.h>
- #define ADC_VREF_TYPE 0x00
- // Read the AD conversion result
- unsigned int 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 ADCW;
- }
- // Declare your global variables here
- void main(void)
- {
- PORTA=0x00;
- DDRA=0x00;
- PORTB=0x00;
- DDRB=0x00;
- PORTC=0x00;
- DDRC=0x00;
- PORTD=0x00;
- DDRD=0x00;
- TCCR0=0x00;
- TCNT0=0x00;
- OCR0=0x00;
- TCCR1A=0x00;
- TCCR1B=0x00;
- TCNT1H=0x00;
- TCNT1L=0x00;
- ICR1H=0x00;
- ICR1L=0x00;
- OCR1AH=0x00;
- OCR1AL=0x00;
- OCR1BH=0x00;
- OCR1BL=0x00;
- ASSR=0x00;
- TCCR2=0x00;
- TCNT2=0x00;
- OCR2=0x00;
- MCUCR=0x00;
- MCUCSR=0x00;
- TIMSK=0x00;
- ACSR=0x80;
- SFIOR=0x00;
- ADCSRA=0x84;
- SFIOR&=0xEF;
- lcd_init(16);
- while (1)
- {
- adc=read_adc(0); // nilai adc ditampung pada variabel adc
- lcd_gotoxy(0,0);
- sprintf(buff,"Adc=%d",adc); //tampilin nilai adc
- lcd_puts(buff);
- lcd_gotoxy(0,1);
- sprintf(buff,"Logic=%d",logic); //tampilin nilai adc
- lcd_puts(buff);
- delay_ms(100);
- lcd_clear();
- // untuk mengubah menjadi logic high atau low tinggal
- // kita buat limitnya
- if(adc>limit_adc)
- {
- logic=1; // high
- }
- else
- {
- logic=0; //low
- }
- };
- }
*Note :
sprintf(buff,"Adc=%d",adc);
artinya : nilai adc disimpan pada variabel buff yang bertipe data char array (char buff [16]). Maksud dari %d adalah tipe data dari variabel adc adalah integer (int), jadi kita harus menggunakan %d.
Video simulasinya
Note : Jgn lupa saat simulasinya PIN AREF dan AVCC nya dihubungkan ke Supply 5V untuk tegangan referensinya. (adc=(vin/tegangan referensi) *range adc). Pada simulasi ini saya menggunakan range adc sebesar 1024 atau sebesar 10 bit. :D
Sekian dulu..
Terima Kasih :D
nice info mas, salam kenal
ReplyDeleteMakasih kak aldrin, salam kenal jg kak hehehe
ReplyDelete