|
|
本帖最后由 mgldjp 于 2010-1-19 22:02 编辑
8 D U( h; j4 T$ x& ?9 N% ~6 u) C! `0 u" V+ T
T200B关电源后开机不记忆音量,开机后总是一个很小的音量,用起来很不方便。我对t200b的音量控制电路软件、硬件进行了研究,修改了控制软件,实现了开机记忆音量功能。0 p& G/ X( t/ C0 d1 O
首先说说我发现T200B软件的一些问题:$ p& N: L7 g, b
1.开机不记忆上次关机音量,这是最大的问题。' T$ w+ V3 q$ c' U! j X0 m
2.开机没有对音量调整芯片AT89C2051。CS3310规格书明确要求上电开机mute脚要拉低,以实现CS3310内部补偿校正,T200B软件没有做这个工作。4 `7 E" F* d7 T0 P2 Q6 d
3.音量设置有偏差,也就是即使每次设置同样的音量,音量大小会有三四个dB的误差,这是我通过示波器观察单片机设置CS3310的波形时发现的,这是软件算法不准确造成的。不过听觉一般感觉不到。! r1 v4 a# t' e1 h7 N6 k
4。禁音时音箱灯没有禁音警示。
# W) G8 u9 ]! R9 t& S+ P# J t6 D' G) W0 E" `8 a, {0 U
由T200B音量控制电路图可见,实现音量记忆其实是很容易实现的,因为电路中有24C02,24C02是个EEPROM,断电记忆数据的。可以把音量信息存在24C02中,开机时再读出来。AT89C2051是个阉割版的51单片机,用来控制CS3310,遥控解码,步进电位器控制等功能,软件也就在这个芯片里面。我修改了AT89C2051的软件,在以下方面进行了优化:
# e: x( q! v* a e9 r1。记忆音量开机。开机时读取24C02中存储的上次关机音量数据,并按上次关机时的音量设置音箱。
- v+ u6 G( a( Q8 Y- X' O* V2.开机CS3310内部补偿校正,也就是使MUTE脚拉低2.5ms. ^, M/ t! z) U* K
3.改进音量控制算法,实现每次都精确控制。
6 V4 U3 n. \% B! i% L6 K2 U$ a4禁音时指示灯变为红色,提示为禁音状态。
$ X; t/ N/ C h' Z; Q; W5。渐进式启动,保护扬声器。由于记忆音量,可能开机音量会很大,所以开机时单片机控制CS3310音量渐增到记忆的音量,不是一步到位,这个过程为1S.如果记忆音量为63则以40音量启动。
! \ {! I8 M9 m3 e# @+ M! D! E$ O" y5 q, {; _
本修改不需要该硬件。附图为T200B中的AT89C2051照片,它是有插座的,可以随便拔下来,烧写新软件就可以了。如果要保留以前的软件,直接重新买一块AT89C2051烧写就可以了。要用回老软件就直接换回原来的AT89C2051。由于t200b上没有封条,拆了惠威也不知道,所以不影响质保。本人出售修改好的单片机芯片,qq150352134淘宝连接:1 @% ^4 x7 E! x5 `) Y
http://item.taobao.com/auction/item_detail.jhtml?x_id=0db1&item_id=4e3e5a99867fa22202d510e2ead65442
- }+ v" x# R A+ d" ]% m4 O2 F; t. C2 a8 ?# [
: e: x% L4 H7 d, Y* r1 c+ m2 ^
1 {. p; |9 `) Q: J, M3 o! n! Q2 S$ R* {/ n- L
: a8 R& ]: c- s; Y
8 w, k, W; O. n3 b2 O# |. b下面是汇编程序: + S5 ~( W0 q- u" r8 s% n
SDA BIT P1.61 w" r7 J# A, {! k; l5 a
SCL BIT P1.7+ y7 t# ~6 p/ g
ORG 0000H/ d: o8 l e" v: O! A/ y) a
JMP START, i& ~5 k8 S6 m, ^# W4 w
ORG 000BH4 f5 T) b8 m# Y: c- G9 B
JMP INTT0
1 d9 Z* l3 ]0 i" v$ n6 u
5 V- a. Y" f8 ~$ w0 s8 h6 ?8 _ ORG 001BH
- K) |% W/ k* v3 D, Z0 |& s% t' { SETB P1.5# C- b2 V7 s) i$ r4 Z/ [# \1 g7 }/ y. Y
JMP INTR
, \# T* w% X/ E6 oSTART: CLR P3.7
( n/ |. X6 Y# N4 Y S8 y CLR P1.4
1 u3 f( O# L! A( t [5 L CLR P1.3
; u D' w$ a1 u; D, K2 c- q8 g/ P MOV SP,#60H, V- D3 n i/ t# \
CLR P1.5
$ @0 N4 c1 E/ ^5 k6 E MOV R6,#50
. @1 {: |! g2 T1 f: H; ^9 L# I8 z CALL DELLAY# A* H* I) e" d! X9 Z2 x) F
SETB P1.5
* O7 u. W4 V6 T8 b$ ]3 {" @& c5 j CALL READIIC
% O5 [+ y- U" {; g3 D4 C MOV 50H,A
W7 Q: @5 k- k3 S) q( t* ^ SUBB A,#1894 v: H: t" K, B1 l% c
JC NORMAL 5 C8 |) {. x/ j& R2 S; q. n
MOV A,#1205 Q8 t4 O! u9 c s! ~
MOV 50H,A
& w% e* `4 W V! f4 t: `* MNORMAL: MOV A,50H
; h; K) Q8 t @. d; l-----------------------------------
1 }: a5 T4 ]! ~渐进式启动软件,保密# Z3 v$ i. }9 o! C
-------------CALL SENDCS
5 g! r1 V) x0 K: M$ r$ U- ` t& o MOV TMOD,#61H5 F( c, r+ Q/ Q; A1 S( L; p
MOV TH1,#0FFH
0 n3 e* c+ @8 w# l- y0 E2 t4 f MOV TL1,#0FFH- ^5 ^% d& m- Z. O
SETB ET1
8 k+ f: L5 ~, r" s' Y2 w/ [' n, G SETB ET0
. D% ~0 S2 M& n8 \& H' q SETB EA
- m4 _* E( `4 c# b* v& K0 B SETB TR17 q7 d8 D" p' N1 X0 x
L7: JB P1.1,$
& h1 W! o3 ^' t6 z1 X) @% H CALL RC+ Y% m6 h4 q! y x, _
JZ L7
, o! l* ?, m% m* S MOV 50H,A# I. J3 J! n! X6 `1 V" P- v
CALL SENDCS $ D6 r5 @- k6 g$ D3 _3 R
SETB P3.7/ ~6 T0 x" L& c1 |
CLR P1.0( ~# [1 A& v& v0 m! j
MOV R1,#36 K! f/ H. y# q9 A& M8 Q9 ?
MOV R2,#31 L% f+ S, U! U% k
MOV TH0,#00H
4 C6 S* H' y3 V! t2 c: b; h1 r% Q MOV TL0,#00H
6 }. V6 e, ]* m9 s; E' G; ]# h SETB TR0
+ [; g7 C) }2 M6 y) J. R JMP L7
7 @2 {( }. x, |0 r# c J
; N# `0 U. C. g# q% h/ IINTT0: DJNZ R1,GOON
( J0 `5 h- ]. _4 Y CPL P1.0! ]1 d4 q- [0 [2 e
MOV R1,#3
7 ~5 K# C, f/ ^1 T0 O& _ DJNZ R2,GOON
# G+ n* F4 ]+ v9 H- d1 C; _7 T% u CLR TR0% k& D1 I9 `) @+ S$ ^
JNB P1.5,MU( J. T" D$ ^7 P) p6 i! y
CLR P3.7: n8 K. x0 U2 F
SETB P1.09 }! m. T& W& r- D
PUSH ACC4 o2 p8 f7 A: h5 C- d1 `
MOV A,50H1 k5 n/ V3 ~2 _3 |( X3 j0 {& E5 }3 _ H
CALL WRITEIIC
3 P/ d% g4 W/ P$ S3 Z& L! E! m POP ACC
4 o" j+ T9 o/ ~! }" M& O; n* { RETI
5 g8 U4 i, U9 P5 y2 O/ @4 Y+ MMU: CLR P1.0 ;MUTE红灯亮% z! B1 N) e# `" R- t4 V
SETB P3.7
2 b! u% f" g) X/ V6 m3 E PUSH ACC p- U8 A0 j. `; X2 T. H
MOV A,50H
% e, _: Z: n r6 y; l5 p* | CALL WRITEIIC
8 l3 X( O! X6 g6 [) A1 e b POP ACC
0 w7 o* Z, Y# W2 R( N( E4 xGOON: RETI( ]6 R: K+ a# F* Y/ N- `
7 p& F; \" F# }4 n
INTR: JB P3.4,DEVOL0 k0 s9 T% d; c$ D* t
MOV A,50H
. q1 g( q. N) S9 U& g CJNE A,#10111101B,ADDVOL
) f. o [4 F) G. U& b# S JMP RETIINTR8 d/ r: E( H# a6 q* H0 k% u
ADDVOL: CJNE A,#00000001B,NO1/ i% G4 D _ b A+ e4 ^
MOV A,#00000011B/ t2 A5 E* ^( \: H! d( Z
MOV 50H,A
5 j; g5 _- t& P. H) x/ g* t1 s CALL SENDCS- [5 E* [# F0 T% @; y
JMP RETIINTR; u0 N" k8 P5 |! D% S# Q
NO1: INC A
6 v1 s3 [- X3 L F: G8 k INC A
`/ P/ U, l" S6 @' @0 v INC A! ?/ f& {3 a* h1 e3 s3 }2 B
MOV 50H,A9 ]' `- B$ s, ?9 L" Y5 J$ L' S
CALL SENDCS8 M3 |" k! _" Q" W% i% G" Y7 _
JMP RETIINTR
, L2 W, o# P" mDEVOL: MOV A,50H
# b! C1 c0 c0 e' j7 O CJNE A,#00000001B,DECRVOL
4 \- r. ^) p0 z JMP RETIINTR1 f; U* V* ?9 z: L) X. N
DECRVOL: CJNE A,#00000011B,NO3
% R3 k+ I( ?7 L: Q- O MOV A,#00000001B a: k: f, K# m
MOV 50H,A
% N& B' m8 n8 _: g+ A' ~; L9 G CALL SENDCS( A2 c f G) \4 S
JMP RETIINTR # L" d1 `2 t7 L; D
NO3: DEC A& q; y2 \3 x% ~8 I; q* R/ {. s
DEC A
5 X/ I# B3 r, _$ D# d9 F; O DEC A2 N. I% i& H6 [: n. o$ R H' U
MOV 50H,A
, {. T' T/ A# s' P. D CALL SENDCS
( H( l) u1 [" B& M6 GRETIINTR: SETB P3.7% ], o2 ^! t+ K( C( I4 L
CLR P1.0
& P7 S y' n/ E! r7 R3 P* O, }" E MOV R1,#36 H8 d7 Q& |5 {) \+ w$ L
MOV R2,#3
' v5 T: z3 H& X* [3 H- W6 q MOV TH0,#00H
9 l5 n& v4 v4 G7 g8 L MOV TL0,#00H
( g3 b( K( |/ S/ A- l; o SETB TR0% ?: ?3 b; g1 g( F, m/ J: b* ]
RETI
- ?/ ]4 X( F7 h& |! g9 q! ]WRITEIIC: MOV A,#10100000B ;将50H单元的数据存EEPROM C0 Y+ ~, A$ @% f" ~: p
CALL STARTIIC3 p7 C! v+ k+ R
CALL SENDIIC, B6 ^" O& }4 I9 h- E/ H% R0 O
SETB SCL
/ l2 q. \0 C% F+ h+ q MOV C,SDA' z- \, ` w' @
JC WRITEIIC c$ y% ?8 `3 L$ O4 h' |0 O
CLR SCL
' N6 ]9 k$ H d' V6 x9 Q7 O MOV A,#11000000B ;存在11000000B单元' p; z+ W3 u2 a' o8 o
CALL SENDIIC" J6 D( L, X* l; L
SETB SCL
2 B0 j/ u. e3 ?; U- V MOV C,SDA+ f( u* l+ m6 ]* ~- j2 _
JC WRITEIIC
' x( M% v& S T9 H( } CLR SCL* M5 F5 e. }9 y: p2 l3 L6 }) r
MOV A,50H
2 D% \* P& g a4 R, K- K CALL SENDIIC
2 n# l" T8 Q# Z& @; l SETB SCL
* c4 p0 v4 O k( ?7 J MOV C,SDA
( I3 x4 i8 K) b2 @ JC WRITEIIC0 Q8 F( ?# \/ }- w: M; m3 a
CLR SCL
1 K9 n# V- i$ K% e( \ CALL ENDIIC& R/ ]( b+ C/ e4 v
RET% I2 c0 w0 o+ ?# J1 T
READIIC: MOV A,#10100000B ;读数据到A
n! E, H3 t0 p2 O. N) `6 | CALL STARTIIC1 A) \6 p1 g2 y! B7 S r
CALL SENDIIC
( T' _7 {* [& P" r SETB SCL1 U3 F; q/ u0 w1 P% k/ W% H6 w8 v
MOV C,SDA# q2 E, v4 [' r
JC READIIC
; M7 Q) N/ P0 V: l1 l* I3 b3 Y CLR SCL
. v2 W% i7 x0 x5 d' Y MOV A,#11000000B ;读11000000B单元
! c$ A. {, `* r5 s' K CALL SENDIIC0 L1 n: M+ e# Q% m
SETB SCL
. l8 Z. l9 c) L. Q- K# M; c& S+ V MOV C,SDA7 _5 }$ ?, C1 }
JC READIIC
& n& i! u$ Z8 x/ X) U7 h$ \4 j CLR SCL0 U0 B+ @) h' X# v1 b h0 |. m
CALL STARTIIC' E+ I+ k x& u1 m. W
MOV A,#10100001B
) U4 R) O$ _; @. z( T CALL SENDIIC/ m* v+ l3 A# ]' P% s
SETB SCL
$ H) k2 L1 P% z1 W% i. M; r6 Q MOV C,SDA, M9 u2 G* k+ ?5 i
JC READIIC
% A! M8 Z+ t! d# |: c MOV R7,#8
2 \( k7 Q& w# y( m5 DREADIICBIT: CLR SCL7 P/ a. h% w- E$ f
NOP, |" B# @1 A/ B
SETB SCL
5 s0 k7 D' R0 S! T9 }, E* w) R MOV C,SDA! ~8 x1 p1 t+ H2 j9 f; M2 j
RLC A
" `7 {# L; f& d7 f' M8 ` DJNZ R7,READIICBIT' D# s8 S# u u+ d$ _6 h0 |
CLR SCL, C+ h/ i3 I* ?( g6 S5 {- W2 A
NOP: x" ?/ z! B' d0 f
SETB SCL
- g% k; x7 H) t# _6 S- k# ], n NOP0 ^ y& B5 l7 B* V; U( F' ~2 l
CLR SCL4 ~; d7 O1 `% t3 z$ `+ @
CALL ENDIIC
. L' n; |" r6 w+ d$ d RET" S' x3 r8 f( ~( q6 F) J+ r. B
STARTIIC: SETB SDA5 c* x; o/ w+ u5 B5 o5 ~
SETB SCL, w6 I6 S$ V& _
NOP/ N6 ^1 \+ z7 M7 m6 f- M* r2 z
CLR SDA
3 y9 n# Y2 m. _: E NOP9 S7 q1 a% `% T/ Y7 D$ n
CLR SCL
( Y( U+ c8 [0 g9 O9 r RET
8 c3 m# ^8 C. n6 \/ G4 tENDIIC: CLR SDA2 W# I3 O; S2 I1 d
NOP
' r8 Z+ h& l( T3 C+ W% L8 G9 I SETB SCL
4 g$ ?' f! ^7 x6 p+ r7 k0 Q! I NOP
: ?2 k& i, y/ m SETB SDA
* j# R6 j; o# G. I) N RET
; }+ Q* s* T% E3 GSENDIIC: MOV R7,#8 ;发送A的内容
5 X% Q5 l( H+ {9 W' l; [( ]% VLOOPIIC: RLC A0 }1 S6 |, A3 }) g& q, k p
MOV SDA,C3 x4 p8 Z$ u/ i$ K5 q" S) b7 y
SETB SCL% I; A( Y0 t1 W s% N4 D
NOP- ?. y/ T: o1 I) [; |! a
CLR SCL
3 g$ P" l; P) y& s) A) ` DJNZ R7,LOOPIIC$ f; q U- U* S; J; B: c
SETB SDA
3 F- V- E, |7 C9 a3 n RET k; ~, X/ D7 r8 R; L1 q- A
RC : MOV R0,#30H ;遥控接收子程序. _8 P8 \" t9 F9 J) R8 v
MOV R5,#9
/ i0 P7 B3 ]4 mL1: MOV R6,#16% [$ _0 p5 E- Q0 ]8 D3 W
CALL DELLAY, O, b* H. R* C; E; p! D
JB P1.1,OUT8 R% L4 _+ {" B; S; S' s7 S! @1 K
DJNZ R5,L1 : f% s: e- j! ~. m' d
JNB P1.1,$1 T) _; Q, t, p: R
MOV R5,#5
' J+ {) p) M% \ Z- uL2: MOV R6,#15
1 Y5 U* U5 H6 P CALL DELLAY
, G+ x- O* A! b1 W2 W1 w JNB P1.1,OUT
0 o! r. _& r0 b2 d8 B3 P* ^1 @" w DJNZ R5,L2 $ u7 }2 h- j, T! g- \+ C: p
MOV R6,#11/ E7 R$ Z* S; \
CALL DELLAY " u$ l7 ^0 w+ f& T$ e: T1 |" _
MOV R3,#8, E1 F' {% d+ A
READBYTE: MOV R4,#80 B+ |- F# w5 j# B( |" t
READBIT: JNB P1.1,$
3 w9 J l# k* z3 W% C+ \; F MOV R6,#176 Q8 D' E0 N. @, c0 H3 | b6 K4 j7 O
CALL DELLAY+ b8 c, m3 j1 {2 k8 c0 A- y6 V* U
MOV C,P1.1
2 `8 x' [$ Y. M: Y3 s JNC ZERO
5 Q4 W" t1 O) x: s MOV R6,#222 g) g/ E7 K. g6 ^6 L% p
CALL DELLAY2 o f( a- F4 w( F0 l* ^
ZERO: RRC A1 ?* W7 G7 p0 s
DJNZ R4,READBIT9 w2 A/ L. \& j: Z( M d+ @$ r+ s
MOV @R0,A% p P3 g+ \, E: y7 `% `" H2 a% u
INC R0" @ |9 J% o" p/ \: v: v0 K1 j6 R V% f
DJNZ R3,READBYTE: W9 D) L$ p4 b+ ?5 G- |1 `
MOV R6,50
! ^- H6 v6 v" i! U CALL DELLAY
A9 Z( p# c/ q) R$ _; r--------------------------------------------- $ n4 b: M. ^. Y" u. C3 O2 Z
---保密部分
3 S0 x4 A$ ^3 ]. t# h7 R----------------------------------------------
, T; Z8 P: l5 ?: ~0 g8 L RET4 ?$ w7 s. ^' X( h9 v$ ?3 @5 r/ m
+ v# A' {6 Y* y* s1 r- BDELLAY: MOV R7,#25 " l3 m* q2 a% }
DJNZ R7,$- O& h2 C, E4 r0 g/ m+ m6 L# P
DJNZ R6,DELLAY
$ T. }# T% G& z" y! ]" p RET U5 U& [# k9 C0 d% q# W1 g" S$ ^
SENDCS: CLR P1.2 ;将A的内容发送到CS3310
( c9 Z* J O F MOV R5,#163 g3 `9 V$ h! m6 j5 P
LOOPCS: MOV C,ACC.7( y6 n& L8 r' Q8 Q$ Z& ~) g
MOV P1.3,C/ P" e0 U% p/ \' k% Q' @- _
NOP* o- @) m8 G. K! }
SETB P1.4
2 _( V7 ~4 A ^" d3 n NOP7 p z, J0 Y/ t4 ?
CLR P1.43 `' F6 r, ^. h( M
RL A
9 @ j4 Q% V, J( [8 } DJNZ R5,LOOPCS
/ G5 g; _% S* W. k9 s1 O+ F CLR P1.36 Y0 N1 [ j/ L/ [* V5 I3 i% X
SETB P1.2
- `- w( v5 {& P/ `! g' l RET9 W j1 i) K/ F+ j
END--------------------- |
|