|
|
本帖最后由 mgldjp 于 2010-1-19 22:02 编辑
6 R, L& B) K! Y- Z1 B5 T
( \8 P4 p3 V( z% f3 K& iT200B关电源后开机不记忆音量,开机后总是一个很小的音量,用起来很不方便。我对t200b的音量控制电路软件、硬件进行了研究,修改了控制软件,实现了开机记忆音量功能。
% P) \6 {9 m! r" X- w) c d首先说说我发现T200B软件的一些问题:
1 r8 _# m" f( M1.开机不记忆上次关机音量,这是最大的问题。
" ~, a5 T$ N5 _8 z' s: s: h2.开机没有对音量调整芯片AT89C2051。CS3310规格书明确要求上电开机mute脚要拉低,以实现CS3310内部补偿校正,T200B软件没有做这个工作。( X/ ?, S9 M* O: w' a C. [$ U
3.音量设置有偏差,也就是即使每次设置同样的音量,音量大小会有三四个dB的误差,这是我通过示波器观察单片机设置CS3310的波形时发现的,这是软件算法不准确造成的。不过听觉一般感觉不到。$ m1 E+ w1 H6 b# L2 W1 Y: f
4。禁音时音箱灯没有禁音警示。
" P! @! k8 [) j3 y; N( P3 n
, O# I7 [# r( ]! O由T200B音量控制电路图可见,实现音量记忆其实是很容易实现的,因为电路中有24C02,24C02是个EEPROM,断电记忆数据的。可以把音量信息存在24C02中,开机时再读出来。AT89C2051是个阉割版的51单片机,用来控制CS3310,遥控解码,步进电位器控制等功能,软件也就在这个芯片里面。我修改了AT89C2051的软件,在以下方面进行了优化:
1 u0 J X' W7 u" h1。记忆音量开机。开机时读取24C02中存储的上次关机音量数据,并按上次关机时的音量设置音箱。
) e5 g; E% |& N6 w( Q- K5 b# M2.开机CS3310内部补偿校正,也就是使MUTE脚拉低2.5ms
) B$ T3 y+ h8 w+ w3.改进音量控制算法,实现每次都精确控制。
' f" P' |3 g6 r9 A/ r: k4禁音时指示灯变为红色,提示为禁音状态。! o7 t& b- ]2 S1 N4 P
5。渐进式启动,保护扬声器。由于记忆音量,可能开机音量会很大,所以开机时单片机控制CS3310音量渐增到记忆的音量,不是一步到位,这个过程为1S.如果记忆音量为63则以40音量启动。
* D5 c# G/ ? K+ j0 z
0 m% K% d/ t# u: V本修改不需要该硬件。附图为T200B中的AT89C2051照片,它是有插座的,可以随便拔下来,烧写新软件就可以了。如果要保留以前的软件,直接重新买一块AT89C2051烧写就可以了。要用回老软件就直接换回原来的AT89C2051。由于t200b上没有封条,拆了惠威也不知道,所以不影响质保。本人出售修改好的单片机芯片,qq150352134淘宝连接:
* C4 r% u4 \' q5 d) k' L1 `http://item.taobao.com/auction/item_detail.jhtml?x_id=0db1&item_id=4e3e5a99867fa22202d510e2ead65442
3 B* w5 t+ J" ?* o4 j. p3 E( E4 ~& }4 t
v6 q) Y! a+ J3 H9 n1 q* E4 b/ Y. f* J: Z+ [& q1 ~
1 O: ]+ t h2 q9 X" Y3 a5 W2 K' ?
6 ~3 K1 Y. ~' Q, F# O0 t6 B: s" k D# B; B2 z3 _: B
下面是汇编程序:
d7 P p# A& \. @2 }: ]SDA BIT P1.6: X' y2 s/ S2 L
SCL BIT P1.75 J `3 a3 k& L: ^
ORG 0000H+ l) C/ u/ j( y" k( T/ P' I
JMP START) x- S! ^& I9 R; v
ORG 000BH
$ l: }# Z. w6 r" P5 v" [" K JMP INTT0
! `" l; ~+ e: A9 d$ V ) s& Q! z$ ~0 ? ]- T- L# O
ORG 001BH5 u. F- X5 `( J0 v$ o8 @
SETB P1.5
4 `. r, t) G! I1 b0 | JMP INTR; O% e& G, Q E4 x3 a5 T8 Q* h
START: CLR P3.7
% v/ ~( b9 Y$ s& \# B+ a$ Y& ] CLR P1.4/ k5 v( d& e8 d/ O2 h- S
CLR P1.3
! t3 _ d* ]' |/ U! X1 T MOV SP,#60H. B. y% h9 t7 ^' W2 F
CLR P1.5/ n) @# m5 d5 I- [- t q7 d# y
MOV R6,#50
1 f3 A) _4 |* z8 c3 B% g CALL DELLAY
7 d4 V* a3 ^6 \# S2 L* m0 `* E8 M SETB P1.5
r! @( r4 u T3 {" n- `# y3 a* ^ CALL READIIC
0 z- F6 l. ]. Y3 w! N" B9 Y MOV 50H,A# Y5 f; W. z8 x
SUBB A,#189
6 ~4 B! s' K S0 J6 ^! h JC NORMAL ( Y0 Z& P3 ]% y. R+ n* j1 K" ~
MOV A,#120& k5 @ W6 ~* N) [# u
MOV 50H,A+ N! O( S2 w5 }& j
NORMAL: MOV A,50H
+ b! d* u/ s& n. {% d3 {) X-----------------------------------
z2 F2 d8 B1 Y! I: H渐进式启动软件,保密
: B1 a4 h* U/ _* O7 J$ Y-------------CALL SENDCS
' V2 x% J/ f+ B* J/ P/ V; K* R MOV TMOD,#61H
7 i; t% J) a* e MOV TH1,#0FFH
, E2 v. j7 F. ^% F1 G1 Y& { MOV TL1,#0FFH8 C* b. u6 g. L" }
SETB ET15 M2 a; H: \0 `! c- o6 m8 [, s
SETB ET0
( x! [$ W$ Z# d7 ?4 k* u( U! V SETB EA- {9 N5 [3 l2 G, G
SETB TR17 t3 }# l. ^: L3 Y1 P5 k& [; G* {
L7: JB P1.1,$- D$ k& B( S7 ~& }; a. g* A" @
CALL RC) u ~5 a6 f7 Y; @
JZ L76 r; }8 D$ y0 O
MOV 50H,A4 H! _! y# o, h2 V; V% l
CALL SENDCS + M8 |' I0 [/ T+ k( s
SETB P3.7/ F5 c( ~' P5 w; U
CLR P1.0
u! y! V* c1 w0 Q* O( q* V MOV R1,#3
' F4 i2 P4 T6 U' Q+ X MOV R2,#36 l" y- w! F2 R1 P4 Q2 {
MOV TH0,#00H
+ ^3 A7 b# Z; ?& b MOV TL0,#00H3 `% a8 c C; h0 }- e
SETB TR0
6 p3 R/ ?6 ]: T0 s JMP L7- X3 F% t' c: f) s' S( O" n' G
6 x) n7 s) d* _* l q
INTT0: DJNZ R1,GOON& g/ [# Y$ L" h. a0 I, r
CPL P1.0" y' F L- t2 m9 O9 j% x/ t9 S: x% G
MOV R1,#3
0 f2 }2 Q+ m+ H- J& l DJNZ R2,GOON( u% v" k- b8 m) }' y( e
CLR TR0 ?( s* `! O0 ~0 A5 h
JNB P1.5,MU3 V3 O# Z! P8 F+ Y0 D2 K
CLR P3.7
5 f. }! L3 z5 z$ h5 F* M. r2 d SETB P1.0
7 k' U) U) L# n( s- d PUSH ACC8 X+ W# N8 F3 R/ q+ }8 i
MOV A,50H
' G( C' R# a: P! x1 }9 Q CALL WRITEIIC4 o0 G7 t" b' |& b* g' f
POP ACC
7 z# s3 k2 m8 Q8 [( y1 S RETI3 v5 k4 h1 {- B% C; |/ l' ^+ k
MU: CLR P1.0 ;MUTE红灯亮$ M. ?3 o' s* O' {7 _
SETB P3.7" ]# ?, F4 g: Y
PUSH ACC7 i1 J6 a4 B% R! M, g' d
MOV A,50H
+ {% s7 K) M0 b$ J9 S. i CALL WRITEIIC& @: V8 p* o: d: a. N
POP ACC
: p% p: X8 V0 S& lGOON: RETI
9 O$ A1 m* a a2 K. x( H9 C3 ~ $ F3 e/ @6 s$ ~8 d
INTR: JB P3.4,DEVOL4 y% p( w: K: K1 g9 @) K& h2 K
MOV A,50H
+ k6 O5 ~/ X$ Y8 _0 h0 N CJNE A,#10111101B,ADDVOL9 s' z( s# O, \
JMP RETIINTR8 ~! D6 ]0 L0 ?- y
ADDVOL: CJNE A,#00000001B,NO11 }8 X! z% w' {+ @3 k
MOV A,#00000011B0 ]7 u* t; I8 n+ L% i- M+ ]0 Q
MOV 50H,A
0 q% k% K9 K* Z: Y. ^ d3 |( K CALL SENDCS
, m# N5 ?5 j ?0 x' a( O: z5 m JMP RETIINTR% A4 m8 V" n- {9 L$ c! U
NO1: INC A# Y1 v; v1 T4 u. I
INC A
. ]' g9 \* y# O INC A6 ~+ K% {6 u5 {1 b8 [4 f7 L
MOV 50H,A6 B- S) g6 `" T- W( r, ^/ I
CALL SENDCS$ D5 h, V3 k" F% ^
JMP RETIINTR
4 u: z" G; Z$ a/ x- rDEVOL: MOV A,50H' ~4 D4 g! N' D
CJNE A,#00000001B,DECRVOL
- f. Y% w, J8 j; a; f JMP RETIINTR; j5 g2 L8 h$ h* L. o ?3 z
DECRVOL: CJNE A,#00000011B,NO3
5 U* P1 ?2 G5 p' Y MOV A,#00000001B8 ?! E0 P; Q% P4 f6 h4 r; {, w/ L
MOV 50H,A" F9 q' z/ R5 j' h5 b8 b
CALL SENDCS1 j2 m1 i7 T8 O0 V& Q( {- S
JMP RETIINTR ! w: _3 f5 z7 ?- \' k/ f) z: x N
NO3: DEC A1 ^! M, @, o; z( ^1 v
DEC A
: V1 b) K, w( I/ N" M9 b; ] DEC A' q7 m9 b4 a) a6 f. O, {$ p
MOV 50H,A) x$ a. o/ w( t2 B# U9 k
CALL SENDCS
+ Y0 A, g* D I" Z7 |RETIINTR: SETB P3.7
$ P) Q; r) R$ V2 } CLR P1.0
& d- N8 `5 j' W5 d( T* ? MOV R1,#3
& F0 b$ o9 a1 o MOV R2,#3# A9 w0 \ w5 N* u+ x# ?1 p# j: i/ F
MOV TH0,#00H; a6 r5 K. T7 I: Z7 l9 g
MOV TL0,#00H7 P* V0 ^# `" k, L2 [4 m4 q
SETB TR0
4 t% L9 t* Z) D; u RETI
& M6 P) P4 C# ~: `4 M+ N6 a& UWRITEIIC: MOV A,#10100000B ;将50H单元的数据存EEPROM" i2 J( j9 }5 F+ B2 l8 \
CALL STARTIIC' Z5 g* l4 B" p. I# I) R! `- \0 r, V4 e2 j
CALL SENDIIC3 V: I1 K- i5 j# @
SETB SCL, D* \' Z' X) Y% o- s- R7 v' @
MOV C,SDA! k- S* a ^8 S- w7 }
JC WRITEIIC
6 [1 L, Y' A' [/ Q$ t CLR SCL
. q$ ], B I; f1 C; { MOV A,#11000000B ;存在11000000B单元
* M3 H+ g$ O1 n CALL SENDIIC& w* K- g* r' _
SETB SCL/ c; K- L: V: p9 G, _3 \. h
MOV C,SDA
# G: e0 O) K0 T# V) B( Y- k. N0 J JC WRITEIIC
' e' D( N4 n2 I+ K# S CLR SCL7 s; [# Y5 p- F
MOV A,50H# i9 g( H: e$ C0 z
CALL SENDIIC
/ l: U1 o2 g% y: \+ ] SETB SCL$ x! v. P/ x6 e0 F
MOV C,SDA
/ R \- ]; T# j3 i/ U JC WRITEIIC, E- E- s9 }9 g8 h
CLR SCL
/ a" N% C/ h! s' t/ x+ g CALL ENDIIC
3 k. k& r C. t: p/ S RET
1 C' Q1 h$ R: G3 o0 fREADIIC: MOV A,#10100000B ;读数据到A9 X$ T8 F& t) U; Z
CALL STARTIIC
2 f9 `$ y: ~; D n& X CALL SENDIIC; G) \# t) ?1 l/ G
SETB SCL
+ b, [( A% K3 r MOV C,SDA# B5 e5 J1 T1 C) k6 ?
JC READIIC4 i0 z! S# A; P7 T+ a& [
CLR SCL
" n p. E9 L! S _4 o4 i MOV A,#11000000B ;读11000000B单元# A3 T$ H# [; Z1 C/ W9 N
CALL SENDIIC/ z6 i0 w( @, N
SETB SCL
" b% K- D* Z+ Y* D4 Z3 L MOV C,SDA
; t/ ~, s) O: ` JC READIIC" A* K! e3 o: Y" a+ H
CLR SCL" f7 I$ i) j/ L' d4 G0 k
CALL STARTIIC
* z# M* X4 n( P6 N( g; P MOV A,#10100001B
) G2 `" h1 X/ X) q CALL SENDIIC7 A) L6 `% Y- t1 I+ c" h2 t& ^
SETB SCL
# U% X% ~6 x/ X1 d* U MOV C,SDA
1 O; V9 |$ N# p- M7 `" u9 V JC READIIC* \" S8 S6 b9 P% [- T1 Q
MOV R7,#8! _$ {0 U! ~& F" |
READIICBIT: CLR SCL
& O* e2 B' o) a' w) F2 M NOP
$ n8 t# v! j. f SETB SCL
+ \0 Q {9 |+ d. {! X$ O MOV C,SDA
% `6 n6 r5 B! |. o5 L; F& t9 g1 j0 C RLC A 2 \2 Z1 M0 W. z, u5 U/ z
DJNZ R7,READIICBIT
: _1 I$ M+ k/ r( ]$ ]8 u CLR SCL
) ^" R$ ^' U" { NOP
( f5 Z; X' }/ v. U- k SETB SCL
$ B& I* ` p. j! Q2 A0 x1 D$ ` NOP
7 t' R7 ]6 e& S; O% q CLR SCL
- ~9 k7 {" _- l4 x- V CALL ENDIIC8 I5 E% A: b* N9 H" O j
RET6 W" ~4 ~) ]; x# k
STARTIIC: SETB SDA
7 g% t! r [- O' u" b# J SETB SCL. P+ Z" z9 T i7 d+ t/ o4 \) |
NOP& {8 O. {, M; U4 R. V9 r
CLR SDA
1 h- F9 I5 t' i; R NOP" Z2 S: X: q/ V6 J9 t
CLR SCL
U% ^% O; ^& D0 i _0 V8 b RET: K# o+ v: U+ v* o) a0 T/ O; C2 E
ENDIIC: CLR SDA
7 r; ^; _: O# C- H! E NOP
; U% e5 ?8 Y1 ?$ S SETB SCL
: m4 _2 C0 @+ ~# K: R5 I3 p8 g NOP
! {" e3 f- R& ~) G' s7 a$ _* A; n SETB SDA
! Q) H+ a2 M: w- ]( o6 K RET6 M* h( W) n' d4 H$ s" R0 A4 c
SENDIIC: MOV R7,#8 ;发送A的内容# a p5 Y* g# F2 V0 \, P7 E% x
LOOPIIC: RLC A6 }3 @3 G& q* D( F6 J) N! A
MOV SDA,C
+ p$ r. N/ |2 }' r2 f SETB SCL; L" s: `! m1 S2 C! _- n( B. p
NOP
3 n; b" _) Y; ?8 z& N( |1 g CLR SCL
- t2 ~9 i( i: r" b" k0 } DJNZ R7,LOOPIIC. { g/ h, f, m' f$ d6 P
SETB SDA
% U, o0 l, C6 b* W RET
8 r2 p6 V3 f- r( Z6 jRC : MOV R0,#30H ;遥控接收子程序
, M: ]5 q3 f% Z" V4 i8 b8 o MOV R5,#92 k8 O* N) N# u7 f
L1: MOV R6,#167 v ] M+ P( X/ A& b
CALL DELLAY) C3 K4 i: _9 `5 ^
JB P1.1,OUT A4 O* h7 K9 n! a8 {- y
DJNZ R5,L1 # [" N! h. \8 s2 G0 q( m
JNB P1.1,$& ~' Q" q+ V( K2 W; M# M
MOV R5,#5
+ ^6 r$ K" k% ~$ Q7 tL2: MOV R6,#15
3 P! I! q! ^7 N: r3 p& d: B! W. v CALL DELLAY6 x/ ~% Z0 v5 S" j" p- j$ a
JNB P1.1,OUT
% F: Y& I. A. [/ ~# Z DJNZ R5,L2 8 U: t& V" A& T- i* v, }7 g" j
MOV R6,#11' Y& n0 h7 L' `4 r9 r
CALL DELLAY
% ~8 I! ~' c+ r3 r: y MOV R3,#8$ J- P6 N- Y- M i: i2 _
READBYTE: MOV R4,#8
* J# h' S3 K8 Y3 y$ GREADBIT: JNB P1.1,$) z# i& O1 W! _& B
MOV R6,#17- q+ A- S/ `! z7 a# w
CALL DELLAY' T1 e, G: o3 u% a
MOV C,P1.1: t$ u' N( _0 t8 ^# r ?0 R, Q; U' c2 \
JNC ZERO
$ V G5 q6 d, n2 V' N' `- s MOV R6,#22
$ s: ~$ w1 Q5 @3 [ x3 {6 e5 Q1 A CALL DELLAY
- I. n7 {5 \% r, y+ l: f: |ZERO: RRC A
: E V. N1 ^, K" m9 [1 x; Z+ G DJNZ R4,READBIT. G& L, s$ l* [6 r ^3 ?
MOV @R0,A
! _+ E& ~/ ~4 D2 c INC R0
5 d! |, O2 R0 ` DJNZ R3,READBYTE& _% L0 ^+ \. f! Z0 }4 P( T: p
MOV R6,50- }3 c- p2 w+ w2 R& w) y7 Z* C$ T
CALL DELLAY
/ Q, a6 j v7 {! K---------------------------------------------
* ~' X V9 l! |4 G/ o---保密部分" b2 [" H o! z' v. y( |, l O
----------------------------------------------5 A0 T; ~. i4 P: K+ E: j, ^
RET1 }9 C: v8 @! o4 R4 k
' Q( s; `9 F$ [% m2 e8 G2 |* ]DELLAY: MOV R7,#25
1 ]5 J. H8 v* R" ? j q( { DJNZ R7,$8 j- ]9 z/ j$ I$ f& @3 y! Q# r
DJNZ R6,DELLAY& q$ Q- c; N% D* f+ L
RET
' u( `2 `! n7 U! h, j! f ?SENDCS: CLR P1.2 ;将A的内容发送到CS3310 ) m9 C: r& i: H) K# F6 U* F& Q
MOV R5,#16/ W6 n( [& K7 J8 ^5 s
LOOPCS: MOV C,ACC.70 T% S9 i* ]2 o4 r" Y
MOV P1.3,C
4 B) L& D4 Q! P0 a1 O, E3 }! N NOP _6 _; }3 Q# [# C/ K) o
SETB P1.44 [4 V. J2 q, f) ]
NOP
6 b+ a! a% e( U- k, W+ \7 ? CLR P1.4
: h) L5 P. v3 m5 b' a1 o2 u RL A I7 \- d9 a% g& h+ l1 \
DJNZ R5,LOOPCS: f# ?9 d( b! N( R. s3 n6 m
CLR P1.3
9 E4 [6 _; V, s( r" y8 _ SETB P1.2 7 `% o/ a$ t; s9 u6 R9 D
RET i& r) }& i7 L7 j
END--------------------- |
|