|
|
本帖最后由 mgldjp 于 2010-1-19 22:02 编辑 : a9 u4 j3 n3 `/ z. q
. x+ Q& V. T- A7 T1 CT200B关电源后开机不记忆音量,开机后总是一个很小的音量,用起来很不方便。我对t200b的音量控制电路软件、硬件进行了研究,修改了控制软件,实现了开机记忆音量功能。
{* Y0 k, B/ l! H9 a. E' L首先说说我发现T200B软件的一些问题:
7 _# {" ~. S( X% A' a1.开机不记忆上次关机音量,这是最大的问题。
4 B; N* ^$ ^7 a8 g2 i# Y0 c0 C2.开机没有对音量调整芯片AT89C2051。CS3310规格书明确要求上电开机mute脚要拉低,以实现CS3310内部补偿校正,T200B软件没有做这个工作。- j! H, [! ~4 y F# M( J# o x* |- _4 H
3.音量设置有偏差,也就是即使每次设置同样的音量,音量大小会有三四个dB的误差,这是我通过示波器观察单片机设置CS3310的波形时发现的,这是软件算法不准确造成的。不过听觉一般感觉不到。8 s n6 P' B# D3 D* o( f2 j" V2 h' N
4。禁音时音箱灯没有禁音警示。2 g- h5 u/ s2 n* E
$ R7 \' `$ K( Q3 ~. _* ~' y2 t h由T200B音量控制电路图可见,实现音量记忆其实是很容易实现的,因为电路中有24C02,24C02是个EEPROM,断电记忆数据的。可以把音量信息存在24C02中,开机时再读出来。AT89C2051是个阉割版的51单片机,用来控制CS3310,遥控解码,步进电位器控制等功能,软件也就在这个芯片里面。我修改了AT89C2051的软件,在以下方面进行了优化:2 L8 m! N. c; i `+ J: X
1。记忆音量开机。开机时读取24C02中存储的上次关机音量数据,并按上次关机时的音量设置音箱。
) [6 H# \+ j4 Z9 c) K3 ~6 ]( b7 T2.开机CS3310内部补偿校正,也就是使MUTE脚拉低2.5ms" n: N6 k# l8 I5 I3 T
3.改进音量控制算法,实现每次都精确控制。# `9 H; {5 N/ ]7 R
4禁音时指示灯变为红色,提示为禁音状态。
* |7 t0 H/ W. q. [ o6 w5 [( |( g5。渐进式启动,保护扬声器。由于记忆音量,可能开机音量会很大,所以开机时单片机控制CS3310音量渐增到记忆的音量,不是一步到位,这个过程为1S.如果记忆音量为63则以40音量启动。" ? O. o2 J" O. }: h T
6 W* p/ p. m! n
本修改不需要该硬件。附图为T200B中的AT89C2051照片,它是有插座的,可以随便拔下来,烧写新软件就可以了。如果要保留以前的软件,直接重新买一块AT89C2051烧写就可以了。要用回老软件就直接换回原来的AT89C2051。由于t200b上没有封条,拆了惠威也不知道,所以不影响质保。本人出售修改好的单片机芯片,qq150352134淘宝连接:
" W6 F2 u4 e+ Z% W. zhttp://item.taobao.com/auction/item_detail.jhtml?x_id=0db1&item_id=4e3e5a99867fa22202d510e2ead65442$ A: w4 \/ H5 D
2 o/ z/ I; x- X8 y! i7 f: [
% ^; @ n% g; b9 b j. X
+ L$ B* x! [( k. i) v
8 ~; L& ?" b- h) |' ~% S/ T7 F
# h) K! P1 n% u9 Q& X
2 n" ]1 i) t, I/ n( [9 e. q下面是汇编程序: - i( [* H( ]2 e9 D- d! g0 Z
SDA BIT P1.6" k3 d; P' E0 U7 i2 N! N
SCL BIT P1.7
$ q3 v* j7 j% c ORG 0000H* s' n! j8 c1 a6 @0 [
JMP START
0 o! `5 U) R" n( M& K ORG 000BH: Q2 x6 H9 Q( `; {8 Y
JMP INTT0/ Y' Q% V& r* Q+ \- c6 P
, @. U1 W5 q9 R$ y3 ]2 w. d ORG 001BH
( I w/ C# p( b- m5 o% t5 F SETB P1.50 P" u$ N" F) u4 X3 N
JMP INTR
) r& |; d/ E! F3 ySTART: CLR P3.7
2 J2 N; T4 {* ]# L& m0 A CLR P1.4
- h0 L1 R2 p9 c# ?/ @9 j CLR P1.39 x' Q/ t, x+ R7 ?! y
MOV SP,#60H
. L1 M/ R2 `$ I$ t+ K CLR P1.5) f/ G5 h \- t% I! G, ?5 G
MOV R6,#50+ u- R; z2 }3 Q5 L z3 Z7 E7 x
CALL DELLAY# y; y0 S0 E j+ U! u% z$ @0 w
SETB P1.5% C0 Y! M. H7 }8 m: f' B
CALL READIIC
7 m. k3 w- |) Z! U$ I MOV 50H,A2 x8 r) Z1 I1 @4 Z% u/ ]) t
SUBB A,#189
6 K* A O/ b \' H2 l JC NORMAL
, f. {+ c; a; w) P6 U; j6 k MOV A,#120
% r. [3 ]7 l$ d9 Y MOV 50H,A9 s3 t6 o0 ~. \0 b& b
NORMAL: MOV A,50H
3 `: S5 ?5 @% X' I-----------------------------------5 H& O- j& D* O3 h8 x7 ?
渐进式启动软件,保密+ h* \. C. u B9 v
-------------CALL SENDCS
" j6 w5 G* q' ]: S MOV TMOD,#61H; r& x2 m3 c( I# T6 C) p
MOV TH1,#0FFH
5 p4 p7 d, m/ D9 R& W! a MOV TL1,#0FFH! @" ?) Z6 x. ?0 Q5 |( W4 P
SETB ET10 o0 i# }) w+ s
SETB ET0/ m2 i9 R) K0 ^6 E. V0 L! _
SETB EA! z: m. f# z0 N9 ~$ \7 V
SETB TR1% H/ d! o6 c/ x. W& [
L7: JB P1.1,$
8 P) _3 C& ?8 u# V% A& ]( r CALL RC+ H8 e) }2 X) D v& K( m. l
JZ L71 Q9 \' m/ @9 o { {
MOV 50H,A# V0 Y5 h" L2 j8 U8 M7 U
CALL SENDCS
+ a& N# C+ J; p4 v t! T SETB P3.76 z9 I0 D' [+ C" x; S+ c, o
CLR P1.0, {) N" I9 _% G% d8 v
MOV R1,#3
& | X) _0 d# U1 I5 D+ f+ C4 y8 q MOV R2,#3" i5 K* _# `& l1 | e5 R! R" K0 V4 o$ |
MOV TH0,#00H
5 E0 P) N! Y0 l- q o- S4 |5 g MOV TL0,#00H
; q9 Q, S) u, M6 R7 ^0 d S7 s SETB TR0% Z" t- j# b( w4 }6 n* `5 t+ U
JMP L7
C' ]: C# N5 j0 ~9 o3 j" l D7 _6 u) p x
INTT0: DJNZ R1,GOON# a: t: x6 b2 H
CPL P1.05 N ^* U' ^, m5 h+ p
MOV R1,#3
, V3 [/ I; r" V! O DJNZ R2,GOON
7 E% p' u' o' ]1 S CLR TR0
j5 d) I$ g" ~( q; A, l JNB P1.5,MU3 ^3 b1 D9 \( w; \& y$ [1 f: S P
CLR P3.7
9 l7 z5 A- C/ d; o* i3 z2 I$ ^ SETB P1.0
' z* | o/ {7 X5 p PUSH ACC9 z2 T7 K9 q6 G! o' K$ Y: T: h
MOV A,50H
" @; ]( o. s# w9 _9 ` CALL WRITEIIC7 {5 ]3 C& l! d* t
POP ACC+ A' x/ D+ ^# M0 _/ S
RETI
' c+ x* }, I5 k3 R) ?9 XMU: CLR P1.0 ;MUTE红灯亮7 h P+ v! ]: G, M4 n
SETB P3.71 A6 Z* N7 _; r- c8 ?$ q2 I9 A
PUSH ACC8 F p$ H4 ]6 e+ [
MOV A,50H \0 u/ v+ L7 d# L0 N9 \( d* |4 Y
CALL WRITEIIC
7 @ f7 x) o, `) _ POP ACC
0 x( O& i# M( c; O( \* ^! rGOON: RETI
! k: }! D4 X1 N: e0 f! e6 J% T
! d P* M+ {. G0 F9 sINTR: JB P3.4,DEVOL" ` }% R' v/ ~
MOV A,50H
3 l, c) l& J6 g: p. r/ T& H" j CJNE A,#10111101B,ADDVOL5 j2 @! y- |0 b. U
JMP RETIINTR
) z% V$ E2 m! B- D1 y& HADDVOL: CJNE A,#00000001B,NO1
2 E' H- S( l5 d3 p MOV A,#00000011B1 r- Y% I! k6 @* C/ U
MOV 50H,A
+ |8 G$ Y4 U2 r' g CALL SENDCS+ b+ C t0 r; T; d" m4 _
JMP RETIINTR! l: ]3 D9 Y6 b W
NO1: INC A
1 Q- U E; r T& R: g( g+ M6 A INC A7 l; z7 k; {7 \, v2 {6 h# o
INC A
' c% Y! e" a/ ^1 \ MOV 50H,A
- P2 t+ `( |0 O) v CALL SENDCS; _( m( D& D3 M' _$ F0 F
JMP RETIINTR
+ z4 h% c5 a% Z3 N5 ]DEVOL: MOV A,50H$ y- y8 O1 S' O
CJNE A,#00000001B,DECRVOL
6 |$ J7 m2 I9 b( Y JMP RETIINTR
* J9 a0 n" W+ ~9 o5 \7 ~# N2 n1 TDECRVOL: CJNE A,#00000011B,NO3; R' W7 x$ s3 s# I; S/ ?/ d8 Z
MOV A,#00000001B
# T9 Q3 Q& s" E9 ]: T; i2 {' ` MOV 50H,A& [1 U, h" C. o* ^! S- i
CALL SENDCS" x# c, J$ }% Y: D; R( e
JMP RETIINTR
9 }; ^1 q) V4 }8 `2 w5 p8 M8 uNO3: DEC A7 e4 F" l# |6 {, g4 D
DEC A# j* t2 I C: f2 }/ Y8 G( j7 e
DEC A A$ e2 r1 E; V2 J# \
MOV 50H,A
( ?$ o3 C [+ {6 k/ Q* W8 v: J7 \% z2 ^ CALL SENDCS* \, a/ Y( B* {
RETIINTR: SETB P3.74 j" j0 l% A8 D; R' f8 M+ g, h8 ]
CLR P1.0
7 ]4 W' n$ t. ~1 y6 V5 W0 U% k MOV R1,#3
, w5 G" N% }+ s% U9 [. i MOV R2,#3
^4 V9 \# D3 X( l' [ MOV TH0,#00H H0 E; C# G5 ?
MOV TL0,#00H
/ r0 T' w, _5 F h& w! m1 {8 W SETB TR0) N4 m+ Y& `0 k0 M
RETI
, s& X# n% B" d( G! [2 jWRITEIIC: MOV A,#10100000B ;将50H单元的数据存EEPROM$ q! J% t0 @3 o& c
CALL STARTIIC% a/ W. q& e9 @) _( h s
CALL SENDIIC! y4 X. u0 Y7 x" Z/ s* O
SETB SCL. `: J1 s8 @* D7 ]) `7 }
MOV C,SDA
% h! H# J" {8 r2 [9 w JC WRITEIIC- _" M8 F# X, G; o$ n Q! \' H
CLR SCL0 J( N1 |7 b' ~" ]: R9 t
MOV A,#11000000B ;存在11000000B单元0 V0 K6 Q/ t8 O, S
CALL SENDIIC
7 @" p8 {' Q7 p- [* _/ [# [ SETB SCL: T1 Y) a4 g0 c3 I$ M
MOV C,SDA
: J' O; a& K& |/ J# O8 H JC WRITEIIC
4 V; z x8 f- C0 y2 U0 \: G' b1 L CLR SCL$ ]! A' N4 Z0 v, W$ A
MOV A,50H
9 S$ Z& ^ I, u# |4 K4 c CALL SENDIIC, r! [4 }% X4 v
SETB SCL
7 u: g# J5 ]: i% ] C MOV C,SDA" X- Q" W, Y9 A/ A
JC WRITEIIC
+ ~* v. i; ], a" C2 E0 @& v5 ] CLR SCL
" F; F5 v: e6 [, O) }% m8 c8 m CALL ENDIIC. T+ E! ~# n/ g1 A- a% H
RET9 B. i8 E; q- n4 N& M" t5 @4 R- M
READIIC: MOV A,#10100000B ;读数据到A. P7 L$ h3 ^& l& {) W
CALL STARTIIC
6 Z+ b7 j- ~( _" {' P" d0 u CALL SENDIIC' Q! H. L1 W" ^3 n0 Y
SETB SCL, k8 v9 D `" d
MOV C,SDA
: N" s& D; z( A; n; K, x JC READIIC
( b B% r1 n7 P# k2 n# d: M CLR SCL
8 W. I p& c; X4 s$ z, N# V MOV A,#11000000B ;读11000000B单元
* K( ~$ E/ O6 u+ |0 G4 k3 E' ` CALL SENDIIC/ l4 Q1 [3 h0 K- L Q5 Q. u
SETB SCL# Y* _/ f8 j8 N7 P/ K* ~0 h
MOV C,SDA9 G/ {% L: {' F9 }2 Q" \
JC READIIC1 S9 ]# |4 ` ?3 }# v* V
CLR SCL
. q7 h( }! u6 W0 y CALL STARTIIC& A9 }# b" W- k! x2 c/ C% D
MOV A,#10100001B
+ g: W, c2 e: w0 ~ CALL SENDIIC
$ X( W( X" [/ v4 y SETB SCL
( B7 V$ e; L/ q& E$ F/ w MOV C,SDA' k* x& B) }; v$ u, p) R
JC READIIC- }2 R2 K6 i) L# N) A
MOV R7,#8
! j L: X1 }! X+ {' P; h4 cREADIICBIT: CLR SCL( Z* Y/ A) { K* z/ \: u
NOP+ F0 U+ T5 n V3 O, \
SETB SCL6 U, w: D1 Z/ O8 R
MOV C,SDA
; _$ C) E- U1 w7 r( s RLC A
4 G. H. Y A' [ H; S1 c DJNZ R7,READIICBIT
6 B% m8 e; p2 N! v1 y; a CLR SCL7 e& C1 d1 V+ g# M, h9 Y0 |
NOP9 u( O+ @0 t1 G' c. {9 Z. T
SETB SCL
: i& e! E0 @; x: }9 f NOP0 W+ H5 \% S/ x$ @6 ?( N5 w/ G8 [8 j
CLR SCL5 D" f; ]8 X8 {9 ?, a" N
CALL ENDIIC
# ?- p }) T9 M% p8 K RET/ _% z. `& I* a
STARTIIC: SETB SDA4 ^" U9 K( w0 k+ W- j4 D j
SETB SCL
- C* s+ ^3 J7 s. G+ q/ x5 I NOP
& q- I. E! g+ g2 d2 @7 ^ CLR SDA
; m! g3 K' `9 q& d NOP
- \* N. f2 d5 E+ j/ W CLR SCL$ O4 p2 U- W/ ^: ]. U# |
RET
8 H+ K. D4 ^& w7 lENDIIC: CLR SDA
@4 C) c' i8 Z" t NOP3 N0 f2 s \; A1 T7 h+ e9 O
SETB SCL7 ~1 S+ ^- l. x' g0 {7 \+ l
NOP3 r5 W! A, `. g S/ o, R2 Z
SETB SDA/ N1 b9 e! d6 R% H' X
RET- R5 U, S1 L& ^
SENDIIC: MOV R7,#8 ;发送A的内容9 i( m: q% l( r7 F
LOOPIIC: RLC A
5 I6 _1 F/ D: T1 {4 {$ Z7 |) Z MOV SDA,C
* @$ A- v: e; R5 K% U0 m SETB SCL
* |) L) N6 ^) o$ ] NOP5 U2 q$ p5 _7 j/ X
CLR SCL
: X4 q9 h$ x$ H* h3 E8 e. B' x DJNZ R7,LOOPIIC
& j( s8 |1 I- r SETB SDA
( G8 ~% D# K' y8 B5 F" |* B RET- C% d+ p; Y+ x* O6 R* n
RC : MOV R0,#30H ;遥控接收子程序
4 y& I# R0 Q3 ^/ K* b% N: O MOV R5,#9
% G4 W4 H, r0 z& O1 x' M9 c; sL1: MOV R6,#16; o9 N; J2 `6 ~* C) L
CALL DELLAY
0 | U$ ?/ C" Z+ K4 D7 A JB P1.1,OUT; H3 I8 \# z/ a* I' F% V( r5 {/ i
DJNZ R5,L1
9 |/ Y/ M: b2 W* x+ v! G JNB P1.1,$
% {- r. t0 B# u. C K2 a MOV R5,#5
O9 G9 |/ `! A2 A+ {/ b* XL2: MOV R6,#15. ?7 i7 j; G+ A$ b2 i, N3 _
CALL DELLAY1 T4 k+ w: L9 I |$ M! d& Z+ i
JNB P1.1,OUT0 X. n' P; C! j
DJNZ R5,L2
4 Q+ H: |0 f! i MOV R6,#11
8 [. ]* ~) t* x% [: Y$ ` CALL DELLAY 0 o( X# Y/ j6 S4 M- y
MOV R3,#8; |: `/ T, ^& B, Q) X
READBYTE: MOV R4,#8
% Z z- M2 e# M' bREADBIT: JNB P1.1,$, a# C3 c3 K7 L; q9 n- {' n
MOV R6,#17
/ M b' ]" I+ M. x" q: t2 W CALL DELLAY# `% x1 e6 @0 B2 ^
MOV C,P1.1
# O* u e& i# V2 H' v0 y. |4 Z JNC ZERO
4 @+ D6 ~. Q) d P$ j8 t0 I MOV R6,#22 k$ H6 U, V6 D5 L8 W
CALL DELLAY# W, O5 k6 }7 _+ ~* K+ p7 i5 l
ZERO: RRC A
3 T+ a1 a# B, j5 L# U* V DJNZ R4,READBIT
# b& x: R1 y; l) G MOV @R0,A
5 {; o6 }# @: q( M5 F7 _ INC R0
# |( z8 b# v" Q( ?$ v5 ]! L DJNZ R3,READBYTE
5 N2 h+ R4 j8 X, p( i MOV R6,505 r7 c0 J* M. C% e/ ~' M( V! N0 y
CALL DELLAY
2 B U, @; a, I5 y& A7 W( D, Y1 S--------------------------------------------- . e+ J# b% W5 v! t% _$ H( F
---保密部分
/ d3 v6 z! A& G+ V! L6 U----------------------------------------------+ n$ S: e7 H/ O/ l9 n
RET
+ g9 `3 t$ ?% M$ b& _0 y3 \ $ I/ j6 {& a- ~. _) ^( i
DELLAY: MOV R7,#25
* j5 q, U/ i. M2 f3 P0 f DJNZ R7,$
2 D! a6 T. ~$ J/ v y, X DJNZ R6,DELLAY
1 ?4 e# ]& s$ j RET
* O; D; \* r% G. l% z+ ZSENDCS: CLR P1.2 ;将A的内容发送到CS3310 8 U! T- x! l" L7 v, o
MOV R5,#16, ]( `" [5 r0 N' H$ s- w) B
LOOPCS: MOV C,ACC.7
0 X7 Y" L" l3 S7 ^' U( \ MOV P1.3,C" X4 @' s5 Y/ i3 x
NOP
0 y( X; f, C- h. R, i4 g( r+ q9 E SETB P1.4
- E }) E6 ~4 v NOP
: Q1 B, v3 `. }& U* x CLR P1.42 c$ s! B7 x% m1 M
RL A* h% O/ L2 S; ~0 w
DJNZ R5,LOOPCS
* T1 b; i$ o5 h! ?* `# R, p CLR P1.3% R4 C/ |4 T' |& ?6 c2 b% s( y
SETB P1.2 8 d0 g, b6 d6 s/ D/ K" o
RET
: J. \5 K% m8 t- J' P! G7 f END--------------------- |
|