Step Zayıflatıcı

Başlatan onurinci, 29 Mayıs 2014, 20:14:59

onurinci

Hocam saygılar.emeğiniz ve desteğinizle geliştirmeye çalıştığım encoderli

volum projesini çok az değişikliğe uğratıp,RF sinyal jeneratörünün çıkışını

ayarlayabilmem için ebaydan 50 ohm 127 db bir step zayıflatıcı temin ettim.

16f877 ile gayet güzel çaıştırdım.Attenuator minicik bir şey arkasına pcb

yapayım dedim içinde bir metal boşluk mevcut ,fakat 877 ve 876 sığmadı

16F628 tam oluyor.devreyi buna göre düzenlemeye çalıştım,fakat lcd

görüntüsünü alıp ecoderi tanımadığını gördüm.encoder netten dolaşırken

bulduğum bir emulatör basitçe grey kodu üretiyor.normalde buraya mekanik

encoder bağlanacak.Port B kesmesi izine rastlamadığım için PortA'ya taşıdım

fakat bazı satırların ne anlama geldiğini bilmediğim için öylece kaldım.

birde 127 step yeterli olduğu için,port b7 artıyor buraya bir button koyup

örnek hızlı olarak misal 64'düncü step'e gidebilmek.hocam acelem yok boş bir

vaktinizde bakabilirseniz sevinirim .sağlıklar dilerim.

Simulasyon ve dosyalar.    http://www.dosyadeposu.com/files/fe2mB1401383483.html


@ DEVICE PIC16F628A,INTRC_OSC_NOCLKOUT,WDT_OFF,MCLR_OFF,PWRT_ON,BOD_OFF,LVP_OFF,CPD_OFF,PROTECT_OFF
DEFINE OSC 4

CMCON=7
'OPTION_REG.7=0

TRISA=%00110000 :PORTA=0
TRISB=%00000000 :PORTB=0



DEFINE LCD_DREG PORTA
DEFINE LCD_DBIT 0
DEFINE LCD_EREG PORTA
DEFINE LCD_EBIT 6
DEFINE LCD_RSREG PORTA
DEFINE LCD_RSBIT 7
DEFINE LCD_BITS 4
DEFINE LCD_LINES 2



SAYI    VAR byte 56
SURE    VAR BYTE 57
OLD     VAR BYTE 58
NEW     VAR BYTE 59
BAR     VAR BYTE
DEGISTI VAR BIT
YON     VAR BIT

symbol VA=OLD.1
SYMBOL VB=NEW.0

    '    Custom character definition
    '    ===========================

LCDOUT  $FE,$40,$15,$15,$15,$15,$15,$15,$15,$00  ' Cust Char #0 
'-------------------------------------------------------------------------------
   
PAUSE 200

      READ 10,SAYI
      IF SAYI = 255 THEN SAYI = 0

Start:     
      GOSUB ENCODER
      GOSUB VOLUMSET
      GOTO START
'-------------------------------------------------------------------------------

VOLUMSET:
      IF SAYI=0 THEN
         LCDOUT $FE,$80,"  ATT DISABLE     "               ' Volume Min       attenuator
         GOTO BIR
      ENDIF
      IF SAYI=127 THEN
         LCDOUT $FE,$80,"  END OFF ATT  "               ' Volume Max
         GOTO BIR
      ENDIF
               
       LCDOUT $FE,$80,"RF ATT -",DEC SAYI," dBm  "         ' Volume  1
         
BIR:
     BAR=SAYI/8
    LCDOUT $FE,$C0,REP 0\BAR,REP 32\(16-BAR)

'-------------------------------------------------------------------------------
      IF DEGISTI = 1 THEN
        WRITE 10,SAYI
        PAUSE 30
        PORTB=SAYI '''''''''''''''''' Sonucu Port B'ye ver
        DEGISTI = 0
      ENDIF
'-------------------------------------------------------------------------------     
     RETURN
     
ENCODER:
        DEGISTI=1:SURE=0

TEKRAR:
'        gosub VOLUMSET
        NEW = PORTA & %00110000
       
    IF NEW = OLD Then
          SURE=SURE+1
          if SURE=50 then KAYIT
          goto TEKRAR
        endif
       
        SURE=0       
        YON=VA ^ VB :DEGISTI=1
       
        IF YON=1 then
            SAYI=SAYI+1
            IF SAYI>127 then SAYI=127
             
        else
            SAYI=SAYI-1
            if SAYI>127 THEN SAYI=0       
        endif

CIK:           
       SURE=0   
       OLD=NEW
       
       GOTO TEKRAR
KAYIT: 
      if DEGISTI=0 then return 
      write 10,SAYI 
      PAUSE 10
      SURE=0
      Return             
END

ete

#1
Yalnızca tek satırda bir kusur var. Encoder giriş pinlerine bağlı olarak aşağıdaki satırı,
NEW = PORTA & %00110000
değiştirmek gerekiyor. Bu satırı şu şekilde değiştir yeniden dene.

NEW = (PORTA & %00110000)>>4


Ete

onurinci

Hocam süpersiniz. evet çalıştı.encoder basmalı tipten,bakayım bende uğraşayım basınca set edilmiş değere göndermeye.çalışıyım.

Hocam ebayda almıştım iki tane TIL311
http://www.ti.com/lit/ds/symlink/til311.pdf.
porta doğru data geliyormu gözlemleyim diye.o yüzden simulasyonda alışkanlık oldu.
kalın sağlıcakla..

Powered by EzPortal