X9C104P Dijital 100k potansiyometre kullanımı

Başlatan escapeto, 04 Haziran 2017, 00:20:14

escapeto

Merhaba..

         x9c104p 100 k mono dijital potansiymetre var elimde. DSXXX serisi entegreler cok pahalı. Proje için bundan 4 adet bile kullansam DSXXX fiyatının yarısı etmez. O sebepten bunu kullanmak istiyorum. Sorun şu ki, pic ile DS serisi entegrenin iletişimi ile bunun iletişimi aynı mı yapılır. Yapmak istediğim uzaktan kumandalı dijital potans. Uzaktan kumanda tarafı örnek uygulamalar ile yapabilirim belki ama bu entegreyi  nasıl kullanmam gerek. Yeni yeni pic öğrenmeye çalışıyorum.

http://html.alldatasheet.com/html-pdf/34252/XICOR/X9C104P/126/1/X9C104P.html
'****************************************************************
'*  Name    : dijital ton kontrol.bas                           *
'*  Author  : Erhan YILMAZ                                      *
'*  Notice  :                                                   *
'*          : All Rights Reserved                               *
'*  Date    : 04.10.2008                                        *
'*  Version : 1.0                                               *
'*  Notes   :                                                   *
'*          :                                                   *
'****************************************************************
Device = 16F628A 
XTAL=4 
Config  CP_OFF , PWRTE_ON , WDT_OFF , LVP_OFF , MCLRE_OFF , XT_OSC
Declare LCD_DTPIN PORTB.4 
Declare LCD_ENPIN PORTB.1 
Declare LCD_RSPIN PORTB.3 
Declare LCD_INTERFACE 4
Declare LCD_LINES 2
ON_INTERRUPT GoTo kesme

Print $FE,$40,$18,$18,$18,$18,$18,$18,$18,$18 ;yarım sağ bar
Print $FE,$48,$1B,$1B,$1B,$1B,$1B,$1B,$1B,$1B ;tam bar
Print $FE,$50,$03,$03,$03,$03,$03,$03,$03,$03 ;yarım sol bar
Print $FE,$58,$02,$04,$08,$1F,$08,$04,$02,$00 ;sol ok
Print $FE,$60,$08,$04,$02,$1F,$02,$04,$08,$00 ;sag ok

Dim menu As Byte
Dim bas As Byte
Dim bas1 As Byte 
Dim vol As Byte
Dim vol1 As Byte
Dim treb As Byte
Dim treb1 As Byte
Dim bal As Byte
Dim deger As Byte
Dim barval As Byte
Dim pad As Byte
Dim bar1 As Byte
Dim bar2 As Byte
Dim temp As Byte
Dim sayac As Byte
Dim ses_durum As Bit
ses_durum=1
menu=1

Symbol azbut = PORTA.2
Symbol artbut = PORTA.3
Symbol modebut = PORTA.4
Symbol mutebut = PORTA.5
Declare SDA_PIN PORTA.1
Declare SCL_PIN PORTA.0
bas=ERead 0
vol=ERead 1 
treb=ERead 2
bal=ERead 3 
GoSub gonder
Print At 1,1,"    MARMARA    "
Print At 2,1," UNIVERSITESI  "
DelayMS 2000
Cls
TRISA=%01111100
TRISB=%00000000
PORTB.0=1
CMCON=7
INTCON=$A0
OPTION_REG=$87
ana:
If modebut=0 Then sayac=0:menu=menu+1
If mutebut=0 Then sayac=0:GoSub mute
If menu=1 Then GoSub vol_menu
If menu=2 Then GoSub bas_menu
If menu=3 Then GoSub treb_menu
If menu=4 Then GoSub bal_menu
If menu=5 Then menu=0
DelayMS 200
GoTo ana

vol_menu:
If azbut=0 Then sayac=0:GoSub vol_az
If artbut=0 Then sayac=0:GoSub vol_art
Print At 1,1,"VOLUME ",DEC2 vol,"  "
barval=vol/2
GoSub bar
Return

bas_menu:
If azbut=0 Then sayac=0:GoSub bas_az
If artbut=0 Then sayac=0:GoSub bas_art
Print At 1,1,"BASS   ",DEC2 bas,"  "
barval=bas/2
GoSub bar
Return

treb_menu:
If azbut=0 Then sayac=0:GoSub treb_az
If artbut=0 Then sayac=0:GoSub treb_art
Print At 1,1,"TREBLE ",DEC2 treb,"  "
barval=treb/2
GoSub bar
Return

bal_menu:
If azbut=0 Then sayac=0:GoSub bal_az
If artbut=0 Then sayac=0:GoSub bal_art
Print At 1,1,"BALANCE    " 
barval=bal/2
GoSub bal_bar
Return 
mute:
sayac=0
menu=0
Print At 1,1,"MUTE         "
If ses_durum=1  Then 
ses_durum=0 
Else
ses_durum=1
EndIf 
If ses_durum=1 Then
PORTB.0=1 
Print At 2,1,"SES ACIK        "
ElseIf PORTA.7=0 Then
PORTB.0=0
Print At 2,1,"SES KAPALI      "
EndIf
DelayMS 200
Return

vol_art:
vol=vol+1
If vol=64 Then vol=63
GoSub gonder
Return

vol_az:
vol=vol-1
If vol=255 Then vol=0
GoSub gonder
Return

bas_art:
bas=bas+1
If bas=64 Then bas=63
GoSub gonder
Return

bas_az:
bas=bas-1
If bas=255 Then bas=0
GoSub gonder
Return

treb_art:
treb=treb+1
If treb=64 Then treb=63
GoSub gonder
Return

treb_az:
treb=treb-1
If treb=255 Then treb=0
GoSub gonder
Return


bal_art:
bal=bal+1
If bal=64 Then bal=63
GoSub gonder
Return

bal_az:
bal=bal-1
If bal=255 Then bal=0
GoSub gonder
Return 

bar:
bar1 = barval/2	
bar2 = barval // 2	 
pad =16-(bar1+bar2)     
Print At 2,1, Rep $01\bar1,Rep $00\bar2,Rep " "\pad
Return

bal_bar:
If barval>28  Then barval=28
If barval<=14 Then GoSub sol
If barval>=15 Then GoSub sag
Return
sol:
temp =14-barval
bar1 = temp/2	
bar2 = temp // 2	 
pad = 7-(bar2+bar1)   
Print At 2,1, Rep " "\pad,Rep $02\bar2,Rep $01\bar1,$03,$04,Rep " "\$07
Return
sag:
temp=barval-15
bar1 = temp/2	
bar2 = temp // 2	 
pad = 7-(bar2+bar1)  
Print At 2,1,Rep " "\$07,$03,$04,Rep $01\bar1, Rep $00\bar2 ,Rep " "\pad
Return
kesme:
INTCON.2=0
sayac=sayac+1
If sayac<>100 Then GoTo kesme_sonu
sayac=0
menu=0
Print At 1,1,"    MARMARA    "
Print At 2,1," UNIVERSITESI  "
kesme_sonu:
Context Restore

gonder:
treb1=treb+64
vol1=vol+128
bas1=bas+192
BusOut $50,[bal,treb1,vol1,bas1]
EWrite 0 ,[bas]
EWrite 1 ,[vol]
EWrite 2 ,[treb]
EWrite 3 ,[bal]
Return

End


Mesela internette bir arkadaş açıklayıcı şekilde bir şeyler yapmış, misal yukarıdaki kodlar bu entegre de işime yarar mı?







OG

Aynı değil, senin entegre daha basit kontrol ediliyor, yanlızca buton kullanarak kontrol edebilirsin diğerinde data göndermen gerek.
FORUMU İLGİLENDİREN KONULARA ÖM İLE CEVAP VERİLMEZ.