|
|
本帖最后由 mgldjp 于 2010-1-19 22:02 编辑 : }. R; T }1 A1 C9 N
3 U1 R* j: x+ S+ D, I
T200B关电源后开机不记忆音量,开机后总是一个很小的音量,用起来很不方便。我对t200b的音量控制电路软件、硬件进行了研究,修改了控制软件,实现了开机记忆音量功能。
' B, b: B% ^% a0 b. C' y& Y首先说说我发现T200B软件的一些问题:
6 R* _, k5 T W( T+ V6 M: H6 z1.开机不记忆上次关机音量,这是最大的问题。
3 B+ s; E, _0 m+ E, ~2.开机没有对音量调整芯片AT89C2051。CS3310规格书明确要求上电开机mute脚要拉低,以实现CS3310内部补偿校正,T200B软件没有做这个工作。
0 K/ e$ t+ { r6 X" e$ |3.音量设置有偏差,也就是即使每次设置同样的音量,音量大小会有三四个dB的误差,这是我通过示波器观察单片机设置CS3310的波形时发现的,这是软件算法不准确造成的。不过听觉一般感觉不到。9 Z7 ~' g# c# R# p
4。禁音时音箱灯没有禁音警示。7 u" S8 `* E V6 r* l+ n5 e
+ @- b0 O! s7 N- D: O. ?4 V由T200B音量控制电路图可见,实现音量记忆其实是很容易实现的,因为电路中有24C02,24C02是个EEPROM,断电记忆数据的。可以把音量信息存在24C02中,开机时再读出来。AT89C2051是个阉割版的51单片机,用来控制CS3310,遥控解码,步进电位器控制等功能,软件也就在这个芯片里面。我修改了AT89C2051的软件,在以下方面进行了优化:( {; r+ Z7 A; J$ N( J; J% L u; k# X R
1。记忆音量开机。开机时读取24C02中存储的上次关机音量数据,并按上次关机时的音量设置音箱。
- v0 k. z5 w+ K7 A2.开机CS3310内部补偿校正,也就是使MUTE脚拉低2.5ms
% }" Z5 Q, h# O- c/ c3.改进音量控制算法,实现每次都精确控制。8 O1 Z1 B1 L$ i+ q6 Q, t
4禁音时指示灯变为红色,提示为禁音状态。; }# ~8 ` a4 q+ L
5。渐进式启动,保护扬声器。由于记忆音量,可能开机音量会很大,所以开机时单片机控制CS3310音量渐增到记忆的音量,不是一步到位,这个过程为1S.如果记忆音量为63则以40音量启动。. O0 [5 m) C5 k- h: `3 `
1 O9 V6 q& L6 T G) R
本修改不需要该硬件。附图为T200B中的AT89C2051照片,它是有插座的,可以随便拔下来,烧写新软件就可以了。如果要保留以前的软件,直接重新买一块AT89C2051烧写就可以了。要用回老软件就直接换回原来的AT89C2051。由于t200b上没有封条,拆了惠威也不知道,所以不影响质保。本人出售修改好的单片机芯片,qq150352134淘宝连接:# J) [& K8 Q* a0 ?. V
http://item.taobao.com/auction/item_detail.jhtml?x_id=0db1&item_id=4e3e5a99867fa22202d510e2ead65442
- E. g6 {9 ?1 ^1 @$ A' @7 o: R/ h$ q. M( {, C3 Q& E2 q/ r
- M* s+ g7 J4 G! n$ }
7 D% g# x5 h! c- {$ K; N a G1 M
( Q; |7 c( m8 D& T8 t( _$ s
: p7 u$ o' o0 u. c( l下面是汇编程序:
- q( o/ O1 `' K+ f1 tSDA BIT P1.6: M* v0 v# g8 A6 A
SCL BIT P1.7% H! A. X+ _/ D6 B% L8 M" ^
ORG 0000H
5 V' ]- P$ i8 _0 P/ } JMP START
& {& T2 K4 _5 H ORG 000BH2 Y9 X+ a) w7 L$ q; }6 }$ {
JMP INTT0: u1 c- A( _+ k, y- n5 E; \
/ u, X7 _1 v9 L) | ORG 001BH
& a4 a7 V+ u4 m SETB P1.5: m1 L+ D% z% F1 l4 ^' e
JMP INTR
* q2 C' I0 w8 U) hSTART: CLR P3.7, q: X# Y5 W J7 D& J; p! F
CLR P1.4" t. H b6 F1 a$ l
CLR P1.3% A* b# V5 r, t8 |% x1 d
MOV SP,#60H
! T6 P) L7 H& K7 Q$ N0 g CLR P1.5) U% H; e& P4 i8 g3 K6 t9 |$ @# c
MOV R6,#50
( X4 Z1 B0 N9 g) e CALL DELLAY
8 _- ~8 C$ {2 ^ [# F! d SETB P1.5
+ J0 C1 j2 L! w6 [8 w6 C& p8 y: r CALL READIIC
# \) K# ^+ J4 B' V1 M MOV 50H,A
T, ~+ e" _5 G) y+ F8 a SUBB A,#1898 G0 R. G8 x# d
JC NORMAL
5 x& V1 r3 H W+ U& R$ L: a& [! v. V MOV A,#120" k9 I% ?0 `5 F" @, J
MOV 50H,A
5 G. @& V, p! D7 D8 sNORMAL: MOV A,50H
w% S$ M- t, y-----------------------------------
4 R9 n. h2 P9 K! B7 O# `5 l* x/ A渐进式启动软件,保密" I# E, L6 p8 b4 s
-------------CALL SENDCS5 e* I- I0 F5 S# X- P+ j
MOV TMOD,#61H) V9 s& K1 m* C
MOV TH1,#0FFH
# y. M- {6 ?/ [, [* I& k MOV TL1,#0FFH$ x2 u* n; r3 G) P. y% c) R
SETB ET1
. W- x0 }* L0 r, u- A SETB ET0
& n4 L: @6 L& V& u9 h, n% T8 a: K SETB EA3 \' ^5 r6 y& v1 o6 S. {: g0 T9 f" O/ }
SETB TR1 ~( u% ]/ s% ?5 |; e) ~
L7: JB P1.1,$) b) y. R% J1 _& _7 u! ?
CALL RC( ]& l* C/ V. g+ B u, f* \
JZ L78 _* P+ k; Y/ W* N- [( v ]4 s
MOV 50H,A
' K9 p; {7 W" p CALL SENDCS
/ U( p1 c; z; h& F4 s SETB P3.7
' T# U0 R3 q2 r; ]2 Z. R CLR P1.0
1 U) S, i8 j2 w* i! r( ~ MOV R1,#35 H) G3 \, [" A' T' Z( z
MOV R2,#3
# p, o% w6 c: K# v% { MOV TH0,#00H
4 n% @' K% V. \4 \# l$ w MOV TL0,#00H. S3 U9 |1 J! c2 q a% _: b
SETB TR0
* b+ A) q- j [ JMP L7
) V! R1 C0 S+ N
& ?4 P% n' g3 b! z2 uINTT0: DJNZ R1,GOON. Z5 K- i4 {7 S8 e! M
CPL P1.0
$ U& P% k: O/ k- K" J MOV R1,#3
% {; L$ h7 I5 F. }( n: i( o DJNZ R2,GOON
" `" T! A. o Y$ F! \8 K CLR TR0
3 D3 { w @- ^# E# | JNB P1.5,MU
8 H' E) ?& E3 a1 O: r CLR P3.7
+ w5 }. A* N. V SETB P1.0* q, u l* A+ h/ o* u# s
PUSH ACC! ~' b& [- u) L
MOV A,50H3 R* m, y' I4 i5 N3 e3 b% r( k i
CALL WRITEIIC
/ r6 r7 M4 j7 H POP ACC( Q* v1 Y. U* b; N
RETI
6 r( T3 Q5 d- Z1 UMU: CLR P1.0 ;MUTE红灯亮
2 ^6 ]2 k6 ]5 E. O0 r$ l SETB P3.7
5 i( \4 q5 B1 L PUSH ACC# C% p4 v: l: @8 L
MOV A,50H
& h1 Z1 v. h, \% Z Z) B' S* r4 _ CALL WRITEIIC& N5 @ X H" B b
POP ACC
, q! ?1 U$ q9 U& oGOON: RETI
! `2 Q# A }6 T / `0 I9 j% |& p* n2 L* S4 P# Q H9 L
INTR: JB P3.4,DEVOL! J- Z( {5 h( M% {
MOV A,50H" k1 H8 } K0 b
CJNE A,#10111101B,ADDVOL
( e1 i4 B: M% X4 h- ^0 ~9 M JMP RETIINTR1 l2 F- d2 `( r" C9 X
ADDVOL: CJNE A,#00000001B,NO1
2 _: \. {. [, I! ^& |: J MOV A,#00000011B4 J7 P8 G/ {% q1 Y$ ^
MOV 50H,A
$ k! V2 J2 p9 X CALL SENDCS5 [6 @5 |* l: d R& w
JMP RETIINTR
: z( x, L* `0 RNO1: INC A3 U |+ c2 ]% e
INC A% z8 _8 q* v* m1 _. D* A
INC A
# d' a+ `$ W& I3 \ MOV 50H,A( Y$ I8 B k7 M' e$ P0 Z
CALL SENDCS
/ r+ o3 u% d* `" K# M& i JMP RETIINTR
4 t ^& f# g% v1 I/ d( W& lDEVOL: MOV A,50H8 u2 L. B- W3 P9 \
CJNE A,#00000001B,DECRVOL
" R4 |# Q) p, V5 Z. | JMP RETIINTR+ Y( ^" d5 B0 t, X; h- i8 j/ v( w
DECRVOL: CJNE A,#00000011B,NO3$ n) [* D1 L8 A" o9 C7 r
MOV A,#00000001B5 J$ v$ F8 c& ?. D: Q
MOV 50H,A
) _" ?+ q G; m: l3 I) E8 I CALL SENDCS
% q. o) N2 B) w! _' h$ O JMP RETIINTR
! A" L( b9 K% o( c! L, UNO3: DEC A0 K4 h9 D' G. U9 L
DEC A
5 \! B, n/ G2 o; B- j4 _ DEC A( g0 Q2 P* C* w+ }- y7 q) b4 |
MOV 50H,A
, n; J5 z, a( L/ N# g. |( O CALL SENDCS) k" y7 y2 \2 @5 }7 p7 h; r
RETIINTR: SETB P3.79 U* X7 }0 M8 p Q+ I- e8 E. }. U% p
CLR P1.0) D7 }0 ^) x" d2 H; H
MOV R1,#3+ t4 s* Y" s. C, `9 q$ L
MOV R2,#3
7 D6 M. e0 [% `: C MOV TH0,#00H8 B9 W, X; G2 d% |! f' r( H
MOV TL0,#00H" f0 q1 O* }" X1 \( r q
SETB TR0( z Y/ k- H3 ^) v" M5 M
RETI X s+ T0 X/ |, i8 L( b" f
WRITEIIC: MOV A,#10100000B ;将50H单元的数据存EEPROM
' l* \ q- U' B4 b CALL STARTIIC& R+ Q0 V/ z- g6 ?7 v& P" q
CALL SENDIIC
3 R2 e+ X2 O& c5 g$ F SETB SCL
$ M! U5 |3 p @6 z6 M( [/ B. I MOV C,SDA
" h& ]3 ^( J, J9 h JC WRITEIIC% O# j+ p3 O1 Y1 _9 Z n! m, K
CLR SCL1 P2 A) `: b4 m* v9 A
MOV A,#11000000B ;存在11000000B单元
: u9 I3 }" }( Q CALL SENDIIC
3 r2 ~/ H! q7 J% u" @) g SETB SCL2 m% w! G* \( d. ~' p; d
MOV C,SDA9 K2 z, v2 }) @
JC WRITEIIC
0 j$ F# R: X9 B CLR SCL9 F! `" l; l- {
MOV A,50H
9 y& S& l; I- q1 r8 _, t CALL SENDIIC& i h( m" {( u) \& p
SETB SCL
7 X9 T D+ y$ E& ?( x' h MOV C,SDA
( i. J2 A T: [: R3 { JC WRITEIIC
2 f1 d8 x- Q& a4 q CLR SCL
( v9 x) s( y. N$ D0 E# \, K CALL ENDIIC; ` B* W8 l+ B, S5 B" t8 V
RET" m) |$ e1 {& V) {
READIIC: MOV A,#10100000B ;读数据到A
5 s" l7 v1 @/ U2 j CALL STARTIIC* }4 K( y/ ^8 a4 e2 U- m7 \/ T( ?
CALL SENDIIC
3 J* C$ Y' n K! [% @% l* l SETB SCL! U* t4 m2 X8 m( Z, R; Z* S$ @
MOV C,SDA
: @6 V0 [; ~: Y H! e JC READIIC
) x ^7 Z' b3 k7 g3 P% n CLR SCL! Z- u. G. c: ^" c: Y+ F
MOV A,#11000000B ;读11000000B单元" O, ~1 \8 B7 X; X( T$ \
CALL SENDIIC" r& S- S% D% J V! T
SETB SCL
% J7 |" Y- N7 y% V MOV C,SDA
" \4 }1 ~+ ?2 P$ j. a$ i" E4 j! M1 T" w JC READIIC
4 b( @) i7 |' a) k. h0 _ CLR SCL
3 y. e) @6 O' N, L; q% \ CALL STARTIIC6 [! \5 C: T! C
MOV A,#10100001B
) L! B6 X j) N5 X2 ^: ~! [% ` CALL SENDIIC
U$ x! D2 m& y& v8 ]. N% k& L SETB SCL
0 b) @( T2 l: c- m1 S1 l& U3 [ MOV C,SDA! o: @5 t5 K) F; v( f9 `
JC READIIC& s3 | }* T, c7 E5 P
MOV R7,#8
3 H& r w) j* `+ q7 Y1 s. sREADIICBIT: CLR SCL( u2 V" j2 m' g; M8 f/ d$ V" b& R
NOP
- _2 }0 L+ a* H# b5 z SETB SCL* a+ F$ z9 [1 u+ t1 E% i5 k; F
MOV C,SDA5 W, q* D! S# m, h# I$ G( ]
RLC A & ]" b# B6 N+ U$ L* `, s( `( _
DJNZ R7,READIICBIT, \; `9 o5 C. P8 _; w
CLR SCL
! i- \1 T4 @- M' i( I: ?4 U NOP
* t" H$ D# X6 A8 `6 x) n/ W% H5 Y3 w! W SETB SCL
) @! l2 Z: ~9 v7 M9 S" D NOP
; i. m; H; e" |; O) y& g# ~ CLR SCL+ D' `9 f' C) a
CALL ENDIIC
6 h; U! w' [/ ` RET8 M: G( F9 Y% _3 t5 H( t
STARTIIC: SETB SDA' l! S- c/ E7 `* w/ n9 \
SETB SCL
# @2 x4 _0 o1 N1 }5 ^8 Y NOP4 }4 ^- G6 i7 U- f+ y
CLR SDA
9 T& ]. t6 @3 i NOP7 V! a. o/ P6 G
CLR SCL
' D8 B. x, Z/ L% P% j) ] RET. x9 r5 f) F$ V8 G- |, K
ENDIIC: CLR SDA. J) `9 p0 J: h* s: X7 R- b
NOP( }% p$ j- w J* \; b7 k( E2 T
SETB SCL% _5 C3 E7 t- D
NOP; D9 J2 Z/ J/ m
SETB SDA
2 `# H! B1 ^/ K$ b" S, L* A |6 Q RET3 L: } w m" `' F3 W$ J( }
SENDIIC: MOV R7,#8 ;发送A的内容3 o5 v4 e# b4 ]9 N
LOOPIIC: RLC A5 a& T: m- e+ J; G( j" ^
MOV SDA,C
( E1 ?* G4 F% f9 L6 P9 r$ z, V! | SETB SCL& Z5 {2 g; G7 C8 i8 N+ j* `# E0 ~
NOP* h2 }. q/ t4 I1 r
CLR SCL
( K5 ?( E4 z7 v) x+ \6 x* Y& d2 B# U DJNZ R7,LOOPIIC
/ ~! v" R2 c* P v3 Y6 I# d, k SETB SDA
8 }9 O! h& j6 k/ A9 N RET
2 [& g7 s A: _1 S! P+ @RC : MOV R0,#30H ;遥控接收子程序% c: D- b1 y, h u5 T' }1 @
MOV R5,#9
/ l/ ~5 b& S8 l# S$ bL1: MOV R6,#16
7 R0 k( { C6 I9 N. @7 J" h# x CALL DELLAY
5 r* ~/ ^; G1 \" v+ F: B JB P1.1,OUT
. g* j$ o* ^# w9 |/ r DJNZ R5,L1
$ {% s A5 o* w. p6 z- f5 F JNB P1.1,$' A7 h$ _- U4 S6 g4 Y' p: K
MOV R5,#5. J8 [# E) m% L- g; u
L2: MOV R6,#150 I7 e3 t; u, ]; T8 W: H
CALL DELLAY
6 n0 J3 N* m' |3 x' K JNB P1.1,OUT- }3 j8 s6 s9 @; C: Z' _' T+ w7 H5 o
DJNZ R5,L2
! w' W3 j+ X4 o6 Z* |" b MOV R6,#11; ?3 o+ c$ u+ e2 V# L/ v- ?
CALL DELLAY
6 s- ~* c+ @- b/ }+ U5 z+ r MOV R3,#8
, M( e0 J# y; Q+ ^. MREADBYTE: MOV R4,#8, |* B7 L9 X( m
READBIT: JNB P1.1,$
8 a. |- F$ f3 H8 J1 v& H# |, L MOV R6,#17; U. m3 w& ]. I# h, K5 O* D
CALL DELLAY
+ G2 w( w! t. ^! l. {- f MOV C,P1.1
9 L# |$ O: N3 j) a/ \% c JNC ZERO
. u6 p2 c! N" [0 E/ R) H8 }1 ?( b. ` MOV R6,#22
; j/ a$ P9 j0 E% w CALL DELLAY
( M, v( d( D1 c2 ? PZERO: RRC A1 b* z7 F3 {6 X4 U; l6 J. Y
DJNZ R4,READBIT
4 p7 {2 e4 T5 m. k2 d" x MOV @R0,A
6 _% _. B, U- M3 w INC R07 L& u- ]4 j$ a. K
DJNZ R3,READBYTE
; T0 w" D, J, S% D/ i2 G* l MOV R6,509 F5 S" {2 T, \, N6 a
CALL DELLAY ' ^7 T* a# I4 d, Z, ~( {
---------------------------------------------
8 E4 V j/ @! U& F---保密部分, Y* Y& V- D* ^1 Y: C4 N( O
----------------------------------------------( g% @: l$ L% ?$ ^- @6 C- {
RET
' s# J. M L, Q% Z; R- u / f! Z- c) k, V' `! o: {' B# I( G
DELLAY: MOV R7,#25
2 ~2 R$ w3 u6 k4 @/ V/ L DJNZ R7,$
) M" f n+ T" \# |7 s8 a DJNZ R6,DELLAY f) }9 G. L: ~+ W2 ^/ P9 c
RET
7 n* K. A1 S, o" uSENDCS: CLR P1.2 ;将A的内容发送到CS3310
) Z" w% Y+ t) {! |6 w MOV R5,#16
) O! s4 F4 V0 o9 z1 J2 L; W5 u4 XLOOPCS: MOV C,ACC.7: a5 L( o7 U7 C) t. n u
MOV P1.3,C
0 Q1 k5 _; m3 y$ L6 c NOP
6 W6 v6 |0 \8 Q% _2 M' R8 D1 a* K SETB P1.41 r5 o+ a w( f" Y
NOP& `* F0 S$ z% T" i# {" P% g1 Q" x& Y
CLR P1.4) y: H0 p# z2 Q# i3 u) T
RL A8 Y& T3 ]) A; f3 ~* f
DJNZ R5,LOOPCS" p, J$ n+ ^7 b7 J2 J% Y0 q
CLR P1.3
) \/ U# q/ S3 o) n4 ^' p2 o. D; C1 {* J SETB P1.2 4 l( r! b( K$ C! i# a) U. Q
RET0 [! }- c9 A9 s7 N! F# K
END--------------------- |
|