Advertisement

Responsive Advertisement

PIC16F628A DS1844 LM1036 DİJİTAL TON KONTROL DEVRESİ

 Dijital ton kontrol devresi pic16f628 mikro denetleyici üzerine kurulu picbasic ile ds1844 ve lm1036 kullanımı iyi bir örnek kaynak .bas .hex yazılımları ve proteus isis ares pcb simulasyon dosyaları bulunuyor cdrom sürücü, mp4 oynatıcı ya da farklı ses kaynaklarında kullanabilirsiniz.

Merhabalar sizlerle PIC16f628a ve DS1844‘lü dijital ton kontrol uygulamasını paylaşıyorum devreyi uzun zaman önce tasarlamıştım board üzerinde denemiştim öylece duruyordu. Geçenlerde bir arkadaşım bitirme projesi ihtiyacı duyduğundan uygulama gerçekleşme imkanı buldu ve arkadaşım uygulamayı bitirme projesi olarak yaptı.

Devrede ton kontrol kısmında lm1036 denetleyici olarak 16f628a ve ayar için ds1844 dijital potans entegresi kullandım. DS1844 piyasada bulunmuyor galiba ben bir ara sample istemiştim o yüzden elimde vardı. Devre üzerinde bulunan mute ,+ ,– ve menu + tuşları ile bas, tiz, balans volüme kontrolü yapıyor.

Yapılan ayarlar dahili e-eproma kayıt ediliyor ve tekrar açılışta aynı değerler yükleniyor.Bütün ayarlar lcdde bar şeklinde görüntüleniyor ayrıca 5 saniye hiç bir tuşa basılmasa lcd üzerinde logo yazısı görüntülenir.

Tekrar menüye dönmek için menü tuşuna basmak yeterlidir Program kodları proton pic basic ile yazılmıştır.Devre ,pcb ve yazılım tasarımı bana aittir kodlar üzerinde oynama yapılarak devre geliştirilebilir. Örnek olarak mute tuşunu menü – olarak kullanıp menüler arasında ileri geri yapılabilir

LM1036‘da kontrol entegrenin üzerinde bulunan bas,tiz,ses ve balans girişlerine 0-5 volt ayarlı gerilim uygulanması ile sağlanır. Fakat entegre 9-16v gerilimle çalıştığından bu gerilim entegre içerisinde bulunan dahili gerilim regülatörü ile sağlanır. Bu regülatör çıkışı 17 nolu pinden alınır. Buradan çıkan 5 volt potansiyometreler üzerinden bas, tiz, balans, ses girişlerine uygulanarak ton kontrol ayarı sağlanır.

Lm1035 içinde bu işlemler aynıdır. Yani entegre kontrolü için bas,tiz,balans,ses girişlerine 0-5 volt ayarlı gerilim vermek gerekli benim projemde bu gerilimler ds1844 dörtlü dijital potansiyometre entegresi ile sağlanıyor.Ds1844 entegresi her bir potansiyometreyi 64 adımda kontrol ediyor. yani 0dan64 adıma 0-5 v ayarlı gerilim sağlıyor.Ds1844 piyasada yok bildiğim kadarıyla bunu yerine ad5204 entegresi de kullanılabilir.Ad5204’ün piyasada olması lazım tam emin değilim. Veya bilen arkadaşlar bir tane entegre önerebilir.

dijital-ton-kontrol-cdrom-proje-son

isis-devre-semasi-pic16f628a-ds1844-lm1036pcb-plaket-pic16f628a-ds1844-lm1036elektronik-malzemeler-pic16f628a-ds1844-lm1036bitmis-hali-pic16f628a-ds1844-lm1036

PROTON PİC-BASİC YAZILIMI

'*****************************
'*  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

Ekleme 11-07-2009
Arkadaşlar bir arkadaşın uyarısı üzerine fark ettim devre şeması ile pcb arasında küçük farklar varmış onları düzelttim

Dosya indirme LINK listesi (TXT formatında) link-7366.zip şifre-pass: 320volt.com

Yorum Gönder

0 Yorumlar