Elektronik / Mikrodenetleyici Projeleri/

Havada yazı yazma visual basic rgb led ccs c

Bir çok havada yazı yazma uygulamasına göre daha üstün bir uygulama visual basic ile hazırlanan kontrol programı sayesinde istenilen yazı, belirlenen rekte yazdırılıyor.

Havada yazı yazma devresinde kullanılan mikrodenetleyici pic16f877 kod CCS C ile hazırlanmış 8 adet rgb led kullanılıyor.

Hazırlayan: Korhan USLU – Emeği geçen hazırlayan kişilere teşekkürler

Visual Basic code generator rgb programının kullanımı;

leds-rgb-Visual-Basic-code-generator-rgb-program-kullanimi

Yazı ve şekilleri oluşturmak için Visual Basic’de bir program yazdım. Program oluşturduğum şeklin oluşması için gereken kodları ve şeklin dizi halini C:\ de rgb.txt ve rgb1.txt dosyalarına oluşturuyor. ilk başta direk sıralı kodları kullanıyordum yazıyı oluşturmak için ama bu şekilde pic’in hafızası yetmiyordu, ben de şekli dizi halinde tanımlayıp döngüyle göstermeyi denedim ve çok daha az yer kapladı. tavsiyem rgb1.txt içine oluşan dizileri kullanın. rgb1.txt içinde fazladan oluşan 255 leri silin bi harfi 6 byte dan oluşturun sondaki bir 255 bir boşluk anlamında. harfleri birleştirip yazıyı oluşturun. ccs c kodlarına bakarsanız anlarsınız zaten. programda her oluşturduğunuz harf in dizisi rgb1.txt nin içine eklenecek. yani içindeki bilgiler silinmeyecek oraya dikkat edin.

RGB Ledler ile havada yazı yazdırma görüntüleri;

RGB LED’lerle havaya yazı yazma picproje2.c ccs c yazılım içeriği;

/***************************************************************
*  Proje   : RGB LED'lerle havaya yazı yazma                   * 
*  Name    : picproje2.c                                       *
*  Author  : [KORHAN USLU]                                     *
*  Notice  : Copyright (c) 2010 [KORHAN USLU]                  *
*          : All Rights Reserved                               *
*  Date    : 30.12.2010                                        *
*  Version : 4.4                                               *
*  korhan-uslu@hotmail.com                                     *
*  www.facebook.com/korhanuslu                                 *
****************************************************************
*/
#include <16f877.h>     // Kullanılacak denetleyicinin başlık dosyası tanıtılıyor.

#fuses XT,NOWDT,NOPROTECT,NOBROWNOUT,NOLVP,NOPUT,NOWRT,NODEBUG,NOCPD // Denetleyici konfigürasyon ayarları

#use delay (clock=4000000) // Gecikme fonksiyonu için kullanılacak osilatör frekansı belirtiliyor.

#use fast_io(b) //Port yönlendirme komutları B portu için geçerli
#use fast_io(c) //Port yönlendirme komutları C portu için geçerli
#use fast_io(d)
#use fast_io(a)


//#HEXCOMMENT KORHAN USLU
int1 a=1; 
unsigned int i=0; 
unsigned int16 k=1;
unsigned int j=0;
unsigned int w=0;
unsigned int s=0;
unsigned int z=255;
unsigned int r1=(0b00111001);
unsigned int g1=(0b11100001);
unsigned int b1=(0b10001101);
unsigned int r2=0;
unsigned int g2=0;
unsigned int b2=0;
//_______________________

unsigned int32 kesme=0; // Tamsayı tipinde 16 bitlik değişken tanımlanıyor

unsigned int b=45;
unsigned int c=39;
unsigned int d=33;

unsigned int r_1[8]={0x00,0x00,0xff,0xff,0xff,0x00,0x00,0xff,};
unsigned int r_2[8]={0xff,0x00,0x00,0xff,0xff,0xff,0x00,0x00,};
unsigned int g_1[8]={0xff,0x00,0x00,0x00,0xff,0xff,0x00,0xff,};
unsigned int g_2[8]={0xff,0xff,0x00,0x00,0x00,0xff,0xff,0x00,};
unsigned int b_1[8]={0xff,0xff,0xff,0x00,0x00,0x00,0x00,0xff,};
unsigned int b_2[8]={0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,};
//------------------------------
unsigned int ayyildiz[21]={195,          129,          24,           60,           126,
                           189,          219,          255,          255,          119,
                           55,           131,          129,          192,          129,
                           131,          55,           119,          255,          255,          
                           255,};//ay yıldız dizisi



unsigned int korhan[36]={ 0,    231,    219,    60,     126,    255,   //K [0]-[5]
                          129,  126,    126,    126,    129,    255,   //O [6]-[11]  
                          0,    230,    214,    185,    127,    255,   //R [12]-[17]
                          0,    239,    239,    239,    0,      255,   //H [18]-[23] 
                          3,    237,    238,    237,    3,      255,   //A [24]-[29] 
                          0,    249,    231,    159,    0,      255,   //N [30]-[35]
};
unsigned int uslu[24]={  128,          127,          127,          127,          128,          255, //U [0]-[5]
                         185,          118,          118,          110,          157,          255, //S [6]-[11]
                         0,            127,          127,          127,          127,          255, //L [12]-[17]
                         128,          127,          127,          127,          128,          255, //U [18]-[23]
};
unsigned int kou[18]={ 0,    231,    219,    60,     126,    255,   //K [0]-[5]
                       129,  126,    126,    126,    129,    255,   //O [6]-[11] 
                       131,  126,    127,    126,    131,    255,   //Ü [12]-[17]
};

unsigned int mekatronik[58]={0,            249,          231,          249,          0,            255, //M
                             0,            110,          110,          110,          110,          255, //E
                             0,            231,          219,          60,           126,          255, //K
                             3,            237,          238,          237,          3,            255, //A
                             254,          254,          0,            254,          254,          255, //T
                             0,            230,          214,          185,          127,          255, //R
                             129,          126,          126,          126,          129,          255, //O
                             0,            249,          231,          159,          0,            255, //N
                             123,          2,            123,          255,                             //İ
                             0,            231,          219,          60,           126,          255, //K
};
unsigned int mekatronik1[58]={255,255,255,255,255,255,//geçici değişken
                              255,255,255,255,255,255,
                              255,255,255,255,255,255,
                              255,255,255,255,255,255,
                              255,255,255,255,255,255,
                              255,255,255,255,255,255,
                              255,255,255,255,255,255,
                              255,255,255,255,255,255,
                              255,255,255,255,
                              255,255,255,255,255,255,};
//sinüsoidal dalgalar
unsigned int dalgakirmizi[15]={231,          219,          189,          126,          189,          
                               219,          231,          231,          219,          189,          
                               126,          126,          189,          219,          231,};                              
unsigned int dalgamor[15]={239,          223,          191,          127,          191,
                           223,          239,          247,          251,          253,          
                           254,          254,          253,          251,          247,};  
                         
                      
//****** Dış Kesme Fonksiyonu *****************

#int_ext              // Dış (External) RB0/INT kesmesi
void  ext_kesmesi ()
{    // Dış kesme fonksiyonu

kesme=kesme+1;//her tur kesme 1 artar

   a=1;
   i=1;
   if (kesme>680){   // animasyonlar bittiğinde başa döner
      kesme=0;
      b=45;
      c=39;
      d=33;
      k=0;
      w=0;
      z=7;
      s=0;
      for(w=0;w<58;w++)
      {
      mekatronik1[w]=255;
      }
   }
   
} 


/********* ANA PROGRAM FONKSİYONU********/
void goster(){
   
   while(kesme<5){//pwm ile renk geçişleri
      output_a(0x01);
      output_b(0xff);
      output_d(0xff);
      output_c(0xff);
      for(w=0;w<8;w++){
      for (k=1;k<1000;k++){
         for(j=1;j<3;j++){
            output_a(r_1[w]);
            output_b(r_1[w]);
            output_d(g_1[w]);
            output_c(b_1[w]);
            delay_us(k);
            output_a(r_2[w]);
            output_b(r_2[w]);
            output_d(g_2[w]);
            output_c(b_2[w]);
            delay_us(1000-k);
            if(kesme>5){
            break;
            }
         }
      if(kesme>5){//motor dönmeye başlayınca 5 tur sonra döngüden çık
      break;
      }
      }
      if(kesme>5){//motor dönmeye başlayınca 5 tur sonra döngüden çık
         break;
         }
      k=1;
      }
      
   }

while((kesme<120)&&(kesme>5)){//çiçek 

   output_b(dalgakirmizi[w]);//kırmızı
   output_a(dalgakirmizi[w]);//kırmızı
   output_d(255);//yeşil
   output_c(dalgamor[w]);//mavi
   delay_ms(1);
   w=w+1;
   if ((w>15)||(a==1)){
   a=0;//!!dalganın kaymasını düzelt!!
   w=0;//dalga döngüsü taşınca döngü başa alınır.
   //görüntüde kayma olmaması için kesme geldiğinde dalga döngüsü başa alınır.
   }
   
}


//-------------------------------------\\

if(kesme>120){//şelale
if(kesme<160){
   w=w+1;
   if(w>4){
   w=0;
   output_b(r1);//kırmızı
   output_a(r1);//kırmızı
   output_d(g1);//yeşil
   output_c(b1);//mavi
   r2=r1<<1;//bit dizisi sola kaydırlır
   g2=g1<<1;//bit dizisi sola kaydırlır
   b2=b1<<1;//bit dizisi sola kaydırlır
   if(bit_test(r1,7)){
      r2=r2+1;
   }
   if(bit_test(g1,7)){
      g2=g2+1;
   }
   if(bit_test(b1,7)){
      b2=b2+1;
   }
   r1=r2;
   g1=g2;
   b1=b2;
   }
}
}
//---------------------------
if(kesme>160){//kayan koü
if(kesme<280){
   w=0;
   delay_ms(b);
   for (w=0;w<6;w++){//kırmızı K kayarak başa gelir
      output_b(kou[w]);//kırmızı
      output_a(kou[w]);//kırmızı 
      output_d(255);//yeşil-sönük
      output_c(255);//mavi-sönük
      delay_ms(1); 
   }
   if(b<4){
      w=5;
      delay_ms(c);
      for (w=5;w<12;w++){//yeşil O kayarak K'nın yanına gelir
         output_b(255);//kırmızı-sönük
         output_a(255);//kırmızı-sönük
         output_d(kou[w]);//yeşil
         output_c(255);//mavi-sönük
         delay_ms(1);

      }
         if(c<3){
            delay_ms(d);
            w=11;
            for (w=11;w<18;w++){//mavi Ü kayarak O'nun yanına gelir
               output_b(255);//kırmızı
               output_a(1);//kırmızı
               output_d(255);//yeşil
               output_c(kou[w]);//mavi
               delay_ms(1);
            }
            if(d<3){
            d=3;
            }
            c=3;
            d=d-1;
         }      
      c=c-1;
      b=3;
   }
   b=b-1;
}
}

//-------------------kırmızı kou
if((kesme>280)&&(kesme<320)){
   w=0;
   for (w=0;w<18;w++){
      output_b(kou[w]);
      output_a(kou[w]);
      output_d(255);
      output_c(255);
      delay_ms(1); 
   }
}
//--------------------yeşil kou
if((kesme>320)&&(kesme<360)){
   w=0;
   for (w=0;w<18;w++){
      output_b(255);
      output_a(255);
      output_d(kou[w]);
      output_c(255);
      delay_ms(1); 
   }
}

if((kesme>360)&&(kesme<440)){
   s=s+1;
   if (kesme<362){
   j=0;
   z=7;
   }
   
   if (kesme>362){        
   if (j<8){      
   if (s>9)
   s=0;
   for (w=0;w<58;w++){
      mekatronik1[w]=mekatronik1[w]<<1;
      if((bit_test(mekatronik[w],z))==0){
      bit_clear(mekatronik1[w],0);//mekatronik dizisi bitleri sondan   
      }                          //mekatronik1in başına aktarılır
      else
      {
      bit_set(mekatronik1[w],0);
      }
      
   }
   j=j+1;
   z=z-1;
   }
   }
      for (w=0;w<58;w++){
         output_b(255);
         output_a(255);
         output_d(mekatronik1[w]);
         output_c(255);
         delay_ms(1);
      }
}
//--------------mekatronik
if((kesme>440)&&(kesme<480)){//mavi mekatronik
   
   w=0;
   for (w=0;w<58;w++){
      output_b(255);
      output_a(255);
      output_d(255);
      output_c(mekatronik[w]);
      delay_ms(1); 
   }
}

//-------------------------
if((kesme>480)&&(kesme<520)){//kırmızı mekatronik
   w=0;
   for (w=0;w<58;w++){
      output_b(mekatronik[w]);
      output_a(mekatronik[w]);
      output_d(255);
      output_c(255);
      delay_ms(1); 
   }
}  
//-------------------------
if((kesme>520)&&(kesme<560)){//turkuaz mekatronik
   w=0;
   for (w=0;w<58;w++){
      output_b(0);
      output_a(0);
      output_d(mekatronik[w]);
      output_c(mekatronik[w]);
      delay_ms(1); 
   }
}


//----------------TÜRK BAYRAĞI
if((kesme>560)&&(kesme<620)){
   w=0;
   for (w=0;w<21;w++){
      output_b(0);
      output_a(0);
      output_d(ayyildiz[w]);
      output_c(ayyildiz[w]);
      delay_ms(1); 
   }
 
}
//-----------------korhan uslu
if((kesme>620)&&(kesme<680)){
   w=0;
   for (w=0;w<36;w++){
      output_b(korhan[w]);
      output_a(korhan[w]);
      output_d(255);
      output_c(255);
      delay_ms(1); 
   }
   w=0;
   for (w=0;w<24;w++){
      output_b(uslu[w]);
      output_a(uslu[w]);
      output_d(uslu[w]);
      output_c(255);
      delay_ms(1); 
   }
}
//------------------

}
void main ( )
{
  
   setup_psp(PSP_DISABLED);        // PSP birimi devre dışı
   setup_spi(SPI_SS_DISABLED);     // SPI birimi devre dışı
   setup_timer_1(T1_DISABLED);     // T1 zamanlayıcısı devre dışı
   setup_timer_2(T2_DISABLED,0,1); // T2 zamanlayıcısı devre dışı
   setup_adc_ports(NO_ANALOGS);    // ANALOG giriş yok
   setup_adc(ADC_OFF);             // ADC birimi devre dışı
   setup_CCP1(CCP_OFF);            // CCP1 birimi devre dışı
   setup_CCP2(CCP_OFF);            // CCP2 birimi devre dışı


   set_tris_b(0x01);   //B0 pini giriş,diğer uçlar çıkış 
   set_tris_c(0x00);   //c portu çıkış
   set_tris_d(0x00);   //d portu çıkış
   set_tris_a(0x00);   //a portu çıkış
   output_b(0x00);     // B portu çıkışı ilk anda sıfırlanıyor
  
   ext_int_edge(H_TO_L);   // INT_EXT kesmesinin düşen kenarda aktif olacağını belirtir
   enable_interrupts(INT_EXT);  // INT_EXT kesmesini aktif yapar
   enable_interrupts(GLOBAL);   // Aktif edilen kesmelere izin ver
   b=45;
   c=39;
   d=33;
   r1=(0b00111001);
   g1=(0b11100001);
   b1=(0b10001101);

   output_b(254);
   output_d(255);
   output_c(255);
   output_a(1);
   
   basla:

   if(a==1){ //kesme gelince a=1 olur ve göster fonksiyonuna gidilir
      goster();
      a=0;//fonksiyondan dönünca a=0 olur ve tekrar kesme gelmesi beklenir.
      i=0;
   }
  
   goto basla;
 }

8-rgb-leds-pic16f877-ccs-c-havada-yazi-pov-motor ccsc-led-leds-rgbs-pov-text-havada-yazi-yazdirma pov-leds-rgb-ccs-c-pic16f877-led rgb-led-9v-battery-9volt-pil-pcb-plaket-ccs-c-rgb

RGB Led projesine ait proteus isis şema, visual basic led program ve ccs c kod dosyaları: Havada yazı yazma visual basic rgb led ccs c

Dosya indirme LINK listesi (TXT formatında) link-13910.zip şifre-pass: 320volt.com

  1. menderes 2013/03/02
  2. fatih 2013/05/04
  3. djtur 2013/05/07
  4. korhan 2013/05/08
  5. djtur 2013/05/08
  6. doğukan 2013/08/06
  7. mhr01 2013/12/15
  8. bedo 2013/12/25
  9. Batuhan Alkan 2016/05/10

Yorum

Soru: