GLCD farklı bitmap basma

sitemdepresif

Yeni Üye
Katılım
4 Ocak 2021
Mesajlar
4
Merhaba projemde GLCD'de bir çıktı aldıktan sonra diğerine geçmesini istiyorum fakat ilkini gösterip orada duruyor.

C:
void main()
{

   setup_adc_ports(NO_ANALOGS);
   setup_adc(ADC_OFF);
   setup_psp(PSP_DISABLED);
   setup_spi(FALSE);
   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
   setup_timer_1(T1_DISABLED);
   setup_timer_2(T2_DISABLED,0,1);
   set_tris_a(0x00); // A portlari cikis ayarlandi.
   set_tris_c(0b11000000); // C portlari RS232 kullanimina dikkat edilerek cikis/giris olarak ayarlandi.
   glcd_init(on); // GLCD aktif edildi.
   delay_ms(100); // Bekleme suresi
   logoyaz(); // Logo yazma fonksiyonu


}
void bitmapyaz()
{


      int a=0;
      int b=0;


      for(i=0;i<64;i+=8)
      {
         for(j=0;j<128;j++)
         {
            for(k=0;k<8;k++)
            {
               if(bit_test(l1[syc],k))
               {
                  glcd_pixel(a+j,b+i+k,ON);

               }
            }
            syc++;
         }
      }
    
      glcd_init(off);

      glcd_init(on);
      int x=0;
      int y=0;
      syc=0;

      for(i=0;i<64;i=8)
      {
         for(j=0;j<128;j++)
         {
            for(k=0;k<8;k++)
            {
               if(bit_test(logo2[syc],k))
               {
                  glcd_pixel(x+j,y+i+k,ON);

               }
            }
            syc++;
         }
      }
      glcd_init(off);
   }
}
 
Son düzenleme:
Bu hangi işlemci? Arduino mu?
 
İlk resimi sorunsuz gösteriyorsa main deki son 3 satırı sonsuz döngü içine alman yeterli.

Kod:
while(true)
{
       glcd_init(on); // GLCD aktif edildi.
       delay_ms(100); // Bekleme suresi
       logoyaz(); // Logo yazma fonksiyonu
}
 
LogoYaz kısmı tam doğru çalışmıyor anlaşılan.
Algoritma iyi değil ama kodunda bariz bir hata göremedim.
glcd_init lerden sonra biraz bekleme koymayı dene. delay_ms(100) gibi.
 
LogoYaz kısmı tam doğru çalışmıyor anlaşılan.
Algoritma iyi değil ama kodunda bariz bir hata göremedim.
glcd_init lerden sonra biraz bekleme koymayı dene. delay_ms(100) gibi.
Evet fonksiyonlarda sorun var sanırım. logoyaz gibi başka bir fonksiyon tanımlayınca oluyor sıra sıra fakat aynı fonksiyon içinde sadece tek görüntü elde edebiliyorum.
 
Döngünün logoyaz fonksiyonunu komple kapsaması gerekiyor, yoksa bir kere tuş soruyor ve bir daha da sormuyor.

Yalnız programla ilgili de bazı eleştirilerim var. Çok özensiz ve dağınık yazıldığı için takip etmesi son derece zor. Şu kurallara dikkat edersen daha iyi programlar yazabilirsin:

  • İç içe giren kod bloklarını belli sayıda boşluk kadar sağa kaydır.

C:
// okunmasi ve takip edilmesi cok zor
for (i = 0; i < 8; ++i)
{
for (j = 0; j < 8; ++j)
{
for (k = 0; k < 8; ++k)
{
birseyler_yap();
}
}
}

// bu daha kolay anlasiliyor
for (i = 0; i < 8; ++i)
{
    for (j = 0; j < 8; ++j)
    {
        for (k = 0; k < 8; ++k)
        {
            birseyler_yap();
        }
    }
}

  • Operatörlerden, virgüllerden ve keywordlerden sonra bir boşluk bırak

C:
// okunmasi ve hata varsa gormek cok zor
for(i=0;i<8;++i){if(flag==0)flag_is_set();}

// simdi okunmasi daha kolay
for (i = 0; i < 8; ++i)
{
    if (flag == 0)
    {
        flag_is_set();
    }
}

  • Belli bir düzen ve simetri ile kod yaz
C:
// cok daginik ve ozensiz yazilan bir kod. Adeta
// su lanet seyi bitireyim de kurtulayim dusuncesi ile yazilmis.
int   main(   )
    {

            if (flag = 0)
            {
                            birseyler_yap()     ;

            
            
            }
        
        
        ilk_is()  ;
                       ikinci_is  ();

return 0;   
}

// bu daha duzgun ve ozenli
int main()
{
    if (flag = 0)
    {
        birseyler_yap();
    }
        
    ilk_is();

    ikinci_is();

    return 0;   
}
 
Mesela Uluslararsı Arap Saçı C kodu yarışmasında adam şöyle bir uçak simulatör kodu geliştirmiş. Kod derlenip çalışıyor da. Ama bunun nasıl çalıştığın anlamak için sence ne kadar zaman harcaman lazım? :cheeky5:

C:
#include                                     <math.h>
#include                                   <sys/time.h>
#include                                   <X11/Xlib.h>
#include                                  <X11/keysym.h>
                                          double L ,o ,P
                                         ,_=dt,T,Z,D=1,d,
                                         s[999],E,h= 8,I,
                                         J,K,w[999],M,m,O
                                        ,n[999],j=33e-3,i=
                                        1E3,r,t, u,v ,W,S=
                                        74.5,l=221,X=7.26,
                                        a,B,A=32.2,c, F,H;
                                        int N,q, C, y,p,U;
                                       Window z; char f[52]
                                    ; GC k; main(){ Display*e=
 XOpenDisplay( 0); z=RootWindow(e,0); for (XSetForeground(e,k=XCreateGC (e,z,0,0),BlackPixel(e,0))
; scanf("%lf%lf%lf",y +n,w+y, y+s)+1; y ++); XSelectInput(e,z= XCreateSimpleWindow(e,z,0,0,400,400,
0,0,WhitePixel(e,0) ),KeyPressMask); for(XMapWindow(e,z); ; T=sin(O)){ struct timeval G={ 0,dt*1e6}
; K= cos(j); N=1e4; M+= H*_; Z=D*K; F+=_*P; r=E*K; W=cos( O); m=K*W; H=K*T; O+=D*_*F/ K+d/K*E*_; B=
sin(j); a=B*T*D-E*W; XClearWindow(e,z); t=T*E+ D*B*W; j+=d*_*D-_*F*E; P=W*E*B-T*D; for (o+=(I=D*W+E
*T*B,E*d/K *B+v+B/K*F*D)*_; p<y; ){ T=p[s]+i; E=c-p[w]; D=n[p]-L; K=D*m-B*T-H*E; if(p [n]+w[ p]+p[s
]== 0|K <fabs(W=T*r-I*E +D*P) |fabs(D=t *D+Z *T-a *E)> K)N=1e4; else{ q=W/K *4E2+2e2; C= 2E2+4e2/ K
 *D; N-1E4&& XDrawLine(e ,z,k,N ,U,q,C); N=q; U=C; } ++p; } L+=_* (X*t +P*M+m*l); T=X*X+ l*l+M *M;
  XDrawString(e,z,k ,20,380,f,17); D=v/l*15; i+=(B *l-M*r -X*Z)*_; for(; XPending(e); u *=CS!=N){
                                   XEvent z; XNextEvent(e ,&z);
                                       ++*((N=XLookupKeysym
                                         (&z.xkey,0))-IT?
                                         N-LT? UP-N?& E:&
                                         J:& u: &h); --*(
                                         DN -N? N-DT ?N==
                                         RT?&u: & W:&h:&J
                                          ); } m=15*F/l;
                                          c+=(I=M/ l,l*H
                                          +I*M+a*X)*_; H
                                          =A*r+v*X-F*l+(
                                          E=.1+X*4.9/l,t
                                          =T*m/32-I*T/24
                                           )/S; K=F*M+(
                                           h* 1e4/l-(T+
                                           E*5*T*E)/3e2
                                           )/S-X*d-B*A;
                                           a=2.63 /l*d;
                                           X+=( d*l-T/S
                                            *(.19*E +a
                                            *.64+J/1e3
                                            )-M* v +A*
                                            Z)*_; l +=
                                            K *_; W=d;
                                            sprintf(f,
                                            "%5d  %3d"
                                            "%7d",p =l
                                           /1.7,(C=9E3+
                              O*57.3)%0550,(int)i); d+=T*(.45-14/l*
                             X-a*130-J* .14)*_/125e2+F*_*v; P=(T*(47
                             *I-m* 52+E*94 *D-t*.38+u*.21*E) /1e2+W*
                             179*v)/2312; select(p=0,0,0,0,&G); v-=(
                              W*F-T*(.63*m-I*.086+m*E*19-D*25-.11*u
                               )/107e2)*_; D=cos(o); E=sin(o); } }
 
Bu arada kullandığın grafik LCD nedir? Bir de PIC devresini kendin mi kurdun yoksa hazır bir PIC geliştirme kartı mı kullanıyorsun? Test düzeneğinin de resmini koyarsan başkalarına da fikir verir.
 

Forum istatistikleri

Konular
5,833
Mesajlar
99,482
Üyeler
2,478
Son üye
TA3CD

Son kaynaklar

Son profil mesajları

gruptaki arkadaşlara selamlar. sıteyi bu gün fark ettim. Asansör için 2x7 segment LCD gösterge üretmek istiyorum. acaba bu sayfadaki arkadaşlardan destek alabilirmiyim. LCD nin mantık açılımı ektedir.
deneyci wrote on TA3UIS's profile.
Selam.
Amatör telsiz lisansı nasıl alınıyor?
Lisansı olmayanı forumlarına almıyorlar. :)
Bilgi alamıyoruz.
cemalettin keçeci wrote on HaydarBaris's profile.
barış kardeşim bende bu sene akıllı denizaltı projesine girdim ve sensörleri arastırıyorum tam olarak hangi sensör ve markaları kullandınız yardımcı olabilir misin?
m.white wrote on Altair's profile.
İyi akşamlar.Arabanız ne marka ve sorunu nedir.Ben araba tamircisi değilim ama tamirden anlarım.
* En mühim ve feyizli vazifelerimiz millî eğitim işleridir. Millî eğitim işlerinde mutlaka muzaffer olmak lâzımdır. Bir milletin hakikî kurtuluşu ancak bu suretle olur. (1922)
Back
Top