- 积分
- 194
- 在线时间
- 153 小时
- 最后登录
- 2023-12-14
- 阅读权限
- 50
- 精华
- 0
- UID
- 10585
- 帖子
- 141
- 精华
- 0
- 经验
- 194 点
- 金钱
- 140 ¥
- 注册时间
- 2006-7-9
|
楼主 |
发表于 2021-6-11 20:27
|
显示全部楼层
;=====================================================================
;写入音量数据到MUSE72320,音量范围-111.5~0dB,数值范围1~224.数值1=(-111.5dB),数值224=0dB
WriteRealGain:
LCALL LimitGain ;限制音量数据范围在允许值
MOV A,RealGain
JZ WRGN1 ;音量数据=0则直接写入
DEC A
SWAP A
INC A
SWAP A
CPL A ;计算求真实写入数值
WRGN1: MOV MuseData1,A
MOV MuseData0,#0x20
LCALL WriteMUSE ;配置右声道
LCALL Delay30us
MOV MuseData0,#0x00
LCALL WriteMUSE ;配置左声道
LCALL Delay30us
LCALL ConfigGain
RET
;=====================================================================
;=====================================================================
;写数据进MUSE72320芯片
WriteMUSE:
CLR VOL_CS ;使能MUSE72320
LCALL Delay5us
MOV A,MuseData1 ;高8位
LCALL WriteSPI ;写入数值到MUSE72320
LCALL Delay5us
MOV A,MuseData0 ;低8位
LCALL WriteSPI ;写入数值到MUSE72320
LCALL Delay5us
SETB VOL_CS
SETB VOL_SCLK
SETB VOL_SDI
RET
;=====================================================================
;=====================================================================
;模拟SPI写入
WriteSPI:
MOV R7,#0x08 ;设定数据位宽为8bit
WPGA0: LCALL Delay5us
SETB VOL_SCLK
RLC A
MOV VOL_SDI,C ;将数据左移一位到SDI端
LCALL Delay5us
CLR VOL_SCLK ;写入数据
DJNZ R7,WPGA0 ;查看是否写完
RET
;=====================================================================
延时程序,音量数值限制以及增益控制程序你自己补一个,有上面这些已经很容易改一个出来了
另外我不用1602显示的,没有这个程序 |
|