|
本帖最后由 mgldjp 于 2010-1-19 22:02 编辑
$ J& m3 G C4 Z$ I: T
* n- `" L( p( J) d! LT200B关电源后开机不记忆音量,开机后总是一个很小的音量,用起来很不方便。我对t200b的音量控制电路软件、硬件进行了研究,修改了控制软件,实现了开机记忆音量功能。
7 Q3 Y3 N7 W5 Y; F1 b/ {" R3 B# \$ q首先说说我发现T200B软件的一些问题:3 n0 y- ~ v* [5 G
1.开机不记忆上次关机音量,这是最大的问题。
' z: h8 e( b o( I& i0 ^' L2.开机没有对音量调整芯片AT89C2051。CS3310规格书明确要求上电开机mute脚要拉低,以实现CS3310内部补偿校正,T200B软件没有做这个工作。$ ~. D4 q% k/ J
3.音量设置有偏差,也就是即使每次设置同样的音量,音量大小会有三四个dB的误差,这是我通过示波器观察单片机设置CS3310的波形时发现的,这是软件算法不准确造成的。不过听觉一般感觉不到。5 P* B n, S: S% o1 H' f
4。禁音时音箱灯没有禁音警示。1 ?1 c8 u/ x) v! J! F5 N# }
( C8 ?4 H6 r0 y: e) S" ]0 }- ]由T200B音量控制电路图可见,实现音量记忆其实是很容易实现的,因为电路中有24C02,24C02是个EEPROM,断电记忆数据的。可以把音量信息存在24C02中,开机时再读出来。AT89C2051是个阉割版的51单片机,用来控制CS3310,遥控解码,步进电位器控制等功能,软件也就在这个芯片里面。我修改了AT89C2051的软件,在以下方面进行了优化:
3 P+ V" a, ^) L# V) y1。记忆音量开机。开机时读取24C02中存储的上次关机音量数据,并按上次关机时的音量设置音箱。
; l3 X! I; D9 P0 @# N9 u6 `/ b- M2.开机CS3310内部补偿校正,也就是使MUTE脚拉低2.5ms
2 m7 \9 z7 b8 k+ M" T8 J2 O# u$ f& t3.改进音量控制算法,实现每次都精确控制。7 e2 o1 m4 q5 m. O
4禁音时指示灯变为红色,提示为禁音状态。) A* e8 m8 m K$ N' l
5。渐进式启动,保护扬声器。由于记忆音量,可能开机音量会很大,所以开机时单片机控制CS3310音量渐增到记忆的音量,不是一步到位,这个过程为1S.如果记忆音量为63则以40音量启动。
f/ D: g, l5 d( a. c
& h. q( O" G; a- G本修改不需要该硬件。附图为T200B中的AT89C2051照片,它是有插座的,可以随便拔下来,烧写新软件就可以了。如果要保留以前的软件,直接重新买一块AT89C2051烧写就可以了。要用回老软件就直接换回原来的AT89C2051。由于t200b上没有封条,拆了惠威也不知道,所以不影响质保。本人出售修改好的单片机芯片,qq150352134淘宝连接:/ X. \/ i0 W# F9 ?6 {
http://item.taobao.com/auction/item_detail.jhtml?x_id=0db1&item_id=4e3e5a99867fa22202d510e2ead65442
2 X8 q) @8 r) m; }) r* v: w3 E: Z7 K5 {6 f( T+ Y) a
4 {5 {) R# O3 J7 K7 F- X! Y$ V6 E6 l% E4 }5 Z9 n5 p4 O
1 z2 t" O! P# b+ Y' t) j% n$ ?( V* k! Q2 ?
! Z& C& g2 L6 @. k% u* w
下面是汇编程序:
/ p4 X: h" Z I3 FSDA BIT P1.6
: p7 a( A8 ~! q" K r) I( y* J8 S SCL BIT P1.7
1 ^: F: }) g0 q ORG 0000H0 G4 H% A& T3 U" S) x W- O7 J2 w3 u6 b
JMP START
" D5 e7 `: o) ~1 _6 Z ORG 000BH
& M. H$ Q1 p, o JMP INTT0
+ R3 J6 i. k9 t; d$ {2 W' y R / D7 w( J/ i, s/ X5 z; Z
ORG 001BH
7 y7 _8 d+ L( `& v SETB P1.5" U; s9 P9 K1 Z3 ^/ J
JMP INTR
6 [/ M- n z& ?3 ?8 LSTART: CLR P3.7
+ z6 R, _! f/ J4 {- c CLR P1.4
* v/ X* Y1 h) d" f1 c CLR P1.3. M! [# k: D" M+ i& K5 r+ K
MOV SP,#60H& i- v7 l: a) Y
CLR P1.57 U; Q7 w, O- M: ~! |
MOV R6,#50: j7 r) E% b+ {2 f Q3 w) k+ H3 U3 B3 K7 Z
CALL DELLAY
; Y+ d# T0 _( O# d& ?- b3 A8 K SETB P1.5
$ q7 c# V% b$ p# a4 N CALL READIIC, w2 J. I+ S5 l, [9 s$ B3 Q
MOV 50H,A7 J1 ^3 I2 G+ S9 A% R
SUBB A,#189
' V1 S, H. w" }) K6 y JC NORMAL
7 L2 W; [1 }. j% W MOV A,#120
4 a9 B' w: D5 n6 N+ l9 m MOV 50H,A! v; j1 Z7 G5 u3 ^; ?0 }# f
NORMAL: MOV A,50H: Z/ V$ X$ ]) l$ G
-----------------------------------
1 d* t- E& g1 s a渐进式启动软件,保密4 F8 I, ~) x; ~4 S% L5 R' T7 u4 ^
-------------CALL SENDCS
# H) g2 h- ~2 ]. X/ Q" R% a MOV TMOD,#61H
. x, y0 Q* l) ^8 b5 X MOV TH1,#0FFH
+ ` s% n) p% q( B+ R MOV TL1,#0FFH1 v' p9 A$ `3 b. ?, w0 q& O7 b
SETB ET1% r& e5 } @+ u, b6 M1 t* j+ c: o; \
SETB ET0% ?9 G4 A6 s8 [7 e
SETB EA
( @, t' `$ C! \+ J SETB TR1: s5 [ l" G( w0 |, d4 H( ?1 B
L7: JB P1.1,$* H' L% O; d* T0 @7 w
CALL RC
6 Y6 Q( z7 S9 [ JZ L7
2 x5 f# y9 U g V MOV 50H,A: k" D0 I$ B0 C% q
CALL SENDCS
- e% x& e8 k# H SETB P3.7
: X. d- [- c/ U CLR P1.0
- g/ @2 _* W; p8 ^/ ?: N* Q MOV R1,#33 K8 G% ^2 {. f0 R# R: ]
MOV R2,#31 k% ~, j# z# Z
MOV TH0,#00H% w& c3 k0 l# `+ \4 F
MOV TL0,#00H/ m7 g; S1 F0 ?& I% N, Y( j( u! w
SETB TR08 p# Z2 X6 `: k
JMP L7
( h& A; S' r0 R/ O" T$ Q
3 y' O( @! G" A4 J0 Z7 j, Y/ L5 eINTT0: DJNZ R1,GOON& |3 [# |( x* ^) [' T3 h; g
CPL P1.0
* w) S5 c/ }) O2 u( H MOV R1,#3- f; w/ }2 o$ x, w# w0 K) U- o
DJNZ R2,GOON" R3 c ^& O$ W1 l7 u
CLR TR0
5 b# J' g p" b JNB P1.5,MU
8 w" l8 y; {7 P$ c e7 O CLR P3.72 ^: E/ p9 {8 k( G" G5 {/ w2 }& H
SETB P1.0
0 v$ G& p2 b- O" ^ PUSH ACC/ T8 t5 P, ]5 f. R5 X& Y. q
MOV A,50H
3 M$ B; a* W8 T) E5 A CALL WRITEIIC7 M4 u: s4 s0 ~' J: L9 |! k+ N" r
POP ACC: Q8 ~& r( r( t3 B4 M
RETI& r$ m; j6 ~6 A6 g1 ~
MU: CLR P1.0 ;MUTE红灯亮: a4 y) d+ Z% N# r( u" v
SETB P3.7
7 O9 P) S3 F6 p2 z: D2 Q; J$ o3 | PUSH ACC
4 U- R h! ?- ^! K( G, ?0 b" r i8 v6 r MOV A,50H( z6 ~' f+ j) y3 b; d
CALL WRITEIIC% h- e' q( k: |1 j% v- i; ?
POP ACC
9 B+ F- U( D+ u! z7 Z. @GOON: RETI! U( @4 t/ z9 J" A* T
- t4 k" Q! N' X: ?7 wINTR: JB P3.4,DEVOL! m$ I, \8 Y8 Z2 C% I9 H8 \
MOV A,50H
s5 U( l' {6 m5 G; @# v6 u$ g! e CJNE A,#10111101B,ADDVOL& u7 p5 P2 X7 y7 j ? `7 e; P
JMP RETIINTR
8 O% b$ s( c% C$ G; u }ADDVOL: CJNE A,#00000001B,NO1$ A2 |! Y8 Q/ w' m9 x
MOV A,#00000011B
8 p" I1 o3 ]9 ~5 ^ R( k* S MOV 50H,A+ \9 [' X6 {1 c, }
CALL SENDCS
/ B/ U" ^; P8 d; s& }6 E- x JMP RETIINTR
- z, z! |# D# p5 z/ c, ENO1: INC A! g l# I; n* t i
INC A& [9 p9 d9 y$ H& J
INC A
# ]1 c2 G; I% u5 m" @ MOV 50H,A
4 E3 [5 S/ B9 ~% ` CALL SENDCS& X; x$ @* c- v/ P& i
JMP RETIINTR5 C: Y4 M- g4 y
DEVOL: MOV A,50H9 t' E. }5 _! `6 V! d* @* q
CJNE A,#00000001B,DECRVOL; S' E F" o0 k5 m
JMP RETIINTR
6 s" g- V& K. t& k! ]7 n5 ]DECRVOL: CJNE A,#00000011B,NO3
: r4 z. [7 f2 U( x4 j9 D# [ MOV A,#00000001B
O, T. ]% T, q' T, t C2 N MOV 50H,A6 _! Y( A; P7 m$ ~5 `
CALL SENDCS
# u9 _" y) n: `0 q5 @1 w/ d* ]2 M JMP RETIINTR
! W$ S( r/ v1 q, v' O% lNO3: DEC A
5 a1 j: s, ^, C4 G$ f$ w DEC A0 l0 Y4 q# u% T9 E9 k
DEC A% K: ~. e1 k) a) a( j
MOV 50H,A8 U! I$ p# v3 w. O* K8 @/ D! x
CALL SENDCS
# z z8 `8 ]# G3 C6 U) A# ERETIINTR: SETB P3.7
) n# t3 t/ ^3 x# N* B" ~8 X9 b% U- g8 j' L CLR P1.0
# b: N/ ~$ `( Y) a, ^3 t MOV R1,#3
1 ~' i' |+ [5 r+ d7 `" y6 l MOV R2,#3" ^6 r2 [6 [7 Z' E8 |
MOV TH0,#00H! q( e* W( r" v' O$ S, U" l
MOV TL0,#00H
- q$ p) ~1 ?7 f SETB TR0( ^/ i! P0 X& U3 R) H) \+ d' g2 [& s7 l
RETI
6 I9 S: `+ `3 r JWRITEIIC: MOV A,#10100000B ;将50H单元的数据存EEPROM" ~" g% z: l& ^0 S$ w1 d: u; s
CALL STARTIIC2 K8 d( F% Q& Z3 b
CALL SENDIIC! ?0 r# P5 `; b8 S" h3 w5 K4 ?
SETB SCL
7 {% i& }( H2 M1 w5 u w$ U1 K MOV C,SDA* R; |+ z8 a* K. R2 e
JC WRITEIIC+ T7 l# H4 ?+ B- E6 {& @
CLR SCL D- J# r @4 G3 K6 N5 u
MOV A,#11000000B ;存在11000000B单元
2 J& i0 e# a, o) j9 ~ CALL SENDIIC6 p4 U, k0 l; @% K
SETB SCL
7 x. U2 X0 `7 R2 T5 I" `1 i MOV C,SDA
9 O4 |5 Q# I; { JC WRITEIIC; G3 c L: i6 \( t# a* C
CLR SCL
8 K/ V' e5 W! w% T MOV A,50H- a5 q1 E9 V% G
CALL SENDIIC% @/ i- G( r O7 i f7 g
SETB SCL
# _: N" p; j* Y% P$ Y" Z MOV C,SDA
! r0 H+ K) G% o; ^: q$ X JC WRITEIIC
/ s2 d1 V* n9 _* Y2 Q CLR SCL
8 O5 [" U& v7 P; C$ @ CALL ENDIIC
: r! m- d* V8 L0 Z, M4 ` RET
# {: [5 F4 { U3 H: X \READIIC: MOV A,#10100000B ;读数据到A
% G1 B X/ w; R CALL STARTIIC
( y3 n4 D V8 j' ?6 b+ s CALL SENDIIC
8 a" F$ a( S5 R SETB SCL
) O5 b* f: d/ Z6 f MOV C,SDA: O1 \+ u) q' V, a, R) @1 i3 B
JC READIIC3 i: \- D& P5 h5 E5 {! _# B/ m
CLR SCL( D$ S5 H' F; Z( A6 z' y
MOV A,#11000000B ;读11000000B单元
6 ^+ x9 P- @6 M6 K) C CALL SENDIIC/ \0 A- ]: x# Z* W* b, D3 p. l
SETB SCL
3 s# w% l9 V! v: k* ~! N7 H/ K MOV C,SDA
6 m( i! W# ^* s1 F+ ] JC READIIC& _' h/ g7 o0 H4 f7 j
CLR SCL
& ^' H. n! w" A6 I# q E CALL STARTIIC
7 w' _9 v: V) O( t. S( J$ F7 n" j6 F MOV A,#10100001B& ]8 L8 W2 o' J
CALL SENDIIC% x7 X6 O5 j% q6 x
SETB SCL
9 D; O+ H ^/ K4 l, M, S a MOV C,SDA
( ~( K/ _) l3 Q; k& s& |- t) _ JC READIIC7 g; j7 I* k e: E) w& M4 F! G
MOV R7,#8
1 C. ]( F v7 tREADIICBIT: CLR SCL
% n8 V2 O- k! |. W NOP9 K/ U& }! j; Z" u9 c' J; @
SETB SCL3 c6 d" f7 a. e# p
MOV C,SDA$ v" n6 d# m* \
RLC A " ?2 A/ A7 d, `5 Q1 j$ n
DJNZ R7,READIICBIT
7 g% o; w3 y" h3 \ CLR SCL y7 J+ g1 W8 ^- z( q& f3 A
NOP. U% Z, F+ K- `
SETB SCL% ]( @1 R, B2 A+ p
NOP9 @) L8 E: ^* @- T! a' W, t
CLR SCL
/ Q2 A4 n9 L/ g% Z CALL ENDIIC- Q6 S3 g7 T0 B% V
RET% W, Z3 G1 f+ r3 E: d
STARTIIC: SETB SDA- Z) ~* \- s( V
SETB SCL
( d C$ y' z0 X2 j NOP# N D4 A/ N6 M( I- r
CLR SDA, D* \1 z9 X% U+ |, n% M! Y
NOP I/ b& H9 o6 ^, s) n
CLR SCL2 {; _5 O7 I) s. z; S! t ?% F
RET) ~6 C6 p. c1 Q
ENDIIC: CLR SDA
n( C4 L" H& n+ K; S) w2 S2 d NOP
# M/ C- Z$ d+ K% J, a+ N, ]2 g SETB SCL2 b- U' q: c7 i, }
NOP- m2 @; e/ ^% W8 g, N$ r8 S4 c8 ^4 w
SETB SDA
3 ~8 z1 I: a% t0 ^2 p- c5 |% d RET$ n# s! s; z; f6 |' n2 D
SENDIIC: MOV R7,#8 ;发送A的内容
% l6 b1 ?: y u Q0 y6 kLOOPIIC: RLC A6 z$ m. N5 I& B
MOV SDA,C
, x. s; w! g4 G+ b+ g, ~6 u4 C j# Y SETB SCL
9 X H/ {: R1 e' n9 C& A+ Q+ h7 L NOP
3 Q L3 x- f; j8 G& Z CLR SCL
8 f, s3 O' j9 T6 G7 D DJNZ R7,LOOPIIC5 M p" J/ H; I. k
SETB SDA7 }+ p J. B+ J/ c& |0 E% B- [
RET: {! [' c3 p: L) K
RC : MOV R0,#30H ;遥控接收子程序
% \) K$ M- b" K' e6 U MOV R5,#9
( J7 F+ u2 s. ^5 t9 t6 B7 uL1: MOV R6,#16
) C7 g7 e% c7 w$ a" b CALL DELLAY
8 U: D& `0 S# x; M& _ JB P1.1,OUT
3 d! I, i' r$ O: V* W& b0 P DJNZ R5,L1 $ A k3 l/ W* }, q( S+ b8 d
JNB P1.1,$
6 T2 M- ^$ Y8 G. v# v$ U MOV R5,#5
2 w4 X. T e2 ^ l xL2: MOV R6,#15
3 }- z2 y9 y' D CALL DELLAY, u- r. R8 z& i4 H7 ^+ L' \
JNB P1.1,OUT
) I- T6 T3 B0 d' ?9 V DJNZ R5,L2 8 j& J; y( P; S1 j! h
MOV R6,#114 C, H& C; T& s9 _7 K8 R& e
CALL DELLAY : Q4 M6 W% ]' z1 C, H
MOV R3,#86 T* f: {* _2 c% a7 {
READBYTE: MOV R4,#8
5 p3 a& K2 I% M; qREADBIT: JNB P1.1,$; ]% J/ C% w2 |7 E5 \& [
MOV R6,#17& y. h1 t0 l8 n0 | ~* j3 j$ I
CALL DELLAY
- K6 u3 o V) u6 [4 X MOV C,P1.1- z: F1 K7 j9 h K3 o& I/ L
JNC ZERO3 h6 @; s8 R$ `
MOV R6,#22& }1 s, x. Z9 l: V. U9 I5 d* }' q2 m
CALL DELLAY
2 q2 `# `" y& r S$ z) ^# p: QZERO: RRC A
0 o( r: V1 S% k. P7 Z1 n$ g DJNZ R4,READBIT2 B' Z I! D* V$ Z5 K
MOV @R0,A# q. o+ c4 N7 F( N
INC R0+ u( r' a) a6 X2 g& T1 @% p
DJNZ R3,READBYTE' \/ O" f1 Y3 }, y. n7 a8 F
MOV R6,50
) h% U( Q7 n0 k* q# R CALL DELLAY $ @; e. _ p8 _; D' {3 |. I
---------------------------------------------
7 _2 g$ }/ P# `6 K8 V! w" k4 }---保密部分
9 [9 V0 w& X! }: n8 H' X: P$ |----------------------------------------------3 B/ i$ I {6 ]/ Y- G9 F6 Z5 r
RET
2 Y# Q. R! B* z& a& x3 z
R; Q. B& ^7 W/ `DELLAY: MOV R7,#25 $ m3 L% @, d- H3 v/ N
DJNZ R7,$
$ p+ B& p; S( L: w# Q5 }( [5 v0 X DJNZ R6,DELLAY, H5 ~ d& [$ S0 n
RET
: Q; y6 B' A7 }3 t, i& K+ |SENDCS: CLR P1.2 ;将A的内容发送到CS3310 % z) E3 O+ }5 J; |8 U
MOV R5,#16
3 {; u1 g1 r2 }- @- u" H, bLOOPCS: MOV C,ACC.7% w4 E$ \, q) d% c' N7 I% w; J5 q
MOV P1.3,C0 U/ W+ V. X! B5 I2 p
NOP
3 G5 f: W1 R; b; W7 K SETB P1.40 w7 j0 k# N X. W# v
NOP: G& G& U. L: {
CLR P1.4
# R4 R8 P! P* v; ?7 f0 k4 {0 G! n RL A
5 y+ v9 q. R7 {0 ]% y% q1 ? DJNZ R5,LOOPCS
/ p# B: q) Q @* W CLR P1.3
7 ~7 J2 H4 q7 R; U% H* P* w4 j SETB P1.2 2 M2 f; z p( \- Q6 G
RET7 [# F( Y; o( O! v) p b
END--------------------- |
|