|
本帖最后由 mgldjp 于 2010-1-19 22:02 编辑 $ s4 F: V6 Z$ m' I
( g, O. l$ L% K5 z
T200B关电源后开机不记忆音量,开机后总是一个很小的音量,用起来很不方便。我对t200b的音量控制电路软件、硬件进行了研究,修改了控制软件,实现了开机记忆音量功能。- Z* \: ]+ T7 ^1 G& T
首先说说我发现T200B软件的一些问题:6 f% ^$ [- C( P% Y+ H
1.开机不记忆上次关机音量,这是最大的问题。9 z1 z2 I$ y o3 f
2.开机没有对音量调整芯片AT89C2051。CS3310规格书明确要求上电开机mute脚要拉低,以实现CS3310内部补偿校正,T200B软件没有做这个工作。
# |0 Z0 X1 o0 n: O; P' O4 X3.音量设置有偏差,也就是即使每次设置同样的音量,音量大小会有三四个dB的误差,这是我通过示波器观察单片机设置CS3310的波形时发现的,这是软件算法不准确造成的。不过听觉一般感觉不到。
K- E0 N0 @1 q4。禁音时音箱灯没有禁音警示。2 z, T+ X5 x) O
0 [* u h( ?: Y/ _, U- }
由T200B音量控制电路图可见,实现音量记忆其实是很容易实现的,因为电路中有24C02,24C02是个EEPROM,断电记忆数据的。可以把音量信息存在24C02中,开机时再读出来。AT89C2051是个阉割版的51单片机,用来控制CS3310,遥控解码,步进电位器控制等功能,软件也就在这个芯片里面。我修改了AT89C2051的软件,在以下方面进行了优化:
0 [3 \; V; Q3 [0 ~$ J+ @. K% X1。记忆音量开机。开机时读取24C02中存储的上次关机音量数据,并按上次关机时的音量设置音箱。) T* r: n1 Q5 {
2.开机CS3310内部补偿校正,也就是使MUTE脚拉低2.5ms
. n+ L, y5 A. V6 x/ q: V3.改进音量控制算法,实现每次都精确控制。
6 P, P' W3 w" ~' Q+ K0 K4禁音时指示灯变为红色,提示为禁音状态。6 r; Z6 m8 G2 c c' b5 h- I
5。渐进式启动,保护扬声器。由于记忆音量,可能开机音量会很大,所以开机时单片机控制CS3310音量渐增到记忆的音量,不是一步到位,这个过程为1S.如果记忆音量为63则以40音量启动。
7 h3 ]0 n- g: q
$ U7 c' b, w+ P% v2 B' t本修改不需要该硬件。附图为T200B中的AT89C2051照片,它是有插座的,可以随便拔下来,烧写新软件就可以了。如果要保留以前的软件,直接重新买一块AT89C2051烧写就可以了。要用回老软件就直接换回原来的AT89C2051。由于t200b上没有封条,拆了惠威也不知道,所以不影响质保。本人出售修改好的单片机芯片,qq150352134淘宝连接:
- j/ b7 {* k' \9 {8 B) D0 d( R& Bhttp://item.taobao.com/auction/item_detail.jhtml?x_id=0db1&item_id=4e3e5a99867fa22202d510e2ead654429 m6 u: S: {/ B: z a
' M; F, W1 b2 ]1 u
; U2 x& i& G' p9 H9 g0 ]: N t) ~
& Y8 [- x" m: d+ v# r7 L' }9 B7 i5 ]; A9 k
7 o+ J* U" s* |0 s( _; s0 o" B) B+ A7 Z& W2 {7 @$ S2 Z
下面是汇编程序: 4 a8 }1 o' }" { r
SDA BIT P1.6
! _# n$ h, c2 O7 {" b- g0 e9 ^! H9 C, N SCL BIT P1.7( p& O+ l, R" h v
ORG 0000H
* x+ Y/ d. ]6 w) f8 I* M JMP START, C7 \2 y7 K! q Y! ?
ORG 000BH, V6 p; X& V E2 E: S7 B
JMP INTT0 t G' w* l- e
; c t; ~$ j2 l/ I8 c& X" v ORG 001BH4 c/ I; [6 A6 B) E- ]/ Q
SETB P1.50 m k0 ?. |! A9 d' n; p1 f [
JMP INTR, \2 E7 [3 I1 y$ e, a
START: CLR P3.7
" @( J3 N1 X- o, t% Q. y1 y CLR P1.47 \2 h" y6 L9 ~" \& `
CLR P1.3
) J" B. W G1 f MOV SP,#60H
" H4 C$ e+ Q. F" d: v CLR P1.5
3 O0 B3 a+ a5 {$ G* ~2 s MOV R6,#50- m1 k4 a& E' V, G
CALL DELLAY
1 Z6 ?& X6 G7 U7 S. ]0 ? SETB P1.5
& I1 {* U% t& S; b CALL READIIC6 @0 \$ v% a; `8 f7 S
MOV 50H,A7 U( O B( k- H* E+ h
SUBB A,#189
& ~) `4 Z/ J1 L5 q; f JC NORMAL 5 I: B! h' S9 ]" x; ]$ q
MOV A,#1209 \8 }# {- q9 g0 d- I# g
MOV 50H,A, o, C7 @4 _/ D1 R* y
NORMAL: MOV A,50H+ f' I% t# U. S) m( o E! k7 S
-----------------------------------* E& T1 E# d5 U, q5 F- q
渐进式启动软件,保密
. H& E" y. y! G- M2 h/ b2 h-------------CALL SENDCS- V* k+ n2 ~& g- E3 F" u5 _; F% }
MOV TMOD,#61H+ E; ?6 d2 y$ Z* k3 U
MOV TH1,#0FFH( @' Z; r# W$ Q$ l1 m
MOV TL1,#0FFH8 b0 v g) O& J6 `1 [ F/ F
SETB ET1* @' i3 Y4 g, o! P
SETB ET0" c: c1 y; }0 ^9 O: y
SETB EA
$ u7 S( v- t% h SETB TR15 R5 ~1 M4 q9 C5 p0 p5 \8 w- }9 j
L7: JB P1.1,$" D8 ~& I" X& f4 L4 l1 ]
CALL RC
; Q- q' S1 N. V5 Q JZ L7
2 S- b& }+ B- o; B& y8 m MOV 50H,A
2 e1 H2 J3 w) q% m4 X, B CALL SENDCS
8 u( B/ v5 P" i4 A5 S# k, O SETB P3.7
2 c: l- e$ r9 R5 o* o9 R3 ~7 i" J* ~ CLR P1.05 @9 F& |' C! d# f' w! h4 ?
MOV R1,#3
1 K1 r2 G5 I# D/ Z MOV R2,#34 D2 F+ n0 g% Y% e
MOV TH0,#00H. m Q! c+ n9 E1 S8 B9 g
MOV TL0,#00H& `7 G, p: j% X& R* h1 l
SETB TR0
8 |" o$ t7 j9 ?* N5 f8 l JMP L7
0 B7 \+ ?( J; X* b( S
8 X3 G' x2 g1 M9 VINTT0: DJNZ R1,GOON
4 ]+ X& F2 H. e$ C9 m1 i3 V4 W( Q# j: `& p CPL P1.0
- R. E/ }$ n3 u5 M- v9 j MOV R1,#37 c7 A' E3 H6 N' I3 e
DJNZ R2,GOON
% k, i% Z* N- t% W( m+ x! l1 z CLR TR0) y# A1 Y7 d% s
JNB P1.5,MU" B3 F( A9 l; o) [4 z
CLR P3.7) S# P/ }7 `/ W3 p8 ~
SETB P1.09 m& T" k g; H: f7 {- U( P
PUSH ACC" s6 e- s) f2 E* ] g* Q
MOV A,50H
+ y1 Y2 y' O) C% m% P CALL WRITEIIC
* r( ^# {8 ]4 t0 F0 s) R POP ACC
( i: t2 w1 E% _ RETI
! N2 d3 ]) A9 p6 D. iMU: CLR P1.0 ;MUTE红灯亮8 q# B( h" m/ Q4 D
SETB P3.71 p! x v! `9 [0 \& k, ]
PUSH ACC3 c9 X& ], k, T( h
MOV A,50H/ Z1 ]3 i6 C5 |, E5 O3 b8 M' z
CALL WRITEIIC+ D5 Y+ l9 ?* P5 k# X) ?! ]5 q' O9 L
POP ACC
5 P" @5 G; M7 K/ y* eGOON: RETI: f+ Z, K- p4 \, t. B
9 O$ ]/ j# k% k! ?8 d a
INTR: JB P3.4,DEVOL
/ R8 C G2 j& z' b0 c; S MOV A,50H6 g# L& c+ q3 ]' v' t
CJNE A,#10111101B,ADDVOL9 ]7 D* U. C, i7 k9 J9 n1 @5 d) ?
JMP RETIINTR* g/ y* f. |; b1 b8 L# N1 [6 T9 X
ADDVOL: CJNE A,#00000001B,NO1
3 _% }$ z" R- }' E MOV A,#00000011B4 ?+ |' u6 V2 h, }
MOV 50H,A
2 t X2 b& Q4 u" a3 J2 n CALL SENDCS" t' d- Z9 b2 F6 q, r& J
JMP RETIINTR
9 O% j) c- Z2 p9 N! `- lNO1: INC A, _& v4 R1 I9 \4 ?5 {/ o
INC A3 a1 R! `6 N9 _% x9 U7 P
INC A$ M) e6 j* K7 Q% W1 X6 e9 e* J
MOV 50H,A
0 E3 y- b: M( G9 {& X: u1 f$ B$ }+ t CALL SENDCS
1 i: H# P7 g0 h3 @/ J3 p JMP RETIINTR
, d% O% E0 \8 q3 ^0 Q7 {6 g/ e! n9 \DEVOL: MOV A,50H* v) }. O4 C: J+ t0 Z
CJNE A,#00000001B,DECRVOL& D* C+ s3 w+ W3 @1 Y: g
JMP RETIINTR k; D, n6 k4 I7 I$ d9 H
DECRVOL: CJNE A,#00000011B,NO3
3 d1 ]6 w/ a! n: \ MOV A,#00000001B
& |/ l. r v5 Q7 u& l6 O: n/ V. x MOV 50H,A
9 ~' X: g" F I7 @9 ~( X CALL SENDCS
6 s+ z# a- M' ` JMP RETIINTR 0 D3 u4 [3 N7 ]# U% R, z+ K
NO3: DEC A8 e" k: P& g0 y y/ n
DEC A( I2 e" C4 P6 n( G+ A3 R
DEC A
+ W/ Z7 q2 A9 | MOV 50H,A
8 O* j: H3 X- ^& Q N$ O$ k% C& N CALL SENDCS1 O# p G* J; Z' d: j8 V
RETIINTR: SETB P3.7
- B$ u1 u3 S* d" P E# K6 O1 c3 B2 ?+ o CLR P1.0
% D3 h4 {' e9 x MOV R1,#3
( S) N- c" o% D MOV R2,#3# U, w# f B: I0 g; [( d
MOV TH0,#00H
2 M7 N* i/ x: ^( { MOV TL0,#00H
! w0 F9 G c/ j; F' o SETB TR0
% r/ ~) E8 B5 x; ~1 z RETI
% U: s4 P4 B n' M8 X7 ]* vWRITEIIC: MOV A,#10100000B ;将50H单元的数据存EEPROM
! w( f9 @& G- ]" C1 H2 Y6 ^ CALL STARTIIC
1 G+ Q, E( M( k3 n1 Y4 [ CALL SENDIIC
3 z' D7 F) E' G3 H# s SETB SCL
+ J. Z: \( @" B1 |0 s7 \+ [ MOV C,SDA
+ U( r% r3 F4 h9 h2 u+ Z: C3 M+ g JC WRITEIIC
! X8 C: E' B1 e% v CLR SCL
9 t& c* a* K- l* o& h! C& M& Q MOV A,#11000000B ;存在11000000B单元
& U+ f4 a" n, }; M8 Y! A2 D9 s' S CALL SENDIIC
8 p1 r0 F1 w4 o9 N SETB SCL6 M3 `* ~; G" n8 d
MOV C,SDA
- z+ T2 L D: R; c7 V JC WRITEIIC
% p$ Y7 e) ~, t/ q CLR SCL" q+ f) [7 l u- J1 w; u1 |* Q- \& i
MOV A,50H
7 \ q5 n0 y ?& O r$ p CALL SENDIIC1 t% s3 m+ k& O$ _; n' l# ^2 `
SETB SCL
( q2 \7 |" m! `9 C MOV C,SDA! B5 u4 Z4 s0 S6 [" x' p5 R/ {
JC WRITEIIC
* ~1 n) P- V1 Y+ T# m4 b; I CLR SCL" }5 D: \# m+ `
CALL ENDIIC
7 b- V' [% R6 J RET
2 f: P4 m- L) ~# D3 A+ r8 QREADIIC: MOV A,#10100000B ;读数据到A
5 C) R) w$ a9 ^" | A. Q9 i CALL STARTIIC
$ i# j" z7 X9 ?" z6 C8 C! w& `" ` CALL SENDIIC# c" d; U2 F" P0 ]0 j
SETB SCL$ e5 e& u8 ^7 ^7 f
MOV C,SDA
, g* w5 S% V8 `! y9 W- j/ Y6 ~ JC READIIC# u- x! x2 f) C& H5 M$ H
CLR SCL7 F1 f; }5 h. D! F
MOV A,#11000000B ;读11000000B单元
$ J6 u: L+ Z- [: ~ CALL SENDIIC
& j0 B& e% Q# j& u SETB SCL
- j7 w$ M. t6 u% X6 I+ R4 r MOV C,SDA
) G1 I5 {1 K0 {- X" L' p8 s/ _ JC READIIC6 D l( J) d& _1 z
CLR SCL* K9 `* J8 s0 ?4 f, ?5 J
CALL STARTIIC; \# E# Y- b/ V/ r8 m* C
MOV A,#10100001B6 G2 u+ y+ C0 h# ~' e
CALL SENDIIC
+ }* B9 S* W+ F SETB SCL$ l6 U2 a% K' V9 ]6 a- Q
MOV C,SDA; h9 |% Y" C: N/ m+ N' M& U# e
JC READIIC0 a9 g1 [5 [7 G+ p% e: ?' h
MOV R7,#85 [+ u0 ~& w: b* e
READIICBIT: CLR SCL, G( k" a! e! s3 Q. }# U. {6 V# A
NOP3 T( o9 i) ?) i/ ?4 m( C" T; s
SETB SCL
7 t3 k: c" s k& {* W: _ MOV C,SDA: V: I3 `. Q7 d( _* M; A6 }
RLC A
; }2 H* H+ \3 w! @6 h! j DJNZ R7,READIICBIT
: W0 K) B7 X4 y; | CLR SCL
' Y2 d8 J( w; W) D NOP8 j$ {6 w. e! |. @5 S* X
SETB SCL9 E( g+ K. @4 _) R
NOP# s/ w9 N( r" v: O7 f1 d3 L
CLR SCL
: G% h* d& _2 d% L7 w$ V CALL ENDIIC4 O' f D7 G( z8 _" y
RET
; o, D) O% x, ^& }STARTIIC: SETB SDA( [3 Y& _: s* E+ [' j
SETB SCL
0 M9 |) `. N- B NOP
) y' L* Z6 g. u7 b: D' p1 `5 Y: S CLR SDA) {/ A9 s1 W0 J8 T
NOP! \& P. ^3 _& ^6 \% _
CLR SCL& b; e: u9 A4 l5 D* W3 P/ E
RET
2 f. W6 y2 b- I5 rENDIIC: CLR SDA( M0 u; t* X8 c1 H4 b1 m
NOP) W+ U2 ]3 t {1 P6 H
SETB SCL8 @$ b. ]8 u/ [8 x0 F% A
NOP
+ ]% D5 v) ]# Z' d" e5 t SETB SDA8 W" q' G" {' [ ?" U& @$ D- U2 }
RET% A+ n3 m& Z' L3 V2 r* E
SENDIIC: MOV R7,#8 ;发送A的内容
& {) Q5 c5 t7 F5 d; e5 f# ?0 OLOOPIIC: RLC A% S) w: l8 b1 z9 A# s+ F) v" a: b
MOV SDA,C5 Q1 a# |: N) c, ?+ x
SETB SCL# e" W9 b- `+ S0 K* I6 }) t2 F4 V
NOP
# Y9 A! x# L. T% T2 P: _ CLR SCL: J* l9 I5 J+ B3 M" ?( W! X3 m0 K
DJNZ R7,LOOPIIC
1 H) \7 y0 s6 H3 i/ X$ `+ Z SETB SDA
9 M2 H( I- y) S ? RET! K; o6 V4 a6 r/ E, N8 P2 X( C0 P
RC : MOV R0,#30H ;遥控接收子程序
. o' `+ ~# E; `0 ^3 B MOV R5,#93 H8 o1 R8 [* E, J+ ?- {2 m1 o3 m
L1: MOV R6,#162 \2 [2 \: D, [+ A) T) q% ]1 ~
CALL DELLAY6 A% B# {5 g' T* y+ \1 v- u8 }
JB P1.1,OUT
/ R4 a0 j! N6 F1 w' Z DJNZ R5,L1 ) V1 `0 @; B: P! e( t5 O. ^6 e
JNB P1.1,$ g) u7 Q% l8 }" ^1 v R
MOV R5,#5
- v' x" B8 G! s: Y8 v' |! yL2: MOV R6,#15
8 M3 j1 f; R% H' f- F% f5 { CALL DELLAY
/ r4 _' i4 d; `6 F- p% |( g JNB P1.1,OUT
% S& M, X& k8 R) H: J DJNZ R5,L2
D% j7 A, ]& I4 J i MOV R6,#11/ Y7 @1 J% w1 |8 X
CALL DELLAY ; l0 t) H3 m/ x% ]# r$ u! T. g" @
MOV R3,#8
0 l' Z* D" Z) o0 Z) A4 E2 rREADBYTE: MOV R4,#8
. o+ N% `( @' F. R6 S' Z# vREADBIT: JNB P1.1,$
% B6 l& D: m" F0 ?3 o MOV R6,#170 u2 {7 n* C' h. z: T% E. k: w
CALL DELLAY1 ]/ F( M" L2 L7 l7 f. q! D5 o
MOV C,P1.1
# v$ z9 D- |( {5 V. k JNC ZERO
`! \8 n V2 A& p4 P MOV R6,#22
5 I. z/ ]% V: Z" e. @8 Y CALL DELLAY
, n. ^9 y5 M9 D' {( Y. T$ d9 wZERO: RRC A7 T% ]5 g/ C) H# y6 Z: Q
DJNZ R4,READBIT
6 R* ?- ?, t: E MOV @R0,A1 s9 a/ @3 h4 v
INC R00 [! B9 q2 [- c% i
DJNZ R3,READBYTE
6 S8 U9 K- a. x0 |9 f. l+ O MOV R6,50* g- X! z+ t! P& _% }% B! D
CALL DELLAY ' F# W0 @2 d3 ^' O i% m5 O
--------------------------------------------- 9 q+ O7 \( j$ Q/ {8 d4 P8 R+ _
---保密部分7 y; X, ^: @4 p% l" |
----------------------------------------------' C6 ^5 T3 B3 z* d N( l
RET" Y5 b# k& P1 d# m
1 U6 W- L. E6 M4 L' ?
DELLAY: MOV R7,#25
+ V6 @, `6 W* J' D ^& O5 v& Q, Q3 Z DJNZ R7,$: t- l( q1 C6 M6 n1 W
DJNZ R6,DELLAY" |4 t6 F, ?9 [+ }, ~
RET ]: ~, }) c1 N8 V" L8 E7 V
SENDCS: CLR P1.2 ;将A的内容发送到CS3310
4 @8 J! D' D" a$ a0 k MOV R5,#16
( f- G0 A* I5 i1 ]+ v/ ?( n& `LOOPCS: MOV C,ACC.7 x: k# U7 k* E, E- W& J7 @$ S# E
MOV P1.3,C4 |. T4 ~1 ~9 ~( A5 m* t; t
NOP
# g. P$ S2 v2 z/ N6 k0 T$ X SETB P1.4% z7 ^" d* a& L
NOP
2 G. r3 T3 V( X CLR P1.40 t6 m& t" R+ v2 z1 [+ V
RL A' s! g" r# j, M# F* q& F9 b5 o# \
DJNZ R5,LOOPCS7 V: a# _' ^4 l: @
CLR P1.3 J" {0 \1 H/ y, f' }9 k
SETB P1.2 * F0 T* s5 }2 k1 T8 |
RET4 K' v1 R' w c. O* n+ R
END--------------------- |
|