Pembacaan ADC dan ditampilkan pada LCD Atmega16
Kali ini, aku ingin sharing ilmu mengenai pemrograman mikrokontroler AVR.
Posting kali ini, bagaimana melakukan pembacaan ADC dari mikrokontroler, yang nantinya akan ditampilkan pada LCD 16x2.Atau dapat dikatakan LCD 16 kolom dan 2 baris. Mikrokontroler yang akan digunakan adalah Atmega 16.
Posting kali ini, bagaimana melakukan pembacaan ADC dari mikrokontroler, yang nantinya akan ditampilkan pada LCD 16x2.Atau dapat dikatakan LCD 16 kolom dan 2 baris. Mikrokontroler yang akan digunakan adalah Atmega 16.
Contoh program yang sudah saya buat seperti dibawah ini:
#include <mega16.h>
#include <stdio.h>
#include <delay.h>
unsigned int Z; //fungsi untuk mendeklarasikan integer Z
#include <alcd.h> // Alphanumeric LCD Module functions
#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)
{
char lcd_buffer[20];
float vin; //deklarasi vin sebagai float
PORTA=0x00;
DDRA=0x00;
PORTB=0x00;
DDRB=0x00;
PORTC=0x00;
DDRC=0x00;
PORTD=0x00;
DDRD=0x00;
// ADC initialization
// ADC Clock frequency: 750.000 kHz
// ADC Voltage Reference: AREF pin
// ADC Auto Trigger Source: ADC Stopped
ADMUX=ADC_VREF_TYPE & 0xff;
ADCSRA=0x84;
lcd_init(16);
while (1)
{
Z=read_adc(0);
vin=((float)Z*0.00488); //0.00488 adalah 5volt/1024, dimana 1024 adalah ADC yang digunakan adalah 10bit
lcd_gotoxy(0,0);
sprintf(lcd_buffer,"%0.0f C",vin);
lcd_puts(lcd_buffer);
}
}
Penjelasan:
Z=read_adc(0); ==>> adalah membaca ADC 0 yang berada pada PORTA.0 yang kemudian dimasukan pada Integer Z.
vin=((float)Z*0.00488); ==>> adalah Integer Z dikalikan dengan 0.00488, yang hasilnya akan berupa float dan ditempatkan pada vin.
lcd_gotoxy(0,0); ==>> menempatkan posisi kursor pada baris 0, kolom 0.
sprintf(lcd_buffer,"%0.0f C",vin); ==>> this function is identical to printf except that the formatted text is placed in the null terminated character string str
lcd_puts(lcd_buffer);
Pengaturan akhir jangan sampai lupa, ubah sprintf Feature pada Configure Project, pilih float width precission, kemudian OK.
Add caption |
Selamat mencoba dan semoga bermanfaat.
Tidak ada komentar:
Posting Komentar