APLIKASI
PEMBACA SUHU LM35 DENGAN MENAMPILKAN LCD MENGGUNAKAN CODEVISION AVR
bahan bahan yang dibutuhkan:
k. GROUND
l. INPUT
lalu rangkailah komponen tersebut seperti di bawah ini
vdan masukkan codeAVR nya ke notepad >>save . ganti format notepad dari .txt menjadi .hex
Code AVRnya dibawah ini :
int SUHU;
char temp[8];
float suhu_celcius;
#include <mega16.h>
#include <stdlib.h>
#include <lcd.h>
#include <delay.h>
// Alphanumeric LCD Module function
#asm
.equ_lcd_port=0x15 ;PORTC
#endasm
#define ADC_VREF_TYPE 0x40
// Read the AD conversion result
unsigned int read_adc(unsigned char adc_input)
{
ADMUX=adc_input | (ADC_VREF_TYPE & 0xff);
// Delay need 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;
retunr ADCW;
}
void main(void)
{
// Analog Comparator initialization
// Analog Comparator Input Capture by Timer/Counter 1:Off
ACSRA=0x80;
SFIOR=0x00;
// ADC initialization
// ADC Clock frequency: 750.000 kHz
// ADC Voltage Reference: AVCC pin
// ADC Auto Trigger Source: None
ADMUX=ADC_VREF_TYPE & 0xff;
ADCSRA=0x84;
// LCD module initilazation
lcd_init(16);
lcd_clear();
lcd_gotoxy(0,0);
lcd_putsf("ElectrO-cOntrOl");
lcd_gotoxy(0,1);
lcd_putsf("SENSOR SUHU LM35");
delay_ms(1000);
while(1)
{
lcd_clear( );
SUHU = read_adc(0);
suhu_celcius = (float)SUHU*500/1023;//rumus untuk mengubah kedalam derajat celcius
lcd_gotoxy(0,0);
lcd_putsf("ElectrO-cOntrOl");
ftoa(suhu_celcius, 1 ,temp);//mengubah tipe data float ke tipe data array yang akan ditampilkan
di LCD
lcd_gotoxy(0,1);
lcd_puts(temp);
lcd_gotoxy(5,1);
lcd_putchar(0xdf);//menampilkan karakter derajat
lcd_putsf("C");
delay_ms(500);
};
}
Setelah disave. lalu klik 2x pada komponen Atmega16 , klik pada kolom Program file cari dimana tempat kita simpan notepad code AVR tadi . lalu oke.
Code AVRnya dibawah ini :
int SUHU;
char temp[8];
float suhu_celcius;
#include <mega16.h>
#include <stdlib.h>
#include <lcd.h>
#include <delay.h>
// Alphanumeric LCD Module function
#asm
.equ_lcd_port=0x15 ;PORTC
#endasm
#define ADC_VREF_TYPE 0x40
// Read the AD conversion result
unsigned int read_adc(unsigned char adc_input)
{
ADMUX=adc_input | (ADC_VREF_TYPE & 0xff);
// Delay need 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;
retunr ADCW;
}
void main(void)
{
// Analog Comparator initialization
// Analog Comparator Input Capture by Timer/Counter 1:Off
ACSRA=0x80;
SFIOR=0x00;
// ADC initialization
// ADC Clock frequency: 750.000 kHz
// ADC Voltage Reference: AVCC pin
// ADC Auto Trigger Source: None
ADMUX=ADC_VREF_TYPE & 0xff;
ADCSRA=0x84;
// LCD module initilazation
lcd_init(16);
lcd_clear();
lcd_gotoxy(0,0);
lcd_putsf("ElectrO-cOntrOl");
lcd_gotoxy(0,1);
lcd_putsf("SENSOR SUHU LM35");
delay_ms(1000);
while(1)
{
lcd_clear( );
SUHU = read_adc(0);
suhu_celcius = (float)SUHU*500/1023;//rumus untuk mengubah kedalam derajat celcius
lcd_gotoxy(0,0);
lcd_putsf("ElectrO-cOntrOl");
ftoa(suhu_celcius, 1 ,temp);//mengubah tipe data float ke tipe data array yang akan ditampilkan
di LCD
lcd_gotoxy(0,1);
lcd_puts(temp);
lcd_gotoxy(5,1);
lcd_putchar(0xdf);//menampilkan karakter derajat
lcd_putsf("C");
delay_ms(500);
};
}
Setelah disave. lalu klik 2x pada komponen Atmega16 , klik pada kolom Program file cari dimana tempat kita simpan notepad code AVR tadi . lalu oke.
selesai
Tidak ada komentar:
Posting Komentar