|
|
本帖最后由 mgldjp 于 2010-1-19 22:02 编辑 ( U; e6 C5 K' I3 P- z7 y! z
8 |0 s, ^: v% }- g+ u9 w
T200B关电源后开机不记忆音量,开机后总是一个很小的音量,用起来很不方便。我对t200b的音量控制电路软件、硬件进行了研究,修改了控制软件,实现了开机记忆音量功能。
! b; A* Y. J/ ]首先说说我发现T200B软件的一些问题:5 b4 ], ?5 p% A
1.开机不记忆上次关机音量,这是最大的问题。
( X3 {, }( j. N6 G) Q) j( s( b2.开机没有对音量调整芯片AT89C2051。CS3310规格书明确要求上电开机mute脚要拉低,以实现CS3310内部补偿校正,T200B软件没有做这个工作。5 ~3 j2 K. \) {3 {
3.音量设置有偏差,也就是即使每次设置同样的音量,音量大小会有三四个dB的误差,这是我通过示波器观察单片机设置CS3310的波形时发现的,这是软件算法不准确造成的。不过听觉一般感觉不到。4 I8 q1 A. F( u2 y }( Y0 c
4。禁音时音箱灯没有禁音警示。
9 O8 w: I. _: R" O7 B
E4 K$ l7 r- s* B由T200B音量控制电路图可见,实现音量记忆其实是很容易实现的,因为电路中有24C02,24C02是个EEPROM,断电记忆数据的。可以把音量信息存在24C02中,开机时再读出来。AT89C2051是个阉割版的51单片机,用来控制CS3310,遥控解码,步进电位器控制等功能,软件也就在这个芯片里面。我修改了AT89C2051的软件,在以下方面进行了优化:
6 [8 Y {6 e2 K* n; [) o1。记忆音量开机。开机时读取24C02中存储的上次关机音量数据,并按上次关机时的音量设置音箱。
6 o/ p: N1 u; A4 [/ |6 o5 Z2.开机CS3310内部补偿校正,也就是使MUTE脚拉低2.5ms0 q5 b! T" E h) b( o9 I
3.改进音量控制算法,实现每次都精确控制。
! N: b7 r. i. k4禁音时指示灯变为红色,提示为禁音状态。7 i, z" Y# W2 m, }' w) c
5。渐进式启动,保护扬声器。由于记忆音量,可能开机音量会很大,所以开机时单片机控制CS3310音量渐增到记忆的音量,不是一步到位,这个过程为1S.如果记忆音量为63则以40音量启动。
0 Z- }, i/ |* m C* R: w( i- ~" K e% S8 P) k% K- v& P8 Q
本修改不需要该硬件。附图为T200B中的AT89C2051照片,它是有插座的,可以随便拔下来,烧写新软件就可以了。如果要保留以前的软件,直接重新买一块AT89C2051烧写就可以了。要用回老软件就直接换回原来的AT89C2051。由于t200b上没有封条,拆了惠威也不知道,所以不影响质保。本人出售修改好的单片机芯片,qq150352134淘宝连接:' T+ `2 @5 b; \: \6 k0 f7 w& c; [: t
http://item.taobao.com/auction/item_detail.jhtml?x_id=0db1&item_id=4e3e5a99867fa22202d510e2ead65442
: ?0 k, I3 v+ l% p, s0 [* w/ ]) V3 Q8 c) `
! E- ?7 n6 ^% }- R! `6 ?: A5 w; H r t/ z( O3 {: l6 j
4 l( L% ^4 W2 }6 J
8 w9 j0 c% H' ?) \4 \8 B b' ^
" v$ v3 _ P. l' t下面是汇编程序:
2 a5 k8 T& E9 y4 f4 cSDA BIT P1.6; L$ U* C" a3 ~/ a3 k
SCL BIT P1.7
8 p$ z# \6 _7 E ORG 0000H
: H, ~, R$ b3 h# W+ W, Y2 w JMP START, n' {2 q: ?5 r: z8 J: ?
ORG 000BH
' a0 @5 n' v P JMP INTT0
7 O$ g: e% f/ c6 P V; U* ]
, h1 U' L/ }: y$ J4 k ORG 001BH
# b; ?, r9 C8 M SETB P1.57 F/ \1 D! u+ D- ]% _- h- g; P* g
JMP INTR
; z! i- y1 I7 [2 z0 ZSTART: CLR P3.77 N9 r2 H6 w4 w, z
CLR P1.4
/ w+ i6 N7 i; y CLR P1.3
, I6 ]* S: B2 Z& U% m W% H6 ~, A6 e MOV SP,#60H
2 J* g5 e$ |0 r7 a' m CLR P1.5
- s3 Y$ y6 l+ n8 r MOV R6,#50! _$ \6 B. N" p/ X1 {& `
CALL DELLAY
6 _4 @" |( A9 V SETB P1.5
4 R A- b1 r' E$ l t0 B9 r: M CALL READIIC
% l9 v) Q, t! w d1 T MOV 50H,A
) X k+ i+ N4 n SUBB A,#189) |5 t3 f. k. T/ B; o
JC NORMAL
& [4 a6 e9 r) w+ q MOV A,#120% E6 r% e* J9 V0 ]
MOV 50H,A
0 I! t$ S- Z: Q; d- C% v. s UNORMAL: MOV A,50H1 G: u0 m4 w3 ]
-----------------------------------7 B; z0 {* B+ r
渐进式启动软件,保密2 I: j2 L1 A" p5 x3 Q" {8 c
-------------CALL SENDCS
' |5 b7 i; b& p |4 w MOV TMOD,#61H
1 b, f u3 K: J# h3 d a) ~ MOV TH1,#0FFH
# b% y2 w. d2 D9 [ MOV TL1,#0FFH
' H) n' s, g8 i6 }! a, @ SETB ET1. w, d( s" y) K) y- h7 x
SETB ET06 M2 f' K% J- D
SETB EA+ U) A1 y2 F; C! O9 W( W
SETB TR1+ c% h- O5 t7 F" n- M8 ] b
L7: JB P1.1,$, W7 c1 O }7 C2 L9 p: n
CALL RC
& [ C" _4 C+ k- ?! I! H0 q JZ L7: w' S! t A2 e$ u- S. L6 Q3 V/ i2 K
MOV 50H,A
3 S! \, _- M9 q CALL SENDCS 4 _, a: Z6 ^' U3 Y2 \ x w4 D/ _
SETB P3.7! v& Q0 ~# k" u. ]2 @+ v# g
CLR P1.0
2 |6 }5 m! m7 ]5 F MOV R1,#3
8 x2 Y4 b9 ]8 ~ MOV R2,#3
' n, G# G( e3 B) I5 f4 l MOV TH0,#00H: F; z& m( y5 t
MOV TL0,#00H5 e5 ?) H0 c/ D2 O- U- a" c) T- G
SETB TR09 b! E+ {, {( U5 g4 ]1 e" K. F4 a
JMP L72 P ^% l5 w1 k$ w- X
4 Y) l2 [( n' `! [ U( I" ^INTT0: DJNZ R1,GOON
) v; m1 E; u/ I0 k0 }3 M8 G9 d2 ^ CPL P1.0+ ^9 |8 K9 [- H" T. j; J2 _: {
MOV R1,#3, |# B/ l3 y: Z6 e
DJNZ R2,GOON
! ]# O5 U& y7 K4 V6 _" p CLR TR0: @8 x+ b$ P l; v) y
JNB P1.5,MU
1 z( n$ ]$ c( L" h! H5 s; ]. N% Z CLR P3.7+ l% l" X+ j, F& e% n, ]
SETB P1.02 ?$ }: x1 d# X! L$ X" L4 P
PUSH ACC! n; I7 {) {. c' Y T, C
MOV A,50H
7 I1 p& z) o4 J. L9 v8 a6 u( Y CALL WRITEIIC, }( \, Z3 o& p/ i) i
POP ACC
( C+ j$ @% g) q/ X, _: X l RETI
& L% k4 b% K3 |; k0 WMU: CLR P1.0 ;MUTE红灯亮
7 L5 Q/ [& v2 X( ?0 Q SETB P3.7
3 W/ o7 X1 W1 [, z8 X. y4 _0 P PUSH ACC7 v! ]; j2 [0 A) |8 Z& K
MOV A,50H9 p* u$ ?* u% E2 C8 v; g" Z. s
CALL WRITEIIC( F* y! C2 M% k
POP ACC
% h3 a% ^# ~: W" @GOON: RETI
0 A6 l% D& r2 j3 r+ K6 L $ k/ G+ N! \. S2 P2 b9 \
INTR: JB P3.4,DEVOL5 f0 {* i& E7 R1 y/ c
MOV A,50H% f; ]1 u2 \! f/ D1 d1 O3 |3 o* i; S
CJNE A,#10111101B,ADDVOL
. {( F0 g& z- M/ E- k+ Z9 L JMP RETIINTR$ n6 F6 M3 }6 q# t7 @( n
ADDVOL: CJNE A,#00000001B,NO14 [. X& I# U- z- w' u& a0 K3 i8 t% h4 F
MOV A,#00000011B/ q5 X1 M& E7 e2 X7 G& [! H o; S
MOV 50H,A
1 X; T% t S; S) x CALL SENDCS
( ^1 q* y& X3 ^ JMP RETIINTR
* G6 r$ a: i# Y( j; V% KNO1: INC A: E# @3 P7 S, e2 L, j
INC A
9 u) p2 I; ^. P INC A
j3 Y/ Q5 a* ?- H. i3 g# C5 E MOV 50H,A
6 ~0 o- _! G. T# D: T CALL SENDCS1 l g- u5 B8 _/ P* ]# U+ @" F& r
JMP RETIINTR7 V1 u8 Q& g$ p# \: U7 l0 ^
DEVOL: MOV A,50H
+ @8 U/ ?& X- @! ]- a1 k CJNE A,#00000001B,DECRVOL
7 c$ f1 X u) o& k! h JMP RETIINTR
& [: E# v. P. ZDECRVOL: CJNE A,#00000011B,NO3, v( b$ _8 P% E8 z5 v# B2 _
MOV A,#00000001B
5 U6 N( X3 w5 R+ j MOV 50H,A
' M& B6 y6 m- n0 {& M2 U) B CALL SENDCS/ v; Y1 y% s3 Z
JMP RETIINTR
9 T4 [# D) @; |- `9 }7 k) h8 bNO3: DEC A
7 q5 H, j! h0 }3 c7 d& C+ e2 j DEC A
1 f: q" n) g7 o9 [" w1 x DEC A
" [- M" H0 V7 j MOV 50H,A: f+ w+ c, w* M9 W$ f5 Y) Y/ E( j
CALL SENDCS- f: W% M4 N" E
RETIINTR: SETB P3.7% A' W! S3 m& @& U
CLR P1.0
4 b) H# y+ o4 Y0 j4 k MOV R1,#3. d* t T; r6 P# P/ ^: g1 q9 a3 y
MOV R2,#3
# q- Q% Z$ }) l) ?7 s6 x MOV TH0,#00H
+ o6 j) w/ L# p. Z MOV TL0,#00H
4 w* g& s8 w( O9 A$ M6 J" O7 N; Q SETB TR0! C# W: p+ R# I: E
RETI. Y: ?9 {( Y* I" x1 r
WRITEIIC: MOV A,#10100000B ;将50H单元的数据存EEPROM2 D- A0 l4 o/ ~* F( R3 k' F/ W" f5 ~
CALL STARTIIC) { e8 w7 [2 _8 c! D
CALL SENDIIC# a3 _: Q8 y, i) w7 f& Z
SETB SCL
1 S7 T# [0 Q) Q h# q2 A/ `2 r MOV C,SDA
" j1 M; r% J1 Y- H JC WRITEIIC
2 p6 n+ [6 t p( s* |8 o# A; P CLR SCL
5 b9 ~5 L* t2 A# H8 i% g5 U MOV A,#11000000B ;存在11000000B单元
4 p2 X4 `4 h) V CALL SENDIIC
9 w8 x" H) j6 f6 z- x SETB SCL
* A! e( S5 d7 w MOV C,SDA
2 T' \& Z- c# l) L1 k# ^+ Y. p JC WRITEIIC* `0 Y, |( z4 [
CLR SCL$ J. Y( X) y5 D% u
MOV A,50H$ s# L1 n3 j; D( P
CALL SENDIIC
" p9 N) j7 z% P( g5 p. f$ l SETB SCL
6 G' O0 L3 n; y4 d, I0 X MOV C,SDA4 p) N; Y7 c% N e/ B
JC WRITEIIC* C# ~; F! x, Z7 @# \# r" b
CLR SCL
( v4 y* v# y! q CALL ENDIIC
& y- b7 x% o4 K0 m RET
" R; u2 D: J" `7 n: I1 B) e# QREADIIC: MOV A,#10100000B ;读数据到A
' e7 g) ]% D2 V CALL STARTIIC+ u; r) h' P* B$ F* G/ ^
CALL SENDIIC
' v- P q0 F, k2 f6 q5 U. a SETB SCL. s8 _1 ]0 H3 o* R3 y& Y0 ]
MOV C,SDA- S/ i7 @; Z" l; Z- s% g& h
JC READIIC
) t% ?. X6 P9 L# `+ P- u* Q. @' L/ ^ s CLR SCL
5 i) }! D" `% W* R3 G4 a# N* ^ MOV A,#11000000B ;读11000000B单元
2 U+ i) W8 `4 [# o+ R& T- u* i CALL SENDIIC
M& E6 L5 g7 o) x w& r# g SETB SCL7 W+ c* A* Z) Y! ~. N
MOV C,SDA9 Q$ C' ^3 J/ L
JC READIIC1 Q% o# N3 z/ l t# X0 O) C0 H- C
CLR SCL
" K5 p Y- |. \% r. V CALL STARTIIC
o7 D& q/ D( J6 V# W MOV A,#10100001B
$ b$ u! q, c9 E CALL SENDIIC
; T" Q4 K7 C4 @; {1 C' C) L SETB SCL
0 ~) f$ ^+ ?/ j MOV C,SDA
0 y9 l! J4 G' x4 Y/ ]/ X JC READIIC
" ~# ~& p# y# v5 m# Y5 h MOV R7,#8. P5 h& r: m% X4 F- D5 S! \
READIICBIT: CLR SCL
/ ~& I0 V; y/ Y+ x# A NOP0 W* ^) E5 ], }
SETB SCL
3 ]$ Q5 p2 I O% I! j MOV C,SDA
7 F4 m( B. @7 n/ b& | RLC A
! g' S+ }) m. s$ K: B3 R DJNZ R7,READIICBIT
0 E, E7 _- ~0 H V CLR SCL) x) P7 f: }& T5 ]
NOP, q+ }- G; a1 |: ^6 A6 U. G7 ?8 H( r
SETB SCL
% b+ d- k+ o3 K7 C NOP" g# p, c# @. J* n
CLR SCL* m& b) J. e( b; y5 }) F! A; D
CALL ENDIIC( L0 X9 a f* R( _
RET, h. A: v0 \& _! a0 E5 U" ~2 e
STARTIIC: SETB SDA
, d3 X) R- ^& `8 z5 I( \5 s SETB SCL8 j) P. w8 D3 V5 }0 ~9 C8 b
NOP
7 L3 C0 b# M/ M( v* \" }" U! p CLR SDA8 }# A- W6 L& G/ e. f6 l- H
NOP
' f( q0 P6 y5 w" x2 A5 ^ CLR SCL
6 P0 P: j \9 [! K! y2 D& H RET: K2 {& v7 A2 W' j4 m( {
ENDIIC: CLR SDA
! K* G( q! M9 x/ x O NOP6 f0 g( N/ ]4 ^5 F( a$ [
SETB SCL+ n. G- f5 F- G
NOP
- \& {: U* d& k J4 D& z4 d8 p SETB SDA
; t7 d. \0 V; |& S+ _. F RET
7 I8 C* q+ o7 j4 M* R5 B- m5 V! mSENDIIC: MOV R7,#8 ;发送A的内容
( x/ x: ^% n' Z5 I0 Q7 Z) m& M; pLOOPIIC: RLC A: @& Q4 v" H% C1 r& ]
MOV SDA,C
. R4 _7 c! R$ y, Z+ M SETB SCL
1 a$ W$ v! C- n5 ? NOP
# j! n( m$ o& v6 v7 g# ]: o: |1 t CLR SCL# e8 O+ @% d* l& O2 j
DJNZ R7,LOOPIIC6 M4 G3 {% @! q6 x
SETB SDA) w+ L$ O( P% v2 {: k
RET
; G, O7 \/ x# w3 {2 k5 tRC : MOV R0,#30H ;遥控接收子程序
+ X$ \6 N' h6 O' }6 t, `; @: E MOV R5,#97 J9 q, `5 x8 P$ A
L1: MOV R6,#16
% F" t3 j7 ^( P CALL DELLAY# M! @) [; n2 \4 T
JB P1.1,OUT
" N7 [9 p, u& `6 ^: I# ^ DJNZ R5,L1
! t, I0 ^; |8 s0 d) l1 @2 M) t JNB P1.1,$2 O3 Z( L* ^6 ?) v: w
MOV R5,#57 m" y7 S; P( X
L2: MOV R6,#15" c: B8 j9 m+ `( W; _( Z, y$ r
CALL DELLAY# M1 G; h& O; n
JNB P1.1,OUT% O, q1 i& Z" S2 q9 K. f j' s
DJNZ R5,L2
: G' k4 u/ I; A1 h+ d MOV R6,#11
; E, q/ N3 V2 n k+ r CALL DELLAY % Q$ G, K* M# }* j, v
MOV R3,#8
8 K2 i: `( F( WREADBYTE: MOV R4,#8
* V0 F" t) Q$ h+ KREADBIT: JNB P1.1,$8 x# @$ {6 j2 n2 \% \
MOV R6,#17' r- h8 u6 p9 R/ I
CALL DELLAY
3 l$ r: t5 K8 m( G, i+ h1 R MOV C,P1.1: f, u2 T6 v# K, \3 }. s
JNC ZERO
" q6 T4 {$ Y( C" ` MOV R6,#229 z2 {2 L- @5 L, P1 |7 ?
CALL DELLAY. [$ Z# s' [. M% X, N
ZERO: RRC A
+ W- L" A2 e3 s- r7 r, l DJNZ R4,READBIT
+ N! x! D5 d- s7 Z MOV @R0,A: u: F& M. V2 P- a0 I: t2 n' v
INC R0
3 P; k2 U" j0 Y) Z- R9 n DJNZ R3,READBYTE) O3 t0 `$ L6 U9 L$ N, K1 r1 L
MOV R6,50, X* z. W; ?$ }# v7 N" s; K
CALL DELLAY 9 c" e5 s6 p$ I; q3 h! b
--------------------------------------------- 8 ^" q3 ?7 h6 y# a: _3 [; @
---保密部分
. U, C9 w. P1 j# g5 J0 Z----------------------------------------------5 `; {4 _/ z( m" E
RET6 b7 p5 B5 r1 O! y: o7 ~
3 C3 t! {7 t% L! m+ }
DELLAY: MOV R7,#25 + k/ I* i7 ?7 o6 G& a
DJNZ R7,$
4 k& ^! }0 \: | DJNZ R6,DELLAY5 p' n: k, t; P, a
RET5 u5 Z$ Y* b O& o1 F! J& O
SENDCS: CLR P1.2 ;将A的内容发送到CS3310
' h+ F0 n3 k8 Y% x4 ? MOV R5,#16
* `+ k- g3 K |LOOPCS: MOV C,ACC.7$ }6 R" X# A- }/ L, x! Y; b% X& L
MOV P1.3,C; r' |# e+ G- N7 Y
NOP
/ S( Y* I$ a' {7 C5 k SETB P1.4. f9 q6 q% S. N
NOP
8 p; F! |' J! R* S& O5 T( w+ T* ~0 W CLR P1.49 X a( m$ s, o: @+ y) J) h
RL A
, h4 B; J# M2 ?1 O0 N+ e. ^ DJNZ R5,LOOPCS
- Q, C$ h, @" ]8 J* I# W d CLR P1.3
8 [/ y3 t6 B4 y& N SETB P1.2 ( _* `: C3 J8 O" }* O" ~& P& s
RET
! R3 O4 Q! d9 ~) ? END--------------------- |
|