12F675 ve 74164 2x7Segment Display Sorunu!

Başlatan ento, 14 Mayıs 2012, 14:21:01

ento

Picbasic'te kod yazıp Proteus'ta tasarladığım devrede sıkıntılar yaşadım. İlk önce sağdaki devreyi tasarladım. Fakat display güncellemeleri istediğim gibi olmadı. İnat ettim birkaç gün uğraştım ama ne fayda. >:( Sonra aynı devreyi proteus'ta farklı display ile yaptım bu kez sorun yok. Güncelleme harika ve display'de titreme yok.  ;D Sorum şu: devreyi baskı devreye döküp yaptığımda hangisiyle karşılacağım? Titreme olur mu? Picbasic programındaki display güncelleme komutlarında değişiklik yapmam gerekir mi?

Not: Problemi çözdüğümde 12F675'in adc kullanarak voltmetre yapmak istiyorum. Bir sonraki amacım volt/akım okumak.



http://turbobit.net/t3svp8xb33ha.html

'****************************************************************
'*  Name    : UNTITLED.BAS                                      *
'*  Author  : [set under view...options]                        *
'*  Notice  : Copyright (c) 2006 [set under view...options]     *
'*          : All Rights Reserved                               *
'*  Date    : 12/14/2006                                        *
'*  Version : 1.0                                               *
'*  Notes   :                                                   *
'*          :                                                   *
'****************************************************************
INCLUDE "modedefs.bas"
@ DEVICE WDT_OFF, MCLR_OFF, PWRT_ON 
         '    Internal Oscillator
         '    Enable watch dog timer
         '    Enable power up timer
         '    Disable MCLR pin
         '    Enable brown out detect
define osc_4 
   
    TRISIO   = %000001         ' GPIO<5:1> ÇIKIŞ
                               ' GPIO<0> GİRİŞ
                               '        
    CMCON    = 7               ' ANALOG KARŞILAŞTIRICI KAPALI
    ANSEL = %00000000          ' ANS3:ANS0 DİJİTAL GİRİŞ/ÇIKIŞ

SAY VAR WORD 
RAKAM1 VAR BYTE
RAKAM2 VAR BYTE
DATAPIN VAR GPIO.1
CLKPIN VAR GPIO.2
i var byte

        sifir   con $3f'0 'sifir hex 3f sayısına denk
        bir     con $06'1
        iki     con $5b'2
        uc      con $4f'3
        dort    con $66'4
        bes     con $6d'5
        alti    con $7d'6
        yedi    con $07'7
        sekiz   con $7f'8
        dokuz   con $6f'9 'dokuz hex 6f sayısına denk
SAY = 65
i=0

BASLA: 
IF GPIO.0 = 1 THEN SAY = SAY+1
IF SAY = 99 THEN SAY = 0


'FOR I=0 To 8
lookup SAY DIG 1,[sifir,bir,iki,uc,dort,bes,alti,yedi,sekiz,dokuz],RAKAM1 
HIGH GPIO.5
SHIFTOUT DATAPIN, CLKPIN, 1,[RAKAM1]    'SHIFTOUT DataPin,ClockPin,Mode,[Var{\Bits}...]
PAUSEus 2300
LOW GPIO.5

lookup SAY DIG 0,[sifir,bir,iki,uc,dort,bes,alti,yedi,sekiz,dokuz],RAKAM2
HIGH GPIO.4
SHIFTOUT DATAPIN, CLKPIN, 1,[RAKAM2]    'SHIFTOUT DataPin,ClockPin,Mode,[Var{\Bits}...]  
PAUSEus 2300
LOW GPIO.4

'NEXT I

goto BASLA
END

ento

Yanıtı yine ben vereyim. Dün devreyi kurup denedim. Displayde gözle görülür şekilde titreme var. Proteusta display seçerken dikkat edin

Mucit23

Displayleri multiplex olarak kullanıyorsanız mutlaka proteustaki gurup displayleri kullanın. Multiplex displayleri teker teker çizerseniz titreme çok fazla görülür.

Gerçekte ise bu yazdığınız program ile düzenli bir tarama frekansı elde edemezsiniz. Timer gibi ek donanımlarla kesme oluşturup kesme ile dispolayleri tarayın.