Grafik Lcd Update

Başlatan mcn, 27 Mayıs 2010, 13:48:36

mcn

18f452 ve  grafik lcd ile voltaj ölçme uygulaması yapıyorum.

Grafik lcd nin sürekli güncellenmesi için "glcd_update();" komutunu kullandım(programın en sonuna yazdım) ama şöyle bir hata aldım:

"Function used but not defined:  ....glcd_update  SCR=1420"

programın başında "#define FAST_GLCD " şeklinde tanımlamada yaptım.

Sorunum nedir,nasıl düzeltebilirim?
www.teknikyazi.com --üşenme,erteleme,vazgeçme...

mcn

Yok mu bir yöntemi,yoksa glcd_init(on); komutuyla her döngü başında silip baştan yazdırmaya devam mı :'(
www.teknikyazi.com --üşenme,erteleme,vazgeçme...

ahmet2004

#2
Hangi lcd'i kullanıyorsun.

glcd_update(); tanımlanmamış diyor.#include "HDM64GS12.c" gibi

Veya glcd_update(); komutu neyin içindeyse önce tanıt komutu ccs'ye

yazılan kodları eklesen saniyede cevap alırsın.Belki bir dosya içinde yazılım hatası yaptın.

mcn

Kodları ekledim:

#include <18f452.h>  

#device ADC=10  
// Denetleyici konfigürasyon ayarları
#fuses XT,NOWDT,NOPROTECT,NOBROWNOUT,NOLVP,NOPUT,NOCPD

#use delay (clock=20000000) 
#define GLCD_CS2     PIN_B2
#define GLCD_CS1     PIN_B3
#define GLCD_RST     PIN_B4
#define GLCD_RW     PIN_B5
#define GLCD_DI     PIN_B6
#define GLCD_E     PIN_B7



#include <HDM64GS12.c> // 
#include <graphics.c>  // 
#define FAST_GLCD 



unsigned long int bilgi; 
float voltaj,MPPTV;           

char text[32];

char mv[]="VOLTAJ :";

void main ( )
{
   setup_adc(adc_clock_div_32);  
   setup_adc_ports(ALL_ANALOG);   
   enable_interrupts(INT_AD);   
   enable_interrupts(GLOBAL);   
  
   glcd_init(ON); //
   
  
   while(1)   // sonsuz döngü
   { //glcd_init(ON);
   


      set_adc_channel(0);   // 
      delay_us(20);         // 
      bilgi=read_adc();     // 
      voltaj=(0.00488*bilgi);   // 
      MPPTV=(60*voltaj)/4;
     
      sprintf(text,"%f",MPPTV);
      glcd_text57(10, 40, text, 2, ON);
      
      //glcd_update();
     
   }
}
www.teknikyazi.com --üşenme,erteleme,vazgeçme...

ahmet2004

#4
glcd_update();

senin düşündüğün gibi bir komut değil.#define FAST_GLCD'i glcd'in dosyasından önce çağırmalısınki hata vermesin.


Böyle yaparsan daha doğru olur.


#include <18f452.h> 

#device ADC=10 
// Denetleyici konfigrasyon ayarlar
#fuses XT,NOWDT,NOPROTECT,NOBROWNOUT,NOLVP,NOPUT,NOCPD

#use delay (clock=20000000) 

#define GLCD_CS2 PIN_B2
#define GLCD_CS1 PIN_B3
#define GLCD_RST PIN_B4
#define GLCD_RW PIN_B5
#define GLCD_DI PIN_B6
#define GLCD_E PIN_B7

#define FAST_GLCD

#include <HDM64GS12.c> 
#include <graphics.c>


unsigned long int bilgi; 
float voltaj,MPPTV; 

char text[32];

char mv[]="VOLTAJ :";

void main(void)
{
setup_adc(adc_clock_div_32); 
setup_adc_ports(ALL_ANALOG); 
enable_interrupts(INT_AD); 
enable_interrupts(GLOBAL); 

glcd_init(ON);

   while(1) // sonsuz dongu
   {
      set_adc_channel(0); 
      delay_us(20);
      bilgi=read_adc();
      voltaj=(0.00488*bilgi);
      MPPTV=(60*voltaj)/4;

      sprintf(text,"%f",MPPTV);
      glcd_text57(10, 40, text, 2, ON);
      delay_ms(200);
      glcd_text57(10, 40, text, 2, OFF);
   }
}



mcn

Hocam önce teşekkürler,

aşağıdaki şekilde aşağıdaki kombinasyonu uygulayınca istediğime yakın oluyor
sprintf(text,"%f",MPPTV);
      glcd_text57(10, 40, text, 2, ON);
      delay_ms(200);
      glcd_text57(10, 40, text, 2, OFF);


Ancak,
#define FAST_GLCD'i glcd'nin dosyasından önce çağırınca,hata vermiyor ama bu sefer ekranda hiçbişey yazmıyor.sonrasında çağırınca da aynı şekilde hata veriyor zaten,yani #define FAST_GLCD'i kullanamıyorum.bide bu #define FAST_GLCD baya bir ram kaplıyor sanırım,direk  ram kullanım oranı %80 i gördü.

bu glcd_update(); komutu ne işe yarıyor peki,onu anlamadım???
www.teknikyazi.com --üşenme,erteleme,vazgeçme...