hi tech pic lite kulanımını iyi bilen var mı

Başlatan kaycin, 24 Mayıs 2004, 17:56:36

kaycin

geçen yayınlanan ultrasonik alıcı-verici kullanılarak yapılan proje ilgimi çekti ama ses hızının sabit olması
hassas ölçümler yapmamızı engelliyor bir araştırma yaptım ve ses hızının sıcaklıkla değişiminin bir grafiğini
buldum şöyle ki;
sıcaklık   ses hızı
0      331,5
10      337,5
20      343,5
30      349,5
40      355,5
50      361,5
görüleceği gibi doğru bir orantı var seshızı=331,5+sıcaklık*0,6
aynı zamanda elimde sabit ses hızıyla yapılmış pic c ile yazılmış program var

#include<pic.h>
#include<delay.c>
#include<lcd.c>
#include<stdio.h>

unsigned char bayrak;

	void bir_saniye(void)
{
	unsigned char j;
	for(j=0;j<4;j++)DelayMs(250);
}

void interrupt bitti(void)
{
	bayrak=1;
	T0IF=0;
	di();
}

puls_gonder()
{
	unsigned char j;
	TMR0=0;
	for(j=0;j<40;j++)
	{
		RA0=1;
		DelayUs(15);
		RA0=0;
		DelayUs(10);
	}	
	T0IE=1;
	T0IF=0;
	ei();
}

main(void)
{
	unsigned int zaman,tyanki,uzaklik,tamuzak;
	unsigned char goster[]="UZAKLIK=    ";

	TRISB=0X10;
	TRISA=0XF3;

	T0CS=0;
	PSA=0;
	PS0=1;
	PS1=1;
	PS2=1;

	RA0=0;
	bir_saniye();
	lcd_init();
	lcd_clear();
	lcd_puts("UZAKLIK OLCUMU");
	bir_saniye();
	lcd_clear();
		

	for(;;)
	{
		bayrak=0;
		puls_gonder();
		while(RA1==0&&bayrak==0);
		if(bayrak==0)
		{
			zaman=TMR0;
			tyanki=zaman/4;
			uzaklik=17*tyanki;
			tamuzak=uzaklik+tyanki/4;
			sprintf(goster+9,"%d",tamuzak);
			lcd_clear();
			lcd_puts(goster);
			bir_saniye();
		}
		else
		{
			lcd_clear();
			lcd_puts("BEL˜RS˜Z");
			bir_saniye();
		}
	}
}
      
aynı zamanda gene pic c ile yazılmış sıcaklık ölçen bir proje var;

#include<pic.h>
#include<delay.c>
#include<stdio.h>
#include<lcd.c>

#define DO RB4
#define CLK RB5
#define CS RB6

__CONFIG( WDTDIS & XT & UNPROTECT );

unsigned char sicakligi_oku(void)
{
	unsigned char i,sayisal;

	sayisal=0;
	CS=0;
	for(i=0;i<9;i++)
	{
		CLK=1;
		CLK=0;
		sayisal=sayisal<<1;
		sayisal=sayisal+DO;
	}
	CS=1;
	return(sayisal);
}

void iki_saniye(void)
{
	unsigned char j;
	for(j=0;j<40;j++);DelayMs(250);
}

main(void)
{
	const int Isb=5000/256;
	int mv,santigrat;
	unsigned char sicaklik;
	unsigned char goster[]="SICAKLIK=";

	TRISB=0X10;
	TRISA=0;
	CS=1;
	CLK=0;
	lcd_init();
	lcd_clear();
	lcd_puts(goster);
	iki_saniye;

	for(;;)
	{
		sicaklik=sicakligi_oku();
		mv=sicaklik*Isb;
		santigrat=mv/10;
		lcd_clear();
		sprintf(goster+6,"%d",santigrat);
		lcd_puts(goster);
		iki_saniye;
		
	}
}
      
   
bu iki proje htpl pic c derleyicisiyle ayrı ayrı derleniyor ama;

#include<pic.h>
#include<delay.c>
#include<lcd.c>
#include<stdio.h>

/*#define DO RB4
#define CLK RB5
#define CS RB6*/

unsigned char bayrak;

	void bir_saniye(void)
{
	unsigned char j;
	for(j=0;j<4;j++)DelayMs(250);
}

void interrupt bitti(void)
{
	bayrak=1;
	T0IF=0;
	di();
}

puls_gonder()
{
	unsigned char j;
	TMR0=0;
	for(j=0;j<40;j++)
	{
		RA0=1;
		DelayUs(15);
		RA0=0;
		DelayUs(10);
	}	
	T0IE=1;
	T0IF=0;
	ei();
}

/*unsigned char sicakligi_oku(void)
{
	unsigned char i,sayisal;
	sayisal=0;
	CS=0;
	for(i=0;i<9;i++)
	{
		CLK=1;
		CLK=0;
		sayisal=sayisal<<1;
		sayisal=sayisal+DO;
	}
	CS=1;
	return(sayisal);
}*/


main(void)
{
//	unsigned char sicaklik;
	unsigned int zaman,tyanki,uzaklik,tamuzak;
	unsigned char goster[]="UZAKLIK= ";

	TRISB=0;
	TRISA=2;
	

	T0CS=0;
	PSA=0;
	PS0=1;
	PS1=1;
	PS2=1;

	RA0=0;
	bir_saniye();
	lcd_init();
	lcd_clear();
	lcd_puts("UZAKLIK OLCUMU");
	bir_saniye();
	lcd_clear();
		

	for(;;)
	{
//		sicaklik=sicakligi_oku();
		bayrak=0;
		puls_gonder();
		while(RA1==0&&bayrak==0);
		if(bayrak==0)
		{
			zaman=TMR0;
			tyanki=zaman/4;
			uzaklik=17*tyanki;
			tamuzak=uzaklik+tyanki/4;
			sprintf(goster+7,"%d",tamuzak);
			lcd_clear();
			lcd_puts(goster);
			bir_saniye();
		}
		else
		{
			lcd_clear();
			lcd_puts("BEL˜RS˜Z");
			bir_saniye();
		}
	}
}
      
şeklinde birleştirmeye başladığmda daha /*..................*/ kısımlarını eklediğimde

can t find 0x7 words (ox7 withtotal) for psect text2 in segment code (error)
can t find 0x7 words (ox7 withtotal) for psect text5 in segment code (error)

hatalarını veriyor.Derleme hatalarını bu kısımlarda vermeye başladığından diğerlerini ekleyemedim
bu projede ses hızı 34.35cm/msn alınmış.Denklemde seshızı=331,5+sıcaklık*0,6 bu benim eklediğim formül

pic c yi iyi bilmiyorum unutmadan pic16F84 kullanıyorum
birleştirmeme yardım edersen sevinirim
devam ediyoruz

hamzabilgen

kardeş boşver pic c lite i git tam sürümünü bul. hatta mümkünse hi-tech den vazgeç ben sonunda bırakıp ccs kullandım. cok daha iyi.

selvi

bende dogan ibrhimin ultrasonik sensorlerle mesafe olcum prosjesini derledim.lcd de herhangi bir yazi cikmadi.bunu calistirdiniz mi?
Yaşam anlamlandırıldıkça kutsaldır....

arslan74

Merhaba,

kaycin bey senin en büyük hatan 16f84 chip'ini kullanman. Eğer C dilinde kod yazacaksan ve virgüllü sayılarla matematiksel işlem yapacaksan sana kesinlik 1k hazıfa yetmez. 16f84 chip basit uygulamalar örneğin basit öğrenci projeleri için uygun. Onun yerine 16f876 kullanmış olsaydın o hata mesajını almazdın. Cünkü verdiği hata mesajı yetersiz hafıza olduğuna cıkıyor.

Ayrıca Hi-Tech C metamatiksel işlemler için CCS den daha güvenilir ve verimli kod üretiyor.


Selamlar.

lamercik

Alıntı yapılan: "selvi"bende dogan ibrhimin ultrasonik sensorlerle mesafe olcum prosjesini derledim.lcd de herhangi bir yazi cikmadi.bunu calistirdiniz mi?

niçin illakide ultsasonik ölçüm? çok  profosyonel + kullanışlı bir çözüm değil. ama illakide bir ultrasonik ölçüm yapan devre diyosanız buyrun size adres.

http://www.techdesign.be/projects/008/008.htm