|
本帖最后由 mgldjp 于 2010-1-19 22:02 编辑
( |5 L! ?+ Q$ V( `8 L% X3 G5 K
T200B关电源后开机不记忆音量,开机后总是一个很小的音量,用起来很不方便。我对t200b的音量控制电路软件、硬件进行了研究,修改了控制软件,实现了开机记忆音量功能。: K' b/ d0 {% v9 k& ?# F, w0 `
首先说说我发现T200B软件的一些问题:
: s) }5 r( K6 F7 t1.开机不记忆上次关机音量,这是最大的问题。7 P# n" o/ }$ [5 j" c$ {
2.开机没有对音量调整芯片AT89C2051。CS3310规格书明确要求上电开机mute脚要拉低,以实现CS3310内部补偿校正,T200B软件没有做这个工作。
9 f1 O( S" ~# \0 `3.音量设置有偏差,也就是即使每次设置同样的音量,音量大小会有三四个dB的误差,这是我通过示波器观察单片机设置CS3310的波形时发现的,这是软件算法不准确造成的。不过听觉一般感觉不到。4 C( m1 _' p8 M1 T* [2 _# X, R
4。禁音时音箱灯没有禁音警示。6 N& A; h+ }4 z# G5 n
4 H" }, `6 F. J4 K' \5 ^' ~0 P; T, M* H由T200B音量控制电路图可见,实现音量记忆其实是很容易实现的,因为电路中有24C02,24C02是个EEPROM,断电记忆数据的。可以把音量信息存在24C02中,开机时再读出来。AT89C2051是个阉割版的51单片机,用来控制CS3310,遥控解码,步进电位器控制等功能,软件也就在这个芯片里面。我修改了AT89C2051的软件,在以下方面进行了优化:
8 r% W- k, Z6 t: H1。记忆音量开机。开机时读取24C02中存储的上次关机音量数据,并按上次关机时的音量设置音箱。( k/ T; N5 S- k' ~5 c+ F1 U
2.开机CS3310内部补偿校正,也就是使MUTE脚拉低2.5ms
% A6 G* x$ ]( P6 F3.改进音量控制算法,实现每次都精确控制。
6 e$ p% X6 K7 u0 X" U4禁音时指示灯变为红色,提示为禁音状态。
: k/ a: q# Q& X5 z1 e/ p0 [# V5。渐进式启动,保护扬声器。由于记忆音量,可能开机音量会很大,所以开机时单片机控制CS3310音量渐增到记忆的音量,不是一步到位,这个过程为1S.如果记忆音量为63则以40音量启动。6 Z5 s+ j: L, m; l) x
' q- G8 q/ d) ^! M, t' u/ [
本修改不需要该硬件。附图为T200B中的AT89C2051照片,它是有插座的,可以随便拔下来,烧写新软件就可以了。如果要保留以前的软件,直接重新买一块AT89C2051烧写就可以了。要用回老软件就直接换回原来的AT89C2051。由于t200b上没有封条,拆了惠威也不知道,所以不影响质保。本人出售修改好的单片机芯片,qq150352134淘宝连接:
4 A' X0 b# u4 \. }9 _6 n1 ]http://item.taobao.com/auction/item_detail.jhtml?x_id=0db1&item_id=4e3e5a99867fa22202d510e2ead65442
* Y& K( {, M2 }1 t0 Y- w6 Y z
) _( z7 Y/ w( z: d: ^4 Y
- S9 M" S; C3 k' A) a& r2 }1 Y2 h3 k0 S1 t# ^( ?+ z
$ y: O1 R+ u2 I! `2 g3 h
/ E" `0 H0 C8 X7 m; m# X+ p& j5 S. m
+ }" m1 b p. A8 Z: w9 E% q7 O下面是汇编程序: ' f7 X3 K5 V u
SDA BIT P1.6
1 c+ [. T+ Z9 D SCL BIT P1.7+ B/ j- s/ O) A6 K3 P0 S
ORG 0000H: K1 {1 _# n, c1 V7 a' M& i( Z
JMP START- T/ u! n4 q, k, v6 ^
ORG 000BH3 [- H3 P! P- m+ c
JMP INTT0
& Y. i/ h% r ]* Z2 A , ]& V& z' z F8 N
ORG 001BH2 h/ {' G6 V5 ^4 f
SETB P1.5+ j' ]) v- C* M. y, U
JMP INTR- i: R/ [% z: J S
START: CLR P3.7
' f- n: a% _3 n* s# L* M+ u CLR P1.42 _5 Q% {0 c5 c7 q) V5 E
CLR P1.3: c/ q( R# x# N9 I6 [/ M) O0 D5 M5 k" q
MOV SP,#60H
2 @0 N! Z& Q' ?& S CLR P1.58 n- O7 K5 W$ U; V) G/ `
MOV R6,#50$ Q% r: R/ o) P& |4 b3 {8 s
CALL DELLAY
( S0 U$ ^; u$ M; O. ~' F SETB P1.5- z0 v, r& [8 w( Q& H- K
CALL READIIC ]9 ^2 K- T% P! n- d9 I& N2 H
MOV 50H,A
0 `# ` P; i" s" W1 B4 U0 X SUBB A,#189
* W/ r7 w( s) T2 i& r JC NORMAL 5 u$ x6 A" _3 C, r8 A
MOV A,#120
" V. P. y+ {7 r/ o MOV 50H,A+ K+ Q1 _) m" H7 E
NORMAL: MOV A,50H7 b; X, c! x @5 Y- i F; m2 I* H
-----------------------------------
. `2 \* P. o# U* R$ f渐进式启动软件,保密, Z) B8 [9 k; t9 p: Y( _9 y
-------------CALL SENDCS$ z" E) |; X3 m$ k0 q& A
MOV TMOD,#61H
; U1 l; L* ?+ a, h MOV TH1,#0FFH" x9 E$ o2 B1 l* j6 E( P
MOV TL1,#0FFH+ V: j+ C. D# h9 e
SETB ET1
; l' V0 Q$ h+ E$ x SETB ET0
8 D' j- p9 q9 [4 R" v5 E SETB EA
1 T% k8 A d" Z SETB TR1
) L6 _4 Q; `. w+ r: S9 LL7: JB P1.1,$* L( k* f |( k2 F
CALL RC
2 Q9 b. l0 f- i4 u: f3 M" o l6 J JZ L7
* G4 `* ]* y9 O4 P* x. K5 q3 k MOV 50H,A
2 f( T) o7 K; w3 L1 K# T2 \ CALL SENDCS
/ {3 V+ c3 H2 Z! d- n8 C SETB P3.7; N: @, L- p- ?/ D
CLR P1.0
# ?* S4 s; h5 d7 @( {3 w MOV R1,#3( u, A' u: R2 ]9 c* K
MOV R2,#3
5 {1 k: a. K8 m$ K MOV TH0,#00H
/ B$ U6 A& k0 _% W: Y MOV TL0,#00H8 S9 L4 t" c2 _6 c
SETB TR0% Q; `6 W* f; J) z9 ^! W0 P
JMP L7
& Q a4 k U5 n, A% V4 J. c; p7 \ e3 @8 F
INTT0: DJNZ R1,GOON
. x4 }7 ^7 ?! B9 ?/ k( L& k8 b CPL P1.0
3 c4 ?& p- D6 A& _+ I MOV R1,#3
& s9 W& L& v+ z; X DJNZ R2,GOON
! O% m* s5 J& |& ?: S CLR TR0
; U3 d3 X$ b0 F& _, ` JNB P1.5,MU
( K8 b6 e2 R6 Q" |7 q+ G CLR P3.7, v+ T: Q4 ^- H6 `1 f
SETB P1.0
4 v' Y8 l/ Z4 G8 i PUSH ACC Z. D% k0 | P. Y1 w7 ]
MOV A,50H7 H: `5 M, a/ p+ b2 e7 o
CALL WRITEIIC* L7 b) m2 O* M7 E) w" W
POP ACC
- j9 q3 X$ i- Q# a$ y6 o. ?" { RETI
) } l$ X. C1 a4 ^" A TMU: CLR P1.0 ;MUTE红灯亮
2 T* |( c' t: h+ D/ q! @8 M6 w SETB P3.7
9 N% [8 {: L1 U9 \, E" | PUSH ACC
: [) h6 \0 q0 @( X2 d& q MOV A,50H, r% d2 [9 r2 U) L, Z% H+ D
CALL WRITEIIC3 I+ {" y; O8 e2 h0 H1 N
POP ACC
9 k: Q8 t& X# vGOON: RETI3 d3 W) L+ x I2 y( d6 |) X2 S) m R
% C7 T5 M: | y) d; t6 F3 R
INTR: JB P3.4,DEVOL
$ B3 L2 r- P- I$ Q MOV A,50H
/ ?% T* G4 g$ g% q T/ }1 p CJNE A,#10111101B,ADDVOL* {) P- z+ M1 r$ E7 o/ b
JMP RETIINTR
5 O$ v8 ~+ U- d7 c5 n* sADDVOL: CJNE A,#00000001B,NO1
# s, m5 s6 n( k+ `- Q" E MOV A,#00000011B
' ~7 f& Y* `2 @ MOV 50H,A
* V: y7 R. V( e5 B CALL SENDCS
& _+ o7 Z8 I( e" e2 X+ {0 e4 A JMP RETIINTR& j) x l. p% p2 R% R2 Y2 B
NO1: INC A2 f* F6 \1 c$ R* L& U
INC A
5 T% o4 g* L/ M. c4 I6 d7 `* a INC A. P! Z0 W) m9 d
MOV 50H,A
- V4 [' D8 u- r1 ~6 w7 x0 W CALL SENDCS+ Q c. y$ @ x/ u0 b1 R
JMP RETIINTR/ q& {4 x' g' J
DEVOL: MOV A,50H
3 l: R8 P3 z9 i CJNE A,#00000001B,DECRVOL* [5 t- z* ^4 V* u! F
JMP RETIINTR E6 l; G# H5 S/ _% h2 O
DECRVOL: CJNE A,#00000011B,NO3
, K/ _4 R: i9 y% ~& n H: C MOV A,#00000001B, D Z) X8 Y* }+ e
MOV 50H,A- G3 v1 V g8 o8 U4 C1 F
CALL SENDCS, U3 C) X9 _* [( g7 Z5 y3 ?& g
JMP RETIINTR D. D q3 s; K6 p4 j& b
NO3: DEC A
& i9 B: }% \& `8 u9 j" k7 Z9 D7 y DEC A
' e5 e7 X, F4 c7 N8 N; {, B c DEC A* }: m( k! i! A: e1 p
MOV 50H,A; n9 |+ Z3 L7 V0 s9 }
CALL SENDCS
* U# A3 n; m2 J. Z* I: FRETIINTR: SETB P3.7
2 ?" E/ ?% N- I; k% I CLR P1.0
" j9 E/ |+ h( X8 m7 s' _4 |/ K9 @ MOV R1,#3
4 Q, i+ X$ O7 x6 m, y: K5 y# y MOV R2,#3
1 b1 v* M; M9 g MOV TH0,#00H% N0 W& u: E& M% j8 ]- y
MOV TL0,#00H
7 R1 O8 K4 p w) p8 S SETB TR0
) C9 c2 r) M) u6 T RETI) D. I: _+ d- P) b
WRITEIIC: MOV A,#10100000B ;将50H单元的数据存EEPROM
( v, v7 R# k* Q/ x) Z8 N u; n CALL STARTIIC7 Z- U0 h2 B; d9 c, s
CALL SENDIIC
* R+ R3 u. b9 \) D0 A9 l SETB SCL% K! C b) ^/ N/ U, X$ {9 D! p/ a1 P
MOV C,SDA
- `9 q9 }5 }5 p$ X! r+ T JC WRITEIIC7 ]/ s0 v9 J1 |' i% i
CLR SCL
. k" P6 l n, Q. X; _ MOV A,#11000000B ;存在11000000B单元
1 D) p2 w# x+ A' y& f" Y CALL SENDIIC
% q) Q! o7 J3 U! S8 | SETB SCL
; n; o$ C& `, B/ s# O' B MOV C,SDA: c- ^3 y; Y& X6 r0 ~% D
JC WRITEIIC
+ y3 K3 R1 u9 k* C6 W! b' z CLR SCL
0 w4 j: s( C8 Z4 Y* ?7 Q MOV A,50H
1 A7 h" j8 l3 |/ @: u* y CALL SENDIIC
3 G$ V* [/ q) m. F. m0 ~ SETB SCL
5 w0 s" B( E! ~# {# p$ n MOV C,SDA- X* v$ A) ~1 k* D
JC WRITEIIC5 h- K: i; I0 Y) J5 Z4 F" m
CLR SCL) U5 }4 d" Z/ `7 ]* |3 H
CALL ENDIIC
7 V& [/ y. i! J9 i% @# }7 h# h RET
4 n% z/ W# F( j9 b* v4 T$ N, NREADIIC: MOV A,#10100000B ;读数据到A
- L) |7 G& {" Q CALL STARTIIC
) T# X5 g2 v5 n- f CALL SENDIIC3 _, c+ h7 [1 ~- }1 D/ M
SETB SCL
6 M( S4 B2 b; z6 i0 b; _3 E) Q MOV C,SDA0 Q' K, e T* V3 }; ~
JC READIIC
! a' m6 F& J }/ | CLR SCL4 e H3 @# y! w* G8 @1 T
MOV A,#11000000B ;读11000000B单元* Z$ v" r7 B: |, E6 p. n$ a9 n7 K
CALL SENDIIC
0 e4 i' d' E' e. r SETB SCL
2 Y; a& O! ?' f; x* n# E/ ~ MOV C,SDA
9 K v5 i, D$ ]( O JC READIIC& A6 T9 w+ _' s! z6 K* b
CLR SCL
. e* w* g9 p% c, n# O! i% y$ ? CALL STARTIIC
3 H8 T; A7 J% { I4 v6 @: p9 l6 H MOV A,#10100001B
3 d$ ^% x+ W6 t+ ] CALL SENDIIC1 G3 A* `6 r( l8 X
SETB SCL7 d P$ g3 I0 T* |9 d
MOV C,SDA
0 u0 ]" w8 a8 F5 u0 P JC READIIC1 b) P- W/ e- ^6 v
MOV R7,#8, {& D! |: ~" h' w: l! ?% k
READIICBIT: CLR SCL
( i" }8 I1 I$ @7 B. E& e9 f- H( m9 _ NOP( G" {% n/ k1 T& f' M+ y
SETB SCL
8 b8 Q1 R7 {8 h6 q2 O: j0 F MOV C,SDA0 H* z; l m: e8 p2 r- w+ p
RLC A
8 V) B l; {+ Q+ H& `0 c DJNZ R7,READIICBIT
$ L$ p! N( u# S$ ]$ y. J: @& n CLR SCL9 i7 d7 u, @; R
NOP/ b0 w' }6 a R4 v
SETB SCL
1 r( q" n6 Y1 u/ B NOP3 F+ V, g9 f/ ?9 s" q. ^# ?
CLR SCL
/ ^# j* n7 p7 D: W CALL ENDIIC: ]$ c1 A' G! k. z b1 ^* y
RET
, O9 @$ W* l9 C7 z C1 `( ?% j/ aSTARTIIC: SETB SDA2 {7 ]5 v: D; O( K* |6 e
SETB SCL8 s# r2 R6 n* `; O$ x3 g# ^
NOP
5 f# Z4 G1 `: }7 l CLR SDA
% |5 U o% k; b& f, m0 P+ y NOP
/ x$ b# Z8 r+ U CLR SCL' V K+ w: j8 E: h) n, w
RET
3 ?( z6 U+ P9 \; o* ^ENDIIC: CLR SDA
8 @ f& Z. ~9 m. ` NOP/ N9 _ g0 ~- F: c6 H. s
SETB SCL) i- W; X8 {- b7 Z; C* V$ }
NOP
, c- M& Z; w& W8 d7 r+ r SETB SDA
5 [8 |' P2 e9 k" H' }" l RET
9 o; L3 e9 J3 n; o9 p2 J% P4 YSENDIIC: MOV R7,#8 ;发送A的内容% n+ i5 Q2 K& g% n" q Z2 k
LOOPIIC: RLC A
2 o8 I+ C+ f# W' M MOV SDA,C
0 \' i" K0 N( `* k& W4 ` SETB SCL& Y% h. l2 N. V5 j
NOP
: P% u) d, e3 _! ^* o CLR SCL
: w5 H' K3 M/ X$ A4 K DJNZ R7,LOOPIIC/ C. \! `' s2 M
SETB SDA
( U. I$ U- h* u$ N, w RET8 b c( H, z2 S6 W
RC : MOV R0,#30H ;遥控接收子程序
; e% n9 r0 D k MOV R5,#9
1 c9 y' q% `' B @) V" v1 Y# q8 |/ yL1: MOV R6,#164 P4 m8 d- o8 ?$ W
CALL DELLAY+ b) K5 Q6 g+ B) G
JB P1.1,OUT' G: k$ M! h4 S8 i0 y& J
DJNZ R5,L1
1 G; S4 Y, N4 I% X& ], l3 }# v+ l JNB P1.1,$
$ [; e7 |. a9 v( @) B MOV R5,#50 h! c' B8 p+ E% Z; g
L2: MOV R6,#154 R' [( t' p* j" S% U- e; D
CALL DELLAY
0 d$ V5 u9 w7 X* Z JNB P1.1,OUT
+ X1 [% \: Q! e! A" ?$ \7 O- B DJNZ R5,L2 7 z7 D3 m) a5 J3 b/ s- \
MOV R6,#11
: |0 V$ O. X! A( u CALL DELLAY
/ N+ ?: i- D1 p MOV R3,#88 Z2 o+ _4 d) h. D! i
READBYTE: MOV R4,#8
* X# h9 v1 Z/ E! {, e( L- }4 @7 pREADBIT: JNB P1.1,$( R- |5 U; c& F, h6 r/ _! D- i8 G
MOV R6,#17
) R6 e1 a$ S+ l! z' I' `6 v CALL DELLAY5 Z$ J' W0 M s j4 H0 ^
MOV C,P1.1
3 M ~$ [3 U+ a. v% N$ I' | JNC ZERO9 J; S' O, q2 N
MOV R6,#22" y8 J# x& g0 H. n" Q6 q
CALL DELLAY' U% l$ O8 O; x! g) h6 N
ZERO: RRC A
3 C; }9 N5 V' `6 F4 u7 ^) A) X DJNZ R4,READBIT
$ A# T' t0 k; y$ o7 A MOV @R0,A: }3 J r9 y2 g
INC R03 s4 L* t2 ~2 h8 Q( d/ J1 s* K
DJNZ R3,READBYTE, o7 p/ T" ?" l( b
MOV R6,50
- {$ c0 _% J$ x6 i: y: x CALL DELLAY
: l. x* j& d3 f0 e) f4 g( B( j---------------------------------------------
1 {5 @" n/ }6 C; c6 r---保密部分1 O! c2 x5 B/ \! u6 e) @5 P
----------------------------------------------
8 ]9 z# R5 a: W! n( n8 K RET
9 ~: X* l, `+ ~0 e5 [! M$ [
: v0 y. ]' [6 {/ }DELLAY: MOV R7,#25
: L/ I( g9 D$ Y1 @, x: r DJNZ R7,$3 M0 W8 b! X" ^0 [
DJNZ R6,DELLAY
; Q% W5 o0 q, U" W7 C RET' F3 q% B& C. N9 v* N' O' n% B: B5 `
SENDCS: CLR P1.2 ;将A的内容发送到CS3310
% l8 J6 @2 c) _- t/ d6 P# x MOV R5,#16
- M1 V7 ?5 k: X, zLOOPCS: MOV C,ACC.7
K- o" p% R- b( [. \0 b% I MOV P1.3,C6 K( e* Q, y6 X3 N' ?' ]# r2 `3 a
NOP. u3 V3 ^7 k9 G$ h2 W" r
SETB P1.45 y3 F2 B; C& s( n+ i& m, F, t
NOP
7 H* W% u h0 ^" ^- {! p4 b CLR P1.4
1 V! t& w$ J2 N RL A
* T7 F" d1 }/ r DJNZ R5,LOOPCS
. Z$ g3 k" m8 o& |$ Z* m CLR P1.3; [1 k) S0 V6 Q6 M) c! W4 ]
SETB P1.2 ) h& T0 l. Y0 ^8 k
RET+ E; s# K; n( W7 |- m' f, I- D' `
END--------------------- |
|