m@ny@k111
Üye
- Katılım
- 1 Kas 2008
- Mesajlar
- 48
- Puanları
- 1
- Yaş
- 40
arkadaşlar mrb;
lm35 ile ısı ölçüm devresi yapmaya çalışıyorum...
devremi proteusta kurup ccs de kodları yazıp hex e çevirip pic e yükledim ama sonuçlar tam istediğim gibi olmadı..çalıştı fakat Lcd de istediğim sonuçları alamadım..aşağıda proteus ve ccs kodunu veriyorum.nerde hata yapıyorum.bide aklıma takılan adc modül 10 bi ve 10 bitlik veriyi 8 bitlik 2 tane registerda saklıyor..lsb registerda ilk 8 bit geri kalan 2 bitide msb 8 bitte saklıyor.program kısmında bu registerlarda değişiklik yapmam gerekiyormu yoksa ccs derleyecisi otomatikmi yapıyor. hatanın kaynağı burdan kaynaklanabilirmi...
lm35 ile ısı ölçüm devresi yapmaya çalışıyorum...
devremi proteusta kurup ccs de kodları yazıp hex e çevirip pic e yükledim ama sonuçlar tam istediğim gibi olmadı..çalıştı fakat Lcd de istediğim sonuçları alamadım..aşağıda proteus ve ccs kodunu veriyorum.nerde hata yapıyorum.bide aklıma takılan adc modül 10 bi ve 10 bitlik veriyi 8 bitlik 2 tane registerda saklıyor..lsb registerda ilk 8 bit geri kalan 2 bitide msb 8 bitte saklıyor.program kısmında bu registerlarda değişiklik yapmam gerekiyormu yoksa ccs derleyecisi otomatikmi yapıyor. hatanın kaynağı burdan kaynaklanabilirmi...
#include <16f877.h> //
/
#device ADC=10 // 10 bitlik ADC kullanılacağız
// ayarlar
#fuses XT,NOWDT,NOPROTECT,NOBROWNOUT,NOLVP,NOPUT,NOWRT,NODEBUG,NOCPD
#use delay (clock=4000000) //Kullandığımız Osilatörün Clock frekansı
#use fast_io(a)
#define use_portb_lcd TRUE // LCD B portunda
#include <lcd.c>
unsigned long int ad1; // ADC den ölçülecek değer
float voltaj,sicaklik;
void main ( )
{
setup_psp(PSP_DISABLED); // PSP birimi devre dışı
setup_spi(SPI_SS_DISABLED); // SPI 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ışı
setup_adc(adc_clock_div_32);
// ADC clock frekansı Clock/32
setup_adc_ports(AN0); //AN0 dan ölçüm yapacağız.
//RA0/AN0 girişi analog
lcd_init();
set_adc_channel(0);
// RA0/AN0 ucundaki sinyal A/D işlemine tabi tutulacak
delay_us(20);
printf(lcd_putc,"Sicaklik "); // LCD'ye yazı yazdırılıyor
while(1)
// sonsuz döngü
{
delay_ms(50);
ad1=read_adc();
voltaj=(0.0048828125*ad1)*1000; //Dijitale çevrilmiş değerin mV değerini hesaplıyoruz.
delay_ms(500);
sicaklik=(voltaj/2);
printf(lcd_putc,"%5.1f'C",sicaklik); // LCD'ye sıcaklık değeri yazdırılıyor
}