搜索
bottom↓
回复: 17

【开源项目】单片机在音响上的应用(二)电子音量控制

[复制链接]

出0入0汤圆

发表于 2010-8-26 09:44:38 | 显示全部楼层 |阅读模式
作者:sword__yang

      电子音量控制实际就是一个数控的电位器。这里我们以美国DALLAS的DS1801S为例,介绍如何用MCU来控制音量。
DS1801S是一个16Pin的贴片芯片。其内部有集成了两个按对数曲线变化的双路音频控制电位器,其中每一路电位器有有65级与每级1分贝对应的阶梯电阻网络,采用三线接口和MCU的SPI总线连接,还具有信号过零切换和软件静音功能。芯片引脚和内部结构参见图II-2.0。


(原文件名:1.jpg)


(原文件名:2.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是两个完全独立的控制单元,我们还可以通过分别给两个音量控制寄存器送不同的值来微调左右声道的平衡。

阿莫论坛20周年了!感谢大家的支持与爱护!!

如果想吃一顿饺子,就得从冰箱里取出肉,剁馅儿,倒面粉、揉面、醒面,擀成皮儿,下锅……
一整个繁琐流程,就是为了出锅时那一嘴滚烫流油的热饺子。

如果这个过程,禁不住饿,零食下肚了,饺子出锅时也就不香了……《非诚勿扰3》

出0入0汤圆

发表于 2010-8-26 10:37:07 | 显示全部楼层
才艺脚丫

出0入26汤圆

发表于 2010-8-26 12:41:39 | 显示全部楼层
音量控制IC多得很,又何必使用这种没有标失真这些参数的IC.
试看TI的PGA2310.失真和动态保证比你这个要好.

出0入0汤圆

 楼主| 发表于 2010-8-26 12:49:55 | 显示全部楼层
回复【2楼】lizengmao
音量控制ic多得很,又何必使用这种没有标失真这些参数的ic.
试看ti的pga2310.失真和动态保证比你这个要好.
-----------------------------------------------------------------------

这是学习编程的举例,会用了用啥芯片都行。

出0入4汤圆

发表于 2010-8-26 16:01:13 | 显示全部楼层
杨老师的开源项目大力支持

话说很久以前在隔壁还向你申请过一个 MT的板子呢   做好了 服役中

出0入0汤圆

 楼主| 发表于 2010-8-26 17:11:35 | 显示全部楼层
回复【4楼】vermon
杨老师的开源项目大力支持
话说很久以前在隔壁还向你申请过一个 mt的板子呢   做好了 服役中
-----------------------------------------------------------------------

呵呵,现在还有胆机的板子,有需要吗?

出0入4汤圆

发表于 2010-8-26 21:09:39 | 显示全部楼层
回复【5楼】sword_yang
回复【4楼】vermon  
杨老师的开源项目大力支持  
话说很久以前在隔壁还向你申请过一个 mt的板子呢   做好了 服役中
-----------------------------------------------------------------------
呵呵,现在还有胆机的板子,有需要吗?
-----------------------------------------------------------------------

很久没上耳机坛子了

现在杨老师还有什么胆机板呢?

是比较常见的管子的话  我弄来玩玩

出0入0汤圆

 楼主| 发表于 2010-8-26 22:41:04 | 显示全部楼层
有一款我们的MK IV SE (SEPP胆耳放/前级)的板子可以免费赠送:
前级用西电WE408A,后级用E182CC,这些管子应该都能邮购到,二手的也不是很贵。

出0入4汤圆

发表于 2010-8-26 23:35:19 | 显示全部楼层
回复【7楼】sword_yang
有一款我们的mk iv se (sepp胆耳放/前级)的板子可以免费赠送:
前级用西电we408a,后级用e182cc,这些管子应该都能邮购到,二手的也不是很贵。
-----------------------------------------------------------------------

在这先谢谢杨老师了
上次您送MT的时候,一并送了我张MK的板子
还在您这买了变压器呢,  只可惜至今未找到配套管子   

出0入0汤圆

 楼主| 发表于 2010-8-27 01:00:10 | 显示全部楼层
回复【8楼】vermon
回复【7楼】sword_yang  
有一款我们的mk iv se (sepp胆耳放/前级)的板子可以免费赠送:  
前级用西电we408a,后级用e182cc,这些管子应该都能邮购到,二手的也不是很贵。
-----------------------------------------------------------------------
在这先谢谢杨老师了
上次您送mt的时候,一并送了我张mk的板子
还在您这买了变压器呢,  只可惜至今未找到配套管子   
-----------------------------------------------------------------------

可以去胆艺轩二手搜索一下。

出0入0汤圆

发表于 2010-8-27 07:49:51 | 显示全部楼层
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.
头像被屏蔽

出0入0汤圆

发表于 2010-8-27 08:38:05 | 显示全部楼层
Cool !

出0入0汤圆

发表于 2010-8-27 14:59:16 | 显示全部楼层
mark

出0入0汤圆

发表于 2012-1-8 22:42:43 | 显示全部楼层
好帖子
不过建议采用pga2311芯片

出0入0汤圆

发表于 2016-3-1 00:17:57 | 显示全部楼层
我试验的单片机遥控音量~~~~~~~~~~~

本帖子中包含更多资源

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

x

出0入0汤圆

发表于 2018-1-13 16:22:59 | 显示全部楼层
lizengmao 发表于 2010-8-26 12:41
音量控制IC多得很,又何必使用这种没有标失真这些参数的IC.
试看TI的PGA2310.失真和动态保证比你这个要好 ...

这芯片我用过
指标高的很
完胜目前所有的电子音量芯片

出0入0汤圆

发表于 2018-1-13 21:42:50 | 显示全部楼层
在用DS1801,效果满意。要求不太高的话,首选。不会有内部运放带来个性的声音。

出0入0汤圆

发表于 2018-2-9 13:36:51 | 显示全部楼层
好帅!!!
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-3-19 10:05

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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