Haberler:

Forum kuralları güncellendi LÜTFEN  okuyunuz:  https://bit.ly/2IjR3ME

Ana Menü

ccs c ile karaşimşek yapmak ?

Başlatan italyan3, 18 Eylül 2012, 23:56:00

italyan3

öncelikle merhabalar, ccs c ve bu sitede yeniyim. c yi yeni öğrenmeye başladım.led yakma söndürme gibi basit bi devreyi yazabildim.şimdide karaşimşek yapmak istiyorum. nette bi kaç program buldum fakat ne nasıldır tam anlam veremedim. örnek bi karaşimşek programı yazıp. ne ne işe yarar anlatan olursa çk sevinrim. şimdiden Allah razı olsun ilgilenenlerden.

not:butona bastığımda aşağı yukarı ledler yanıcak.tekrar bastığımda sönücek.

rree

Led yaktığına göre bir de gecikme  fonksiyonu öğren.
Bekle 200 ms
Şu ledleri yak
Bekle 200 md şu ledleri yak
  Algoritmasi basit yapısı bu şekildedir.

serhat1990

Burada kendi hazırlamış olduğum örnek programlar var bir incele istersen ... Dosya içerisinde for döngüsünü kullanan örneği dikkatle incele . For döngüsüyle çok kolay yapabilirsin ...

http://www.upload.gen.tr/d.php/www/4qbf3jjj/ccs_c_dersleri.rar.html

italyan3

#3
Alıntı yapılan: serhat1990 - 19 Eylül 2012, 01:26:07
Burada kendi hazırlamış olduğum örnek programlar var bir incele istersen ... Dosya içerisinde for döngüsünü kullanan örneği dikkatle incele . For döngüsüyle çok kolay yapabilirsin ...

http://www.upload.gen.tr/d.php/www/4qbf3jjj/ccs_c_dersleri.rar.html

hocam ben bu dersleri indirdim çoktan ,yavaş yavaş kafamda daha iyi kurabiliyorum ama şu değişken tanıtma, değişken atama kısımlarında neyi nasıl yazcam tam çözemiyorum. yani mainden önce mi yoksa sonra mı yazıcam? yazıcaksam bile nasıl tanıtcam. for olayınıda çözdüm.ama sıkıntım genel olarak mainden önce ne yazmam gerektiği,yada sonra.  mesela değişkeni tanıttık,porta atadık,sonra for ile sola kaydırttıktan sonra ,sağa kayıcak ,sonra tekrar döngü  olucak. böyle kafam kuruyorum ama daha yeni olduğum için işte sıkıntılıyım biraz.yardımlarınızı bekliyorum. ilginiz için teşekkür ederim.

( bu olayı çözücem başka seçeneğim yok :) )


mesaj birleştirme:: 21 Eylül 2012, 23:23:43

Alıntı yapılan: italyan3 - 21 Eylül 2012, 22:45:14


hocam ben bu dersleri indirdim çoktan ,yavaş yavaş kafamda daha iyi kurabiliyorum ama şu değişken tanıtma, değişken atama kısımlarında neyi nasıl yazcam tam çözemiyorum. yani mainden önce mi yoksa sonra mı yazıcam? yazıcaksam bile nasıl tanıtcam. for olayınıda çözdüm.ama sıkıntım genel olarak mainden önce ne yazmam gerektiği,yada sonra.  mesela değişkeni tanıttık,porta atadık,sonra for ile sola kaydırttıktan sonra ,sağa kayıcak ,sonra tekrar döngü  olucak. böyle kafam kuruyorum ama daha yeni olduğum için işte sıkıntılıyım biraz.yardımlarınızı bekliyorum. ilginiz için teşekkür ederim.

( bu olayı çözücem başka seçeneğim yok :) )

yazmış olduğum program bu.eksiklerim nedir acaba :S
#include "C:\Users\damat\CCS C PROJELER\DENEME\karraşimşek.h"

unsigned char led=0;

void main()
{

   setup_adc_ports(NO_ANALOGS);
   setup_adc(ADC_OFF);
   setup_psp(PSP_DISABLED);
   setup_spi(SPI_SS_DISABLED);
   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);;
   setup_timer_1(T1_DISABLED);
   setup_timer_2(T2_DISABLED,0,1);

   // TODO: USER CODE!!
   
   set_tris_a(0xff);
   set_tris_b(0x00);
   output_b(0x00);
   while(true)
   {
   if(input(pin_a0)==1)
   {
   for (led=0;led<255;led++)
   {
   led=255-led;
   output_b(led);
   delay_ms(200);
   led=255-led;
   output_b(led);
   delay_ms(200);
   }
   }
   else
   {
   output_b(0x00);
   }
   }
}

italyan3

Alıntı yapılan: serhat1990 - 19 Eylül 2012, 01:26:07
Burada kendi hazırlamış olduğum örnek programlar var bir incele istersen ... Dosya içerisinde for döngüsünü kullanan örneği dikkatle incele . For döngüsüyle çok kolay yapabilirsin ...

http://www.upload.gen.tr/d.php/www/4qbf3jjj/ccs_c_dersleri.rar.html

biraz alıntı yptım bi yerlerden ama sonunda oldu :)))
int i,j;

void main()
{   
set_tris_a(0xff);
set_tris_b(0x00);
output_b(0x00);

   while(true)
   {
   if(input(pin_a0)==1)
   {
      j=1;  //kaydırma işlemi için sayı değeri
      for(i=0;i<8;i++)
      {
      output_b(j);      // j sayı değeri B portunda
         j=j<<1;         // j sayısını  1 bit sola kaydır
         delay_ms(500);  //ledin yanık kalma süresigecikme veriliyor
      }
        j=128;//kaydırma işlermi için sayı değeri
        for(i=0;i<7;i++)
        {
        output_b(j);  //j sayı değeri b portunda
        j=j>>1;    //j yi bir bit sağa kaydır
        delay_ms(500); //500 ms gecikme
        }
       
       
      }
      }
   }


polleme

#6
Benim deneyip çalıştırdığım ve hala kullanılmakta olan kod şöyle:

#include <main.h>
#use fast_io(a)
#use fast_io(b)
#use fast_io(c)
#use fast_io(d)
#use fast_io(e)




void main()
{
   char karasimsek_veri;
   char yon;
   set_tris_a(0x00);
   set_tris_b(0x00);
   set_tris_c(0x00);
   set_tris_d(0x00);
   set_tris_e(0x03);
   output_a(0x00);
   output_b(0x00);
   output_c(0x00);
   output_d(0x00);
   
   
   karasimsek_veri = 0b00000001;
   yon = 0;
   int i;
   int x = 7;
   int delay = 20;
   
   
   
   
   for(;1;)                         // Sonsuz Döngü
   {
      
 

for(i=0;i<=x;++i)
{
     
      output_d(karasimsek_veri);
      delay_ms(delay);
if(yon == 0)
      {
         rotate_left(&karasimsek_veri,1);
      }
      else
      {
         rotate_right(&karasimsek_veri,1);
      }
      
}
karasimsek_veri = 0b00000000;
output_d(karasimsek_veri);
karasimsek_veri = 0b00000001;
for(i=0;i<=7;++i)
{
      output_c(karasimsek_veri);
      delay_ms(delay);
if(yon == 0)
      {
         rotate_left(&karasimsek_veri,1);
      }
      else
      {
         rotate_right(&karasimsek_veri,1);
      }
      
}
karasimsek_veri = 0b00000000;
output_c(karasimsek_veri);
karasimsek_veri = 0b00000001;
for(i=0;i<=7;++i)
{
      output_b(karasimsek_veri);
      delay_ms(delay);
if(yon == 0)
      {
         rotate_left(&karasimsek_veri,1);
      }
      else
      {
         rotate_right(&karasimsek_veri,1);
      }
      
}
karasimsek_veri = 0b00000000;
output_b(karasimsek_veri);
karasimsek_veri = 0b00000001;
for(i=0;i<=3;++i)
{
      output_a(karasimsek_veri);
      delay_ms(delay);
if(yon == 0)
      {
         rotate_left(&karasimsek_veri,1);
      }
      else
      {
         rotate_right(&karasimsek_veri,1);
      }
      
}
      karasimsek_veri = 0b00100000;
      output_a(karasimsek_veri);
      delay_ms(delay);
yon = 1;
karasimsek_veri = 0b0001000;
for(i=0;i<=3;++i)
{
      output_a(karasimsek_veri);
      delay_ms(delay);
if(yon == 0)
      {
         rotate_left(&karasimsek_veri,1);
      }
      else
      {
         rotate_right(&karasimsek_veri,1);
      }
      
}
karasimsek_veri = 0b00000000;
output_a(karasimsek_veri);
karasimsek_veri = 0b10000000;
for(i=0;i<=7;++i)
{
       output_b(karasimsek_veri);
      delay_ms(delay);
if(yon == 0)
      {
         rotate_left(&karasimsek_veri,1);
      }
      else
      {
         rotate_right(&karasimsek_veri,1);
      }
     
}
karasimsek_veri = 0b00000000;
output_b(karasimsek_veri);
karasimsek_veri = 0b10000000;
for(i=0;i<=7;++i)
{
      output_c(karasimsek_veri);
      delay_ms(delay);
if(yon == 0)
      {
         rotate_left(&karasimsek_veri,1);
      }
      else
      {
         rotate_right(&karasimsek_veri,1);
      }
      
}
karasimsek_veri = 0b00000000;
output_c(karasimsek_veri);
karasimsek_veri = 0b10000000;
for(i=0;i<=7;++i)
{
      output_d(karasimsek_veri);
      delay_ms(delay);
if(yon == 0)
      {
         rotate_left(&karasimsek_veri,1);
      }
      else
      {
         rotate_right(&karasimsek_veri,1);
      }
      
}
yon=0; 
karasimsek_veri = 0b00000010;
x = 6;

   }
   
}

italyan3

#7


hocam yeni bşlayan biri için çok karışık :)) benm yptığım daha ideal bişe en azndan.yinede teşekkr ederim ilginz için

italyan3


vedo35

Arkadaslar benimde bir sorum olacak.  Bende yeni basladim CCS ye sayenizde ogrenecegiz. Ben Eagle programi ile smd olarak  STP16CP05 li bir led surucu deneme karti hazirladim. Isterseniz pcb ve eagle dosyalarini burada paylasabilirim.  Seri girisli 16 adet led cikisi var.   16cp05 in clock, sdi (serial data in) ve le girisi var. clock u 120 hz  olarak ayarlayip data girisinden yukaridaki kara simsek  kodunun arasina yukarida soyledigim ifadeleri nasil yazabiliriz? Yani 16cp05 in 16 led  cikisindan kara simsek animasyonu yapatirmak isitiyorum. Fakat entegerinin girisine yukaridaki ifadeler seri olarak girmesi lazim. Bendeki CCS kitabinda (serdar cicek ) sadece seri ilertisim olarak max232 ve seri eprom larla ilgili orenkler var. Ama istenilen bir bilgiyi seri olarak pic in isetnilen bir portundan nasil gonderilecegini kitapta goremedim yada yok.  :'(
Biliyormusun dedi, ben ne yaptiysam kader icabi yaptim dedi. Ben gene sustum.... Kimbilir sende belki kaderin memurusun vazifeni yapiyorsun dedi.

ziyaretci

#10
Alıntı yapılan: vedo35 - 26 Eylül 2012, 00:07:51
Arkadaslar benimde bir sorum olacak.  Bende yeni basladim CCS ye sayenizde ogrenecegiz. Ben Eagle programi ile smd olarak  STP16CP05 li bir led surucu deneme karti hazirladim. Isterseniz pcb ve eagle dosyalarini burada paylasabilirim.  Seri girisli 16 adet led cikisi var.   16cp05 in clock, sdi (serial data in) ve le girisi var. clock u 120 hz  olarak ayarlayip data girisinden yukaridaki kara simsek  kodunun arasina yukarida soyledigim ifadeleri nasil yazabiliriz? Yani 16cp05 in 16 led  cikisindan kara simsek animasyonu yapatirmak isitiyorum. Fakat entegerinin girisine yukaridaki ifadeler seri olarak girmesi lazim. Bendeki CCS kitabinda (serdar cicek ) sadece seri ilertisim olarak max232 ve seri eprom larla ilgili orenkler var. Ama istenilen bir bilgiyi seri olarak pic in isetnilen bir portundan nasil gonderilecegini kitapta goremedim yada yok.  :'(


  Yanlış anlamadıysam PC den girilecek bir komutla kara şimşek animasyonunu çalıştırmak istiyorsun? Eğer öyleyse gayet kolay. Şöyle olur PIC e kara şimşek yazılımını atarız. PC den de kara_simsek + enter yaparız kara şimşek animasyonu başlar. kara_simsek_0 + enter yaparız animasyon biter.Bu komutları kendimize göre ayarlarız.
    Yapmak istediğin tam olarak böyle bir uygulama mı?

vedo35

Hayir  diyelim pic16f877 nin  c0 portu clock(diyelim 100hz), c1 data, c2 de le olacak. Pc hic kullanilmayacak. Selamlarimla..
Biliyormusun dedi, ben ne yaptiysam kader icabi yaptim dedi. Ben gene sustum.... Kimbilir sende belki kaderin memurusun vazifeni yapiyorsun dedi.

ziyaretci

 Bana STP16CP05 elemanı hakkında bildiğiniz özellikleri sayar mısınız? Tamam STP16CP05 elemanını seçtiniz, evet doğru led sürücü, diğer özellikleri neler? Led sürücü bu elemanın başlığı. Giriş bölümünde, paragraf bölümünde ve sonuç bölümünde ne anlatıyor?

polleme

"hocam yeni bşlayan biri için çok karışık benm yptığım daha ideal bişe en azndan.yinede teşekkr ederim ilginz için"



Aslında karışık değil, 16F877'nin 4 portunu da kullanarak 32 LED'li bir karaşimşek yapmıştım. Şu anda bir araca takılı çalışıyor. Eğer 32 LED değil de 8 LED kullanırsanız kod çok basit hale geliyor.

vedo35

#14
Simdi yoldayim. Bugun isyerinde firsat bulursam datasheetini okuyup sana ozelliklerini yazarim. Yada ingilizen varsa sende bir goz at istersen.

mesaj birleştirme:: 26 Eylül 2012, 11:40:07

Alıntı yapılan: erkantr67 - 26 Eylül 2012, 01:09:40
Bana STP16CP05 elemanı hakkında bildiğiniz özellikleri sayar mısınız? Tamam STP16CP05 elemanını seçtiniz, evet doğru led sürücü, diğer özellikleri neler? Led sürücü bu elemanın başlığı. Giriş bölümünde, paragraf bölümünde ve sonuç bölümünde ne anlatıyor?

datasheet inden alinti hizli bir tercume yaptim isterseniz dahasini yazarim. Bu arada  bildiginiz  birsey varsa yada  nasil bir komut yazmam gerektigini belirtirseniz sevinirim.  Tercume soyle:

*3 volt un altina kadar besleme gerilimi.
*16 sabit akim cikisli kanallari.
*harici  direncle ayarlanabilir cikis akimi.
*seri veri girisi / parelel cikis.
*3.3v mcu ile surulebilir.
*cikis akimi 5-100ma.
*max saat frekansi 30mhz.
*2kv ya kadar esd koruma.

ayrica diger teknik, ayrintilar size lazimsa tercume edebilirim. Peki sizin bildiginiz birsey vermi seri olarak bilgileri surme ile ilgili?
Biliyormusun dedi, ben ne yaptiysam kader icabi yaptim dedi. Ben gene sustum.... Kimbilir sende belki kaderin memurusun vazifeni yapiyorsun dedi.