grafik lcd

Başlatan bbs2006, 15 Şubat 2014, 14:26:13

bbs2006

merhaba
garfik lcd ekranda her butona bastıgım zaman  bir değişkenin değerini artıtıp sayma işlemi yaptırmak istiyorum. sayma işlemi gerçekleşiyor. ancak herzaman aynı yere yazdıgı zaman önceki deger üzerine yazıyor. önceki deger temizlenip yeni değeri göstermek için ne yapabilir. size  yazılım veriyorum.

devrenin Yazılımı


/*-------------------------------------------------------------------
PORT KONTROLUNUN GRAFİK LCD UYGULAMASI
--------------------------------------------------------------------
*/
#include <16F877.h>
#fuses HS,NOWDT,NOPROTECT,NOPUT,NOLVP
#use delay(clock=20000000)
#include <HDM64GS12.c> //glcd_pixel ve glcd_init fonksiyonlarını
          //kullanabilmemiz için tanımlanıyor.
#include <graphics.c>  //Grafik dosyalarını kullanılması için tanımlanıyor.
//#include <GLCD.c>

#use standard_io(a)    //Hangi Pinlerin giriş veya çıkış olacagını ayarlar.
#define ileri pin_A0







   int a,b,c,d;
   CHAR Yaz1[5];
   CHAR Yaz2[5];
   CHAR Yaz3[5];
   CHAR Yaz4[5];
/*-------------------------------------------------------------------
ANA PROGRAM BAŞLANGICI
--------------------------------------------------------------------
*/

void main(){
    glcd_init(on);   
   
   
   CHAR A1[ ]="1. Oyuncu......";
   CHAR A2[ ]="2. Oyuncu......";
   CHAR A3[ ]="3. Oyuncu......";
   CHAR A4[ ]="4. Oyuncu......";
   CHAR A5[ ]="T.U.T.E.M.L.";
   while(TRUE){

if(!input(ileri)){
  a=a+1;
 
 
 
 
 
  sprintf(yaz1,"%d",a);
  sprintf(yaz2,"%d",b);
  sprintf(yaz3,"%d",c);
  sprintf(yaz4,"%d",d);
  glcd_text57(90,1,yaz1, 1, 1);
  glcd_text57(105,15,yaz2, 1, 1);
  glcd_text57(105,30,yaz3, 1, 1);
  glcd_text57(105,45,yaz4, 1, 1);
}
else
if(a==255) a=0;

  glcd_text57(1,1, A1, 1, 1);                     
  glcd_text57(1,15,A2, 1, 1);                 
  glcd_text57(1,30,A3, 1, 1);     
  glcd_text57(1,45,A4, 1, 1);
  glcd_text57(1,57,A5, 1, 1);
   }
    }

sadogan

Yazdığınız yeri önce silip sonra yazacaksınız.
silmek için
glcd_rect(12, 34, 91, 50, YES, OFF);
12,34,91,50 yaza yere silmek istediğiniz alanın koordinatlarını vereceksiniz.

bbs2006

merhaba sizin dediğiniz gibi yaptım olmadı. ben aşağıdaki gibi yaptım oldu. ancak çok titreme  yapıyor . bunun sebebi glcd_init(on) .bunu kullanmadan nasıl yapabiliriz. kodlar aşağıda


/*-------------------------------------------------------------------
PORT KONTROLUNUN GRAFİK LCD UYGULAMASI
--------------------------------------------------------------------
*/
#include <16f877.h>
#fuses HS,NOWDT,NOPROTECT,NOPUT,NOLVP
#use delay(clock=20000000)
#include <HDM64GS12.c> //glcd_pixel ve glcd_init fonksiyonlarını
          //kullanabilmemiz için tanımlanıyor.
#include <graphics.c>  //Grafik dosyalarını kullanılması için tanımlanıyor.
#use standard_io(a)    //Hangi Pinlerin giriş veya çıkış olacagını ayarlar.
#define ileri pin_A0
#define geri pin_A1
#define ileri1 pin_A2
#define geri1 pin_A3
#define ileri2 pin_A4
#define geri2 pin_A5
#define ileri3 pin_e0
#define geri3 pin_e1
  unsigned  char a=0,b,c,d,m;
   CHAR Yaz11[5];
   CHAR Yaz1[5];
   CHAR Yaz2[5];
   CHAR Yaz3[5];
   CHAR Yaz4[5];
/*-------------------------------------------------------------------
ANA PROGRAM BAŞLANGICI
--------------------------------------------------------------------
*/

void main(){
 
  glcd_init(on);
   CHAR A1[ ]="1. Oyuncu......";
   CHAR A2[ ]="2. Oyuncu......";
   CHAR A3[ ]="3. Oyuncu......";
   CHAR A4[ ]="4. Oyuncu......";
   CHAR A5[ ]="T.U.T.E.M.L.";
   while(TRUE){

if(!input(ileri)){    //1.oyuncu
  a=a+1;
if(a==120) a=0;
}
if(!input(geri)){
  a=a-1;
}
if(!input(ileri1)){   // ikinci oyuncu
  b=b+1;
if(b==120) b=0;
}
if(!input(geri1)){
  b=b-1;
}
if(!input(ileri2)){     // üçüncü oyuncu
  c=c+1;
if(c==120) c=0;
}
if(!input(geri2)){
  c=c-1;
}
if(!input(ileri3)){
  d=d+1;
if(d==120) d=0;
}
if(!input(geri3)){
  d=d-1;
}
  sprintf(yaz1,"%u",a);
  sprintf(yaz2,"%u",b);
  sprintf(yaz3,"%u",c);
  sprintf(yaz4,"%u",d);
 
  glcd_init(on);
  glcd_text57(105,1,yaz1, 1, 1);
  glcd_text57(105,15,yaz2, 1, 1);
  glcd_text57(105,30,yaz3, 1, 1);
  glcd_text57(105,45,yaz4, 1, 1);
  glcd_text57(1,1, A1, 1, 1);                     
  glcd_text57(1,15,A2, 1, 1);                 
  glcd_text57(1,30,A3, 1, 1);     
  glcd_text57(1,45,A4, 1, 1);
  glcd_text57(1,57,A5, 1, 1);
   }
}