LM35 BAĞLANTI UÇLARI:
MALΖEME LİSTESİ:
1-7805
2-4MHz kristal
3-2adet 22pf
4-100nf
5-4k7
6-2x16 LCD
7-16F877
8-LM35
#include <16f877.h> // Kullanılacak denetleyicinin başlık dosyası tanıtılıyor.1-7805
2-4MHz kristal
3-2adet 22pf
4-100nf
5-4k7
6-2x16 LCD
7-16F877
8-LM35
#device ADC=10 // 10 bitlik ADC kullanılacağı belirtiliyor.
// Denetleyici konfigürasyon ayarları
#fuses XT,NOWDT,NOPROTECT,NOBROWNOUT,NOLVP,NOPUT,NOWRT,NODEBUG,NOCPD
#use delay (clock=4000000) // Gecikme fonksiyonu için kullanılacak osilatör frekansı belirtiliyor.
#use fast_io(a) //Port yönlendirme komutları A portu için geçerli
#define use_portb_lcd TRUE // LCD B portuna bağlı
#include <lcd.c> // lcd.c dosyası tanıtılıyor
unsigned long int bilgi; // İşaretsiz 16 bitlik tam sayı tipinde değişken tanımlanıyor
float voltaj,sicaklik; // ondalıklı tipte değişkenler tanıtılıyor
//********** ANA PROGRAM FONKSİYONU*******
void main ( )
{
setup_psp(PSP_DISABLED); // PSP birimi devre dışı
setup_timer_1(T1_DISABLED); // T1 zamanlayıcısı devre dışı
setup_timer_2(T2_DISABLED,0,1); // T2 zamanlayıcısı devre dışı
setup_CCP1(CCP_OFF); // CCP1 birimi devre dışı
setup_CCP2(CCP_OFF); // CCP2 birimi devre dışı
set_tris_a(0x01); // RA0 Giriş olarak yönlendiriliyor
setup_adc(adc_clock_div_32); // ADC clock frekansı fosc/32
setup_adc_ports(AN0); //RA0/AN0 girişi analog
lcd_init(); // LCD hazır hale getiriliyor
set_adc_channel(0); // RA0/AN0 ucundaki sinyal A/D işlemine tabi tutulacak
delay_us(20); // Kanal seçiminde sonra bu bekleme süresi verilmelidir
printf(lcd_putc,"\fSicaklik="); // LCD'ye yazı yazdırılıyor
while(1) // sonsuz döngü
{
bilgi=read_adc(); // ADC sonucu okunuyor ve bilgi değişkenine aktarılıyor
voltaj=(0.0048828125*bilgi)*1000; // Dijitale çevirme işlemine uğrayan sinyalin mV olarak gerilimi hesaplanıyor
sicaklik=(voltaj/10)+2; // Her 10mV'ta 1 derece artma
lcd_gotoxy(10,1); // İmleç 1. satır 10.sütunda
printf(lcd_putc,"%5.1f'C",sicaklik); // LCD'ye sıcaklık değeri yazdırılıyor
// Gösterilecek ondalıklı değerin toplam basamak sayısı 5 olacak.
// Gösterilecek değerin ondalıklı kısmı ise 1 basamak olacak. %5.1f
// komutu ile bu işlemler yaptırılmıştır.
delay_ms(100); // 100 msn gecikme
}
}
Hiç yorum yok:
Yorum Gönder