用C51驱动 DY-SV17F 语音模块

老小孩
原创
发布时间: 2025-07-17 12:14:07 | 阅读数 0收藏数 0评论数 0
封面
由于工作的原因,在网上找到一个文字转语音的网站,很不错。正好手边有个 DY-SV17F 语音模块,突发奇想,那能不能做个语音播报什么的。今天就先用C51单片机来驱动这个语音模块。

准备工作:

材料:

  1. 单片机 STC89C52RC 最小系统板
  2. DY-SV17F 语音模块
  3. 洞洞板
  4. 杜邦线
  5. 小喇叭
1

准备硬件

把单片机和语音模块用杜邦线母座焊接到洞洞板上,我用串口模式驱动模块,所以只接了RX TX,对应单片机的TX RX, 还有电源部分按图3接。模块部分按图3,添加电阻,con1-3按图接上下拉。

2

制作语音文件

在网上的文字转语音网站很多,我是在在线免费文字转语音 - TTSMaker官网 | 马克配音这里做的声音文件。

输入你想转语音的文字,点开始转换,点下载即可。它有点BUG,就是下载的文件可能是你上一条或下一条的文件。哈哈 。

最后把你下载的声音文件通过USB数据线拷贝到模块上。

3

语音模块的驱动命令

语音模块的串口模式,采用全双工串口通信; 波特率为 9600,数据位:8 ,停止位 1 位,检验位 N。

它的命令格式是:起始码-指令类型-数据长度(n)-数据 1-数据 n-和检验(SM)

※ 指令码 :固定为 AA。

※ 指令类型 : 用来区分指令类型。

※ 数据长度:指令中的数据的字节数。

※ 数据 :指令中的相关数据,当数据长度为 1 时,表示只有 CMD,没有数据位。

※ 和检验 :为之前所有字节之和的低 8 位,即起始码到数据相加后取低 8 位。

※ 数据格式:发送的数据或命令,高 8 位数据在前,低 8 位在后。


指定曲目(07)

指令:AA 07 02 曲目高 曲目低 SM

返回:无

例如: AA 07 02 00 08 BB 指定播放当前盘符第 8 首,曲目数从 1-65535 曲目序号是由存储顺序决定。


曲目名称: 必须按照 5 位数字进行命名。比如:00001.mp3, 00002.mp3.


这个模块硬件设置好后,上电基本上不需要怎么初始化,只做过延时200毫秒即可。

附件有说明手册。

PDF
DY-SV17F模块功能说明.pdf
646.25KB
PDF
UART模式应用手册.pdf
281.13KB
4

软件

先键个keil工程:编写一个有串口通讯的基本程序,写好串口接收字符串函数,发送字符串函数。

然后写发送模块命令的函数

首先看它的命令格式:

它的命令格式是:起始码-指令类型-数据长度(n)-数据 1-数据 n-和检验(SM)

※ 指令码 :固定为 AA。

※ 指令类型 : 用来区分指令类型。

※ 数据长度:指令中的数据的字节数。

※ 数据 :指令中的相关数据,当数据长度为 1 时,表示只有 CMD,没有数据位。

※ 和检验 :为之前所有字节之和的低 8 位,即起始码到数据相加后取低 8 位。

※ 数据格式:发送的数据或命令,高 8 位数据在前,低 8 位在后。

比如:我要播放第00008首音频,那么需要发送的命令就是:AA 07 02 00 08 BB

用// 播放曲目 Num 是第num首曲目 比如:A 就写‘A’

void Play(unsigned char * str) // 图3

函数直接发送即可。

5

播放

我把下面文字生成了语音:

你好,我是 DY-SV17F 语音模块,接下来我会把你的文字转换成语音播报出来!

看看效果吧!

阅读记录0
点赞0
收藏0
禁止 本文未经作者允许授权,禁止转载
猜你喜欢
评论/提问(已发布 0 条)
评论 评论
收藏 收藏
分享 分享
pdf下载 下载