Proje Destek..Sıcaklık--RS232

Başlatan mtn1905, 05 Aralık 2009, 01:40:29

mtn1905

Hi-tech C ile pic ve pc arasında seri iletişim kurmak istiyorum.Yeni yeni bu işlere girişiyor sayılırım.

LM35 ile ölçüm yapıp bunu LCD de gösterebiliyorum ki hazır kodu var istediğim bu veriyi seri port ile PC ye gönderebilmek..ISIS de hyper terminalde bile göstermeyi başaramadım. Fxdev e ait RS232 örneği ile uğraştım ama yine olmadı yardımcı olabilicek arkadaşlar lütfen yardım etsin saygılar

ahmet2004

Yazdığınız kodu ve şemanızı koyabilseniz daha güzel olmazmı?

Takıldığınız yerlerde arkadaşlarımız çok rahat cevap yazabilirler.

Mesela sizin kod ile rs232 kodu nasıl birleştirdiniz.Neler yaptınız.

Bunu bilmeden nasıl yardım edilecek.

mtn1905

#include <htc.h>
#include <stdio.h>	// printf için gerekli C standart giriş çıkış kütüphanesi
#include "delay.h"	// Gecikme kütüphanesi tanımlanıyor
#include "lcd.h"	// LCD kütüphanesi tanımlanıyor
#include "usart.h"	// USART kütüphanesi tanımlanıyor
#include <pic.h>


void main(void)		// Ana fonksiyon alanı
{	
// Değişken tanımlamaları
const float lsb=5.0/1024.0;
unsigned char gerilim, ust, alt;
float sicaklik;
unsigned char sonuc[]="SICAKLIK = "; 
	
char i,j;
	TRISB=0;		// LCD için çıkış
	TRISC=0xF0;		// USART pinleri giriş olarak kabul ediliyor
	PORTB=0;
	TRISA=1;		//Giris
	
	lcd_init();			// LCD ilk ayarları yapılıyor
	usart_init();		// USART ilk ayarları yapılıyor
		
	/*lcd_yaz("  www.FxDev.org");
	lcd_gotoxy(2,1);
	lcd_yaz("   LCD / USART");*/
	
	//DelayMs(250);DelayMs(250);DelayMs(250);DelayMs(250);
	lcd_clear();
	lcd_komut(ImlecYanSon);	// Imlec yanıp sönecek
	

// ADC ayarları
ADCON1=0x8E; // AN0 analog giriş
ADCON0=0x41; // A/D aktif 

	for( ; ; )
	{
// A/D çevrimi başlat 
ADCON0=0x45; 
// Dönüşümün bitmesini bekle
while((ADCON0&4)!=0); 

// Dönüşüm sonucunu kaydet
gerilim=ADRESH; 
gerilim=256*gerilim+ADRESL;

// Sıcaklık bilgisini oluştur
sicaklik=gerilim*lsb*100.0; 
// Tam ve ondalık kısımları ayır
ust=(int)sicaklik; 
alt=(int)(10.0*(sicaklik-ust)); 

//LCD'ye yazdırma işlemlerini yap
printf("%d.%dC ",ust,alt);

// 1. satıra geç ve LCD'ye yaz
lcd_yaz("LCD Termometre"); 

// 2. satıra geç ve sıcaklık değerini yaz
lcd_gotoxy(2,1); 
// LCD'ye yazdırma işlemlerini yap
sprintf(sonuc+11,"%d.%dC ",ust,alt);
lcd_yaz(sonuc);  

// Biraz bekle ve ekranı temizle  
DelayMs(250); 
lcd_clear();
//	j++;
//		i=getch();		// Karekter alınıyor
//		veri_yolla(i);	// LCD'ye basılıyor
//		putch(i);		// Virtual terminal'e basılıyor
		/*if(j==16)		// İlk satıra geçiliyor
		{
			printf("\n\r2x16:");
			lcd_gotoxy(2,1);
		}
		else if(j==32)	// 2. satıra geçiliyor
		{
			veri_yolla(i);
			lcd_clear();
			printf("\n\r1x16:");
			j=0;
		}*/

	}
}

bu kod çalışıyor acaba sadece bunlar yeterli mi pc den bilgi alabilir miyim?
Visual Basic te neler yazmam gerekiyor.

dosyaların tamamını update ettim

http://rapidshare.com/files/316569439/Desktop.rar.html

http://rapidshare.de/files/48789427/Desktop.rar.html

http://www.4shared.com/file/165913316/ad2d6fc8/Desktop.html

mtn1905

yardımcı olabilecek biri yok mu arkadaşlar???

Digimensch

Arkadaslar upload ettiginiz paketteki .DSN dosyalrini hangi verisonla hazirladiniz?
Bende ISIS 7.4 SP3 var ama bu .DSN dosyalarini acamiyorum.
Eski version diyor.

Digimensch

Tamam arkadaslar sorunu hallettim.
Sorunu daha yeni bir Version olan Proteus7.6_SP0 versionu kurarak cözdüm.

mtn1905

Proteus 7.5 sp3 kullanıyorum ben belki onunla alakalı olabilir.Bu arada dediğim sorunun bir kısmını hallettim şimdi ise PC den bilgi alıp pic e yollamak istiyorum.PC den yolladığım bilgiyi de eşik sıcaklık değeri olarak tanımlayacağım.Yani o eşik değerin üstünde sıcaklık oluştuğunda örneğin bir fan devreye girecek.Bunun üzerine çalışıyorum.