DIY编程器网

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 151|回复: 0
打印 上一主题 下一主题

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

[复制链接]
跳转到指定楼层
楼主
发表于 2012-1-16 16:19:03 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
1? 引言本文介绍的音量控制IC为M62429,市面上有很多类似的产品,例如:FM62429、CD62429、CSC62429等。其实,掌握了一两种IC的编程方法,稍作改动就很容易移植到其它产品上。M62429是日本三菱公司的音量控制IC,音量调节范围是0"-83dB,控制精度每步1dB,内部电路如图一(详见M62429的使用手册)。图一 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为复位按钮。图二? M62429与单片机的连接3? 软件设计从M62429使用手册可知,送去M62429的控制数据DATA为11位。通常的用法如表一:??????????????? 表一:M62429 常用的11位数据(DATA )结构表一中D2"D8是根据音量的大小变化需要改变的数据,其中D2"D6的编码如表二,表二? M62429音量衰减值与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??????? ;R483,需修正,保证r4里的值<=83??????? JMP?? M62429IN6BYT: MOV??? R3,#6??????? ;发送6位数据子程序本文创新点:1、程序中控制数据用查表法查得,使之控制方便,容易理解。??????????? 2、软件硬件结合紧密。
                          
                       
                          
                               
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|文字版|手机版|DIY编程器网 ( 桂ICP备14005565号-1 )

GMT+8, 2025-12-27 16:46 , 耗时 0.096009 秒, 18 个查询请求 , Gzip 开启.

各位嘉宾言论仅代表个人观点,非属DIY编程器网立场。

桂公网安备 45031202000115号

DIY编程器群(超员):41210778 DIY编程器

DIY编程器群1(满员):3044634 DIY编程器1

diy编程器群2:551025008 diy编程器群2

QQ:28000622;Email:libyoufer@sina.com

本站由桂林市临桂区技兴电子商务经营部独家赞助。旨在技术交流,请自觉遵守国家法律法规,一旦发现将做封号删号处理。

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