迪文科技论坛

 找回密码
 立即注册
搜索
查看: 2427|回复: 2

【转载】【15.教学视频】T5L C51 音频播放

[复制链接]

541

主题

159

回帖

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
10464
发表于 2020-5-22 20:52:19 | 显示全部楼层 |阅读模式
本节课介绍了T5L C51 音频播放。
本视频教学由迪文开发者论坛用户  ID 熊家余 分享提供。
教学视频:https://www.yuanzige.com/course/detail/80041?section_id=81160
原视频链接:https://www.bilibili.com/video/BV19K411W7um


本节课课程内容介绍如下。
1.介绍
T5L芯片中集成了一个音频管理模块,利用此音频模块我们可以实现播放开机音乐,按钮点击音效等功能,不过我们要想看到正确的效果,硬件上和软件上都得做相应的小修改,然后音频控制方式这里也可以分为如下俩种:
(1)通过DGUS Tool软件来设置”触控控件”的”语音ID”属性,这种控制方式简单,不需要写任C51代码。

(2)通过C51代码来动态播放音频,这种方式灵活度高,自定制能力强。


在实际的应用项目当中,对于上面的俩种控制方式,我们一般都会结合交叉使用.因为每一种控制方式都有其优点.
接下来,我们来看一下如何进行硬件和软件上的修改,才能得到正确的播放效果
(1)硬件修改,因为我们的EK043开发板上默认是接了一个蜂鸣器来作为提示音的,如果我们想要用音频来作为提示音的话,那么我们得用喇叭来替换掉蜂鸣器,比如用一个8Ω0.5w的小喇叭
除了需要替换掉蜂鸣器外,我们原理图上也需要进行一个小修改

(2)软件修改,我们这个所谓的软件修改其实就是指修改.CFG配置文件,生成.wae音频压缩文件,以及C51端构建音频播放函数等三个操作.

a.修改.CFG配置文件
主要是将.CFG配置文件中的0x05地址处的bit6设置为1来选择音乐播放,然后将0x07地址处设置为0x10

b.生成.wae音频压缩文件
我们首先要获取.wav的音乐文件素材,大家可以从站长素材网去下载,链接为:http://sc.chinaz.com/yinxiao/

c.C51代码构建sys_play_audio音频播放函数,主要是访问”系统变量接口.


2.例程设计2.1功能简介
我们在”0启动界面”上放置三个”按键返回控件”,点击之后,分别用来播放开机音效, 成功音效, 错误音效,其中播放开机音效是通过DGUS Tool软件设置语音ID”属性的方式来实现的,而成功音效, 错误音效是通过C51代码的方式来实现的.

2.2 GUI界面设计
        主要是用到三个”按键返回控件”


2.3 C51代码设计
我们可以直接利用在第14章节中已经创建好的C51项目工程模板,然后在此基础上进行修改.

(1) sys.c文件中的播放音频函数如下:
//播放音频
//wav_id:是指.wav音频文件在wae文件中的id编号(其实就是.wav音频文件名称前面的数字)
//volume:播放的音量大小,范围为:[1,64]
void sys_play_audio(u8 wav_id,u8 volume)
{
        #define AUDIO_ADDR                0xA0

        u8 audio_cmd[4];
        audio_cmd[0] = wav_id;
        audio_cmd[1] = 0x01;//播放段数,固定为0x01
        audio_cmd[2] = volume;//播放音量
        audio_cmd[3] = 0x00;//播放状态为只读,固定为0x00
        sys_write_vp(AUDIO_ADDR,audio_cmd,2);
}

(2) start_win.c文件的代码如下:
#include "start_win.h"

#define AUDIO_POWER_ON        1                //开机音效
#define AUDIO_ERROR                        2                //错误音效
#define AUDIO_OK                                3                //成功音效



void start_win_btn_click_handler(u16 btn_val)
{

        switch(btn_val)
        {
                case 2://点击了"成功音效"按钮
                        sys_play_audio(AUDIO_OK,AUDIO_MAX_VOLUME);
                        break;
                case 3://点击了"错误音效"按钮
                        sys_play_audio(AUDIO_ERROR,AUDIO_MAX_VOLUME);
                        break;
                default:
                        break;
        }
}

本帖子中包含更多资源

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

x
回复

使用道具 举报

0

主题

1

回帖

29

积分

新手上路

Rank: 1

积分
29
发表于 2020-9-10 18:15:46 | 显示全部楼层
讲解的不错。
回复

使用道具 举报

2

主题

3

回帖

61

积分

注册会员

Rank: 2

积分
61
发表于 2021-2-24 11:21:16 | 显示全部楼层
sys_write_vp这个函数原型有吗?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|迪文科技论坛 ( 京ICP备05033781号-1 )

GMT+8, 2024-4-19 22:40 , Processed in 0.086971 second(s), 22 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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