|
本帖最后由 mgldjp 于 2010-1-19 22:02 编辑
, Y) i' T0 U& J& m, s# ]0 v4 G* d8 I
T200B关电源后开机不记忆音量,开机后总是一个很小的音量,用起来很不方便。我对t200b的音量控制电路软件、硬件进行了研究,修改了控制软件,实现了开机记忆音量功能。, L9 W( \7 X! B7 j9 ]9 p3 Q
首先说说我发现T200B软件的一些问题:
2 q, j6 w/ k! } \% H1.开机不记忆上次关机音量,这是最大的问题。
! ^% H, |% |8 q/ @( T2.开机没有对音量调整芯片AT89C2051。CS3310规格书明确要求上电开机mute脚要拉低,以实现CS3310内部补偿校正,T200B软件没有做这个工作。8 Y0 I) J# a" u8 c) s) T
3.音量设置有偏差,也就是即使每次设置同样的音量,音量大小会有三四个dB的误差,这是我通过示波器观察单片机设置CS3310的波形时发现的,这是软件算法不准确造成的。不过听觉一般感觉不到。
* T$ M% e6 B0 y- d6 i& n" {' i4 D2 J4。禁音时音箱灯没有禁音警示。
* I1 m3 Y: K/ v/ i$ j. `9 X+ \- h* `" F
由T200B音量控制电路图可见,实现音量记忆其实是很容易实现的,因为电路中有24C02,24C02是个EEPROM,断电记忆数据的。可以把音量信息存在24C02中,开机时再读出来。AT89C2051是个阉割版的51单片机,用来控制CS3310,遥控解码,步进电位器控制等功能,软件也就在这个芯片里面。我修改了AT89C2051的软件,在以下方面进行了优化:
3 u$ _& U8 ]6 n. F& v! e1。记忆音量开机。开机时读取24C02中存储的上次关机音量数据,并按上次关机时的音量设置音箱。
! x$ L! D4 t0 B$ Q$ e: F* h: ]2.开机CS3310内部补偿校正,也就是使MUTE脚拉低2.5ms( c& i D- B, P
3.改进音量控制算法,实现每次都精确控制。
/ j( G9 g. g. }. y4禁音时指示灯变为红色,提示为禁音状态。
Z. i- b* b+ S. H7 T# y V T+ h5。渐进式启动,保护扬声器。由于记忆音量,可能开机音量会很大,所以开机时单片机控制CS3310音量渐增到记忆的音量,不是一步到位,这个过程为1S.如果记忆音量为63则以40音量启动。
$ B% O: d1 I( _2 T; Y/ N) l2 ?, C! J! S; Z" y( F
本修改不需要该硬件。附图为T200B中的AT89C2051照片,它是有插座的,可以随便拔下来,烧写新软件就可以了。如果要保留以前的软件,直接重新买一块AT89C2051烧写就可以了。要用回老软件就直接换回原来的AT89C2051。由于t200b上没有封条,拆了惠威也不知道,所以不影响质保。本人出售修改好的单片机芯片,qq150352134淘宝连接:7 S5 e" W2 P' y8 u7 W" |- w# [
http://item.taobao.com/auction/item_detail.jhtml?x_id=0db1&item_id=4e3e5a99867fa22202d510e2ead65442- T. v+ g6 w2 |8 y/ V
# D! s3 M5 j4 Z' }. X
+ o' ^5 C3 A. l. l# U6 C* P9 K' X9 J( U
; t3 B3 f% k7 A I& @; I5 R
) d* r$ D8 p$ E8 L$ ?: `+ Z$ Z$ @; k- [. h& ~9 L
下面是汇编程序: ) w' G4 t3 A4 h# ?4 } i; ~0 k
SDA BIT P1.6$ `4 Y w' c( e
SCL BIT P1.7
9 I% Q8 [/ C8 O" [7 @ ORG 0000H
4 P4 k1 @$ N* x- K JMP START
% F& B; S u% y' ~: m. [ ORG 000BH
$ j; ^" H8 Z m1 p* t2 N JMP INTT0
' r7 C( T4 c2 G X
( _* |3 h2 Q2 h0 w. A ORG 001BH" P& m' z8 j8 I! Q1 D( G0 C$ B/ u" J
SETB P1.5, v5 @" r8 n4 c* Y4 q0 x" w
JMP INTR, B2 k3 ~6 f/ X
START: CLR P3.7
: [7 w1 Q' g( L- P8 q CLR P1.4
& z# M9 P6 g% _+ | ?" y8 s/ V CLR P1.3
0 K9 U5 x1 G) }, v6 d+ C MOV SP,#60H
6 p6 p* G) |0 p: d- z* I CLR P1.5" f% z2 E% H: r5 r. g1 B& p
MOV R6,#50
/ F4 m; z2 c2 Y$ B/ d CALL DELLAY; W0 p+ [) Q! M2 t9 {+ u
SETB P1.5$ l6 y, [& k+ k" n: ]0 w4 Z6 ]
CALL READIIC
6 a9 _/ P) S! r2 t4 L MOV 50H,A" v1 d8 H$ P3 J$ ?
SUBB A,#189
2 h/ r; u7 Q/ R$ { JC NORMAL * i9 ^, W; C0 ^* G6 j9 I# A f M
MOV A,#1206 f% C, r+ f5 t$ C" \- B* Y
MOV 50H,A8 n; c- ^1 l% s6 N7 T4 C$ S
NORMAL: MOV A,50H' N7 a! K; z0 C5 d( O
-----------------------------------6 n {, ^7 V' C, m$ c& ~4 V
渐进式启动软件,保密) ?4 M B, _( w; ^. P& z( G7 \
-------------CALL SENDCS9 ]' G4 z' u8 x0 X& j
MOV TMOD,#61H
L- D( w* W% e# c( ?$ Y MOV TH1,#0FFH
/ b2 G& V" _) v: a3 d MOV TL1,#0FFH& @2 t! A$ `& S# l! {0 m7 E
SETB ET1- W; {3 Q/ k/ X, r
SETB ET0& `/ y" b+ v3 W3 K) c
SETB EA
' C: T, ?4 o2 w: U, C SETB TR1
8 a0 H: H+ L& L7 _) W* aL7: JB P1.1,$/ S3 y, M" O4 P L% U: y3 I
CALL RC
# w! X1 l# |; m/ n# c9 u2 X& ^5 V JZ L7( f6 O- n3 \5 x3 m
MOV 50H,A
% W& M. n* v; Y1 A, ]4 r, l CALL SENDCS
4 P# n6 h0 B( c! q SETB P3.7
Q& a. U- K" f& `0 T! Z; |. ] CLR P1.0, x2 q+ X( i( W! M2 u' L2 V) T
MOV R1,#3
$ P5 M. } u* ?$ n/ q9 n3 ] MOV R2,#3
5 {. E+ Y$ F- s# X6 @ MOV TH0,#00H
/ L$ h0 R1 t) D' d8 r! \5 j MOV TL0,#00H
* v0 u9 Y: k$ ~. ], c SETB TR0
8 y- _" J1 @* a: L JMP L7
6 [$ f% E( _* Q8 X' e* ^9 |8 q/ d0 G' \1 s
INTT0: DJNZ R1,GOON
4 d' c: `. Y) T" S CPL P1.0; i% L* Y! |2 f4 s0 ]1 k7 ^
MOV R1,#3
1 O# T- Q O6 k3 Y1 u# @ DJNZ R2,GOON
# K* `6 e! `; h( y2 j- d CLR TR01 u, R! T1 y/ t! P; q6 Z* e! S
JNB P1.5,MU
& q' s- H) O! M+ _ CLR P3.7
; }3 X0 M- ?: k( S( u' Q SETB P1.04 W' g# C7 s0 T5 t; E
PUSH ACC
1 X) ~% `2 i" I2 f( Q$ D! X MOV A,50H
/ z' ?6 _; _0 V6 j. u4 ?4 m CALL WRITEIIC- J8 Q1 r6 `) y0 ~% R3 p! H+ j
POP ACC9 O& z( l, J- _" t- I. a3 b7 o
RETI: d, ]" X$ d+ [, o/ D3 v5 b
MU: CLR P1.0 ;MUTE红灯亮
$ X# D6 ?3 K$ R+ R1 i SETB P3.7! x( ~ b, [5 V: W+ w
PUSH ACC2 I0 z( T1 F0 b; h, c+ j b) C
MOV A,50H
0 ~* A, k* b+ s+ M CALL WRITEIIC
z- l/ `9 h! n4 Y7 \0 P POP ACC) n' V' y/ {7 O7 z" p7 ]6 b/ n$ K
GOON: RETI, t& | b; S A1 C
: @4 l: p. N. C/ l: t- A; ]
INTR: JB P3.4,DEVOL
$ T7 r2 m' `+ g& O% E) { v MOV A,50H
0 Z0 a( h- ]4 F8 B! { b CJNE A,#10111101B,ADDVOL( s$ y/ @: I: P. @6 k; v( K
JMP RETIINTR5 i: J, \! ~* t& V* E
ADDVOL: CJNE A,#00000001B,NO1
& w# ]! l3 F6 D MOV A,#00000011B
8 }. X$ x; J/ Y6 N3 U MOV 50H,A' M1 Y) D( ^) N6 _+ k+ z# `
CALL SENDCS
1 t0 h- a4 {; Z4 M JMP RETIINTR
% A4 g* ]+ K) U7 p! B2 TNO1: INC A# Y& D; ?! a1 T) d! A
INC A
/ s9 }5 J% P3 T INC A
; Z! N" @/ s: p; E MOV 50H,A) e, z% o# s4 J$ {
CALL SENDCS6 B! T" r( f" h+ t6 F! r. D
JMP RETIINTR
I9 x1 U; i5 [5 e# TDEVOL: MOV A,50H( \9 O" S9 C( e" m# A6 w
CJNE A,#00000001B,DECRVOL; D1 M( V1 O7 k4 B8 G& H Z
JMP RETIINTR3 s* ?" f. l% e, ~' V$ ^; h
DECRVOL: CJNE A,#00000011B,NO3
7 x J. {' E/ L1 j4 K$ F MOV A,#00000001B% G0 l1 a; m: }: Q u
MOV 50H,A
5 q" E! `/ i% K7 M CALL SENDCS7 \' ^' f5 F e3 ?
JMP RETIINTR $ P8 ], T H, a6 q E1 p) p
NO3: DEC A& d& L0 c5 L, P2 Q
DEC A
! J! O+ \% K3 t! a DEC A" n9 h% M% k1 f8 Y
MOV 50H,A( o# {! z$ ~# W5 V* q
CALL SENDCS4 m) s! k' S# ~' q! T8 C
RETIINTR: SETB P3.7- s* i. E; c( G2 _& f- ~- f
CLR P1.0
, Q! G! M& U% {$ W) P% p' j MOV R1,#3
. J3 u! f# ^1 A2 X' d MOV R2,#3
2 Z {) r0 Y5 h, T MOV TH0,#00H
& G" a- p' m8 N9 x2 V MOV TL0,#00H. I' @( n4 v& A7 ?
SETB TR0
) @! N6 |7 R. ~. E; @ RETI2 N f) O, i, x8 w7 h
WRITEIIC: MOV A,#10100000B ;将50H单元的数据存EEPROM6 {$ O( I4 o! J* K
CALL STARTIIC
: D$ j. U6 m6 c/ F" d CALL SENDIIC
9 ]) r& F- u9 |9 { SETB SCL
; f; G1 x* a g* I R" M MOV C,SDA
$ p7 _0 m, K# T( m7 q+ b4 X6 W JC WRITEIIC* }/ G+ {; u$ X1 l( ]
CLR SCL: z* w4 R+ ~- i, {8 ]# g8 X% c
MOV A,#11000000B ;存在11000000B单元5 g L5 Y, H C% m9 J; ?, y
CALL SENDIIC
; b0 s- B. `: e( }3 E SETB SCL; n. B1 z" g) N
MOV C,SDA
8 o- u0 M( W9 c* b+ S) y JC WRITEIIC
6 f2 ], O: h( |8 Y+ G. C CLR SCL3 |: F: x( E Y7 c8 |& m3 J5 R
MOV A,50H, x8 D0 S6 F, R
CALL SENDIIC
+ C2 |/ k+ d( ^0 ~* g SETB SCL
' x$ ?& T: [- L MOV C,SDA
" N5 I4 f8 V4 Y# @7 }* O) P JC WRITEIIC
- I. P& V5 g% B K2 s CLR SCL8 f' T. j6 A# \; y! b
CALL ENDIIC K) {( x d6 w7 j3 t" G4 n( ~/ l
RET
1 z" G& ?) [1 JREADIIC: MOV A,#10100000B ;读数据到A G1 E# g" X4 o- t1 b% X
CALL STARTIIC
% K# q+ J: }9 k8 ?/ p( g2 U) l CALL SENDIIC
$ p2 [6 l3 x* M% B/ N& `: L8 B" Q1 m SETB SCL) w& ~3 Q) M" X: v+ }
MOV C,SDA
2 U. H. Q# h9 v JC READIIC
. T1 \) R+ ~; @8 [0 r" S CLR SCL. R) d7 M6 n+ G( `
MOV A,#11000000B ;读11000000B单元$ T' {9 Z& A; i+ J: S D
CALL SENDIIC
/ G; w# }" W" A3 R" \! `1 s SETB SCL
% {& m* C7 J7 ^6 r! f+ ^$ a5 c1 f3 O MOV C,SDA
! A0 ?) n' p7 N* t- j6 e+ a6 Q JC READIIC
. r5 \9 X$ _# F2 W& C CLR SCL
) f* F) m; a9 P" r v$ v& L CALL STARTIIC8 e# j' {# B! f3 I
MOV A,#10100001B
4 T) {+ |& C( j0 X! W CALL SENDIIC) V* c# W) [" n3 F
SETB SCL
7 @% M0 i( ^( m$ u3 [ MOV C,SDA4 d- h0 p# P1 x9 M4 ~0 t1 C
JC READIIC
) K6 \- D, U0 J MOV R7,#89 n* C, {* ^- A4 x* N& t. f
READIICBIT: CLR SCL" r5 k }8 r) E% g, J0 ^3 [# W
NOP
0 @( t$ j; {& R& u% V SETB SCL
% d4 A3 t, {8 I. Z4 v I/ q MOV C,SDA
2 t! w: M4 c- [* Y RLC A 7 D& U" \ v+ q8 ~" W4 x% H
DJNZ R7,READIICBIT
2 a, _$ S' I& ]+ ?" C8 k6 V CLR SCL
% W8 V! l4 C7 S% R( g" G NOP P3 d! K. c i4 A' P7 t) e
SETB SCL
$ V& b2 t+ p/ [+ ` NOP
3 E7 m* E) R9 t+ x" ~ CLR SCL
4 Q- s* w( v- N% v: ?( m+ G CALL ENDIIC
# J9 R: V+ P# c' |) v( P6 O$ D RET5 J1 J9 ?/ x2 b3 N8 h3 e# J+ l
STARTIIC: SETB SDA- P7 F& Z- e% l6 }; ?
SETB SCL
; g. e! X2 p% Q" \9 g2 C; x* ^ NOP
& V6 _$ ` x0 w/ z% p; N CLR SDA
* S/ R( _2 E3 ?% L) |+ i' V, f NOP
& N( N0 ], L$ R# S8 o CLR SCL) w& T& F r1 Z G9 Y$ _9 ]5 a
RET/ H& _; _! C: \! R7 V
ENDIIC: CLR SDA& h, n, _% j+ [0 Q# |; h
NOP$ ?1 T% o8 E D. \& W6 p7 |
SETB SCL
; _# `. k. b4 n; N3 } NOP+ d1 y4 m0 n4 ^4 P8 o+ W+ s
SETB SDA
% b' I) Q& n \1 V RET
5 e' ~( }0 U p5 Z( E/ |SENDIIC: MOV R7,#8 ;发送A的内容8 A" f6 e& {2 I2 L3 b" G5 D+ w" i
LOOPIIC: RLC A
) `: f. R4 O) `8 o% G. t C MOV SDA,C
, p6 f0 p" E9 T) q2 }) J/ g* p SETB SCL' B& v5 u# ?" a' @
NOP
! B. ^: F6 z. B+ A2 T( F) V CLR SCL/ w, A$ h) C6 Q. r6 R
DJNZ R7,LOOPIIC
& s6 \+ C7 f; F7 w SETB SDA
) s; x% M# I6 ^2 k RET
& w+ O6 @/ x( mRC : MOV R0,#30H ;遥控接收子程序/ w8 P" S% y6 K8 b R
MOV R5,#9/ O K9 S, T+ o1 v/ `
L1: MOV R6,#16
/ }$ I) M) k+ \* i CALL DELLAY; R% h3 w# h* D; J9 a* }
JB P1.1,OUT0 p; C' S6 e/ T2 x8 ]. N9 v9 x7 R
DJNZ R5,L1 # x( Y( ^% \, q3 b! G
JNB P1.1,$# ~" _7 I7 g6 f4 R
MOV R5,#55 y5 r! t0 u, c1 m' w
L2: MOV R6,#15
1 o' p: j. C$ T5 O H j5 \ CALL DELLAY
; r: z! n* r, k$ J; O JNB P1.1,OUT
6 ]) G! @. U0 ^" b6 Q DJNZ R5,L2
# w1 ^( ^! V, y MOV R6,#11$ y- x5 Z+ k/ H9 F+ Y1 y3 v5 G
CALL DELLAY
- J. i' i3 ~. x1 k& C MOV R3,#8
( }- s/ `3 c9 L# rREADBYTE: MOV R4,#89 F4 U& b3 w( N& _% }! m
READBIT: JNB P1.1,$4 }0 a: V7 Q* \) p9 ]$ A
MOV R6,#17% W# v6 N; K2 n+ h9 I
CALL DELLAY
* ?8 o+ G6 i; {! ^ ^3 j" B+ e2 X* ? MOV C,P1.1
% ^$ J3 ~0 a* n% R+ i' ~ w JNC ZERO2 B; W# F4 L/ Q5 I7 O# _
MOV R6,#224 k8 o7 ?7 b: q. y! a- j$ Q2 ]
CALL DELLAY2 s- x5 p4 U+ _) z$ X
ZERO: RRC A
6 p* `4 s! u* ?9 O/ [ DJNZ R4,READBIT0 m3 X- H" E- P/ z O1 N/ I
MOV @R0,A
2 C% q( U X' ?9 \ INC R0; Q$ p" [* ]" p) s
DJNZ R3,READBYTE
! H+ m$ g3 ~7 D9 B& k; t MOV R6,50
0 |5 |. p% W0 i: A3 y4 i) E2 z CALL DELLAY
" j8 p4 r+ Q$ N: v% H6 I--------------------------------------------- 0 g1 Z1 Z9 F: p9 h6 C; d
---保密部分* k+ b- e( q% r0 \7 z
----------------------------------------------
: Y4 |9 P0 p3 a9 u RET
+ z# W- {- U+ z- B8 W
5 @7 L \4 U6 L& f4 aDELLAY: MOV R7,#25 . W. X D, L6 v7 ?) p! r) W' y
DJNZ R7,$0 T7 D9 L8 {6 `2 z5 N) q% N
DJNZ R6,DELLAY
4 X: f. L; n9 Y# P RET
5 `2 f% p# m0 I7 R0 QSENDCS: CLR P1.2 ;将A的内容发送到CS3310 4 I; p# u2 J. d# o; z" f6 }
MOV R5,#16
# | P w3 u* D# L- iLOOPCS: MOV C,ACC.7
. M- X5 G5 u. z& O% C MOV P1.3,C
+ U& L* V2 t) P7 e NOP
5 z9 ]+ u; d5 G6 p: C% {0 t8 L SETB P1.4
0 L5 H1 F4 x) T) ^5 |. ~ NOP* Q# H/ C: P6 ?$ Z6 K& D# q
CLR P1.4
- D- F* d: t1 F% X( T RL A0 L y9 C/ h. q d1 n$ C
DJNZ R5,LOOPCS
' l! a' r! x3 Z3 F& {7 { CLR P1.3 O5 G: z; N z; {# q; K Q0 v. v
SETB P1.2
, _( d( `- ^8 e' U& e6 w5 p RET5 I5 l5 @% q: \; q/ i1 U/ }
END--------------------- |
|