Double değişkeni LCD yazdırma!

Başlatan BenC, 18 Aralık 2009, 10:50:01

BenC

Değerli üstadlar.

Hitech-C de double türünden tanımladığım bir değişkeni lcd de gösteremiyorum.  

Örnek vermem gerekirse

7345.567589 gibi bir sayıyı lcd de nasıl gösterebilirim. Double veriyi Stringe çevirecek bir fonksiyon varmı. C++ da ki ecvt() fonksiyonu gibi.

sprintf demeyin çünkü o sadece int veriyi dönüştürebiliyor.
ŞEHİT KANIYLA ALINMIŞ BU GÜZELİM VATANIN TOPRAKLARI KARIŞ KARIŞ SATILIYOR!!  VATAN HAİNİ OLMA!!

Eagle_Tim

Daha kısa bir yolu varmı bilmiyorum. ama uzun yolu şöyle; önce bu rakamı 4 bitlik değerler olacak biçimde ayırmalısınız. sonra hex 30 la toplayıp doğru sırada tek tek yollamalısınız. tabi virgülüde arada manual yollamalısınız..
Software and Hardware Design...

BenC

Cevap için teşekürler Eagle_Tim.

Söylediğiniz yöntemi en sona saklıyorum çünkü noktadan önce ve sonrası baya bir hane mevcut. Gps vs koordinat dönüşümü vs var içerisinde. ve kullandığım MCU da 16f877.

Bu kod hitec in kendi kütüphanesi. Lakin açıklamasında da yazdığı gibi hızlı ve sağlıklı olmayabilir ibaresi mevcut.  Nitekim denedim ve gördüm. belirli bir haneden sonra sapıtıyor.  Şimdilik bu ftoa() fonksiyonunu inceliyorum. Tabi sağlıklı çalışan bir fonksiyon önerisinede herzaman açığım.

char * ftoa(float f, int * status)
{
	static char		buf[25];
	char *			cp = buf;
	unsigned long	l, rem;

	if(f < 0) {
		*cp++ = '-';
		f = -f;
	}
	l = (unsigned long)f;
	f -= (float)l;
	rem = (unsigned long)(f * 1e6);
	sprintf(cp, "%lu.%9.9lu", l, rem);
	return buf;
}
ŞEHİT KANIYLA ALINMIŞ BU GÜZELİM VATANIN TOPRAKLARI KARIŞ KARIŞ SATILIYOR!!  VATAN HAİNİ OLMA!!

parda

Merhaba ;

Hafıza problemi yoksa printf veya bir varyasyonunu doğrudan lcd ye veya bir dizi değişkene yönlendirip kullanmak temiz iş olur.

Kolaylıklar.
Bildiğim tek şey, hiç bir şey bilmediğimdir.