Merhaba sayın ziyaretçi Kontrolkalemi.Com Otomasyon Forumuna ilk kez giriyorsanız lütfen Buraya tıklayarak üye olun. Foruma daha önceden kayıt olduysanız ve şifrenizi bilmiyorsanız yeni şifre talep etmek için Buraya tıklayınız.

CCS C ile display uygulama lütfen yardım

Elektronik Kategorisinde ve Pic Programlama Forumunda Bulunan CCS C ile display uygulama lütfen yardım Konusunu Görüntülemektesiniz.

Konu Özeti: ORTAK KATOT DİSPLAY İLE 0-99 SAYICI YAPIP ARTTIR AZALT BUTONLARI İLE SEÇİLEN RAKKAMDAN GERİYE SAYMASINI İSTEDİM ancak çalıştıramadım ustalardan yardım istiyorum şimdiden teşekkür ederim aşağıda yazdığım kodlarda nerede hata yaptığımı yazarmısınız #include "C:\Documents and Settings\skyvision\Belgelerim\CCS S DENEME\displayuygulama\16f877ikilidisplay\Yeni Klasör\main.h" #use fast_io(a) ...

 
Toplam 2 sayfadan 1. sayfa 12 SonuncuSonuncu
Toplam 11 adet sonuçtan 1 ile 10 arası gösteriliyor.
  1. #1
    Üye

    Üyelik
    24-11-09
    Mesajlar
    33
    Popülarite
    11

    Varsayılan CCS C ile display uygulama lütfen yardım

    ORTAK KATOT DİSPLAY İLE 0-99 SAYICI YAPIP ARTTIR AZALT BUTONLARI İLE SEÇİLEN RAKKAMDAN GERİYE SAYMASINI İSTEDİM ancak çalıştıramadım ustalardan yardım istiyorum şimdiden teşekkür ederim aşağıda yazdığım kodlarda nerede hata yaptığımı yazarmısınız

    #include "C:\Documents and Settings\skyvision\Belgelerim\CCS S DENEME\displayuygulama\16f877ikilidisplay\Yeni Klasör\main.h"
    #use fast_io(a)
    #use fast_io(b)
    #define display_1 pin_a0
    #define display_2 pin_a1
    #define arttir pin_a4
    #define azalt pin_a5
    char birler=0,onlar=0,sayi=0;
    int i;
    const int digit[10]={0x00,0x06,0x5b,0x4f,0x66,0x6d,0x7c,0x07,0x7f,0x6 f};

    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);
    setup_comparator(NC_NC_NC_NC);
    setup_vref(FALSE);
    set_tris_a(0xfc);
    set_tris_b(0x00);
    output_low(display_1);
    output_low(display_2);

    // TODO: USER CODE!!

    while(true)

    {

    birler=sayi%10;
    onlar=sayi/10;
    output_high(display_2);
    output_b(digit[birler]);
    delay_ms(5);
    output_low(display_2);
    output_high(display_1);
    output_b(digit[onlar]);
    delay_ms(5);
    output_low(display_1);


    if(input(arttir));

    {
    delay_ms(10);// buton arkını önlemek için gecikme
    sayi++;
    if(sayi==100);
    sayi=0;
    birler=sayi%10;
    onlar=sayi/10;

    while(input(arttir))

    {

    output_high(display_2);
    output_b(digit[birler]);
    delay_ms(5);
    output_low(display_2);
    output_high(display_1);
    output_b(digit[onlar]);
    delay_ms(5);
    output_low(display_1);

    }
    }

    if(input(azalt));

    {
    delay_ms(10);
    sayi--;
    if(sayi==100);
    sayi=0;// sayi sıfır olmadığı sürece döngüyü işle
    birler=sayi%10;
    onlar=sayi/10;


    while(input(azalt));

    {

    output_high(display_2);
    output_b(digit[birler]);
    delay_ms(5);
    output_low(display_2);
    output_high(display_1);
    output_b(digit[onlar]);
    delay_ms(5);
    output_low(display_1);

    }
    }

    while(true)
    {

    for(i=sayi;i<=100;i--)

    {

    output_high(display_2);
    output_b(digit[birler]);
    delay_ms(5);
    output_low(display_2);
    output_high(display_1);
    output_b(digit[onlar]);
    delay_ms(5);
    output_low(display_1);

    }
    }
    }

    }


  2. Entes
  3. #2
    Üye

    Üyelik
    24-11-09
    Mesajlar
    33
    Popülarite
    11

    Varsayılan

    Sayın ustalar bazı yerlerdeki hatalarımı buldum ancak geri saydırma işini bir türlü halledemedim yeni kodlar aşağıda ki kodlarda azalt ve arttır butonları ile displaye gönderiyorum sorun yok gönderdiğim rakkamı geri saydıramadım ancak ne yapmam lazım ccs c bilen arkadaşların yardımlarını bekliyorum
    #include "C:\Documents and Settings\skyvision\Belgelerim\CCS S DENEME\displayuygulama\16f877ikilidisplay\Yeni Klasör\main.h"
    #use fast_io(a)
    #use fast_io(b)
    #define display_1 pin_a0
    #define display_2 pin_a1
    #define arttir pin_a2// arttır ma işlemi için a4 pini
    #define azalt pin_a3
    char birler=0,onlar=0,sayi=0;





    const int digit[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7c,0x07,0x7f,0x6 f};

    void main()
    {

    setup_adc_ports(NO_ANALOGS);
    setup_adc(ADC_OFF);
    setup_psp(PSP_DISABLED);
    setup_spi(SPI_SS_DISABLED);

    setup_timer_1(T1_DISABLED);
    setup_timer_2(T2_DISABLED,0,1);
    setup_comparator(NC_NC_NC_NC);
    setup_vref(FALSE);
    set_tris_a(0xFC);
    set_tris_b(0x00);
    output_low(display_1);
    output_low(display_2);

    // TODO: USER CODE!!

    while(true)

    {

    birler=sayi%10;
    onlar=sayi/10;

    output_high(display_2);
    output_b(digit[birler]);
    delay_ms(5);
    output_low(display_2);
    output_high(display_1);
    output_b(digit[onlar]);
    delay_ms(5);
    output_low(display_1);


    if(input(arttir))

    {
    delay_ms(10);// buton arkını önlemek için gecikme
    sayi++;
    if(sayi==100)
    sayi=0;

    birler=sayi%10;
    onlar=sayi/10;
    while (input(arttir))

    {

    output_high(display_2);
    output_b(digit[birler]);
    delay_ms(5);
    output_low(display_2);
    output_high(display_1);
    output_b(digit[onlar]);
    delay_ms(5);
    output_low(display_1);

    }
    }
    if(input(azalt)&&(sayi!=0))

    {
    delay_ms(10);// buton arkını önlemek için gecikme
    sayi--;
    if(sayi==100)
    sayi=0;

    birler=sayi%10;
    onlar=sayi/10;
    while (input(azalt))

    {

    output_high(display_2);
    output_b(digit[birler]);
    delay_ms(5);
    output_low(display_2);
    output_high(display_1);
    output_b(digit[onlar]);
    delay_ms(5);
    output_low(display_1);


    }
    }
    }
    }

  4. #3
    Profesyonel Üye

    Üyelik
    30-01-08
    Mesajlar
    542
    Popülarite
    30

    Varsayılan

    programın azaltma bölümünde

    if(sayi==100)
    sayi==0; hata burada azaltma yapıyorsun artırma değil...

  5. #4
    Üye

    Üyelik
    24-11-09
    Mesajlar
    33
    Popülarite
    11

    Varsayılan ccsc ile buton ile arttırma ve azaltma tamam ancak

    hocam tşkler. evet buton ile arttırma ve azaltma tamam ancak arttırma butonu ile seçtiğim rakkamdan geriye saydıramadım son hali aşağıda yardımınızı bekliyorum


    #include "C:\Documents and Settings\skyvision\Belgelerim\CCS S DENEME\displayuygulama\16f877ikilidisplay\Yeni Klasör (2)\main.h"
    #use fast_io(a)
    #use fast_io(b)
    #define display_1 pin_a0
    #define display_2 pin_a1
    #define arttir pin_a2
    #define azalt pin_a3

    char birler=0,onlar=0,sayi=0;
    const int digit[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7c,0x07,0x7f,0x6 f};


    void main()
    {

    setup_adc_ports(NO_ANALOGS);
    setup_adc(ADC_OFF);
    setup_psp(PSP_DISABLED);
    setup_spi(SPI_SS_DISABLED);
    setup_timer_1(T1_DISABLED);
    setup_timer_2(T2_DISABLED,0,1);
    setup_comparator(NC_NC_NC_NC);
    setup_vref(FALSE);
    set_tris_a(0xfc);
    set_tris_b(0x00);
    output_low(display_1);
    output_low(display_2);




    while(true)

    {

    birler=sayi%10;
    onlar=sayi/10;
    output_high(display_2);
    output_b(digit[birler]);
    delay_ms(5);
    output_low(display_2);
    output_high(display_1);
    output_b(digit[onlar]);
    delay_ms(5);
    output_low(display_1);


    if(input(arttir))

    {
    delay_ms(10);// buton arkını önlemek için gecikme
    sayi++;
    if(sayi==100)
    sayi=0;
    birler=sayi%10;
    onlar=sayi/10;

    while(input(arttir))

    {

    output_high(display_2);
    output_b(digit[birler]);
    delay_ms(5);
    output_low(display_2);
    output_high(display_1);
    output_b(digit[onlar]);
    delay_ms(5);
    output_low(display_1);

    }
    }

    if(input(azalt)&&(sayi!=0))

    {
    delay_ms(10);
    sayi--;
    if(sayi==100)
    sayi=0;// sayi sıfır olmadığı sürece döngüyü işle
    birler=sayi%10;
    onlar=sayi/10;
    while(input(azalt))

    {

    output_high(display_2);
    output_b(digit[birler]);
    delay_ms(5);
    output_low(display_2);
    output_high(display_1);
    output_b(digit[onlar]);
    delay_ms(5);
    output_low(display_1);

    }
    }//BURAYA KADAR KOD ÇALIŞIYOR ANCAK BURADAN SONRASI YOK
    while(sayi>0)

    {
    for(sayi=99;sayi<=99;sayi--)//YUKARIDAN SAYİ ALDIĞI DEĞERİ GERİ SAYACAK GERİ SAYARKENDE BİRER DAKİA GECİKMELİ OLMALI
    {

    birler=sayi%10;
    onlar=sayi/10;

    output_high(display_2);
    output_b(digit[birler]);
    delay_ms(10);
    output_low(display_2);
    output_high(display_1);
    output_b(digit[onlar]);
    delay_ms(10);
    output_low(display_1);

    }
    }

  6. #5
    Profesyonel Üye

    Üyelik
    25-11-06
    Mesajlar
    468
    Popülarite
    41

    Varsayılan

    if(input(azalt))

    {
    delay_ms(10);
    sayi--;
    if(sayi==255)
    sayi=99;
    birler=sayi%10;
    onlar=sayi/10;
    ....

  7. #6
    Üye

    Üyelik
    24-11-09
    Mesajlar
    33
    Popülarite
    11

    Varsayılan

    Sayın Ze tr hocam ilginize tşkler ancak öneriniz çalışmadı.yapmak istediğim arttır butonu ile diyelimki 20 rakkamını seçtim (arttir,azalt butonları var yukarıdaki ikinci kodda buralar çalışıyor sorun yok) displayde 20 görüntülendi ve 10 saniye sonra display geri saymaya başlayacak 1er dakika ara ile herşey tamam ancak geri sayma işlemi bir türlü başlamıyor burada if döngüsümü for döngüsümü kullanılmalı yardımlarınızı bekliyorum

    --------------------------------------------------------------------------

    aşağıdaki kodda çalışıyor ancak iki kodu birleştirince geri sayma işlemi başlamıyor yardımlarınızı bekliyorum

    while(true)

    {
    for(sayi=99;sayi<=99;sayi--)
    {

    birler=sayi%10;
    onlar=sayi/10;

    output_high(display_2);
    output_b(digit[birler]);
    delay_ms(10);
    output_low(display_2);
    output_high(display_1);
    output_b(digit[onlar]);
    delay_ms(10);
    output_low(display_1);


    }
    }
    }
    Konu mberkanbicer tarafından (16-12-2009 Saat 18:01 ) değiştirilmiştir.

  8. #7
    Profesyonel Üye

    Üyelik
    30-01-08
    Mesajlar
    542
    Popülarite
    30

    Varsayılan

    bir i değişkeni tanımla
    while(sayi<0) bunu sil direk for döngüsüyle başla.for dan önce delay_ms(1000); yaz
    orada for döngüsünde
    for(i=sayi;i<=sayi;i--) {
    birler=i%10;
    onlar=i/10;

    output_high(display_2);
    output_b(digit[birler]);
    delay_ms(10);
    output_low(display_2);
    output_high(display_1);
    output_b(digit[onlar]);
    delay_ms(10);
    output_low(display_1);
    delay_ms(60000);

    } bi dene bakalım.

  9. #8
    Üye

    Üyelik
    24-11-09
    Mesajlar
    33
    Popülarite
    11

    Varsayılan

    hemen deniyorum tşkler
    -----------------------------------------------
    hocam malesef ama birşeyler yapıyor saçmalıyor buda ilerleme başka tavsiyeniz olabilirmi for döngüsü ile sanır çözeceğiz başka öneriniz varmı teşekkürler
    Konu mberkanbicer tarafından (16-12-2009 Saat 18:01 ) değiştirilmiştir.

  10. #9
    Profesyonel Üye

    Üyelik
    30-01-08
    Mesajlar
    542
    Popülarite
    30

    Varsayılan

    sayi değişkenine bi değer vererek sadece benim verdiğim kodu bi dene bakalım çalışacak mı.eğer çalışıyorsa senin çalışıyo dedğin kodlarında değişiklik yapmak gerekebilir.zamanım olsa daha ayrıntılı bakardım ama sınavlarım var...

  11. #10
    Profesyonel Üye

    Üyelik
    25-11-06
    Mesajlar
    468
    Popülarite
    41

    Varsayılan

    Kod:
    #include <18f877.h>
    #device ADC=10
    //#fuses HS,NOPROTECT, NOWDT,NOLVP
    #FUSES HS //INTRC_IO                 //Internal RC Osc, no CLKOUT
    
    #use delay(clock=4000000)
    #use rs232(baud=19200, xmit=PIN_c6, rcv=PIN_c7)
    
    #use fast_io(a)
    #use fast_io(b)
    #define display_1    pin_a0
    #define display_2    pin_a1
    #define arttir       pin_a2// arttır ma işlemi için a4 pini
    #define azalt        pin_a3
    
    char birler=0,onlar=0,sayi=0;
    const int digit[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7c,0x07,0x7f,0x6f};
    
    void goster()
    {
      onlar=sayi/10;
      birler=sayi-10*onlar;
     output_high(display_2);
     output_b(digit[birler]);
     delay_ms(5);
     output_low(display_2);
     output_high(display_1);
     output_b(digit[onlar]);
     delay_ms(5);
     output_low(display_1);
    }
    
    
    void main()
    {
     int1 ststp = 0;
     int  sayac = 0;
     
    setup_adc_ports(NO_ANALOGS);
    setup_adc(ADC_OFF);
    setup_psp(PSP_DISABLED);
    setup_spi(SPI_SS_DISABLED);
    
    setup_timer_1(T1_DISABLED);
    setup_timer_2(T2_DISABLED,0,1);
    setup_comparator(NC_NC_NC_NC);
    setup_vref(FALSE);
    set_tris_a(0xFC);
    set_tris_b(0x00);
    output_low(display_1);
    output_low(display_2);
    
    // TODO: USER CODE!!
    
    while(true)
    {
     if(input(arttir))
     {ststp=0;
      sayi++;
      if(sayi==100) sayi=0;
     }
     if(input(azalt))
     {ststp=0;
      sayi--;
      if(sayi==255) sayi=100;
     }
     
     if(ststp==0)
     {sayac ++;
      if(sayac==25)
       {sayac=0;
        ststp=1;   
       }
     }
     
     if(ststp) sayı--;
     goster();
    }
    
    }
    Mantık buna benzer bir şey olacak. Yalnız geri çok hızlı saydığı için sizin olayları görmeniz zor. Onun için butona basınca saymayı durduracak bir mantık ekledim.

    Saniye bazında sayac bir azalacak ise o zaman butonlarınızın etkisini görürsünüz. Bir saniyelik zaman aralığını timer1 ve ccp compare mod ve bir sayaç kullanarak elde edebilirsiniz.


 

Benzer Konular

  1. Elektronik Devre Elemenları Tanıtımı
    Klavyeah isimli üyenin Elektronik Genel bölümünde açtığı konu
    Cevap: 20
    Son Mesaj: 27-10-2013, 19:09
  2. Teknik Uygulama Sorumlusu (TUS) Uygulama esasları yönetmeliği
    korkmaz_design isimli üyenin Elektrik Genel bölümünde açtığı konu
    Cevap: 3
    Son Mesaj: 05-08-2012, 18:56
  3. PLC'nin Tanıtılması (TEZ)
    Klavyeah isimli üyenin Siemens PLC - Program & Dökümanlar bölümünde açtığı konu
    Cevap: 15
    Son Mesaj: 06-10-2011, 19:31
  4. Wincc İle S7-400 Arası Haberleşme
    arıtmacı isimli üyenin Siemens PLC - Program & Dökümanlar bölümünde açtığı konu
    Cevap: 2
    Son Mesaj: 12-10-2009, 22:07
  5. A dan z ye linux(genişletilmiş arşiv)
    ömer18 isimli üyenin Unix & Linux İşletim Sistemi bölümünde açtığı konu
    Cevap: 1
    Son Mesaj: 16-12-2008, 22:29

Bu Konunun Etiketleri

Forumdaki Yeni Konuları Eposta İle Takip Edin


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121