|
Circuit and Program Design of Volume Control based on AT89C51 Abstract: This article introduced the volume control device TDA7313 methods use of the AT89C51 Series MCU and write the program with assemble language. This program use the method of check up the table and analog serial interface transmit the data .Author got rid of the content of the sound source choice, the screen driver, remote control, was only left over the content of volume control part. The electric circuit has also made similar processing, enabled it to run independently. keyword: Volume control; Assembly language; analog serial interface; M62429 摘要:本文介绍了用AT89C51系列单片机控制音量的方法。程序用查表的方法,通过模拟串口发送数据。作者把新产品程序中关于音源选择、屏幕驱动、遥控等内容去掉,只剩下音量控制部分的内容。电路也作了类似处理,使它能独立运行。 关键词:音量控制;汇编语言;模拟串口; M62429 1 引言 本文介绍的音量控制IC为M62429,市面上有很多类似的产品,例如:FM62429、CD62429、CSC62429等。其实,掌握了一两种IC的编程方法,稍作改动就很容易移植到其它产品上。M62429是日本三菱公司的音量控制IC,音量调节范围是0~-83dB,控制精度每步1dB,内部电路如图一(详见M62429的使用手册)。  2 硬件电路 根据图一而设计的电路如图二。 图二中已省略了单片机与功放连接的其他电路,只剩下AT89C52的晶振部分、与M62429相关的电路、控制音量必需的按键电路等,加上电源之后,该电路可以独立工作。由于AT89C52真正的串口已用于其他用途,M62429的4脚(DATA)连至AT89C52的P2.2,M62429的5脚(CLOCK)连到AT89C52的P2.1。由这两个引脚(P2.1、P2.2)作为模拟串口与M62429通信,控制音量的数据便由这个模拟串口发出。 音频信号从LH1输入,其中L通道信号经过C1耦合到M62429 的1脚,被控制之后从2脚输出,再经C2耦合到LH2输出到后级进行放大。R通道信号经C4耦合到M62429的8脚,被控制后从7脚输出。经C3耦合至LH2输出到后级进行放大。在LH1处输入合适的音源,从LH2处就可以监听音量控制的情况。SW1为音量增加按钮。SW2为音量减小按钮,SW3为复位按钮。
 3 软件设计 从M62429使用手册可知,送去M62429的控制数据DATA为11位。通常的用法如表一:  1 0 7位音量控制数据 1 1 表一中D2~D8是根据音量的大小变化需要改变的数据,其中D2~D6的编码如表二,
  从表二看出,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。用同样的方法,可得出各个衰减值的数据。 我们设计程序的思路是:根据开机预设衰减值,用查表法查出衰减数据,然后把数据发送出去,发送时先发第一个数据的前6位,再发送另一数据的前5位。由于M62429的控制范围是0dB~-83dB。在这个范围内,数字越大,音量越小。要增加音量,就要减少用于查表那个数字(程序中R4的值)。框图如图三。
根据上述思路设计的程序如下: ORG 00H M429CK EQU P2.1 ;M62429时钟COLCK M429DA EQU P2.2 ;M62429数据DATA UPVOL EQU P1.0 ;音量增加按键 DOWNVOL EQU P1.1 ;音量减少按键 MOV SP, #10H MOV R4, #20 ;开机预设衰减值 M62429: MOV A,R4 ;预设衰减值送A RL A ;乘2 MOV DPTR,#TAB ;衰减数据表首址送DPTR MOVC A,@A+DPTR;查出衰减数据 MOV 9H, A ;9H、R2为一组衰减数据的两个存放单元 INC DPTR ;指向下一个数据 MOV A, R4 RL A ;乘2 MOVC A,@A+DPTR ;查出另一个衰减数据 MOV R2,A CLR M429CK MOV A,9H CALL IN6BYT ;发送前6位数据 MOV A,R2 CALL IN5BYT ;发送后5位数据 UP: MOV C, UPVOL ;检测音量增加按键 JC DOWN ;无按下,转测音量减少键 CALL DELAY ;有按下,延时去抖 MOV C, UPVOL ;再测 JC DOWN JB F0,EEE ;音量已是最大转EEE DEC R4 ;音量衰减值减1 CLR C CJNE R4, #0, M62429;与音量最大值衰减0dB比较,未达最大,转M62429 SETB F0 ;己是最大,建立标志 JMP M62429 EEE: INC R4 ;音量衰减值增1 CLR F0 JMP UP DOWN: MOV C, DOWNVOL ;检测音量减小键 JC UP CALL DELAY MOV C, DOWNVOL ;再测 JC UP INC R4 ;音量衰减值增1 CLR C CJNE R4, #83, BBB ;与音量最小值衰减83dB比较 LJMP M62429 BBB: JC M62429 ;R4<83 ,转M62429 MOV R4,#83 ;R4>83,需修正,保证r4里的值<=83 JMP M62429 IN6BYT: MOV R3,#6 ;发送6位数据子程序 本文创新点:1、程序中控制数据用查表法查得,使之控制方便,容易理解。 2、软件硬件结合紧密。 参考文献: [1] 张迎新. 单片机初级教程[M]. (第2版). 北京:北京航空航天大学出版社, 2006 [2] 何立民. 单片机高级教程[M]. (第2版). 北京:北京航空航天大学出版社, 2007 [3] M62429使用手册. 网址:http://www.ic-shop.cn/33/530/M62429.html [4] 徐丽香,郑传得,周世均,吴耀鑫. 基于AT89S51单片机的监控与管理系统的设计[J]. 微计算机信息, 2007, 1-2: 139-140
作者资料:莫晏光(1954.4- ), 男, 工程师, 主要研究方向:电子产品设计及开发、单片机应用及教学。 张卿(1975.3-), 男, 硕士研究生, 主要研究方向:电子产品设计及开发、单片机应用及教学。 通信地址:广东工程职业技术学院, 广东 广州, 510520;中南大学, 湖南 长沙, 410083
|