综合资讯 在线阅读 原文阅读 在线商城 下载专区 DATASHEET 技术论坛 商务频道

嵌入式系统  单片机  D S P  EDA/PLD  接口电路  存储技术  显示光电  电源技术
传感/控制  模拟技术  通信网络  无线通信  电测仪表  消费电子  汽车电子

所在的位置:首页技术文章单片机正文
 
基于AT89C51的音量控制电路与程序设计
发布日期:2008-09-02 作者:莫晏光 张卿 来源:微计算机信息

摘要:本文介绍了用AT89C51系列单片机控制音量的方法。程序用查表的方法,通过模拟串口发送数据。作者把新产品程序中关于音源选择、屏幕驱动、遥控等内容去掉,只剩下音量控制部分的内容。电路也作了类似处理,使它能独立运行。
关键词:音量控制;汇编语言;模拟串口; M62429 

引言

本文介绍的音量控制IC为M62429,市面上有很多类似的产品,例如:FM62429、CD62429、CSC62429等。其实,掌握了一两种IC的编程方法,稍作改动就很容易移植到其它产品上。M62429是日本三菱公司的音量控制IC,音量调节范围是0~-83dB,控制精度每步1dB,内部电路如图一(详见M62429的使用手册)。

图一 M62429内部电路

硬件电路

根据图一而设计的电路如图二。

图二中已省略了单片机与功放连接的其他电路,只剩下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与单片机的连接

软件设计

从M62429使用手册可知,送去M62429的控制数据DATA为11位。通常的用法如表一:

                表一:M62429 常用的11位数据(DATA )结构

D0

D1

D2

D3

D4

D5

D6

D7

D8

D9

D10

1

0

7位音量控制数据

1

1

表一中D2~D8是根据音量的大小变化需要改变的数据,其中D2~D6的编码如表二,

表二  M62429音量衰减值与D2~~D6的关系

ATTl

D2

D3

D4

D5

D6

OdB

1

0

1

0

1

-8dB

1

1

0

0

1

-16dB

1

0

0

0

1

-24dB

1

1

1

1

0

-32dB

1

0

1

1

0

-40dB

1

1

0

1

0

-48dB

1

0

0

1

0

-56dB

1

1

1

0

0

-64dB

1

0

1

0

0

-72dB

1

1

0

0

0

-80dB

1

0

0

0

0

 

表三  M62429音量衰减值与D7、D8的关系

ATT2

D7

D8

0dB

1

1

-1dB

0

1

-2dB

1

0

-3dB

0

0

从表二看出,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


 (全文结束)

信息发布:   转引自: 【 】 【打印】 【关闭
 相 关 文 章
温度采集报警系统的设计和实现 (今天)
基于Qt的嵌入式媒体播放器系统的设计 (今天)
基于工业以太网的温度采集模块的研究 (今天)
AD677在精密测量仪器中的应用研究 (今天)
实用性通信采集系统的模块化硬件设计 (今天)
基于微处理器的智能信号变送器的研究 (今天)
嵌入式FPU微指令控制模块的设计与实现 (今天)
基于μc/OS-II的多传感器测控系统研究 (今天)
基于单片机的高精度水位监控仪的设计 (今天)
基于FPGA的智能温度采集控制器 (今天)
RFID技术在仓储管理中的应用 (昨天)
基于PSoC的V/F转换器实现 (昨天)
基于ARM嵌入式智能控制器的设计与实现 (昨天)
嵌入式数据库的海量存储技术研究 (昨天)
数据传输的通信系统设计 (昨天)
基于Linux的嵌入式数据采集系统 (今天)
基于DSP的电源控制系统的软硬件开发 (今天)
一种新型嵌入式远程监控系统的设计开发 (今天)
基于智能控制技术的新型温控系统的研究 (今天)
基于单片机控制的温度智能控制系统 (11-06)
基于AT89C51的电源切换控制器的设计与实现 (12-01)
基于AT89C51型单片机的号音自动播放器设计 (09-26)
一种基于CAN总线的集散型火灾报警控制系统 (08-06)
基于ISP1362的U盘MP3播放器设计 (02-28)
基于单片机的弓网接触压力检测 (06-03)
基于单片机的温湿度检测与控制系统研究 (06-13)
基于单片机的电阻炉温度控制系统设计 (06-13)
红外测码仪的设计与实现 (06-13)
基于AT89C51控制的0.01℃数显温度计的设计 (08-01)
DSP系统的通信与控制接口设计 (03-03)
由可编程逻辑器件与单片机构成的双控制器 (12-13)
串行EEPROM X24128及其与AT89C51的接口及编程 (12-05)
单片机微处理器AT89C51在时隙变换和控制中的应用 (11-30)
基于AT89C51单片机的LED彩灯控制器设计 (12-19)
等离子显示屏GU128×64的接口设计与应用 (01-04)
单片机与MAX111芯片的接口设计 (02-27)
AT89C51单片机在无线数据传输中的应用 (02-27)
基于AT89C51单片机的压力控制系统设计 (06-19)
关于我们 ┋ 友情链接


深圳市福田区海滨广场恒福花园恒华阁11F
电话:0755-88305872 传真:0755-88305880
Copyright©2005-2007 无忧电子开发网版权所有

粤ICP备05064233号