【开源项目】单片机在音响上的应用(二)电子音量控制
作者:sword__yang电子音量控制实际就是一个数控的电位器。这里我们以美国DALLAS的DS1801S为例,介绍如何用MCU来控制音量。
DS1801S是一个16Pin的贴片芯片。其内部有集成了两个按对数曲线变化的双路音频控制电位器,其中每一路电位器有有65级与每级1分贝对应的阶梯电阻网络,采用三线接口和MCU的SPI总线连接,还具有信号过零切换和软件静音功能。芯片引脚和内部结构参见图II-2.0。
http://cache.amobbs.com/bbs_upload782111/files_32/ourdev_577861.jpg
(原文件名:1.jpg)
http://cache.amobbs.com/bbs_upload782111/files_32/ourdev_577862.jpg
(原文件名:2.jpg)
http://cache.amobbs.com/bbs_upload782111/files_32/ourdev_577863.jpg
(原文件名:3.jpg)
其内部有三部分:
1)命令/控制单元:负责接收来自外部MCU的控制数据,送给16位的移位寄存器,并且根据外部/ZCEN引脚的逻辑判断是否需要做信号过零点检测(过零检测可以使得控制数据在信号过零点切入,这样音量控制不会突变)。
2)16位移位寄存器:用来对数字多工器进行控制,以切换不同的衰减阻值。
3)1~65级的数字多工器:用来切换衰减的阻值,使得数字电位器按照MCU输出的音量数据值进行衰减。
DS1801S芯片和MCU的连接:
1) /RST: 复位和片选,接到MCU的普通输出端口上(本例接到PORTC,6: Pin:17)
2) SCK: 同步时钟信号,接到MCU的SPI时钟输出口(Pin:14)
3) D: 数据输入端口,接到MCU的SPI的SDO同步串行数据输出口上(Pin:16)
数据通信波形(参见图II-2.1上面部分):
当MCU向DS1801S发送数据时,先拉高/RST的电平,选中SPI的目标芯片为这个音量控制芯片,同时SCK会输出同步时钟,数据则从MCU 的SSPBUF缓冲器逐个移位,通过SDO发给音量控制芯片的数据接收端D。
SPI要连续发送16个字节的数据给音量控制芯片,数据的格式见图II-2.1下面部分。16BIT 的数据中,BIT 14~8是用来控制电位器1的,BTI 15未用,BIT 14作为静音位控制:本位为高时,电位器1无输出(静音),其余BIT8~13是音量控制计数器,这是时下流行的衰减式设置的(请参见图II-2.2),当数值为0时,衰减为 0 dB,当数值为63时,衰减 -63 dB。BIT 6~0用来控制电位器0输出的,BIT 7未用,BIT 6是电位器0的静音控制位;BIT0~5是音量控制数值,输出对应关系与电位器1相同。
数字音量控制的发送例程如下:
【说明】:
音量控制值保存在VOLUE变量里,由于在立体声系统里,两个声道音量相等,所以把同一个音量值分别发送给电位器0,和电位器1就行了:
;===========================================
VOLUE_SEND:
BSF STATUS,RP0 ; 转到特殊寄存器页面
BSF SSPSTAT,CKE ; SPI工作方式设置
BCF STATUS,RP0 ; 转回普通寄存器页面
BCF SSPCON,CKP ; SPI工作方式设置
BSF PORTC,VOL_EN ; 拉高/RST信号
NOP
NOP ; 延时2uS
MOVF VOLUE,W ; 取出音量控制值
CALL spi_tx ; 发送给SPI总线上的DS1802S(高位:BIT 15~8)
MOVF VOLUE,W ; 第二次取数
CALL spi_tx ; 第二次发送(低位:BTI 7~0)
NOP
NOP ; 延时2uS
BCF PORTC,VOL_EN ; 发送完成,拉低/RST信号
RETURN
;================================================
spi_tx:
movwf SSPBUF ; 把数据送到SPI缓冲寄存器,开始发送
CALL SPI_WAIT ; 调用延时子程序
RETURN
;===============================================
SPI_WAIT:
MOVLW .45 ; 延时子程序(50 uS)
MOVWF SPI_DELAY
SP_1:
DECFSZ SPI_DELAY,1
GOTO SP_1
RETURN
;===============================================
由于电位器0和电位器1是两个完全独立的控制单元,我们还可以通过分别给两个音量控制寄存器送不同的值来微调左右声道的平衡。 才艺脚丫 音量控制IC多得很,又何必使用这种没有标失真这些参数的IC.
试看TI的PGA2310.失真和动态保证比你这个要好. 回复【2楼】lizengmao
音量控制ic多得很,又何必使用这种没有标失真这些参数的ic.
试看ti的pga2310.失真和动态保证比你这个要好.
-----------------------------------------------------------------------
这是学习编程的举例,会用了用啥芯片都行。 杨老师的开源项目大力支持
话说很久以前在隔壁还向你申请过一个 MT的板子呢 做好了 服役中 回复【4楼】vermon
杨老师的开源项目大力支持
话说很久以前在隔壁还向你申请过一个 mt的板子呢 做好了 服役中
-----------------------------------------------------------------------
呵呵,现在还有胆机的板子,有需要吗? 回复【5楼】sword_yang
回复【4楼】vermon
杨老师的开源项目大力支持
话说很久以前在隔壁还向你申请过一个 mt的板子呢 做好了 服役中
-----------------------------------------------------------------------
呵呵,现在还有胆机的板子,有需要吗?
-----------------------------------------------------------------------
很久没上耳机坛子了
现在杨老师还有什么胆机板呢?
是比较常见的管子的话我弄来玩玩 有一款我们的MK IV SE (SEPP胆耳放/前级)的板子可以免费赠送:
前级用西电WE408A,后级用E182CC,这些管子应该都能邮购到,二手的也不是很贵。 回复【7楼】sword_yang
有一款我们的mk iv se (sepp胆耳放/前级)的板子可以免费赠送:
前级用西电we408a,后级用e182cc,这些管子应该都能邮购到,二手的也不是很贵。
-----------------------------------------------------------------------
在这先谢谢杨老师了
上次您送MT的时候,一并送了我张MK的板子
还在您这买了变压器呢,只可惜至今未找到配套管子 ./emotion/em019.gif./emotion/em019.gif 回复【8楼】vermon
回复【7楼】sword_yang
有一款我们的mk iv se (sepp胆耳放/前级)的板子可以免费赠送:
前级用西电we408a,后级用e182cc,这些管子应该都能邮购到,二手的也不是很贵。
-----------------------------------------------------------------------
在这先谢谢杨老师了
上次您送mt的时候,一并送了我张mk的板子
还在您这买了变压器呢,只可惜至今未找到配套管子 ./emotion/em019.gif./emotion/em019.gif
-----------------------------------------------------------------------
可以去胆艺轩二手搜索一下。 most of the high-end amps / processors now have usually a lcd display, either text or graphics. you can easily implement that in a mcu. Cool ! mark 好帖子
不过建议采用pga2311芯片 我试验的单片机遥控音量~~~~~~~~~~~
lizengmao 发表于 2010-8-26 12:41
音量控制IC多得很,又何必使用这种没有标失真这些参数的IC.
试看TI的PGA2310.失真和动态保证比你这个要好 ...
这芯片我用过
指标高的很
完胜目前所有的电子音量芯片 在用DS1801,效果满意。要求不太高的话,首选。不会有内部运放带来个性的声音。 好帅!!!
页:
[1]