LCD ekrana yazma fonksiyonu

tunahurgh

Üye
Katılım
2 Mar 2021
Mesajlar
26
Puanları
1
Yaş
41
Merhaba Arkadaşlar,
yazdığım bir programda bol miktarda ekrana konum belirleyip yazı yazmaktayım.

lcd_gotoxy(1,1);
delay_ms(5);
printf(lcd_putc, "MERHABA ARKADASLAR");

gibi.

Ama bir sorun var. ROM doldu hatası veriyor. Bu yüzden programı kısaltmam gerekiyor. Ben de yukarıdaki komut satırlarını bir fonksiyonda gerçekleştirip kodu kısaltabilirim diye düşündüm. Ama fonksiyonu yazmaya çalışırken kafam iyice karıştı.
LCD deki x,y koordinatlarını ve yazacağım metni girebileceğim bir fonksiyonu yazmamda yardımcı olur musunuz.
CCS c kullanıyorum.

Teşekkür ederim
 
Eğer ekrana yazdırdığın mesajlar farklı çok fazlaysa bir işe yaramaz.
Lcd ye yazdırdığın mesajlar program hafızasında depolanır,
yani fonksiyonda olsa birşey değişmeyebilir ancak
printf kullanımı çok alan harcıyorsa işe yarayabilir.

İstediğin örnek:
Aslında başka birşey için yazmıştım ama düzenlediğim hali aşağıdaki kodda, orjinali linkte, düzenlediğim muhtemelen çalışır, linkteki denenmiştir.
https://rmtulay.wordpress.com/2015/05/22/ccsc-rom-dizilerini-pointer-ile-kullanma/
Kod:
//Yazar: RaMu [email protected]
//pointer ile program hafızasından değer okuma örneği tamam.

#include proje.h
rom char mesaj_1[] = {"Merhaba ben RaMu"};



//**********************************************
void romdanal_yaz( rom char *s)
//s ramde tanımlı, romdaki veriye işaret ediyor
{
   while(*s != '')
      {
      lcd_putc(*s );
      *s++;
      }
  }
//**********************************************



void main()
{

//unsigned int8 i=0;

   while(TRUE)
   {

//pointer+fonksiyon ile lcd
     lcd_gotoxy (0,0);
     romdanal_yaz( mesaj_1 );
  //veya romdanal_yaz( &mesaj_1[0] );
   }

}
 
Eğer ekrana yazdırdığın mesajlar farklı çok fazlaysa bir işe yaramaz.
Lcd ye yazdırdığın mesajlar program hafızasında depolanır,
yani fonksiyonda olsa birşey değişmeyebilir ancak
printf kullanımı çok alan harcıyorsa işe yarayabilir.

İstediğin örnek:
Aslında başka birşey için yazmıştım ama düzenlediğim hali aşağıdaki kodda, orjinali linkte, düzenlediğim muhtemelen çalışır, linkteki denenmiştir.
https://rmtulay.wordpress.com/2015/05/22/ccsc-rom-dizilerini-pointer-ile-kullanma/
Kod:
//Yazar: RaMu [email protected]
//pointer ile program hafızasından değer okuma örneği tamam.

#include proje.h
rom char mesaj_1[] = {"Merhaba ben RaMu"};



//**********************************************
void romdanal_yaz( rom char *s)
//s ramde tanımlı, romdaki veriye işaret ediyor
{
   while(*s != '')
      {
      lcd_putc(*s );
      *s++;
      }
  }
//**********************************************



void main()
{

//unsigned int8 i=0;

   while(TRUE)
   {

//pointer+fonksiyon ile lcd
     lcd_gotoxy (0,0);
     romdanal_yaz( mesaj_1 );
  //veya romdanal_yaz( &mesaj_1[0] );
   }

}
Teşekkür ederim deneyeceğim. Programı derlediğim zaman ROM kapasitesi %38 civarında olduğu halde ROM doldu diyor. niye %38, %100 civarında olması gerekmiyor mu.
 
Son düzenleme:
Görmeden kesin birşey demek zor.
Derlediğim yere kadar %38 oldu sıradaki kısmı derlersem %100 ü aşıyor manasında diyordur.
 
Öyle olduğunu sanmıyorum çünkü. Tek bir satırlık birşey yazsam dahi sınırı aşiyorum.
Görmeden kesin birşey demek zor.
Derlediğim yere kadar %38 oldu sıradaki kısmı derlersem %100 ü aşıyor manasında diyordur.
 
Nereye yazarsan?
Örnek proje paylaş kodları görelim, derleme hatasını görelim, bu şekilde ne demek istediğini çözemiyorum.
 
Hayır.
Burada paylaş istiyorsan.
Aksi halde sadece sana yardımı olur, forumlarda maksat herkesin faydalanması.
Kod ticari amacla kullanilacagi icin paylaşamiyorum malesef. sıkıntıyı çözebilirsek zaten forumda sebep ve çözüm konusunda paylaşım yapılacak ve herkes faydalanacak zaten.
 
Ekrana yazacağınız tüm değişkenleri
başka bir fonksiyonda birleştirin. Tek seferde
tüm ekranı yazdırın.
Ayrıca sabit verileri const ile belirleyin ki
RAM alanı yerine Flash alana yazılsın.
 

Forum istatistikleri

Konular
130,088
Mesajlar
932,953
Kullanıcılar
453,111
Son üye
Mupq

Yeni konular

Geri
Üst