Przedwzmacniacz na TDA7439 prośba o dopisanie ustawień zegara i pilota
- kulamario
- Posty: 207
- Rejestracja: 17 sie 2015, 20:05
- Lokalizacja: Greystones
- Kontakt:
Re: Przedwzmacniacz na TDA7439 prośba o dopisanie ustawień zegara i pilota
Pilot mam od tv philips wiec przycisków jest sporo
Ale to nie problem problem jest dla mnie w tym ze nie wiem jak ten program jest napisany ze w opcjach przesuwa mi wartości a na ekranie głównym steruje volume próbowałem już dopisać ustawienia pod inne przyciski ale nadal mi coś nie chodzi jak powinno
Ale to nie problem problem jest dla mnie w tym ze nie wiem jak ten program jest napisany ze w opcjach przesuwa mi wartości a na ekranie głównym steruje volume próbowałem już dopisać ustawienia pod inne przyciski ale nadal mi coś nie chodzi jak powinno
- kulamario
- Posty: 207
- Rejestracja: 17 sie 2015, 20:05
- Lokalizacja: Greystones
- Kontakt:
Re: Przedwzmacniacz na TDA7439 prośba o dopisanie ustawień zegara i pilota
Bys coś Bartek doradził z tym
w tym kodzie dodałem dwa przyciski pilota ale to nie chodzi
w tym kodzie dodałem dwa przyciski pilota ale to nie chodzi
Code: [Zaznacz cały] [Rozwiń/Zwiń]
- 'TDA7439 - 15 listopad 20018 kulamario@yahoo.ie
- 'dodany pilot
- 'volume up/down
- 'ON/OFF z pilota i guzika
- 'Mute
- '--------------------------------------------------------------------------------------------------------------------------------------------------------------------------
- $regfile = "m16def.dat"
- $crystal = 8000000 '11059200
- $swstack = 64
- $hwstack = 64
- $framesize = 200
- $include "Config_PCF8583.bas"
- Config Portc.5 = Output : Relay Alias Portc.5 : Set Relay
- Config Submode = New
- Config Lcdpin = Pin , Db4 = Portd.4 , Db5 = Portd.1 , Db6 = Portd.7 , Db7 = Portd.0 , E = Portd.5 , Rs = Portd.6 'PCB
- Config Lcd = 16x2
- 'Config Lcdpin = Pin , Db4 = Porta.2 , Db5 = Porta.3 , Db6 = Porta.4 , Db7 = Porta.5 , E = Porta.1 , Rs = Porta.0 'ZL3AVR
- 'Config Lcd = 20x4
- Initlcd
- Cursor Off
- 'Waitms 1000
- 'Variable for Data to TDA7439
- '----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
- ' konfiguracja RC5
- Config Rc5 = Pinc.3 , Timer = 2 , Wait = 250
- 'Config Rc5 = Pinc.3 , Timer = 2
- Dim Address As Byte , Command As Byte
- '------------------------------------------------------------------
- Dim Second As Byte
- Dim Minute As Byte
- Dim Hour As Byte
- Dim Day As Byte
- Dim Month As Byte
- Dim Year As Word
- Dim Weekday As Byte
- Dim Blad As Byte
- Dim Ilosc_dni As Byte
- Dim Rok_przestepny As Byte
- ' pocz¹tkowe wartoœci
- Second = 0 ' 00:00:00
- Minute = 0
- Hour = 0
- Day = 1 ' 01.01.2000
- Month = 1
- Year = 2000
- Weekday = 6 ' sobota
- '---------------------------------------------------------------------------------------------------------------------------------------------
- Declare Sub Memory_on_off()
- Declare Sub Pwr_on()
- Declare Sub Pwr_off()
- Dim Pwr As Bit
- Pwr = 1
- dim Mute_func as byte
- 'Mute_func =0
- '----------------------------------------------------------------------------------------------------------------------------------------------------------------------
- Dim Input_value As Byte 'Zmienna dla multipleksera wejsciowego
- Dim Input_gain_value As Byte 'Zmienna dla poziom wejscia
- Dim Volume_value As Byte 'Zmienna dla Volume
- Dim Bass_tone_value As Byte 'Zmienna dla Bas
- Dim Middle_tone_value As Byte 'Zmienna dla tony srodek
- Dim Heigh_tone_value As Byte 'Zmienna dla tony wysokie
- Dim Limit_value_max As Byte 'Zmienna wartosci graniczna w gore
- Dim Limit_value_min As Byte 'Zmienna wartosci graniczna w dól
- Dim Balance_r As Byte 'Zmienna dla Balans R
- Dim Balance_l As Byte 'Zmienna dla Balans L
- Dim Value As Byte 'Wartosc zapisana w rejestrze
- Dim Adres_tda7439 As Byte 'Adres i2c TDA
- Dim Register As Byte 'Zdefiniuj rejestr, w którym zapisano wartosc
- Dim Press_button As Byte 'Zmienna do okreslenia nacisniecia klawisza, a tym samym mozliwosc wprowadzenia róznych ustawien
- Dim Functional_value As Byte 'Zmienna jest zdefiniowana dla wszystkich zmiennych poszczególnych ustawien
- Dim Held_var As Bit 'Zmienna wyswietla sie po nacisnieciu przycisku
- Dim Encoder_a As Bit 'Zmienna wskazuje, czy przycisk zostal nacisniety
- Dim Encoder_b As Bit 'Zmienna pokazuje, czy przycisk zostal nacisniety
- Dim Button As Bit 'Zmienna do okreslenia, czy nacisnieto przycisk wyboru
- Dim Tmpin As Byte
- Dim Count As Word
- Dim Tmp_1 As Byte , Tmp_2 As Byte , Db As String * 5 , Tone As String * 6 , Vol_out As String * 7
- Dim Tone1 As Byte
- Dim Tone11 As Byte 'Tone11 to jest napis z bufora right,left
- Deflcdchar 1 , 4 , 4 , 4 , 4 , 4 , 4 , 4 , 32
- Deflcdchar 2 , 32 , 14 , 14 , 14 , 14 , 14 , 32 , 32
- Deflcdchar 3 , 4 , 14 , 14 , 14 , 14 , 14 , 4 , 32
- Deflcdchar 4 , 32 , 32 , 32 , 21 , 32 , 32 , 32 , 32
- Deflcdchar 5 , 6 , 14 , 30 , 30 , 30 , 14 , 6 , 32
- Declare Sub Bar_vol(byval Vol_out As String , Byval Vol_val As Byte , Byval Sel As Byte) 'bargraf od volume
- Declare Sub Bar_balans(byval Tone11 As String , Byval Tmp_11 As Byte) 'bargraf od balansu
- Declare Sub Bargraph_settings(byval Tone As String , Byval Tmp_1 As Byte) 'bargraf od ustawien tonow
- Declare Sub Settings_tda7439()
- Declare Sub Mute()
- Declare Sub Selection()
- Declare Sub Balance_left()
- Declare Sub Balance_right()
- Declare Sub Select_input()
- Declare Sub Change_settings()
- Declare Sub Setting_function()
- Declare Sub High_tones()
- Declare Sub Inputgain()
- Declare Sub Volume()
- Declare Sub Bass()
- Declare Sub Middle_tones()
- Declare Sub Button_test()
- Declare Sub Transfer()
- Declare Sub Main()
- Declare Sub Lcd_init()
- Declare Sub Tin(byval Tin_val As Byte)
- 'Ports I2C ATMEGA
- '4K7 pullup SCL & SDA
- Config Scl = Portc.0
- Config Sda = Portc.1
- Config I2cdelay = 20
- 'Zdefiniuj dla przycisków sterujacych i zdefiniuj je jako wejscia
- Dim Sw_cnt As Byte , Lock As Byte
- Config Pind.2 = Input : Portd.2 = 1 'Encoder A
- Config Pind.3 = Input : Portd.3 = 1 'Encoder B
- Config Pinc.2 = Input : Portc.2 = 1 : Switch Alias Pinc.2 'switch
- Config Pinb.0 = Input : Portb.0 = 1 : on_off Alias Pinb.0 'switch on/off
- Config Debounce = 50
- '---------------------------------------------------------------------------------
- On Int0 Int0_isr
- Enable Int0
- Config Int0 = Falling
- Enable Interrupts
- 'Standart Register
- Call Settings_tda7439()
- Press_button = 1 'Ustaw przycisk, aby ustawic domyslny
- Cls
- Locate 1 , 1
- Lcd " System TDA7439 "
- Locate 2 , 1
- Lcd "Wait a moment..."
- Waitms 1500
- Cls
- Display Off
- '////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- 'Funkcja aby sprawdzic stan przycisków
- Call Select_input
- 'Call Volume
- Display On
- Blad = Pcf8583_storetime(second , Minute , Hour , Day , Month , Year) ' zapis do Pcf8583
- '///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- 'Funkcja do sprawdzania, czy zostal nacisniety przycisk
- Sub Button_test()
- Encoder_a = 0
- Encoder_b = 0
- Button = 0
- If Tifr.ocf2 = 1 Then 'minê³o 10ms, flagê ustawia Timer
- Tifr.ocf2 = 1 'flagi kasuje siê wpisuj¹c jeden, nie zero
- If Switch = 0 Then 'jeœli wciœniêto przycisk
- If Lock = 0 Then 'a jeszcze nie ma blokady
- If Sw_cnt < 50 Then 'tu jesteœmy co 10ms i jeœli jeszcze nie osi¹gneliœmy granicy
- Incr Sw_cnt 'to dodajemy do licznika Sw_cnt
- Else 'jeœ³i granica osi¹gniêta
- Lock = 1 'zablokuj dodawanie a¿ do puszczenia przycisku
- Call Memory_on_off()
- '->tu dajemy to co ma sie dziac po dlugim nacisnieciu
- End If
- End If
- Else 'kiedy zwalniamy przycisk
- If Lock = 0 Then 'a nie by³o to d³ugie wciœniêcie
- If Sw_cnt > 3 Or Command = 82 Then Call Selection 'sprawdŸ czy to nie drganie styków 3x10ms = 30ms
- End If '->zmieñ stan pierwszej diody
- Lock = 0 : Sw_cnt = 0 'wy³¹cz blokadê i zeruj licznik
- End If
- End If
- End Sub
- '---------------------------------------------------------------------------------------------------------------------------------------
- '---------------------------------------------------------------------------------------------------------------------------------------
- '///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- 'Funkcja do zmiany ustawien Bass Treble Middle itp.
- Sub Change_settings()
- If Button = 1 Then
- Count = 0
- If Press_button > 8 Then
- Press_button = 1 'Po dotarciu na koniec, nacisnij klawisz resetowania
- End If
- End If
- Select Case Press_button 'Przy pewnym stanie opcji wywolywania klawiatury
- Case 1 : Call Volume
- Case 2 : Call Select_input
- Case 3 : Call Inputgain
- Case 4 : Call Bass
- Case 5 : Call Middle_tones
- Case 6 : Call High_tones
- Case 7 : Call Balance_right
- Case 8 : Call Balance_left
- End Select
- Button = 0 'Zresetuj przycisk wyboru
- Waitms 80
- End Sub
- '///////////////////////////////////////////////////////////////////////////////
- 'Funkcja wspólna dla wszystkich ustawien
- Sub Setting_function()
- If Encoder_a = 1 Or Command = 17 or command = 86 Then 'Sprawdz enkoder
- If Functional_value < Limit_value_max Then 'Zapobiegaj przepelnieniu
- Functional_value = Functional_value + 1 'Zwieksz wartosc funkcji o 1
- Call Transfer 'Funkcja do transferu
- End If
- End If
- If Encoder_b = 1 Or Command = 16 or command = 85 Then
- If Functional_value > Limit_value_min Then
- Functional_value = Functional_value - 1
- Call Transfer
- End If
- End If
- End Sub
- '////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- 'Funkcja dla multipleksera wejsciowego
- Sub Select_input()
- 'Set In_shift
- If Held_var = 0 Then 'Zapobiec po prostu zmianie wejsc poprzez przytrzymanie klawiszy
- Limit_value_max = 3 'Zapobiegaj przepelnieniu
- Limit_value_min = 0
- Register = &B00000000 'Wybierz rejestry dla multipleksera wejsciowego
- Functional_value = Input_value ' Wartosc funkcji jest przypisana do ustawien wejsc
- Call Setting_function
- Input_value = Functional_value
- Tmpin = Input_value + 1 'Stara zmienna zostanie zastapiona nowa wartoscia
- Cls
- Locate 1 , 6
- Lcd "INPUT"
- Locate 2 , 1
- Select Case Input_value
- Case 3 : Lcd " CD"
- Case 2 : Lcd " FM"
- Case 1 : Lcd " USB DAC"
- Case 0 : Lcd " PHONE"
- End Select
- Waitms 300
- End If
- End Sub
- '////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- 'Funkcja do ustawiania czulosci wejsciowej
- Sub Inputgain()
- Local Tmpa As Byte
- Limit_value_max = 15 'Ogranicz wzmocnienie wejsciowe do 30 db
- Limit_value_min = 0
- Register = &B00000001 'Wybierz rejestr dla regulacji czulosci
- Functional_value = Input_gain_value 'Wartosci funkcji przypisuje sie wejsciowa wartosc wzmocnienia
- Call Setting_function
- Input_gain_value = Functional_value
- Tmpa = Input_gain_value * 2
- Call Tin(input_gain_value)
- End Sub
- '////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- 'Funkcja do zmiany glosnosci
- Sub Volume()
- Local S_1 As String * 7
- Local Vol_value As Byte
- Limit_value_max = 49 'volume jest ograniczony do góry
- Limit_value_min = 0
- Register = &B00000010 'Wybierz rejestr dla glosnosci
- Functional_value = Volume_value
- Call Setting_function
- Volume_value = Functional_value
- Select Case Input_value
- Case 3 : S_1 = "CD"
- Case 2 : S_1 = "FM"
- Case 1 : S_1 = "USB DAC"
- Case 0 : S_1 = "PHONE"
- End Select
- Vol_value = Volume_value - 50
- Vol_value = Not Vol_value
- Call Bar_vol(s_1 , Vol_value , 1)
- 'writeeeprom Volume_value , 2
- '-------------------------------------------------------------------------------------------------------------------------------------
- ' Blad = Pcf8583_gettime() ' odczytaj godzinê i date z uk³adu PCF8583 , funkcja zwraca kod b³êdu
- ' If Blad = 2 Then ' je¿eli uszkodzona data
- ' Locate 1 , 1 : Lcd " USTAW ZEGAR! " ' wyœwietl komunikat
- ' Locate 2 , 1 : Lcd Spc(16)
- ' sprawdzanie PCF8583
- ' Elseif Blad = 1 Then ' je¿eli b³¹d magistrali I2C
- ' Locate 1 , 1 : Lcd "B{003}{001}d:" ' wyœwietl komunikat
- ' Lcd Spc(11)
- ' Locate 2 , 1 : Lcd "magistrala I2C "
- ' Elseif Blad = 0 Then ' je¿eli prawid³owo odczytane dane
- ' Call Displaytime() ' wyœwietl zegar
- 'end if
- '-------------------------------------------------------------------------------------------------------------------------------------
- End Sub
- '////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- 'Funkcja basów
- Sub Bass()
- Local Tmpa As String * 6
- Limit_value_max = 14
- Limit_value_min = 0
- Register = &B00000011 'Wybierz rejestr dla bass
- Functional_value = Bass_tone_value
- Tone1 = 1
- Call Setting_function
- Bass_tone_value = Functional_value
- Call Bargraph_settings( "BASS" , Bass_tone_value)
- End Sub
- '////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- 'Funkcja srodkowych tonow
- Sub Middle_tones()
- Local Tmpa As String * 6
- Limit_value_max = 14
- Limit_value_min = 0
- Register = &B00000100
- Functional_value = Middle_tone_value 'Wybierz rejestr dla tonow srednich
- Tone1 = 1
- Call Setting_function
- Middle_tone_value = Functional_value
- Call Bargraph_settings( "MIDDLE" , Middle_tone_value )
- End Sub
- '////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- 'Funkcja wysokich tonow
- Sub High_tones() 'NOP
- Local Tmpa As String * 6
- Limit_value_max = 14
- Limit_value_min = 0
- Register = &B00000101 'Wybierz rejestr dla tonow wysokich
- Functional_value = Heigh_tone_value
- Tone1 = 1
- Call Setting_function
- Heigh_tone_value = Functional_value
- Call Bargraph_settings( "TREBLE" , Heigh_tone_value)
- End Sub
- '////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- 'Funkcja do regulacji balansu prawego kanalu
- Sub Balance_right()
- Local Tmpa As String * 7
- Limit_value_max = 79 'ograniczyc do -79db
- Limit_value_min = 0
- Register = &B00000110
- Functional_value = Balance_r
- Tone11 = 1 'Tone11 to jest napis z bufora right,left
- Call Setting_function
- Balance_r = Functional_value
- Call Bar_balans( "RIGHT " , Balance_r )
- 'Cls
- ' Locate 1 , 1
- ' Lcd "BALANCE R " '; Tmpin ; " "
- ' Locate 2 , 1
- ' Lcd Balance_R ; " "
- End Sub
- '////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- 'Funkcja do regulacji balansu lewego kanalu
- Sub Balance_left()
- Local Tmpa As String * 7
- Limit_value_max = 79 'ograniczyc do -79db
- Limit_value_min = 0
- Register = &B00000111
- Functional_value = Balance_l
- Tone11 = 1 'Tone11 to jest napis z bufora right,left
- Call Setting_function
- Balance_l = Functional_value
- Call Bar_balans( "LEFT " , Balance_l )
- ' Cls
- ' Locate 1 , 1
- ' Lcd "BALANCE L " ' ; Tmpin ; " "
- ' Locate 2 , 1
- ' Lcd Balance_L ; " "
- End Sub
- '////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- 'Funkcja rozpoznawana po nacisnieciu przycisku wyboru
- Sub Selection()
- Button = 1
- Incr Press_button
- Call Change_settings
- Waitms 200
- End Sub
- '///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- 'Funkcja do przesylania danych do TDA
- Sub Transfer()
- Value = Functional_value 'Wartosc funkcji jest zapisywana do zmiennej wyjsciowej 'Led ein
- If Tone1 = 1 Then
- Tone1 = 0
- Select Case Value
- Case 0 : Value = 0
- Case 1 : Value = 1
- Case 2 : Value = 2
- Case 3 : Value = 3
- Case 4 : Value = 4
- Case 5 : Value = 5
- Case 6 : Value = 6
- Case 7 : Value = 7
- Case 8 : Value = 15
- Case 9 : Value = 14
- Case 10 : Value = 13
- Case 11 : Value = 12
- Case 12 : Value = 11
- Case 13 : Value = 10
- Case 14 : Value = 9
- Case 15 : Value = 8
- End Select
- End If
- I2cstart 'Rozpocznij wysylanie
- If Err = 0 Then
- I2cwbyte Adres_tda7439 'Wyslij na adres TDA
- If Err = 0 Then
- I2cwbyte Register 'Wybierz rejestr
- I2cwbyte Value 'Zapisz wartosc w rejestrze
- I2cstop ' Stop
- End If
- End If
- Waitms 20
- End Sub
- '--------------------------------------------------------------------------------------------------------------------------------------------------------------------
- '--------------------------------------------------------------------------------------------------------------------------------------------------------------------
- Sub Pwr_on()
- start watchdog
- Waitms 100
- stop watchdog
- End Sub
- '------------------------------------------------------------------------------------------------------------------------------------------
- Sub Pwr_off()
- Cls
- Locate 1 , 1
- Lcd " System OFF "
- Waitms 1000
- Display Off
- Reset Relay
- Ddrd = &B00000000
- End Sub
- '-------------------------------------------------------------------------------------------------------------------------------------------
- Sub Memory_on_off()
- Pwr = Not Pwr
- If Pwr = 1 Then
- Call Pwr_on()
- Else
- Call Pwr_off()
- End If
- End Sub
- '------------------------------------------------------------------------------------------------------------------------------------------
- Sub Settings_tda7439()
- Adres_tda7439 = &H88 'adres chipa urzadzenia TDA7439
- Register = &B00000000 'Wybierz rejestr wejsciowy
- Input_value = 0 'Wybierz wejscie 1
- Functional_value = Input_value 'Wartosc poczatkowa rejestru multipleksera wejsciowego jest przypisana do wartosci funkcji
- Call Transfer 'Funkcja wywolania dla transferu danych
- Adres_tda7439 = &H88 'adres chipa urzadzenia TDA7439
- Register = &B00000001 'Podadres rejestru kontroli wzmocnienia wejscia
- Input_gain_value = 2
- Functional_value = Input_gain_value 'Wybierz wzmocnienie wejscia (20db)
- Call Transfer 'Funkcja wywolania dla transferu danych
- Adres_tda7439 = &H88
- Register = &B00000010
- Volume_value = 45
- 'readeeprom Volume_value , 2
- Functional_value = Volume_value 'Ustaw glosnosc na -10db
- Call Transfer 'Funkcja wywolania dla transferu danych
- Adres_tda7439 = &H88
- Register = &B00000011 'Rejestr Bass
- Bass_tone_value = 9 'Wybierz Bass 0db
- Functional_value = Bass_tone_value
- Call Transfer 'Funkcja wywolania dla transferu danych
- Adres_tda7439 = &H88
- Register = &B00000100 'Rejestr srodek
- Middle_tone_value = 7 'srodek 0db
- Functional_value = Middle_tone_value
- Call Transfer 'Funkcja wywolania dla transferu danych
- Adres_tda7439 = &H88
- Register = &B00000101 'Rejestr wysokie tony
- Heigh_tone_value = 9 'wysokie tony 0db
- Functional_value = Heigh_tone_value
- Call Transfer 'Funkcja wywolania dla transferu danych
- Adres_tda7439 = &H88
- Register = &B00000110 'Rejestr Balans prawy kanal RIGHT SPEAKER
- Balance_r = 0 '0db Balans_R
- Functional_value = Balance_r
- Call Transfer 'Funkcja wywolania dla transferu danych
- Adres_tda7439 = &H88
- Register = &B00000111 'Rejestr Balans lewy kanal LEFT SPEAKER
- Balance_l = 0
- Functional_value = Balance_l '0db Balans lewy
- Call Transfer 'Funkcja wywolania dla transferu danych
- End Sub
- Do
- '-----------------------------------------------------------------------------------------------------------------------------------------------------
- if on_off = 0 then
- call Memory_on_off() 'switch ON/OFF
- end if
- '-----------------------------------------------------------------------------------------------------------------------REMOTe CONTROLER--------------
- Getrc5(address , Command) 'read if we have remote ir command
- If Address = 0 Then
- Command = Command And &B01111111
- End If
- Select Case Command
- '---- 8codes for remote , change code to your suit ! ----------------
- 'Case 87 : Call Selection() 'remote command code for OK
- Case 16 : Call Volume() 'remote command code for VOL +
- Case 17 : Call Volume() 'remote command code for VOL -
- Case 13 : Call Mute()
- Case 12 : Call Memory_on_off()
- case 85 : call Setting_function() 'lewo
- case 86 : call Setting_function() 'prawo
- ' Case 16 : Call Mminus() 'remote command code for Vol -
- ' Case 144 : Call Mminus()
- ' Case 12 : Call Monoff() 'remote command code for On/Off
- ' Case 140 : Call Monoff()
- ' Case 13 : Call Loudness() 'remote command code for Loudness
- ' Case 141 : Call Loudness()
- End Select
- If Count < 151 Then Incr Count 'menu exit time
- If Count = 150 Then ' set to main volume
- Press_button = 1
- Call Volume
- End If
- Waitms 10
- Call Button_test
- Loop
- End
- Sub Tin(byval Tin_val As Byte)
- Cls
- Select Case Tin_val
- Case 0 : Db = " +0db"
- Case 1 : Db = " +2db"
- Case 2 : Db = " +4db"
- Case 3 : Db = " +6db"
- Case 4 : Db = " +8db"
- Case 5 : Db = "+10db"
- Case 6 : Db = "+12db"
- Case 7 : Db = "+14db"
- Case 8 : Db = "+16db"
- Case 9 : Db = "+18db"
- Case 10 : Db = "+20db"
- Case 11 : Db = "+22db"
- Case 12 : Db = "+24db"
- Case 13 : Db = "+26db"
- Case 14 : Db = "+28db"
- Case 15 : Db = "+30db"
- End Select
- Tin_val = Tin_val + 1
- Locate 1 , 1
- Lcd "GAIN IN "
- Locate 1 , 12
- Lcd Db
- Locate 2 , 1
- Lcd Chr(4) ; Chr(4) ; Chr(4) ; Chr(4) ; Chr(4) ; Chr(4) ; Chr(4) ; Chr(4) ; Chr(4) ; Chr(4) ; Chr(4) ; Chr(4) ; Chr(4) ; Chr(4) ; Chr(4) ; Chr(4)
- Locate 2 , Tin_val
- Lcd Chr(2)
- End Sub
- Sub Bargraph_settings(byval Tone As String , Byval Tmp_1 As Byte)
- Cls
- Select Case Tmp_1
- Case 0 : Db = "-14db"
- Case 1 : Db = "-12db"
- Case 2 : Db = "-10db"
- Case 3 : Db = " -8db"
- Case 4 : Db = " -6db"
- Case 5 : Db = " -4db"
- Case 6 : Db = " -2db"
- Case 7 : Db = " -0db"
- Case 8 : Db = " +2db"
- Case 9 : Db = " +4db"
- Case 10 : Db = " +6db"
- Case 11 : Db = " +8db"
- Case 12 : Db = "+10db"
- Case 13 : Db = "+12db"
- Case 14 : Db = "+14db"
- End Select
- Tmp_2 = Tmp_1 + 1
- Locate 1 , 1
- Lcd Tone ; " "
- Locate 1 , 11
- Lcd Db
- Locate 2 , 1
- Lcd Chr(4) ; Chr(4) ; Chr(4) ; Chr(4) ; Chr(4) ; Chr(4) ; Chr(4) ; Chr(1) ; Chr(4) ; Chr(4) ; Chr(4) ; Chr(4) ; Chr(4) ; Chr(4) ; Chr(4)
- Locate 2 , Tmp_2
- If Tmp_2 = 8 Then
- Lcd Chr(3)
- Else
- Lcd Chr(2)
- End If
- End Sub
- Sub Bar_balans(byval Tone11 As String , Byval Tmp_11 As Byte)
- Local Help1 As Single
- Help1 = Tmp_11 / 5
- Cls
- Select Case Help1 'Tmp_11
- Case 0 : Db = "-100%"
- Case 1 : Db = "-94%"
- Case 2 : Db = "-88%"
- Case 3 : Db = "-82%"
- Case 4 : Db = "-76%"
- Case 5 : Db = "-64%"
- Case 6 : Db = "-58%"
- Case 7 : Db = "-50%"
- Case 8 : Db = "-42%"
- Case 9 : Db = "-38%"
- Case 10 : Db = "-32%"
- Case 11 : Db = "-26%"
- Case 12 : Db = "-18%"
- Case 13 : Db = "-10%"
- Case 14 : Db = "-0%"
- End Select
- Tmp_2 = Help1 + 1
- Locate 1 , 1
- Lcd Tone11 ; " " 'Tone11 to jest napis z bufora right,left
- Locate 1 , 12
- Lcd Db
- Locate 2 , 1
- Lcd Chr(4) ; Chr(4) ; Chr(4) ; Chr(4) ; Chr(4) ; Chr(4) ; Chr(4) ; Chr(4) ; Chr(4) ; Chr(4) ; Chr(4) ; Chr(4) ; Chr(4) ; Chr(4) ; Chr(4) ; Chr(4)
- Locate 2 , Tmp_2
- Lcd Chr(2)
- End Sub
- Sub Bar_vol(byval Vol_out As String , Byval Vol_val As Single , Byval Sel As Byte)
- Local Tt As Single
- Cls
- '--------------------------------------------------------------------------------------------------------------------------------------------------------------------
- If Vol_val = 0 Then
- Call Mute() 'moje mute
- end if
- '--------------------------------------------------------------------------------------------------------------------------------------------------------------------
- If Sel = 1 Then
- Tt = Vol_val / 3.0625
- Tmp_2 = Tt
- Locate 1 , 1
- Lcd Vol_out ; " " '; Tmpin
- Locate 1 , 11
- If Vol_val < 10 Then Lcd " "
- Lcd " -" ; Vol_val ; "db"
- End If
- If Sel = 2 Then
- Tmp_2 = Vol_val + 1
- Locate 1 , 1
- Lcd Vol_out
- Locate 1 , 11
- If Vol_val < 10 Then Lcd " "
- Lcd " " ; Vol_val ; "db"
- End If
- Locate 2 , 1
- Lcd Chr(4) ; Chr(4) ; Chr(4) ; Chr(4) ; Chr(4) ; Chr(4) ; Chr(4) ; Chr(4) ; Chr(4) ; Chr(4) ; Chr(4) ; Chr(4) ; Chr(4) ; Chr(4) ; Chr(4) ; Chr(4)
- Locate 2 , Tmp_2
- Lcd Chr(2)
- End Sub
- End
- Sub Mute()
- If Mute_func = 0 Then
- Mute_func = 1
- 'MUTE ON
- Register = &B00010110 'Speaker attenuate R + bus increment
- Value = &B01111000
- I2cstart
- If Err = 0 Then
- I2cwbyte Adres_tda7439 'Wyslij na adres TDA
- If Err = 0 Then
- I2cwbyte Register 'Speaker attenuate R + bus increment
- I2cwbyte Value 'Mute R ON
- I2cwbyte Value 'Mute L ON
- I2cstop
- End If
- End If
- cls
- locate 1,1
- lcd " M U T E "
- Else
- Mute_func = 0
- 'MUTE OFF
- Register = &B00010110 'Speaker attenuate R + bus increment
- Value = &B00000000
- I2cstart
- If Err = 0 Then
- I2cwbyte Adres_tda7439 'Wyslij na adres TDA
- If Err = 0 Then
- I2cwbyte Register 'Speaker attenuate R + bus increment
- I2cwbyte Value 'Mute R OFF
- I2cwbyte Value 'Mute L OFF
- I2cstop
- Call Volume()
- End If
- End If
- End If
- End Sub
- '-------------------------------------------------------------------------------
- Sub Displaytime()
- Locate 1 , 1
- If Hour < 10 Then Lcd "0" : Lcd Hour ; ":"
- If Minute < 10 Then Lcd "0" : Lcd Minute ; ":"
- If Second < 10 Then Lcd "0" : Lcd Second
- Lcd Spc(16) ' 16 spacji
- Locate 2 , 1
- Lcd Lookupstr(weekday , Weekdays) ; " "
- If Day < 10 Then Lcd "0" : Lcd Day ; "-"
- If Month < 10 Then Lcd "0" : Lcd Month ; "-" ; Year
- Lcd Spc(2) ' 2 spacji
- End Sub
- '-------------------------------------------------------------------
- Weekdays:
- Data "Nie" , "Pon" , "Wto" , "Sro" , "Czw" , "Pt " , "Sob"
- '-------------------------------------------------------------------
- Monthlengths:
- Data 0 , 31 , 28 , 31 , 30 , 31 , 30 , 31 , 31 , 30 , 31 , 30 , 31
- '-------------------------------------------------------------------
- Int0_isr:
- Disable Int0
- If Pind.3 = 0 Then
- Count = 0
- If Press_button = 1 Or Press_button = 2 Then
- Encoder_a = 1
- Encoder_b = 0
- Else
- Encoder_a = 0
- Encoder_b = 1
- End If
- Button = 0
- Held_var = 0
- Call Setting_function
- Call Change_settings
- Else
- Count = 0
- If Press_button = 1 Or Press_button = 2 Then
- Encoder_a = 0
- Encoder_b = 1
- Else
- Encoder_a = 1
- Encoder_b = 0
- End If
- Button = 0
- Held_var = 0
- Call Setting_function
- Call Change_settings
- End If
- Gifr = 64
- Enable Int0
- Return
- $include "PCF8583.bas"
-
- Posty: 99
- Rejestracja: 20 lis 2016, 20:21
Re: Przedwzmacniacz na TDA7439 prośba o dopisanie ustawień zegara i pilota
16 i 17 masz przypisane tylko do volume (call volume) ,a pokombinuj z 'call x' i wtedy gdy volume to x=volume, gdy bass to x = bass itd
- kulamario
- Posty: 207
- Rejestracja: 17 sie 2015, 20:05
- Lokalizacja: Greystones
- Kontakt:
Re: Przedwzmacniacz na TDA7439 prośba o dopisanie ustawień zegara i pilota
Zgadza się 16 i 17 to volume i to chodzi pięknie
a case 85 i 86 ma mi ustawienia zmieniac a nie chodzi
jak to zapisać ze by działało wiesz może ?
a case 85 i 86 ma mi ustawienia zmieniac a nie chodzi
jak to zapisać ze by działało wiesz może ?
- niveasoft
- Posty: 1213
- Rejestracja: 17 sie 2015, 12:13
- Kontakt:
Re: Przedwzmacniacz na TDA7439 prośba o dopisanie ustawień zegara i pilota
Nigdy nie miałem serca do świecidełek i dlatego nie lubię oprogramowywać diod LED i efektów świetlnych..ale jak muszę to pisze
Sterowniki audio lubiłem kiedyś, ale tez mi przeszło ...ale przy sobocie po robocie włączyłem radio i myślę, że mam pomysł
Zobacz czy to nie pomoże. Dopisz Button = 1 przed wywołaniem funkcji "Change_settings() " a nie "Setting_function()" czyli:
Sterowniki audio lubiłem kiedyś, ale tez mi przeszło ...ale przy sobocie po robocie włączyłem radio i myślę, że mam pomysł
Zobacz czy to nie pomoże. Dopisz Button = 1 przed wywołaniem funkcji "Change_settings() " a nie "Setting_function()" czyli:
Code: [Zaznacz cały] [Rozwiń/Zwiń]
- Case 85
- Button = 1
- Call Change_settings() 'lewo
- Case 86
- Button = 1
- Call Change_settings() 'prawo
-
- Posty: 99
- Rejestracja: 20 lis 2016, 20:21
Re: Przedwzmacniacz na TDA7439 prośba o dopisanie ustawień zegara i pilota
Właśnie chciałem pisać aby odnieść się do przycisku
- niveasoft
- Posty: 1213
- Rejestracja: 17 sie 2015, 12:13
- Kontakt:
Re: Przedwzmacniacz na TDA7439 prośba o dopisanie ustawień zegara i pilota
Najlepiej byłoby napisać w kodzie że :
Dim Kontroler As Byte
Const W_lewo = 1
Const W_prawo = 2
Const Select_okay = 3
Potem w programie i pilot i enkoder może ustawić, na przykład "Kontroler = W_prawo"
A na końcu pętli piszesz Kontroler = 0
To by cały program uprościło...
O tym juz pisałem jak mieć przyciski, enkoder i pilota w jednym ..i to tutaj na Forum.
...a tak to trzeba się wczytać w kod i wcale się jeszcze ten mój pomysł nie musi sprawdzić
Dim Kontroler As Byte
Const W_lewo = 1
Const W_prawo = 2
Const Select_okay = 3
Potem w programie i pilot i enkoder może ustawić, na przykład "Kontroler = W_prawo"
A na końcu pętli piszesz Kontroler = 0
To by cały program uprościło...
O tym juz pisałem jak mieć przyciski, enkoder i pilota w jednym ..i to tutaj na Forum.
...a tak to trzeba się wczytać w kod i wcale się jeszcze ten mój pomysł nie musi sprawdzić
- kulamario
- Posty: 207
- Rejestracja: 17 sie 2015, 20:05
- Lokalizacja: Greystones
- Kontakt:
Re: Przedwzmacniacz na TDA7439 prośba o dopisanie ustawień zegara i pilota
Bartek miałeś racje
call Change_settings()
Działa normalnie na dopisanych przyciskach z pilota 85 i 86
call Change_settings()
Działa normalnie na dopisanych przyciskach z pilota 85 i 86
- kulamario
- Posty: 207
- Rejestracja: 17 sie 2015, 20:05
- Lokalizacja: Greystones
- Kontakt:
Re: Przedwzmacniacz na TDA7439 prośba o dopisanie ustawień zegara i pilota
Pilot dopisany - wszystko działa
jak zrobić zapamiętywanie ustawień - bo za każdym razem kiedy program rusza przechodzi przez Call Settings_tda7439()
a to ustawia defaultowe ustawienia TDA
Code: [Zaznacz cały] [Rozwiń/Zwiń]
- '--------------------------------------------------------------------------------------------------------------------------------------------------------------------------
- $regfile = "m16def.dat"
- $crystal = 8000000 '11059200
- $swstack = 64
- $hwstack = 64
- $framesize = 200
- $include "Config_PCF8583.bas"
- Config Portc.5 = Output : Relay Alias Portc.5 : Set Relay
- Config Submode = New
- Config Lcdpin = Pin , Db4 = Portd.4 , Db5 = Portd.1 , Db6 = Portd.7 , Db7 = Portd.0 , E = Portd.5 , Rs = Portd.6 'PCB
- Config Lcd = 16x2
- 'Config Lcdpin = Pin , Db4 = Porta.2 , Db5 = Porta.3 , Db6 = Porta.4 , Db7 = Porta.5 , E = Porta.1 , Rs = Porta.0 'ZL3AVR
- 'Config Lcd = 20x4
- Initlcd
- Cursor Off
- 'Waitms 1000
- 'Variable for Data to TDA7439
- '----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
- ' konfiguracja RC5
- Config Rc5 = Pinc.3 , Timer = 2 , Wait = 250
- 'Config Rc5 = Pinc.3 , Timer = 2
- Dim Address As Byte , Command As Byte
- '------------------------------------------------------------------
- Dim Second As Byte
- Dim Minute As Byte
- Dim Hour As Byte
- Dim Day As Byte
- Dim Month As Byte
- Dim Year As Word
- Dim Weekday As Byte
- Dim Blad As Byte
- Dim Ilosc_dni As Byte
- Dim Rok_przestepny As Byte
- ' pocz¹tkowe wartoœci
- Second = 0 ' 00:00:00
- Minute = 0
- Hour = 0
- Day = 1 ' 01.01.2000
- Month = 1
- Year = 2000
- Weekday = 6 ' sobota
- '---------------------------------------------------------------------------------------------------------------------------------------------
- Declare Sub Memory_on_off()
- Declare Sub Pwr_on()
- Declare Sub Pwr_off()
- Dim Pwr As Bit
- Pwr = 1
- dim Mute_func as byte
- 'Mute_func =0
- '----------------------------------------------------------------------------------------------------------------------------------------------------------------------
- Dim Input_value As Byte 'Zmienna dla multipleksera wejsciowego
- Dim Input_gain_value As Byte 'Zmienna dla poziom wejscia
- Dim Volume_value As Byte 'Zmienna dla Volume
- Dim Bass_tone_value As Byte 'Zmienna dla Bas
- Dim Middle_tone_value As Byte 'Zmienna dla tony srodek
- Dim Heigh_tone_value As Byte 'Zmienna dla tony wysokie
- Dim Limit_value_max As Byte 'Zmienna wartosci graniczna w gore
- Dim Limit_value_min As Byte 'Zmienna wartosci graniczna w dól
- Dim Balance_r As Byte 'Zmienna dla Balans R
- Dim Balance_l As Byte 'Zmienna dla Balans L
- Dim Value As Byte 'Wartosc zapisana w rejestrze
- Dim Adres_tda7439 As Byte 'Adres i2c TDA
- Dim Register As Byte 'Zdefiniuj rejestr, w którym zapisano wartosc
- Dim Press_button As Byte 'Zmienna do okreslenia nacisniecia klawisza, a tym samym mozliwosc wprowadzenia róznych ustawien
- Dim Functional_value As Byte 'Zmienna jest zdefiniowana dla wszystkich zmiennych poszczególnych ustawien
- Dim Held_var As Bit 'Zmienna wyswietla sie po nacisnieciu przycisku
- Dim Encoder_a As Bit 'Zmienna wskazuje, czy przycisk zostal nacisniety
- Dim Encoder_b As Bit 'Zmienna pokazuje, czy przycisk zostal nacisniety
- Dim Button As Bit 'Zmienna do okreslenia, czy nacisnieto przycisk wyboru
- Dim Tmpin As Byte
- Dim Count As Word
- Dim Tmp_1 As Byte , Tmp_2 As Byte , Db As String * 5 , Tone As String * 6 , Vol_out As String * 7
- Dim Tone1 As Byte
- Dim Tone11 As Byte 'Tone11 to jest napis z bufora right,left
- Deflcdchar 1 , 4 , 4 , 4 , 4 , 4 , 4 , 4 , 32
- Deflcdchar 2 , 32 , 14 , 14 , 14 , 14 , 14 , 32 , 32
- Deflcdchar 3 , 4 , 14 , 14 , 14 , 14 , 14 , 4 , 32
- Deflcdchar 4 , 32 , 32 , 32 , 21 , 32 , 32 , 32 , 32
- Deflcdchar 5 , 6 , 14 , 30 , 30 , 30 , 14 , 6 , 32
- Declare Sub Bar_vol(byval Vol_out As String , Byval Vol_val As Byte , Byval Sel As Byte) 'bargraf od volume
- Declare Sub Bar_balans(byval Tone11 As String , Byval Tmp_11 As Byte) 'bargraf od balansu
- Declare Sub Bargraph_settings(byval Tone As String , Byval Tmp_1 As Byte) 'bargraf od ustawien tonow
- Declare Sub Settings_tda7439()
- Declare Sub Mute()
- Declare Sub Selection()
- Declare Sub Balance_left()
- Declare Sub Balance_right()
- Declare Sub Select_input()
- Declare Sub Change_settings()
- Declare Sub Setting_function()
- Declare Sub High_tones()
- Declare Sub Inputgain()
- Declare Sub Volume()
- Declare Sub Bass()
- Declare Sub Middle_tones()
- Declare Sub Button_test()
- Declare Sub Transfer()
- Declare Sub Main()
- Declare Sub Lcd_init()
- Declare Sub Tin(byval Tin_val As Byte)
- declare sub Displaytime()
- 'Ports I2C ATMEGA
- '4K7 pullup SCL & SDA
- Config Scl = Portc.0
- Config Sda = Portc.1
- Config I2cdelay = 20
- 'Zdefiniuj dla przycisków sterujacych i zdefiniuj je jako wejscia
- Dim Sw_cnt As Byte , Lock As Byte
- Config Pind.2 = Input : Portd.2 = 1 'Encoder A
- Config Pind.3 = Input : Portd.3 = 1 'Encoder B
- Config Pinc.2 = Input : Portc.2 = 1 : Switch Alias Pinc.2 'switch
- Config Pinb.0 = Input : Portb.0 = 1 : on_off Alias Pinb.0 'switch on/off
- Config Debounce = 50
- '---------------------------------------------------------------------------------
- On Int0 Int0_isr
- Enable Int0
- Config Int0 = Falling
- Enable Interrupts
- 'Standart Register
- Call Settings_tda7439()
- Press_button = 1 'Ustaw przycisk, aby ustawic domyslny
- Cls
- Locate 1 , 1
- Lcd " System TDA7439 "
- Locate 2 , 1
- Lcd "Wait a moment..."
- Waitms 1500
- Cls
- Display Off
- '////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- 'Funkcja aby sprawdzic stan przycisków
- Call Select_input
- Display On
- Blad = Pcf8583_storetime(second , Minute , Hour , Day , Month , Year) ' zapis do Pcf8583
- '///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- 'Funkcja do sprawdzania, czy zostal nacisniety przycisk
- Sub Button_test()
- Encoder_a = 0
- Encoder_b = 0
- Button = 0
- If Tifr.ocf2 = 1 Then 'minê³o 10ms, flagê ustawia Timer
- Tifr.ocf2 = 1 'flagi kasuje siê wpisuj¹c jeden, nie zero
- If Switch = 0 Then 'jeœli wciœniêto przycisk
- If Lock = 0 Then 'a jeszcze nie ma blokady
- If Sw_cnt < 50 Then 'tu jesteœmy co 10ms i jeœli jeszcze nie osi¹gneliœmy granicy
- Incr Sw_cnt 'to dodajemy do licznika Sw_cnt
- Else 'jeœ³i granica osi¹gniêta
- Lock = 1 'zablokuj dodawanie a¿ do puszczenia przycisku
- Call Memory_on_off()
- '->tu dajemy to co ma sie dziac po dlugim nacisnieciu
- End If
- End If
- Else 'kiedy zwalniamy przycisk
- If Lock = 0 Then 'a nie by³o to d³ugie wciœniêcie
- If Sw_cnt > 3 Or Command = 82 Then Call Selection 'sprawdŸ czy to nie drganie styków 3x10ms = 30ms
- End If '->zmieñ stan pierwszej diody
- Lock = 0 : Sw_cnt = 0 'wy³¹cz blokadê i zeruj licznik
- End If
- End If
- End Sub
- '---------------------------------------------------------------------------------------------------------------------------------------
- '---------------------------------------------------------------------------------------------------------------------------------------
- '///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- 'Funkcja do zmiany ustawien Bass Treble Middle itp.
- Sub Change_settings()
- If Button = 1 Then
- Count = 0
- If Press_button > 8 Then
- Press_button = 1 'Po dotarciu na koniec, nacisnij klawisz resetowania
- End If
- End If
- Select Case Press_button 'Przy pewnym stanie opcji wywolywania klawiatury
- Case 1 : Call Volume
- Case 2 : Call Select_input
- Case 3 : Call Inputgain
- Case 4 : Call Bass
- Case 5 : Call Middle_tones
- Case 6 : Call High_tones
- Case 7 : Call Balance_right
- Case 8 : Call Balance_left
- End Select
- Button = 0 'Zresetuj przycisk wyboru
- Waitms 80
- End Sub
- '///////////////////////////////////////////////////////////////////////////////
- 'Funkcja wspólna dla wszystkich ustawien
- Sub Setting_function()
- If Encoder_a = 1 Or Command = 17 or command = 86 Then 'Sprawdz enkoder
- If Functional_value < Limit_value_max Then 'Zapobiegaj przepelnieniu
- Functional_value = Functional_value + 1 'Zwieksz wartosc funkcji o 1
- Call Transfer 'Funkcja do transferu
- End If
- End If
- If Encoder_b = 1 Or Command = 16 or command = 85 Then
- If Functional_value > Limit_value_min Then
- Functional_value = Functional_value - 1
- Call Transfer
- End If
- End If
- End Sub
- '////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- 'Funkcja dla multipleksera wejsciowego
- Sub Select_input()
- 'Set In_shift
- If Held_var = 0 Then 'Zapobiec po prostu zmianie wejsc poprzez przytrzymanie klawiszy
- Limit_value_max = 3 'Zapobiegaj przepelnieniu
- Limit_value_min = 0
- Register = &B00000000 'Wybierz rejestry dla multipleksera wejsciowego
- Functional_value = Input_value ' Wartosc funkcji jest przypisana do ustawien wejsc
- Call Setting_function
- Input_value = Functional_value
- Tmpin = Input_value + 1 'Stara zmienna zostanie zastapiona nowa wartoscia
- Cls
- Locate 1 , 6
- Lcd "INPUT"
- Locate 2 , 1
- Select Case Input_value
- Case 3 : Lcd " CD"
- Case 2 : Lcd " FM"
- Case 1 : Lcd " USB DAC"
- Case 0 : Lcd " PHONE"
- End Select
- Waitms 300
- End If
- End Sub
- '////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- 'Funkcja do ustawiania czulosci wejsciowej
- Sub Inputgain()
- Local Tmpa As Byte
- Limit_value_max = 15 'Ogranicz wzmocnienie wejsciowe do 30 db
- Limit_value_min = 0
- Register = &B00000001 'Wybierz rejestr dla regulacji czulosci
- Functional_value = Input_gain_value 'Wartosci funkcji przypisuje sie wejsciowa wartosc wzmocnienia
- Call Setting_function
- Input_gain_value = Functional_value
- Tmpa = Input_gain_value * 2
- Call Tin(input_gain_value)
- End Sub
- '////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- 'Funkcja do zmiany glosnosci
- Sub Volume()
- Local S_1 As String * 7
- Local Vol_value As Byte
- Limit_value_max = 49 'volume jest ograniczony do góry
- Limit_value_min = 0
- Register = &B00000010 'Wybierz rejestr dla glosnosci
- Functional_value = Volume_value
- Call Setting_function
- Volume_value = Functional_value
- Select Case Input_value
- Case 3 : S_1 = "CD"
- Case 2 : S_1 = "FM"
- Case 1 : S_1 = "USB DAC"
- Case 0 : S_1 = "PHONE"
- End Select
- Vol_value = Volume_value - 50
- Vol_value = Not Vol_value
- Call Bar_vol(s_1 , Vol_value , 1)
- 'writeeeprom Volume_value , 2
- '-------------------------------------------------------------------------------------------------------------------------------------
- 'blad= Pcf8583_gettime() ' odczytaj godzinê i date z uk³adu PCF8583 , funkcja zwraca kod b³êdu
- ' If Blad = 2 Then ' je¿eli uszkodzona data
- ' Locate 1 , 1 : Lcd " USTAW ZEGAR! " ' wyœwietl komunikat
- ' Locate 2 , 1 : Lcd Spc(16)
- ' sprawdzanie PCF8583
- ' Elseif Blad = 1 Then ' je¿eli b³¹d magistrali I2C
- ' Locate 1 , 1 : Lcd "B{003}{001}d:" ' wyœwietl komunikat
- ' Lcd Spc(11)
- ' Locate 2 , 1 : Lcd "magistrala I2C "
- ' Elseif Blad = 0 Then ' je¿eli prawid³owo odczytane dane
- ' Call Displaytime() ' wyœwietl zegar
- 'end if
- '-------------------------------------------------------------------------------------------------------------------------------------
- End Sub
- '////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- 'Funkcja basów
- Sub Bass()
- Local Tmpa As String * 6
- Limit_value_max = 14
- Limit_value_min = 0
- Register = &B00000011 'Wybierz rejestr dla bass
- Functional_value = Bass_tone_value
- Tone1 = 1
- Call Setting_function
- Bass_tone_value = Functional_value
- Call Bargraph_settings( "BASS" , Bass_tone_value)
- End Sub
- '////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- 'Funkcja srodkowych tonow
- Sub Middle_tones()
- Local Tmpa As String * 6
- Limit_value_max = 14
- Limit_value_min = 0
- Register = &B00000100
- Functional_value = Middle_tone_value 'Wybierz rejestr dla tonow srednich
- Tone1 = 1
- Call Setting_function
- Middle_tone_value = Functional_value
- Call Bargraph_settings( "MIDDLE" , Middle_tone_value )
- End Sub
- '////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- 'Funkcja wysokich tonow
- Sub High_tones() 'NOP
- Local Tmpa As String * 6
- Limit_value_max = 14
- Limit_value_min = 0
- Register = &B00000101 'Wybierz rejestr dla tonow wysokich
- Functional_value = Heigh_tone_value
- Tone1 = 1
- Call Setting_function
- Heigh_tone_value = Functional_value
- Call Bargraph_settings( "TREBLE" , Heigh_tone_value)
- End Sub
- '////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- 'Funkcja do regulacji balansu prawego kanalu
- Sub Balance_right()
- Local Tmpa As String * 7
- Limit_value_max = 79 'ograniczyc do -79db
- Limit_value_min = 0
- Register = &B00000110
- Functional_value = Balance_r
- Tone11 = 1 'Tone11 to jest napis z bufora right,left
- Call Setting_function
- Balance_r = Functional_value
- Call Bar_balans( "RIGHT " , Balance_r )
- 'Cls
- ' Locate 1 , 1
- ' Lcd "BALANCE R " '; Tmpin ; " "
- ' Locate 2 , 1
- ' Lcd Balance_R ; " "
- End Sub
- '////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- 'Funkcja do regulacji balansu lewego kanalu
- Sub Balance_left()
- Local Tmpa As String * 7
- Limit_value_max = 79 'ograniczyc do -79db
- Limit_value_min = 0
- Register = &B00000111
- Functional_value = Balance_l
- Tone11 = 1 'Tone11 to jest napis z bufora right,left
- Call Setting_function
- Balance_l = Functional_value
- Call Bar_balans( "LEFT " , Balance_l )
- ' Cls
- ' Locate 1 , 1
- ' Lcd "BALANCE L " ' ; Tmpin ; " "
- ' Locate 2 , 1
- ' Lcd Balance_L ; " "
- End Sub
- '////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- 'Funkcja rozpoznawana po nacisnieciu przycisku wyboru
- Sub Selection()
- Button = 1
- Incr Press_button
- Call Change_settings
- Waitms 200
- End Sub
- '///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- 'Funkcja do przesylania danych do TDA
- Sub Transfer()
- Value = Functional_value 'Wartosc funkcji jest zapisywana do zmiennej wyjsciowej 'Led ein
- If Tone1 = 1 Then
- Tone1 = 0
- Select Case Value
- Case 0 : Value = 0
- Case 1 : Value = 1
- Case 2 : Value = 2
- Case 3 : Value = 3
- Case 4 : Value = 4
- Case 5 : Value = 5
- Case 6 : Value = 6
- Case 7 : Value = 7
- Case 8 : Value = 15
- Case 9 : Value = 14
- Case 10 : Value = 13
- Case 11 : Value = 12
- Case 12 : Value = 11
- Case 13 : Value = 10
- Case 14 : Value = 9
- Case 15 : Value = 8
- End Select
- End If
- I2cstart 'Rozpocznij wysylanie
- If Err = 0 Then
- I2cwbyte Adres_tda7439 'Wyslij na adres TDA
- If Err = 0 Then
- I2cwbyte Register 'Wybierz rejestr
- I2cwbyte Value 'Zapisz wartosc w rejestrze
- I2cstop ' Stop
- End If
- End If
- Waitms 20
- End Sub
- '--------------------------------------------------------------------------------------------------------------------------------------------------------------------
- '--------------------------------------------------------------------------------------------------------------------------------------------------------------------
- Sub Pwr_on()
- start watchdog
- Waitms 100
- stop watchdog
- End Sub
- '------------------------------------------------------------------------------------------------------------------------------------------
- Sub Pwr_off()
- Cls
- Locate 1 , 1
- Lcd " System OFF "
- Waitms 1000
- Display Off
- Reset Relay
- Ddrd = &B00000000
- End Sub
- '-------------------------------------------------------------------------------------------------------------------------------------------
- Sub Memory_on_off()
- Pwr = Not Pwr
- If Pwr = 1 Then
- Call Pwr_on()
- Else
- Call Pwr_off()
- End If
- End Sub
- '------------------------------------------------------------------------------------------------------------------------------------------
- Sub Settings_tda7439()
- Adres_tda7439 = &H88 'adres chipa urzadzenia TDA7439
- Register = &B00000000 'Wybierz rejestr wejsciowy
- Input_value = 0 'Wybierz wejscie 1
- Functional_value = Input_value 'Wartosc poczatkowa rejestru multipleksera wejsciowego jest przypisana do wartosci funkcji
- Call Transfer 'Funkcja wywolania dla transferu danych
- Adres_tda7439 = &H88 'adres chipa urzadzenia TDA7439
- Register = &B00000001 'Podadres rejestru kontroli wzmocnienia wejscia
- Input_gain_value = 2
- Functional_value = Input_gain_value 'Wybierz wzmocnienie wejscia (20db)
- Call Transfer 'Funkcja wywolania dla transferu danych
- Adres_tda7439 = &H88
- Register = &B00000010
- Volume_value = 45
- 'readeeprom Volume_value , 2
- Functional_value = Volume_value 'Ustaw glosnosc na -10db
- Call Transfer 'Funkcja wywolania dla transferu danych
- Adres_tda7439 = &H88
- Register = &B00000011 'Rejestr Bass
- Bass_tone_value = 9 'Wybierz Bass 0db
- Functional_value = Bass_tone_value
- Call Transfer 'Funkcja wywolania dla transferu danych
- Adres_tda7439 = &H88
- Register = &B00000100 'Rejestr srodek
- Middle_tone_value = 7 'srodek 0db
- Functional_value = Middle_tone_value
- Call Transfer 'Funkcja wywolania dla transferu danych
- Adres_tda7439 = &H88
- Register = &B00000101 'Rejestr wysokie tony
- Heigh_tone_value = 9 'wysokie tony 0db
- Functional_value = Heigh_tone_value
- Call Transfer 'Funkcja wywolania dla transferu danych
- Adres_tda7439 = &H88
- Register = &B00000110 'Rejestr Balans prawy kanal RIGHT SPEAKER
- Balance_r = 0 '0db Balans_R
- Functional_value = Balance_r
- Call Transfer 'Funkcja wywolania dla transferu danych
- Adres_tda7439 = &H88
- Register = &B00000111 'Rejestr Balans lewy kanal LEFT SPEAKER
- Balance_l = 0
- Functional_value = Balance_l '0db Balans lewy
- Call Transfer 'Funkcja wywolania dla transferu danych
- End Sub
- Do
- '-----------------------------------------------------------------------------------------------------------------------------------------------------
- if on_off = 0 then
- call Memory_on_off() 'switch ON/OFF
- end if
- '-----------------------------------------------------------------------------------------------------------------------REMOTe CONTROLER--------------
- Getrc5(address , Command) 'read if we have remote ir command
- If Address = 0 Then
- Command = Command And &B01111111
- End If
- Select Case Command
- '---- 8codes for remote , change code to your suit ! ----------------
- 'Case 87 : Call Selection() 'remote command code for OK
- Case 16 : Call Volume() 'remote command code for VOL +
- Case 17 : Call Volume() 'remote command code for VOL -
- Case 13 : Call Mute()
- Case 12 : Call Memory_on_off()
- case 85 : call Change_settings() 'lewo
- case 86 : call Change_settings() 'prawo
- End Select
- If Count < 181 Then Incr Count 'menu exit time
- If Count = 180 Then ' set to main volume
- Press_button = 1
- Call Volume
- End If
- Waitms 10
- Call Button_test
- Loop
- End
- Sub Tin(byval Tin_val As Byte)
- Cls
- Select Case Tin_val
- Case 0 : Db = " +0db"
- Case 1 : Db = " +2db"
- Case 2 : Db = " +4db"
- Case 3 : Db = " +6db"
- Case 4 : Db = " +8db"
- Case 5 : Db = "+10db"
- Case 6 : Db = "+12db"
- Case 7 : Db = "+14db"
- Case 8 : Db = "+16db"
- Case 9 : Db = "+18db"
- Case 10 : Db = "+20db"
- Case 11 : Db = "+22db"
- Case 12 : Db = "+24db"
- Case 13 : Db = "+26db"
- Case 14 : Db = "+28db"
- Case 15 : Db = "+30db"
- End Select
- Tin_val = Tin_val + 1
- Locate 1 , 1
- Lcd "GAIN IN "
- Locate 1 , 12
- Lcd Db
- Locate 2 , 1
- Lcd Chr(4) ; Chr(4) ; Chr(4) ; Chr(4) ; Chr(4) ; Chr(4) ; Chr(4) ; Chr(4) ; Chr(4) ; Chr(4) ; Chr(4) ; Chr(4) ; Chr(4) ; Chr(4) ; Chr(4) ; Chr(4)
- Locate 2 , Tin_val
- Lcd Chr(2)
- End Sub
- Sub Bargraph_settings(byval Tone As String , Byval Tmp_1 As Byte)
- Cls
- Select Case Tmp_1
- Case 0 : Db = "-14db"
- Case 1 : Db = "-12db"
- Case 2 : Db = "-10db"
- Case 3 : Db = " -8db"
- Case 4 : Db = " -6db"
- Case 5 : Db = " -4db"
- Case 6 : Db = " -2db"
- Case 7 : Db = " -0db"
- Case 8 : Db = " +2db"
- Case 9 : Db = " +4db"
- Case 10 : Db = " +6db"
- Case 11 : Db = " +8db"
- Case 12 : Db = "+10db"
- Case 13 : Db = "+12db"
- Case 14 : Db = "+14db"
- End Select
- Tmp_2 = Tmp_1 + 1
- Locate 1 , 1
- Lcd Tone ; " "
- Locate 1 , 11
- Lcd Db
- Locate 2 , 1
- Lcd Chr(4) ; Chr(4) ; Chr(4) ; Chr(4) ; Chr(4) ; Chr(4) ; Chr(4) ; Chr(1) ; Chr(4) ; Chr(4) ; Chr(4) ; Chr(4) ; Chr(4) ; Chr(4) ; Chr(4)
- Locate 2 , Tmp_2
- If Tmp_2 = 8 Then
- Lcd Chr(3)
- Else
- Lcd Chr(2)
- End If
- End Sub
- Sub Bar_balans(byval Tone11 As String , Byval Tmp_11 As Byte)
- Local Help1 As Single
- Help1 = Tmp_11 / 5
- Cls
- Select Case Help1 'Tmp_11
- Case 0 : Db = "-100%"
- Case 1 : Db = "-94%"
- Case 2 : Db = "-88%"
- Case 3 : Db = "-82%"
- Case 4 : Db = "-76%"
- Case 5 : Db = "-64%"
- Case 6 : Db = "-58%"
- Case 7 : Db = "-50%"
- Case 8 : Db = "-42%"
- Case 9 : Db = "-38%"
- Case 10 : Db = "-32%"
- Case 11 : Db = "-26%"
- Case 12 : Db = "-18%"
- Case 13 : Db = "-10%"
- Case 14 : Db = "-0%"
- End Select
- Tmp_2 = Help1 + 1
- Locate 1 , 1
- Lcd Tone11 ; " " 'Tone11 to jest napis z bufora right,left
- Locate 1 , 12
- Lcd Db
- Locate 2 , 1
- Lcd Chr(4) ; Chr(4) ; Chr(4) ; Chr(4) ; Chr(4) ; Chr(4) ; Chr(4) ; Chr(4) ; Chr(4) ; Chr(4) ; Chr(4) ; Chr(4) ; Chr(4) ; Chr(4) ; Chr(4) ; Chr(4)
- Locate 2 , Tmp_2
- Lcd Chr(2)
- End Sub
- Sub Bar_vol(byval Vol_out As String , Byval Vol_val As Single , Byval Sel As Byte)
- Local Tt As Single
- Cls
- '--------------------------------------------------------------------------------------------------------------------------------------------------------------------
- If Vol_val = 0 Then
- Call Mute() 'moje mute
- end if
- '--------------------------------------------------------------------------------------------------------------------------------------------------------------------
- If Sel = 1 Then
- Tt = Vol_val / 3.0625
- Tmp_2 = Tt
- Locate 1 , 1
- Lcd Vol_out ; " " '; Tmpin
- Locate 1 , 11
- If Vol_val < 10 Then Lcd " "
- Lcd " -" ; Vol_val ; "db"
- End If
- If Sel = 2 Then
- Tmp_2 = Vol_val + 1
- Locate 1 , 1
- Lcd Vol_out
- Locate 1 , 11
- If Vol_val < 10 Then Lcd " "
- Lcd " " ; Vol_val ; "db"
- End If
- Locate 2 , 1
- Lcd Chr(4) ; Chr(4) ; Chr(4) ; Chr(4) ; Chr(4) ; Chr(4) ; Chr(4) ; Chr(4) ; Chr(4) ; Chr(4) ; Chr(4) ; Chr(4) ; Chr(4) ; Chr(4) ; Chr(4) ; Chr(4)
- Locate 2 , Tmp_2
- Lcd Chr(2)
- End Sub
- End
- Sub Mute()
- If Mute_func = 0 Then
- Mute_func = 1
- 'MUTE ON
- Register = &B00010110 'Speaker attenuate R + bus increment
- Value = &B01111000
- I2cstart
- If Err = 0 Then
- I2cwbyte Adres_tda7439 'Wyslij na adres TDA
- If Err = 0 Then
- I2cwbyte Register 'Speaker attenuate R + bus increment
- I2cwbyte Value 'Mute R ON
- I2cwbyte Value 'Mute L ON
- I2cstop
- End If
- End If
- cls
- locate 1,1
- lcd " M U T E "
- Else
- Mute_func = 0
- 'MUTE OFF
- Register = &B00010110 'Speaker attenuate R + bus increment
- Value = &B00000000
- I2cstart
- If Err = 0 Then
- I2cwbyte Adres_tda7439 'Wyslij na adres TDA
- If Err = 0 Then
- I2cwbyte Register 'Speaker attenuate R + bus increment
- I2cwbyte Value 'Mute R OFF
- I2cwbyte Value 'Mute L OFF
- I2cstop
- Call Volume()
- End If
- End If
- End If
- End Sub
- '-------------------------------------------------------------------------------
- Sub Displaytime()
- Locate 1 , 1
- If Hour < 10 Then Lcd "0" : Lcd Hour ; ":"
- If Minute < 10 Then Lcd "0" : Lcd Minute ; ":"
- If Second < 10 Then Lcd "0" : Lcd Second
- Lcd Spc(16) ' 16 spacji
- Locate 2 , 1
- Lcd Lookupstr(weekday , Weekdays) ; " "
- If Day < 10 Then Lcd "0" : Lcd Day ; "-"
- If Month < 10 Then Lcd "0" : Lcd Month ; "-" ; Year
- Lcd Spc(2) ' 2 spacji
- End Sub
- '-------------------------------------------------------------------
- Weekdays:
- Data "Nie" , "Pon" , "Wto" , "Sro" , "Czw" , "Pt " , "Sob"
- '-------------------------------------------------------------------
- Monthlengths:
- Data 0 , 31 , 28 , 31 , 30 , 31 , 30 , 31 , 31 , 30 , 31 , 30 , 31
- '-------------------------------------------------------------------
- Int0_isr:
- Disable Int0
- If Pind.3 = 0 Then
- Count = 0
- If Press_button = 1 Or Press_button = 2 Then
- Encoder_a = 1
- Encoder_b = 0
- Else
- Encoder_a = 0
- Encoder_b = 1
- End If
- Button = 0
- Held_var = 0
- Call Setting_function
- Call Change_settings
- Else
- Count = 0
- If Press_button = 1 Or Press_button = 2 Then
- Encoder_a = 0
- Encoder_b = 1
- Else
- Encoder_a = 1
- Encoder_b = 0
- End If
- Button = 0
- Held_var = 0
- Call Setting_function
- Call Change_settings
- End If
- Gifr = 64
- Enable Int0
- Return
- $include "PCF8583.bas"
a to ustawia defaultowe ustawienia TDA
- pimowo
- Posty: 392
- Rejestracja: 28 maja 2016, 10:07
Re: Przedwzmacniacz na TDA7439 prośba o dopisanie ustawień zegara i pilota
Możesz wszytkie dane zapisać do eeprom.kulamario pisze:jak zrobić zapamiętywanie ustawień - bo za każdym razem kiedy program rusza przechodzi przez Call Settings_tda7439()
a to ustawia defaultowe ustawienia TDA
Zobacz na forum bo gdzieś tu Bartek podawał przepis na to.
EDYTA
Zobacz TUTAJ "Obsługa wartości przechowywanych w Eeprom"