维修网

 找回密码
 注册

QQ登录

只需一步,快速开始

微信扫码 , 快速开始

查看: 176|回复: 0

基于AT89C51的音量控制电路与程序设计

[复制链接]

classn_11

发表于 2010-1-6 21:04:54 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?注册

x
基于AT89C51的音量控制电路与程序设计
# v) H7 z# b/ L! [1 引言& E8 c4 h7 K; ?" Q
本文介绍的音量控制IC为M62429,市面上有很多类似的产品,例如:FM62429、CD62429、CSC62429等。其实,掌握了一两种IC的编程方法,稍作改动就很容易移植到其它产品上。M62429是日本三菱公司的音量控制IC,音量调节范围是0~-83dB,控制精度每步1dB,内部电路如图一(详见M62429的使用手册)。
3 _5 F3 Q0 T3 R6 U# K
3 L( |. }; {  u/ v4 X% S图一 M62429内部电路
/ e8 c+ [- C1 H6 j8 ]2 硬件电路# Y: i0 i6 R9 p9 t. L1 d
根据图一而设计的电路如图二。
$ k7 h8 O9 O4 ^/ C- s 图二中已省略了单片机与功放连接的其他电路,只剩下AT89C52的晶振部分、与M62429相关的电路、控制音量必需的按键电路等,加上电源之后,该电路可以独立工作。由于AT89C52真正的串口已用于其他用途,M62429的4脚(DATA)连至AT89C52的P2.2,M62429的5脚(CLOCK)连到AT89C52的P2.1。由这两个引脚(P2.1、P2.2)作为模拟串口与M62429通信,控制音量的数据便由这个模拟串口发出。
6 {4 \. k) N1 X+ L- D5 x% O 音频信号从LH1输入,其中L通道信号经过C1耦合到M62429 的1脚,被控制之后从2脚输出,再经C2耦合到LH2输出到后级进行放大。R通道信号经C4耦合到M62429的8脚,被控制后从7脚输出。经C3耦合至LH2输出到后级进行放大。在LH1处输入合适的音源,从LH2处就可以监听音量控制的情况。SW1为音量增加按钮。SW2为音量减小按钮,SW3为复位按钮。
8 `; M% t. _( D 5 y7 |  y: Y) B3 d3 r* b) ~
图二 M62429与单片机的连接9 J# N/ P7 N: f& f
3 软件设计( O& f6 |: h0 ~+ G
从M62429使用手册可知,送去M62429的控制数据DATA为11位。通常的用法如表一:
' s# E! O& p7 U4 L表一:M62429 常用的11位数据(DATA )结构7 ]* N9 F1 c  ~) S

7 L3 I2 V$ P# h" x# d 表一中D2~D8是根据音量的大小变化需要改变的数据,其中D2~D6的编码如表二,
- P& x& U& F" @% s! s- t* @表二 M62429音量衰减值与D2~~D6的关系
/ m& F9 ~8 G) S
: F. ]) H5 W, z( }$ } ) ~& q3 ?6 ~8 d( r0 J
从表二看出,D2~D6控制步长为4dB,需加上D7、D8(见表三)才能达到控制步长为1dB的要求。例如最大音量时衰减值为0dB,查表二,D2~D6数据为10101,查表三,D7,D8为11,所以D2~~D8应为1010111,根据表一,D0~D10这11位数据为10101011111。同理,衰减值为-1dB时的11位数据为10101010111。由于AT89C51系列单片机处理数据是8位,由P2.2、P2.1组成的模拟串口无法一次完成11位数据的发送工作。我们只好把这11位数据分为两次发送,我们可以用先发送6位、后发送5位的方法(当然也可以用其他方法)发送。例如衰减0dB的数据10101011111,先发送前6位101010,后发送5位11111。由于AT89C51系列单片机数据为8位,我们可以在这些数据后面加上“0”,补足8位。那么,衰减0dB的一组数据就成为了10101000和11111000。把这组数据用十六进制数来表示的话,就是A8H,F8H。用同样的方法,可得出各个衰减值的数据。
0 ~6 ]( G, a" t- C. I; } 我们设计程序的思路是:根据开机预设衰减值,用查表法查出衰减数据,然后把数据发送出去,发送时先发第一个数据的前6位,再发送另一数据的前5位。由于M62429的控制范围是0dB~-83dB。在这个范围内,数字越大,音量越小。要增加音量,就要减少用于查表那个数字(程序中R4的值)。框图如图三。& k4 q, n2 ~3 F
9 |9 e( ]' K5 z* |7 G; n4 M
图三 程序方框图9 F( G$ l! M# P6 P1 _
根据上述思路设计的程序如下:
. |) r/ ?9 p$ T3 S+ b' F ORG 00H
# c; N7 z* E. D+ T$ j2 ~9 N/ o M429CK EQU P2.1 ;M62429时钟COLCK- z: ?) J4 W+ R. g
M429DA EQU P2.2 ;M62429数据DATA
- u9 k) J9 X2 y: C/ gUPVOL EQU P1.0 ;音量增加按键
; U9 I- Z/ P, HDOWNVOL EQU P1.1 ;音量减少按键
7 C. U7 D, B: L8 ^! P MOV SP, #10H6 I' e3 r4 C; P% A& m- u, g+ t
MOV R4, #20 ;开机预设衰减值1 D/ v$ C. c- Q$ Z# _
M62429: MOV A,R4 ;预设衰减值送A
; `2 _0 {2 k! {$ W8 Z6 } RL A ;乘2/ `  U  h7 G% P# ]7 P, g5 b" E
MOV DPTR,#TAB ;衰减数据表首址送DPTR8 K7 ?2 [2 X" U
MOVC A,@A+DPTR;查出衰减数据
) m7 S) s8 k5 C$ M* R MOV 9H, A ;9H、R2为一组衰减数据的两个存放单元
1 `, c5 c. U+ w# H) G# k8 B  Q INC DPTR ;指向下一个数据, q' g4 K0 b2 y7 I# W3 F( K! T
MOV A, R43 k3 r9 k+ v% {! \" W# o0 n3 B
RL A ;乘2
# `" Q  n4 y  x+ U MOVC A,@A+DPTR ;查出另一个衰减数据
; Q, ~) w2 p+ \8 ] MOV R2,A
  U+ s4 H. s' ]+ C" t# ] CLR M429CK
" O9 [5 b+ |6 ] MOV A,9H; ?: \* i( G; |6 h
CALL IN6BYT ;发送前6位数据3 `- G) k5 R7 O3 c6 N  [2 N
MOV A,R21 }6 M0 B) p5 x- _" T
CALL IN5BYT ;发送后5位数据
% I/ B' L3 w; B" ^ UP: MOV C, UPVOL ;检测音量增加按键9 `* p' T2 h3 w5 A/ p$ k
JC DOWN ;无按下,转测音量减少键
9 a3 z8 v8 ?4 r% X1 J1 j CALL DELAY ;有按下,延时去抖7 K' L) x: g+ a. D+ s
MOV C, UPVOL ;再测/ S+ I! I4 G" h. L
JC DOWN2 x9 O2 H0 O- e8 C: z' S: X+ X
JB F0,EEE ;音量已是最大转EEE
# a0 Z" p7 W* `6 H8 x. i DEC R4 ;音量衰减值减1
: A6 [, D0 I/ A( a7 L# y- o CLR C+ b8 e& N" K  v9 }# z
CJNE R4, #0, M62429;与音量最大值衰减0dB比较,未达最大,转M62429& z* Y2 M; d( C
SETB F0 ;己是最大,建立标志
/ ~- H5 v: b; ~1 q JMP M62429  M( A1 y" F7 A
EEE: INC R4 ;音量衰减值增1
4 m* S6 a  W2 N. Z/ ?  w CLR F0
$ f; z6 H* `) C6 _ JMP UP) m7 N+ y# P) A5 ^$ _3 ]
DOWN: MOV C, DOWNVOL ;检测音量减小键
& F9 T' w/ n! J# a5 B JC UP+ R$ J: d! N1 Y6 \7 R) ?  W* U9 S
CALL DELAY& t( V* w+ F" _- k4 c1 S
MOV C, DOWNVOL ;再测8 `6 E# ?: x) d
JC UP
' y9 @1 E( j, [$ p( \* y6 Q INC R4 ;音量衰减值增1
2 e' Y: P. U& J2 J( f7 d CLR C0 ^* p/ o* M) ^# }, A' g
CJNE R4, #83, BBB ;与音量最小值衰减83dB比较
6 u! U) m* `# f LJMP M62429  G4 Y6 [% y* o) M5 p! e# G: U
BBB: JC M62429 ;R4

手机扫码浏览
*滑块验证:
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|申请友链|手机版|小黑屋|最新贴|维修网 ( 粤ICP备09047344号

GMT+8, 2024-6-5 18:10 , Processed in 0.275670 second(s), 31 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表