LM 35 ALT VE UST SINIRLAMA PROGRAMI YARDIM

Başlatan erhangecmen, 07 Mart 2013, 19:26:19

erhangecmen

ARKADAŞLAR LM 35 DEVRESİ İLE SICAKLIK KONTROLÜ YAPACAM ALT VE ÜST SINIRLAMALI OLACAK BELİRLEDİĞİM ALT VE ÜST SICAKLIK DEGERLERINE GORE alt sıcaklık sınırında KIRMIZI LED VE üst sıcaklık sınırında YEŞİL LED YANACAK AAŞAĞIDAKI DEVRE PROGRAMA EKLEMELER NASIL OLCAK YARDIMCI OLABİLİRMİSİNİZZ ...



#include <16f877.h>     

#device ADC=10

#use rs232 (baud=9600, xmit=pin_C6, rcv=pin_C7, parity=N, stop=1,FORCE_SW)

#fuses XT,NOWDT,NOPROTECT,NOBROWNOUT,NOLVP,NOPUT,NOWRT,NODEBUG,NOCPD

#use delay (clock=4000000)

#use fast_io(a)

#define use_portb_lcd TRUE   // LCD B portuna bağlı

#include <lcd.c>   

unsigned long int bilgi;
float voltaj,sicaklik; 


void main ( )
{
   setup_psp(PSP_DISABLED);       
   setup_spi(SPI_SS_DISABLED);     
   setup_timer_1(T1_DISABLED);     
   setup_timer_2(T2_DISABLED,0,1);
   setup_CCP1(CCP_OFF);           
   setup_CCP2(CCP_OFF);           

   set_tris_a(0x01); 

   setup_adc(adc_clock_div_32);   
   setup_adc_ports(AN0);

   lcd_init();   

   set_adc_channel(0);   
   delay_us(20);         

   printf(lcd_putc,"\fSicaklik=");
   while(1)   
   {
      bilgi=read_adc(); 

      voltaj=(0.0048828125*bilgi)*1000; 
      sicaklik=(voltaj/10)+2;   

      lcd_gotoxy(10,1);
      printf(lcd_putc,"%5.1f'C",sicaklik);
      delay_ms(100);
   }
}


http://www.dosya.tc/server3/cFG42W/LM35.rar.html

Extreme

daha net anlatırmısınız ?

eğer anladığım doğruysa

lm35 75derece olduğunda kırmızı yak

lm35 30 derece olduğunda yeşil yak diyebilirsin..

daha net sorarsan daha net cevap alırsın bir de dosya koymak yerine kodları koyarsanız daha iyi olabilir.

erhangecmen

Alıntı yapılan: Extreme - 07 Mart 2013, 19:59:42
daha net anlatırmısınız ?

eğer anladığım doğruysa

lm35 75derece olduğunda kırmızı yak

lm35 30 derece olduğunda yeşil yak diyebilirsin..

daha net sorarsan daha net cevap alırsın bir de dosya koymak yerine kodları koyarsanız daha iyi olabilir.

evet aynen söyledıgınız gıbı ama degerlerı ben ara yuzden kendım gırecegım bunun ıcınde devrede goruldugu gıbı serı port ta ekledım

skara1214

devreyi bu şekilde yüklediğin için kimse bakmıyor resmini yükle birşey yap kimse oradan senin için onu indirip bakmaz
Herkes ölür ama herkes gerçekten yaşamaz

erhangecmen

peki dsn dosyaasını felanda atmıştım o yüzden böle yptımm yrdımcı olacak kimse yokmuuuuuuu :(

skara1214

2 LED icin port adı söylememişsin ben c0 ve c1 pinlerini seçtim c0 kırmızı c1 yeşil pin(pinlerden 330 ohm + led - ground şeklinde bağlayacaksın).değişken tanımlama yerinde 2 tane limit tanımladım onlara istediğin değeri verebilirsin


Alıntı yapılan: erhangecmen - 07 Mart 2013, 19:26:19

#include <16f877.h>     

#device ADC=10

#use rs232 (baud=9600, xmit=pin_C6, rcv=pin_C7, parity=N, stop=1,FORCE_SW)

#fuses XT,NOWDT,NOPROTECT,NOBROWNOUT,NOLVP,NOPUT,NOWRT,NODEBUG,NOCPD

#use delay (clock=4000000)

#use fast_io(a)

#define use_portb_lcd TRUE   // LCD B portuna bağlı

#include <lcd.c>   

unsigned long int bilgi;
float voltaj,sicaklik,sicaklik_altlimit,sicaklik_ustlimit; 


void main ( )
{
   setup_psp(PSP_DISABLED);       
   setup_spi(SPI_SS_DISABLED);     
   setup_timer_1(T1_DISABLED);     
   setup_timer_2(T2_DISABLED,0,1);
   setup_CCP1(CCP_OFF);           
   setup_CCP2(CCP_OFF);           

   set_tris_a(0x01); 

   setup_adc(adc_clock_div_32);   
   setup_adc_ports(AN0);

   lcd_init();   

   set_adc_channel(0);   
   delay_us(20);         

   printf(lcd_putc,"\fSicaklik=");
   while(1)   
   {
      bilgi=read_adc(); 

      voltaj=(0.0048828125*bilgi)*1000; 
      sicaklik=(voltaj/10)+2;   //+2 NEDEN KONDU ONU ANLAMADIM

      lcd_gotoxy(10,1);
      printf(lcd_putc,"%5.1f'C",sicaklik);
      delay_ms(100);
if(sicaklik<sicaklik_altlimit)
output_high(pin_c0);
else
output_low(pin_c0);
if(sicaklik>sicaklik_ustlimit)
output_high(pin_c1);
else
output_low(pin_c1);
   }
}


http://www.dosya.tc/server3/cFG42W/LM35.rar.html
Herkes ölür ama herkes gerçekten yaşamaz

erhangecmen

tsk ederim bişi daha sorcam ben rs-232 portunu a harfi ile cagırcam arayuzum ona gore olusturdum. A HARFİNE BASTIGIMDA SERİ PORT OKUNCAK VE SICAKLIK İŞLEMİ ARAYÜZDE OKUNCAK. bu programda nasıl ekleme yapcam

skara1214

baudu 9600 ayarladım rx i c7 ye tx i c6 ya baglayacaksın


#include <16f877.h>     

#device ADC=10

#use rs232 (baud=9600, xmit=pin_C6, rcv=pin_C7, parity=N, stop=1,FORCE_SW)

#fuses XT,NOWDT,NOPROTECT,NOBROWNOUT,NOLVP,NOPUT,NOWRT,NODEBUG,NOCPD

#use delay (clock=4000000)
#use rs232(baud=9600,uart)
#use fast_io(a)
#define use_portb_lcd TRUE   // LCD B portuna bağlı
#include <lcd.c>   

unsigned long int bilgi;
float voltaj,sicaklik,sicaklik_altlimit,sicaklik_ustlimit; 
char k;
#int_rda
void okuma()
{
disable_interrupts(int_rda);
k=getch();
if(k=='a' || k=='A')
{
bilgi=read_adc(); 
voltaj=(0.0048828125*bilgi)*1000; 
  sicaklik=(voltaj/10)+2;   //+2 NEDEN KONDU ONU ANLAMADIM
printf("%5.1f'C\n\r",sicaklik);
}
enable_interrupts(int_rda);
}

void main ( )
{
   setup_psp(PSP_DISABLED);       
   setup_spi(SPI_SS_DISABLED);     
   setup_timer_1(T1_DISABLED);     
   setup_timer_2(T2_DISABLED,0,1);
   setup_CCP1(CCP_OFF);           
   setup_CCP2(CCP_OFF);           

   set_tris_a(0x01); 
enable_interrupts(global);
enable_interrupts(int_rda);
   setup_adc(adc_clock_div_32);   
   setup_adc_ports(AN0);

   lcd_init();   

   set_adc_channel(0);   
   delay_us(20);         

   printf(lcd_putc,"\fSicaklik=");
   while(1)   
   {
      bilgi=read_adc(); 

      voltaj=(0.0048828125*bilgi)*1000; 
      sicaklik=(voltaj/10)+2;   //+2 NEDEN KONDU ONU ANLAMADIM

      lcd_gotoxy(10,1);
      printf(lcd_putc,"%5.1f'C",sicaklik);
      delay_ms(100);
if(sicaklik<sicaklik_altlimit)
output_high(pin_c0);
else
output_low(pin_c0);
if(sicaklik>sicaklik_ustlimit)
output_high(pin_c1);
else
output_low(pin_c1);
   }
}
Herkes ölür ama herkes gerçekten yaşamaz

erhangecmen

çok tesekkur ederım kardeşşş sagolasın.......

erhangecmen

Alıntı yapılan: skara1214 - 08 Mart 2013, 22:41:35
baudu 9600 ayarladım rx i c7 ye tx i c6 ya baglayacaksın


#include <16f877.h>     

#device ADC=10

#use rs232 (baud=9600, xmit=pin_C6, rcv=pin_C7, parity=N, stop=1,FORCE_SW)

#fuses XT,NOWDT,NOPROTECT,NOBROWNOUT,NOLVP,NOPUT,NOWRT,NODEBUG,NOCPD

#use delay (clock=4000000)
#use rs232(baud=9600,uart)
#use fast_io(a)
#define use_portb_lcd TRUE   // LCD B portuna bağlı
#include <lcd.c>   

unsigned long int bilgi;
float voltaj,sicaklik,sicaklik_altlimit,sicaklik_ustlimit; 
char k;
#int_rda
void okuma()
{
disable_interrupts(int_rda);
k=getch();
if(k=='a' || k=='A')
{
bilgi=read_adc(); 
voltaj=(0.0048828125*bilgi)*1000; 
  sicaklik=(voltaj/10)+2;   //+2 NEDEN KONDU ONU ANLAMADIM
printf("%5.1f'C\n\r",sicaklik);
}
enable_interrupts(int_rda);
}

void main ( )
{
   setup_psp(PSP_DISABLED);       
   setup_spi(SPI_SS_DISABLED);     
   setup_timer_1(T1_DISABLED);     
   setup_timer_2(T2_DISABLED,0,1);
   setup_CCP1(CCP_OFF);           
   setup_CCP2(CCP_OFF);           

   set_tris_a(0x01); 
enable_interrupts(global);
enable_interrupts(int_rda);
   setup_adc(adc_clock_div_32);   
   setup_adc_ports(AN0);

   lcd_init();   

   set_adc_channel(0);   
   delay_us(20);         

   printf(lcd_putc,"\fSicaklik=");
   while(1)   
   {
      bilgi=read_adc(); 

      voltaj=(0.0048828125*bilgi)*1000; 
      sicaklik=(voltaj/10)+2;   //+2 NEDEN KONDU ONU ANLAMADIM

      lcd_gotoxy(10,1);
      printf(lcd_putc,"%5.1f'C",sicaklik);
      delay_ms(100);
if(sicaklik<sicaklik_altlimit)
output_high(pin_c0);
else
output_low(pin_c0);
if(sicaklik>sicaklik_ustlimit)
output_high(pin_c1);
else
output_low(pin_c1);
   }
}

BUNUN HEX KODUNU GÖNDEREBİLİRMİSİN BENIM KUTUPHANEMDE COK HATA VERDİ .... BİRDE SENİN KULLANDIGIN KUTUPHANEYI DE GONDERIRMISIN...

skara1214

al birde bunu derle haer a yolladığında sana sıcaklığı döndürüp lcd ekrana basacak

#include <16f877.h>     
#device ADC=10 
#use delay (clock=4000000) 
#fuses XT,NOWDT,NOPROTECT,NOBROWNOUT,NOLVP,NOPUT,NOWRT,NODEBUG,NOCPD
#use rs232(baud=9600,uart) 
#use fast_io(a) 
#define use_portb_lcd TRUE   // LCD B portuna bağlı
#include <lcd.c>   
unsigned long int bilgi; 
float voltaj,sicaklik,sicaklik_altlimit,sicaklik_ustlimit;  
char k;
void main ( )
{
   setup_psp(PSP_DISABLED);        
   setup_spi(SPI_SS_DISABLED);     
   setup_timer_1(T1_DISABLED);     
   setup_timer_2(T2_DISABLED,0,1); 
   setup_CCP1(CCP_OFF);            
   setup_CCP2(CCP_OFF);            
   set_tris_a(0x01);  
   setup_adc(adc_clock_div_32);   
   setup_adc_ports(AN0);
   lcd_init();   
   set_adc_channel(0);   
   delay_us(20);         
   printf(lcd_putc,"\fSicaklik="); 
   while(1)   
   {
    bilgi=read_adc();  
    voltaj=(0.0048828125*bilgi)*1000;  
    sicaklik=(voltaj/10)+2;   //+2 NEDEN KONDU ONU ANLAMADIM 
   k=getch();
   if(k=='a' || k=='A')
    {
      
       printf("%5.1f'C\n\r",sicaklik); 
    }
    
      lcd_gotoxy(10,1); 
      printf(lcd_putc,"%5.1f'C",sicaklik); 
      delay_ms(100); 
      if(sicaklik<sicaklik_altlimit)
      output_high(pin_c0);
      else 
      output_low(pin_c0);
      if(sicaklik>sicaklik_ustlimit)
      output_high(pin_c1);
      else 
      output_low(pin_c1);
   }
}
Herkes ölür ama herkes gerçekten yaşamaz

erhangecmen

Alıntı yapılan: skara1214 - 12 Mart 2013, 11:37:25
al birde bunu derle haer a yolladığında sana sıcaklığı döndürüp lcd ekrana basacak

#include <16f877.h>     
#device ADC=10 
#use delay (clock=4000000) 
#fuses XT,NOWDT,NOPROTECT,NOBROWNOUT,NOLVP,NOPUT,NOWRT,NODEBUG,NOCPD
#use rs232(baud=9600,uart) 
#use fast_io(a) 
#define use_portb_lcd TRUE   // LCD B portuna bağlı
#include <lcd.c>   
unsigned long int bilgi; 
float voltaj,sicaklik,sicaklik_altlimit,sicaklik_ustlimit;  
char k;
void main ( )
{
   setup_psp(PSP_DISABLED);        
   setup_spi(SPI_SS_DISABLED);     
   setup_timer_1(T1_DISABLED);     
   setup_timer_2(T2_DISABLED,0,1); 
   setup_CCP1(CCP_OFF);            
   setup_CCP2(CCP_OFF);            
   set_tris_a(0x01);  
   setup_adc(adc_clock_div_32);   
   setup_adc_ports(AN0);
   lcd_init();   
   set_adc_channel(0);   
   delay_us(20);         
   printf(lcd_putc,"\fSicaklik="); 
   while(1)   
   {
    bilgi=read_adc();  
    voltaj=(0.0048828125*bilgi)*1000;  
    sicaklik=(voltaj/10)+2;   //+2 NEDEN KONDU ONU ANLAMADIM 
   k=getch();
   if(k=='a' || k=='A')
    {
      
       printf("%5.1f'C\n\r",sicaklik); 
    }
    
      lcd_gotoxy(10,1); 
      printf(lcd_putc,"%5.1f'C",sicaklik); 
      delay_ms(100); 
      if(sicaklik<sicaklik_altlimit)
      output_high(pin_c0);
      else 
      output_low(pin_c0);
      if(sicaklik>sicaklik_ustlimit)
      output_high(pin_c1);
      else 
      output_low(pin_c1);
   }
}



hata yokta warning ne anlama geliyor

JKramer

Sonsuz döngü için kullanılan, while şartını her zaman sağladığı için uyarı veriyor, önemli değil. Rahatsız ediyorsa
for(;;)
ile değiştirebilirsiniz.