E

999 SAYICI

Başlatan Elzemefe, 13 Ocak 2016, 23:51:40

Elzemefe

Merhaba arkadaşlar
ete  hocam derslerinden sayıcı örneğini kullanarak
999 sayıcı yapmaya çalışıyorum ortak anot 38 mm dısplayler var elimde   
onları kullanmak istiyorum
ete hocam ın yaptığı  gayet  hızlı ve net  görünüyor
Benim derlediğim ise %91 işlemci  kullanıyor
Tek eklemek  istediğim  aşağı  yukarı butonu
Yalnız 64  bit kullandığım  için sigorta ayarlarında sorun  olabilir die düşünüyorum
32 bit  kullanan arkdaşlardan ricam bi tane eksi butonu ekleyip
kapattığım sigorta ayarlarını açıp pıc16f628a  göre derleyip deneyebilirlermi

dosya ekte

sonmoikan

Eksi buton ekledim, sigorta ayarlarını 32 bite göre değiştirdim ve 628A ya göre derledim.
Selam ile...
ABDULLAH

Elzemefe

Kardeş  çok  sağol ama yine benim similatorde (ısıste)
displaylerin tarama şekli  algılanıyor ve  cpu  kullanımı
%90 lara  çıkıyor
Siz denemişmiydiniz _?

Elzemefe

#3
Çalışma resmi !! :-\

resimde görünmüyor ama dısplayler  tek tek yanıyor

Elzemefe

Arkadşlar devrede ısıste  çalışırken dısplaylere giden pinlerin
bağlantıları koparıp çalıştırdığımda cpu %27 lerde  oluyor
tasarımda  hatamı yapıyorum acaba

ete

Simulasyona bakıp da karar vermeyin. Bir defa o displayleri tek tek değilde 4 lü bitişik display kullan hiç sönüp yanmadan çalıştığını görebilirsin. Sorun tek tek displaylerin sürülmesinin zaman almasıdır.

Gerçek devrede o sistem düzgün çalışır.

Ete

sonmoikan

Arkadaşım bir de Eksi butonu PORTB 7 ye bağlamışız, bilgi gönderirken =portb olduğu için sıkıntı olur.
eksi butonu uygun bir PORTA pimine aktarmak lazım.
ABDULLAH

sonmoikan

#7
Arkadaşım bir örnek yaptım inceleyebilirsin.
Selam ile...


@ DEVICE pic16F628A                      'işlemci 16F628                               
@ DEVICE pic16F628A, WDT_ON              'Watch Dog timer açık
@ DEVICE pic16F628A, PWRT_ON             'Power on timer açık
@ DEVICE pic16F628A, PROTECT_OFF         'Kod Protek kapalı
@ DEVICE pic16F628A, MCLR_off            'MCLR pini kullanılMIYOR.
@ DEVICE pic16F628A, INTRC_OSC_NOCLKOUT  'Dahili osilatör kullanılacak
'-----------------------------------------------------------------
DEFINE OSC 4
'-------------------------------------------------------------------------

PORTA=0:TRISA=%11100000     
PORTB=0:TRISB=%00000000   
CMCON=7
INTCON=%00100000         'Kesmeler aktif ve TMR0 kesmesi aktif
TMR0=99
ON INTERRUPT GoTo KESME   'kesme oluşursa KESME adlı etikete git.
OPTION_REG=%00000100

SAYAC   var WORD
SIRA    VAR BYTE
SAYI    VAR BYTE
X       VAR BYTE

BIRLER  VAR BYTE
ONLAR   VAR BYTE
YUZLER  VAR BYTE
BINLER  VAR BYTE


SYMBOL DISP3=PORTA.0
SYMBOL DISP2=PORTA.1
SYMBOL DISP1=PORTA.2
SYMBOL DISP0=PORTA.3

SYMBOL RES  =PORTA.7
SYMBOL ARTIR=PORTA.6       
SYMBOL AZALT=PORTA.5


PAUSE 100

;*****************************************************************************************

BASLA: 

       IF ARTIR=1 then
         SAYAC=SAYAC+1
         IF SAYAC>9999 then SAYAC=0
         while ARTIR=1:wend
      ENDIF
     
      IF AZALT=1 then
         SAYAC=SAYAC-1
         IF SAYAC=-1 then SAYAC=9999
         while AZALT=1:wend
      ENDIF
     
      IF RES=1 then SAYAC=0

      X=SAYAC DIG 0 : GOSUB AL : BIRLER=SAYI
      X=SAYAC DIG 1 : GOSUB AL : ONLAR=SAYI
      X=SAYAC DIG 2 : GOSUB AL : YUZLER=SAYI
      X=SAYAC DIG 3 : GOSUB AL : BINLER=SAYI

GOTO BASLA
     
;*****************************************************************************************
       
AL:   

LOOKUP X,[64,121,36,48,25,18,2,120,0,16,28,70],SAYI

RETURN
 
;*****************************************************************************************                 

DISABLE
KESME:
       SIRA=SIRA+1:IF SIRA>4 then SIRA=0
       
       IF SIRA=0 then
         Disp3=0
         PORTB=BIRLER
         DISP0=1
       ENDIF                         
       
       IF SIRA=1 THEN
          DISP0=0
          PORTB=ONLAR
          DISP1=1
       ENDIF
       
       IF SIRA=2 THEN
          DISP1=0
          PORTB=YUZLER
          DISP2=1
       ENDIF
       
       IF SIRA=3 THEN
          DISP2=0
          PORTB=Binler
          DISP3=1
       ENDIF

       TMR0=99
       INTCON.2=0        'TMR0 Kesme bayrağı sıfırlanıyor
       RESUME
ENABLE
       
;*****************************************************************************************
         
END


ABDULLAH

Elzemefe

Kardeş teşekkür ederim . Çok sağol

efehurkan

Merhaba Elzem bey ben devreyi yaptım ama çalıştıramadım, sanırım ortak anot display bağlantılarını yanlış yaptım.

ete

7 segment ledlerde 7 adet segment ledi vardır. Bunların herbiri en azından 10 ma akım çeker. Display de 8 rakamı yandığında display yaklaşık 70-80 ma akım çeker. Bu akımı pic pini tek başına kaldıramaz. Zorlarsanız ya o pin bozulur yada işlemci bozulur yada display çalışmaz. Zira pic pini en fazla 20 ma akım verebilir.  o halde pic pininden tetik sinyali alıp bir transistörü sürmek ve ortak ucu bu transistörün Collector çıkışına bağlamak gerekir.
Ortak katod displayde katot uçlara GND verilir. O halde bir NPN transistör kullanarak bu ortak katodları sürmek gerekir
Ortak Anot displaylerde anot uçlara +5V verilir. O halde bir PNP transistör kullanarak bu ortak uçları sürmek gerekir.

Deneysel çalışmalarda uçlar simulasyonda direk pinlere bağlanıp çalıştırılabiliyor. Adı üzerinde deneysel çalışma. Aslında simulasyonun buna müsaade  etmemesi gerekirdi ama ediyor her nedense.
Ama siz doğrusunu yapmak zorundasınız aksi halde devre çalışmayacaktır.

Ete

Powered by EzPortal