Haberler:

Eposta uyarılarını yanıtlamayınız ( ! ) https://bit.ly/2J7yi0d

Ana Menü

oka-7segment display

Başlatan kareli, 16 Şubat 2016, 16:37:03

kareli

Arkadaşlar kolay gelsin ;
  Ben 7 segment display ile 0-9 'a iki buton ile ileri geri sayıcı yapmak istemiştim programı yazdım ISIS'te çalıştı fakat devremi kurduğumda çalışmadı.
Acaba dedim display de veya pic'te mi sıkıntı var diye basit 0-9 a sayıcı yaptım o çalıştı ama ileri geri butonları ile kontrol ettiğimde ise çalışmadı program ve devrem aşağıdaki gibidir bakarbilirmisiniz kolay gelsin.

#include <main.h>
#use fast_io(b)
#use fast_io(a)
#define ileri pin_a0
#define geri pin_a1
const int a[]={0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7C,  0x07, 0x7F, 0x67};
int i;
void main()
{set_tris_a(0b00000011);
set_tris_b(0x00);
output_b(0x00);
output_a(0x00);
   while(1)
   {
   if(input(ileri)){
   output_b(a[i]);
   while(input(ileri));
   delay_ms(500);
   if(i==10) i=-1;
   i++;
   }
   if(input(geri)){
   output_b(a[i]);
  while(input(geri));
   delay_ms(500);
   if(i==0) i=10;
   i--;
   } 
   
   }
      
   }
   


#include <16F628A.h>

#FUSES NOWDT                    //No Watch Dog Timer
#FUSES NOBROWNOUT               //No brownout reset
#FUSES NOLVP                    //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#fuses intrc_io
#use delay(internal=4000000)






'Bırakın bugün onların olsun: ama uğrunda çok uğraştığım gelecek, benimdir' Nikola Tesla.

kareli

Sn. Moderatör bir el atın bilginiz dahilinde. Saygılar.
'Bırakın bugün onların olsun: ama uğrunda çok uğraştığım gelecek, benimdir' Nikola Tesla.

Salih

Öncelikle display segmentleri direk pic uçlarına bağlanmaz. Örneğin her uca 470 ohm bağlayın.
Display ortak katot olmalıdır, şemana göre.
Kontrol ettin mi.

dursuncemal

#3
ilk once displayinin a dan g ye kada olan pinler ile islemcinin arasina  (220 ohm ile 560 ohm elinde ne varsa) direnc koymalisinsonra  sunu bir denermisin bakalim displayin dogrumu calşisiyor?

 while(1)
   {
      output_b(a[0]);
      delay_ms(500);

  output_b(a[1]);
      delay_ms(500);

  output_b(a[2]);
      delay_ms(500);

  output_b(a[3]);
      delay_ms(500);

  output_b(a[4]);
      delay_ms(500);

  output_b(a[5]);
      delay_ms(500);

  output_b(a[6]);
      delay_ms(500);

  output_b(a[7]);
      delay_ms(500);

  output_b(a[8]);
      delay_ms(500);

      output_b(a[9]);
      delay_ms(500);
}


mesaj birleştirme:: 23 Şubat 2016, 14:40:15

#include <main.h>
#use fast_io(b)
#use fast_io(a)
#define ileri pin_a0
#define geri pin_a1
const int a[]={0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7C,  0x07, 0x7F, 0x67};
int i;
void main()
{set_tris_a(0b00000011);
set_tris_b(0x00);
output_b(0x00);
output_a(0x00);
   while(1)
{  
  
   while(input(ileri) | (input(geri) ){ output_b(a[i]); } //  geri veya ileri ise bu her basisinda bir islem yapip tusu brakmani bekler tabi bunun daha guzeli yazilabilir burayi iptal edip bunun yerine delay koyarsan basılı tutugun  surece artirma ve azaltgma islemlerin devam eder parantez hatalarim olabilir dikkat et!!        
 
 

   if(input(ileri)){   if( i < 9){ i++; }// i 9 dan kucuk ise artir

   if(input(geri)){   if(i > 0){ i--;  } //i sifirdan buyuk ise azalt
   
  output_b(a[i]);
   }
      
   }
/*

boylede olur ;

 if( input(ileri)  &&   i < 9   ){ i++;}// eger ileri ve i kucuk ise 9 dan

  if(input(geri)   &&   i > 0 ){   i--;  } // eger geri ve i buyuk ise 0 dan

*/
:=

mehmet

Olan olmuştur,
olacak olan da olmuştur.
Olacak bir şey yoktur.
---------------------------------------------
http://www.mehmetbilgi.net.tr
https://creativecommons.org/licenses/by/4.0/deed.tr "CC BY"

kareli

#5
dursuncemal hocam dedıgınızı yaptım malesef olmadı hata verdı bırde o veya dongusunde
'Bırakın bugün onların olsun: ama uğrunda çok uğraştığım gelecek, benimdir' Nikola Tesla.

dursuncemal

#6
ilk verdigim kod ile  displayların da 0 dan 9 a saymayı gordun mu?

once onu bir gor eger goremezsen a dizisindeki sabitleri bir duzeltmen gerekır.//nasil yapacagini bilmiyor isen onu da tarif ederiz.

ondan sonra geri kalani basit ben yazdiklarimi mantigi anlatmak ve daha sade ve okunur olmasi icin  buraya yazdim yani kodu denemedim.hata var ise parantez hatasi olabilir hic sorun diil duzeltiriz.

while (input(ileri)  == 1 | (input(geri) == 1 ){ output_b(a); }  burayi boyle duzeltelim:))

birde su ccs nin kendi fonksiyonlarindan hepsi olmasa bile artik yavas yavas kurtulmak lazim cok kafa karistiryor. mesela > while (ra0  == 1 | ra1  == 1 ){ output_b(a); } ama bunun icin portlari tanimlamamiz gerek

mesaj birleştirme:: 24 Şubat 2016, 23:47:37

#define byte int

#define W 0
#define F 1

// register files
#byte INDF          =0x00
#byte TMR0          =0x01
#byte PCL           =0x02
#byte STATUS        =0x03
#byte FSR           =0x04
#byte PORTA         =0x05
#byte PORTB         =0x06
#byte EEDATA        =0x08
#byte EEADR         =0x09
#byte PCLATH        =0x0a
#byte INTCON        =0x0b

#byte PIR1          =0x0c

#byte TMR1L         =0x0e
#byte TMR1H         =0x0f
#byte T1CON         =0x10
#byte TMR2          =0x11
#byte T2CON         =0x12

#byte CCPR1L        =0x15
#byte CCPR1H        =0x16
#byte CCP1CON       =0x17
#byte RCSTA         =0x18
#byte TXREG         =0x19
#byte RCREG         =0x1a

#byte CMCON         =0x1f

#byte OPTION_REG    =0x81
#byte TRISA         =0x85
#byte TRISB         =0x86

#byte PIE1          =0x8c

#byte PCON          =0x8e

#byte PR2           =0x92

#byte TXSTA         =0x98
#byte SPBRG         =0x99
#byte EEDATA        =0x9a
#byte EEADR         =0x9b
#byte EECON1        =0x9c
#byte EECON2        =0x9d

#byte VRCON         =0x9f

#bit not_to   =0x03.4
#bit not_pd =0x03.3

#bit ra7   =0x05.7
#bit ra6   =0x05.6
#bit ra5   =0x05.5
#bit ra4   =0x05.4
#bit ra3   =0x05.3
#bit ra2   =0x05.2
#bit ra1   =0x05.1
#bit ra0   =0x05.0

#bit rb7   =0x06.7
#bit rb6   =0x06.6
#bit rb5   =0x06.5
#bit rb4   =0x06.4
#bit rb3   =0x06.3
#bit rb2   =0x06.2
#bit rb1   =0x06.1
#bit rb0   =0x06.0

// INTCON Bits for C
#bit gie    = 0x0b.7
#bit peie   = 0x0b.6
#bit t0ie    = 0x0b.5
#bit inte   = 0x0b.4
#bit rbie   = 0x0b.3
#bit t0if   = 0x0b.2
#bit intf   = 0x0b.1
#bit rbif   = 0x0b.0

#bit  eeif    =0x0c.7
#bit  cmif    =0x0c.6
#bit  rcif    =0x0c.5
#bit  txif    =0x0c.4
#bit  ccp1if  =0x0c.2
#bit  tmr2if  =0x0c.1
#bit  tmr1if  =0x0c.0

#bit  t1ckps1 =0x10.5
#bit  t1ckps0 =0x10.4
#bit  t1oscen =0x10.3
#bit  t1sync  =0x10.2
#bit  tmr1cs  =0x10.1
#bit  tmr1on  =0x10.0

#bit  toutps3 =0x12.6
#bit  toutps2 =0x12.5
#bit  toutps1 =0x12.4
#bit  toutps0 =0x12.3
#bit  tmr2on  =0x12.2
#bit  t2ckps1 =0x12.1
#bit  t2ckps0 =0x12.0

#bit  ccp1x   =0x17.5
#bit  ccp1y   =0x17.4
#bit  ccp1m3  =0x17.3
#bit  ccp1m2  =0x17.2
#bit  ccp1m1  =0x17.1
#bit  ccp1m0  =0x17.0

#bit  spen    =0x18.7
#bit  rx9     =0x18.6
#bit  sren    =0x18.5
#bit  cren    =0x18.4
#bit  aden   =0x18.3
#bit  ferr    =0x18.2
#bit  oerr    =0x18.1
#bit  rx9d    =0x18.0


#bit  c2out   =0x1f.7
#bit  c1out   =0x1f.6
#bit  c2inv   =0x1f.5
#bit  c1inv   =0x1f.4
#bit  cis     =0x1f.3
#bit  cm2     =0x1f.2
#bit  cm1     =0x1f.1
#bit  cm0     =0x1f.0


#bit trisa4   =0x85.4
#bit trisa3   =0x85.3
#bit trisa2   =0x85.2
#bit trisa1   =0x85.1
#bit trisa0   =0x85.0

#bit trisb7   =0x86.7
#bit trisb6   =0x86.6
#bit trisb5   =0x86.5
#bit trisb4   =0x86.4
#bit trisb3   =0x86.3
#bit trisb2   =0x86.2
#bit trisb1   =0x86.1
#bit trisb0   =0x86.0

// OPTION Bits
#bit not_rbpu   = 0x81.7
#bit intedg     = 0x81.6
#bit t0cs       = 0x81.5
#bit t0se       = 0x81.4
#bit psa        = 0x81.3
#bit ps2        = 0x81.2
#bit ps1        = 0x81.1
#bit ps0        = 0x81.0

#bit  eeie    =0x8c.7
#bit  cmie    =0x8c.6
#bit  rcie    =0x8c.5
#bit  txie    =0x8c.4
#bit  ccpie   =0x8c.2
#bit  tmr2ie  =0x8c.1
#bit  trm1ie  =0x8c.0

#bit  oscf    =0x8e.3
#bit  not_por =0x8e.1
#bit  not_bod =0x8e.0

#bit  csrc    =0x98.7
#bit  tx9     =0x98.6
#bit  txen    =0x98.5
#bit  sync    =0x98.4
#bit  brgh    =0x98.2
#bit  trmt    =0x98.1
#bit  tx9d    =0x98.0

#bit  wrerr   =0x98.3
#bit  wren    =0x98.2
#bit  wr      =0x98.1
#bit  rd      =0x98.0

#bit  vren    =0x9f.7
#bit  vroe    =0x9f.6
#bit  vrr     =0x9f.5
#bit  vr3     =0x9f.3
#bit  vr2     =0x9f.2
#bit  vr1     =0x9f.1
#bit  vr0     =0x9f.0


// For Assembly Language - Note upper case
// Status Bits
#define IRP    7
#define RP1    6
#define RP0    5
#define NOT_TO    4
#define NOT_PD    3
#define Z    2
#define DC    1
#define C     0


yukaridaki dosyayi heder  defs_628 olarak heder dosyasi olarak kaydet  sonra proje dosyasinin icine yapistir. #include <defs_628.h> diye dosyana dahil et

bundan sonra; porta = 10; ra0 = 1; trisb = 0b00001111; yada if(ra0){} gibi kulanabilirsin
:=