|
本帖最后由 mgldjp 于 2010-1-19 22:02 编辑 : |# d- {3 ~8 j5 q
- j" \$ f8 D3 y6 F2 C8 dT200B关电源后开机不记忆音量,开机后总是一个很小的音量,用起来很不方便。我对t200b的音量控制电路软件、硬件进行了研究,修改了控制软件,实现了开机记忆音量功能。
4 `6 b/ Z! ]( T8 K首先说说我发现T200B软件的一些问题:
9 O: ?2 |2 y$ z( e' ~1.开机不记忆上次关机音量,这是最大的问题。6 W* O& m9 q2 _; L4 f- \; ~& |, H
2.开机没有对音量调整芯片AT89C2051。CS3310规格书明确要求上电开机mute脚要拉低,以实现CS3310内部补偿校正,T200B软件没有做这个工作。
# q7 s5 |. ^3 X' @- g( z! `3 ~3 x3.音量设置有偏差,也就是即使每次设置同样的音量,音量大小会有三四个dB的误差,这是我通过示波器观察单片机设置CS3310的波形时发现的,这是软件算法不准确造成的。不过听觉一般感觉不到。
; v7 O+ U0 n% y* ?3 e) z6 C( N4。禁音时音箱灯没有禁音警示。
$ a# t* m% ^8 p1 ]- m) y8 |9 D" z! |1 ]
由T200B音量控制电路图可见,实现音量记忆其实是很容易实现的,因为电路中有24C02,24C02是个EEPROM,断电记忆数据的。可以把音量信息存在24C02中,开机时再读出来。AT89C2051是个阉割版的51单片机,用来控制CS3310,遥控解码,步进电位器控制等功能,软件也就在这个芯片里面。我修改了AT89C2051的软件,在以下方面进行了优化:: G: C. k t; n) [! W* e
1。记忆音量开机。开机时读取24C02中存储的上次关机音量数据,并按上次关机时的音量设置音箱。% ^# @( {4 ~1 e6 s/ X) G0 |
2.开机CS3310内部补偿校正,也就是使MUTE脚拉低2.5ms6 c3 k0 D8 ^! S2 h$ p; C% b2 |) J: N1 v
3.改进音量控制算法,实现每次都精确控制。, d) s2 H# x8 P6 P0 n& |- ?
4禁音时指示灯变为红色,提示为禁音状态。: J' n1 |, ?! _3 i
5。渐进式启动,保护扬声器。由于记忆音量,可能开机音量会很大,所以开机时单片机控制CS3310音量渐增到记忆的音量,不是一步到位,这个过程为1S.如果记忆音量为63则以40音量启动。6 F. q4 F M3 a# t% m4 s$ r
# p( k& ?- j# {/ d3 ]! [! w
本修改不需要该硬件。附图为T200B中的AT89C2051照片,它是有插座的,可以随便拔下来,烧写新软件就可以了。如果要保留以前的软件,直接重新买一块AT89C2051烧写就可以了。要用回老软件就直接换回原来的AT89C2051。由于t200b上没有封条,拆了惠威也不知道,所以不影响质保。本人出售修改好的单片机芯片,qq150352134淘宝连接:# Q) n- K4 Z1 X8 g* q9 D
http://item.taobao.com/auction/item_detail.jhtml?x_id=0db1&item_id=4e3e5a99867fa22202d510e2ead65442& _" ~4 P: Z7 \0 j! A) _: j
- U8 b. G5 V9 {8 z5 p ]. E
1 A+ w0 ]! J r- ?+ P/ N7 b
/ V% q3 ]- @* z" H' X0 w f# C: o8 }
3 W8 }- y% x: l( \
0 |, [2 Y' v m6 O
下面是汇编程序:
2 M7 ?+ G7 t' r7 a* YSDA BIT P1.6/ `% q1 o0 ~4 r6 f
SCL BIT P1.7! U3 l3 g% e" u/ K* ?
ORG 0000H
2 E4 R. q9 U6 F. F n JMP START
+ ^0 ]: c9 Q4 Y( S& _" P0 C ORG 000BH3 f7 }, n1 A( T. g& q( X" N& \
JMP INTT0% ^- L- A) a9 [2 }/ u! |2 e
6 ?/ m8 Z6 R. j, S6 h ORG 001BH
6 j) G: g7 P9 r! j4 a0 ?4 b SETB P1.55 y) s( D2 y* ]$ M. d
JMP INTR
1 P2 ~) W4 u( @START: CLR P3.7: i% f4 [9 F' J6 O9 ~
CLR P1.4
1 Y0 }1 a2 N7 q! m$ A CLR P1.3
# ?4 F. {+ \& ^; _2 I6 U MOV SP,#60H
1 S( D: ?$ W; Y8 u CLR P1.5$ D. b8 [, O: [' h% o5 F8 y
MOV R6,#50
, V3 R5 B6 o2 u2 b+ }# Y# h8 k CALL DELLAY
( D2 y7 V5 \9 A9 [$ q1 h5 k# K SETB P1.5
6 y# Z* m0 T& [5 H: N CALL READIIC, g: m* b, S+ e/ Z( H1 [% c
MOV 50H,A5 k& z5 Y9 i. Q U9 y
SUBB A,#189
0 P4 O6 t6 q" r/ w4 c6 Y JC NORMAL
0 C. N8 p. b6 C, c MOV A,#120
- A6 \5 r8 G5 t; l% M MOV 50H,A5 H) k& @; M+ [# L6 u
NORMAL: MOV A,50H' O/ c! X& |0 L. g, t1 t
-----------------------------------" D; Y2 |, ^6 q2 E" G [& \
渐进式启动软件,保密
* U3 b: w7 `/ u T& I4 Z: X# S-------------CALL SENDCS! K8 r, s& S6 Q
MOV TMOD,#61H
. |- q- s# N7 @2 O MOV TH1,#0FFH, g+ j4 r s: \
MOV TL1,#0FFH
4 |8 ^4 D$ P" m+ d) ~8 L3 E1 M, ^ SETB ET1
' H8 U3 _, C% {1 o SETB ET0
- e% g5 I$ |- [2 Y SETB EA A9 E& k8 J4 P3 E9 N" ?* ~+ z3 r# V6 U
SETB TR1
2 x6 `0 Q) M: s. F3 A% W0 \L7: JB P1.1,$" X" A+ |* ?' D1 [ H$ q- ]5 q
CALL RC
' B1 I' t) a5 e6 s0 J+ Q( P JZ L7: V8 w' k [5 I
MOV 50H,A
+ j( r( j8 c: `# ?& x: d CALL SENDCS 9 U; V+ w, y1 D" g& X& t) L
SETB P3.7& \$ O* ]6 x: K% x5 Z; t
CLR P1.0+ Z) F, P+ x7 p
MOV R1,#3/ J0 ]/ i* o' w$ M1 [5 O9 ^# e" _
MOV R2,#3% ]7 Y/ Z0 P" ?: b
MOV TH0,#00H
5 k; g1 L& R4 e7 {$ Z; v$ s8 w/ Y MOV TL0,#00H
* z/ k3 l! C& U% ^. m2 n2 j SETB TR0 @+ d1 m0 ` s9 b" k1 s) g7 m5 s
JMP L7" P g9 ^: x S& b& l; Q4 N$ M$ t
$ Y, h# s) E8 [
INTT0: DJNZ R1,GOON
* g& x( j' j1 u* ]) g1 y/ a; C) V CPL P1.0
! B& k0 X) @6 h5 m P MOV R1,#3: k# c4 D z5 P- i+ c* ?1 }7 c8 ]
DJNZ R2,GOON; j2 X0 |) j% y$ O, D
CLR TR09 E* ^ \" J3 X) u
JNB P1.5,MU- ~, A% E! ~+ y9 L* W# @
CLR P3.70 q: |8 d. `! c$ H0 ~ F
SETB P1.0
6 Q u( u, L/ `3 O' ^ PUSH ACC$ V! G+ p1 S8 i- C6 R- @6 x
MOV A,50H
. C9 r; s$ Y3 x2 Y* S1 G+ F2 B CALL WRITEIIC& h' q6 j" c- @; F& H
POP ACC
' f; T" _: y$ m) S. U RETI
( J% k: s, N! J7 p3 [* A: s/ V8 F ^MU: CLR P1.0 ;MUTE红灯亮
$ a; L' b2 d) I! b7 L+ @ SETB P3.7; u h3 O8 n& v* e: P( N7 r
PUSH ACC9 j6 _6 w% \4 T- ~8 J) E
MOV A,50H% @: D' p/ ~" \# _
CALL WRITEIIC
( P- u# M$ p9 S( I X POP ACC
" \0 l+ }0 e9 Y- h5 SGOON: RETI
- \8 B# y" D3 q8 W7 [- @
# e4 `) O. b% G2 ]- T4 qINTR: JB P3.4,DEVOL
' E5 O* ?. d* v* } MOV A,50H
( i5 i( e! [9 s0 b2 f CJNE A,#10111101B,ADDVOL( a5 s6 o$ C i
JMP RETIINTR8 C, Y( [( `8 i2 k# s; X$ ^- D& B
ADDVOL: CJNE A,#00000001B,NO1" o$ r% H& P- o& L8 w: e6 }
MOV A,#00000011B
& Z7 G7 j: S: Q3 Z; }0 v1 v2 s MOV 50H,A
. O! a0 @3 Z, _ CALL SENDCS
3 O: L' J( F5 t, n JMP RETIINTR7 N7 F& m, p/ E
NO1: INC A9 d! _( P7 G# w7 @+ ~) M* N
INC A
) G- U( k# T7 g, o. Q( [ INC A. S; L7 o) Y ]- |
MOV 50H,A
) ~6 R' ?8 o7 M6 d% L: L CALL SENDCS. p, w0 l8 }9 }4 M
JMP RETIINTR2 }$ N& H, Q) P8 H
DEVOL: MOV A,50H/ u+ q- K0 s: V8 P: ^, x
CJNE A,#00000001B,DECRVOL$ P ]5 g- @0 ?6 A! G
JMP RETIINTR% @3 a% N, y* `" _
DECRVOL: CJNE A,#00000011B,NO3& x; q5 M1 ]! @
MOV A,#00000001B; X2 T2 q1 g% }5 N$ h B
MOV 50H,A
; O) C5 E" S9 S/ p. U! ]0 w! C& a CALL SENDCS% y. \2 |$ J9 q
JMP RETIINTR 6 G4 a, p4 j' |- l0 B
NO3: DEC A
" D2 w. y; p+ ^ DEC A' P; r& r+ ~8 E0 y7 N
DEC A
# R7 ~9 X- M+ L) r MOV 50H,A
4 r q5 h1 g/ ^5 \ ?+ D) e" r5 r CALL SENDCS
8 H2 n( [, ?5 k6 M& [' eRETIINTR: SETB P3.7
, g9 Z' t& ~2 a2 d, n2 t% @ CLR P1.0; c% k3 d& K9 D& {, ~4 O8 ?
MOV R1,#3
% F2 e, l, \1 ^# {) U' w) J MOV R2,#3
6 B; z! Y/ j& B; Q" O1 d& i' o MOV TH0,#00H; r: K/ @, t$ _4 \+ W
MOV TL0,#00H
/ k2 q0 [7 n3 a* K1 C0 ?4 @ SETB TR0
6 z# l: M- e9 L RETI
/ |/ M7 Z* A" T7 BWRITEIIC: MOV A,#10100000B ;将50H单元的数据存EEPROM
# r1 k8 r* P5 o: z& [ CALL STARTIIC
! C. t% g$ z$ L9 N: L1 i6 n CALL SENDIIC8 }0 u/ q1 l+ P" _% k
SETB SCL
9 i7 n- J3 w( w% K! y MOV C,SDA; J3 R* G6 T4 L# `% ?
JC WRITEIIC7 X; ]4 f! j: O
CLR SCL/ g& H9 h! e* T& C& l. p# p( K4 l* q8 I1 E
MOV A,#11000000B ;存在11000000B单元 y* H% e) u6 f+ D
CALL SENDIIC
' O9 z# S/ W# x# h* i SETB SCL# ?7 }$ K4 m3 C: ~9 C$ W2 g; {% I
MOV C,SDA
4 G/ _# \! d$ ? z H7 l+ i" S JC WRITEIIC y' J. Y, x& l* R$ M
CLR SCL; g8 g1 ~3 ?. F8 r+ W
MOV A,50H0 `8 e9 G/ h. h6 }7 c, ?; \
CALL SENDIIC2 u8 `: b" c! m! B( W9 R0 t
SETB SCL
; v4 p& A- Z1 f1 b7 b MOV C,SDA
: E; y2 O) Y# c8 ~' D; V JC WRITEIIC
$ w- P# M9 Q0 Q/ s CLR SCL
1 J6 S4 y7 w( r CALL ENDIIC
! X! ^2 I/ u& @- s RET* g8 R% |; i3 W# i. I
READIIC: MOV A,#10100000B ;读数据到A
& x/ |# w, B0 O& c/ { CALL STARTIIC
& u, P0 S0 W' ?8 J. h- O% M5 ? CALL SENDIIC
# W0 Z/ N( X5 T `4 O SETB SCL
" K# c$ V! K$ Z3 a: {+ q MOV C,SDA
$ D3 F2 J, h& S h6 y6 r& r JC READIIC
1 [( f$ P# D. f- k* t CLR SCL
( p/ @) d3 k) D6 Z' D7 t6 M e MOV A,#11000000B ;读11000000B单元: J' ?4 @, Y+ w
CALL SENDIIC
7 S3 o5 s8 ^, X) v$ Q; i- | SETB SCL
% _2 l* g2 F7 l) e" w MOV C,SDA# K$ _ m6 r9 e
JC READIIC! ?* W% a) V( F$ |5 e: l
CLR SCL: F7 p8 Q. d2 H t: c8 _7 ?4 t# H# s9 d
CALL STARTIIC9 E, x# Y0 Z1 b6 D+ U3 h
MOV A,#10100001B' L$ Y; }& `0 `# U. V
CALL SENDIIC
. B! C5 V' h u) p8 ]& c* h( A SETB SCL, Y$ J* @; L* h0 m
MOV C,SDA
' `' F) T& x7 D6 [+ A V JC READIIC
$ A9 x. b( @% z) B" a# K4 ~, E MOV R7,#8- N: g E. P4 d8 V
READIICBIT: CLR SCL- G2 j# L: R' h0 g( v, I7 [
NOP9 N6 z r! V# n- r. p
SETB SCL: d/ x- u0 i- r. T
MOV C,SDA7 S8 q/ [1 d6 ? n% {# W4 X
RLC A 4 n: g7 c; u6 d2 j' z# A0 ?
DJNZ R7,READIICBIT; }: h! s2 C P0 ?, z" |1 x3 p
CLR SCL, k: C' O# A O+ y2 L
NOP
8 {, f' @0 ~5 A4 \' X2 B, {2 t, } SETB SCL
& g5 I4 S# N- c0 p* u w NOP
0 ^9 G; C* B1 q# ^. q4 Y) Y$ { CLR SCL( a7 f+ j. o+ ^; [% c$ t
CALL ENDIIC
3 L8 B8 v6 Z: Y* |2 n6 B0 C+ ] RET$ G9 l3 j5 w4 ]3 m+ n
STARTIIC: SETB SDA
8 Y: j( k" `: G' p3 B% T" j3 { SETB SCL9 b! n0 h/ G" u
NOP
2 ~* e+ @% q/ v/ v5 ^3 u [ CLR SDA3 l, O: ~4 p* E" m
NOP
7 H6 f) A1 M! n6 O/ I8 f CLR SCL( @% h4 e% @& u. f* U- H x- ^- K
RET
$ J3 J% k& J* S( m; eENDIIC: CLR SDA% P7 |" G5 N p1 |0 X2 n
NOP
- S) L9 V, Q B2 \0 y( ^ SETB SCL
2 }9 r6 U- h7 g8 o: G& I! p, }: c0 n NOP
" k* P* i2 V$ {+ f4 B2 } SETB SDA
u6 G1 J" @* z/ v RET8 o# P/ _+ ]" C1 e. [ ^
SENDIIC: MOV R7,#8 ;发送A的内容 Y9 l0 K& U; w7 N6 I
LOOPIIC: RLC A
" E3 J- x2 P* |2 P MOV SDA,C
% G, A( Q) j/ N# G SETB SCL E4 H) ^ f. m+ e7 v
NOP9 S, P* a, P1 [8 }3 U( ~
CLR SCL! Z" E5 }: e. U7 \# K
DJNZ R7,LOOPIIC( b; L e3 p' J4 h6 c7 N ]" V9 H
SETB SDA
9 I; X- k3 ~7 I: l. H RET
' t6 C9 X' K+ B! JRC : MOV R0,#30H ;遥控接收子程序
- u4 P: I! e* y( O0 o) W MOV R5,#9
; W+ e1 d2 D' Q6 A% O6 a. q( TL1: MOV R6,#16
+ T( ~ A6 d2 ^+ q9 `; i3 y CALL DELLAY2 c/ b q4 Y% C. r4 z* h
JB P1.1,OUT
) K/ K1 T; E! w DJNZ R5,L1 ) P2 _! v7 i3 F. k+ l, |- l9 b
JNB P1.1,$
6 M1 y0 D, Z6 |. } MOV R5,#5. K3 |% K- r) v3 n O. S
L2: MOV R6,#15
. y8 n9 ] j7 ^7 _1 n9 m) h: `& z CALL DELLAY* u4 c4 q1 J5 `6 u6 R& O
JNB P1.1,OUT. d) p% o$ T" N
DJNZ R5,L2
) a, L" A5 G7 K! H) B/ C5 l MOV R6,#11- s$ e( v6 U; L2 k4 t5 G
CALL DELLAY
9 ?% Z: m3 G& h1 C' D6 R! L6 G MOV R3,#8
! ?, ?8 Y- |4 JREADBYTE: MOV R4,#8+ d2 R/ Q8 h! [) ~! h- s4 z/ w
READBIT: JNB P1.1,$
8 x+ v3 W2 W1 ] MOV R6,#176 x* A: _. C) ]; j- W ^! T
CALL DELLAY
% y: ^; [0 Y4 ^( [6 `5 c% A MOV C,P1.1( E, f. {' V$ a* F5 v( b! c
JNC ZERO
2 ]9 r; Y9 c# Y! d MOV R6,#22$ w3 h3 L; o/ s: j* ^
CALL DELLAY) u- a3 W# q2 h; Y
ZERO: RRC A
: b. E8 Q' j6 e1 R' Q, f/ Z% O DJNZ R4,READBIT
) f; x1 P) f+ X! o6 P0 J' E MOV @R0,A! K6 W6 x4 m2 [
INC R0
K& {: H2 F# ^7 R2 p+ N DJNZ R3,READBYTE
& U5 ?! D7 L4 t4 o* o MOV R6,50' E9 t; `6 a {! G0 z) y( m2 ?
CALL DELLAY
9 V; M$ [$ V1 [: E0 u: ^, Y( V6 g+ u--------------------------------------------- 7 k5 ~. H" y1 I: H
---保密部分
/ b0 w( c* T$ M. ]6 h----------------------------------------------
; h i' ^, z5 b) D RET1 L: N' c7 f" W. z3 W/ t+ u
4 n1 `. N& G' H2 g& y" mDELLAY: MOV R7,#25
9 E. U. ]2 K! R$ m5 q DJNZ R7,$
& H7 a3 B" r- t4 w0 G. V DJNZ R6,DELLAY. n/ b7 C! g; e1 d: z# t6 h
RET
# W, V# C1 t1 u% {4 v& v qSENDCS: CLR P1.2 ;将A的内容发送到CS3310
. H2 x' h" `- u0 a' U MOV R5,#16
7 D( W) N' N# {6 a5 MLOOPCS: MOV C,ACC.7
9 |3 \/ k$ H2 d MOV P1.3,C$ u. l; B; I) K6 s9 d% H/ i
NOP
- ^9 E l% `+ R/ x9 z1 E0 t SETB P1.4# n3 G$ u# r& \
NOP
, d; X7 \$ b# C- ]& @+ C6 e CLR P1.4
( H2 U- _7 l0 O3 e0 j RL A
, Q5 {5 ]1 [8 _- H e G DJNZ R5,LOOPCS
2 w' R5 Y8 g/ f V# X9 |+ o CLR P1.3* o* v. [3 w3 f- }+ S. G1 Z( D
SETB P1.2
. G0 V1 x9 n8 v0 ]7 u8 d2 X RET! H; I; f. _! }0 B
END--------------------- |
|