51单总线控制SV-5W语音播报模块

本文介绍如何使用51单片机通过单总线控制SV-5W智能语音模块实现自动语音播报。SV-5W支持多种工作模式,本文重点讲解单总线串口模式的接线方法、配置步骤及编程实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

SV-5W语音播报模块

在这里插入图片描述

SV-5W语音播报模块简介

DY-SV5W是一款智能语音模块,集成IO分段触发,UART串口控制,ONE_line单总线串口控制,标准 MP3 等 7 种工作模式;板载 5W D 类功放,可直接驱动 4Ω,3~5W 喇叭;支持 MP3,WAV 解码格式,最大支持 32G TF 卡存储,可通过 USB 数据线连接电脑更新 TF 卡存储音频文件。
上次写了同系列的“SV17F语音播报模块”用 IO 分段触发实现语音自动播报—“传送门”,本次将会以51单片机用单总线现实语音自动播报。

工作模式说明

  1. IO 组合模式0:
    单片机控制 I/O 组合触发(低电平有效)指定的曲目后释放(IO0-IO7 恢复高电平),播放完当前曲目停止;播放中途重新触发,播放新的曲目,播放结束停止;若一直触发(不释放电平),循环播放。
  2. IO 组合模式 1:
    单片机控制 IO 组合触发(低电平有效)指定的曲目,一直循环播放指定曲目,电平释放(IO0-IO7
    恢复高电平)即停止播放。播放中途释放电平,即刻停止播放。
  3. IO 独立模式 0:
    IO0-IO7 独立控制 8 首曲目, IO 触发(低电平有效)指定的曲目后释放(IO0-IO7 恢复高电平),播放完当前曲目停止;播放中途重新触发,播放新的曲目,播放结束停止;若一直触发(不释放电平),循环播放。
  4. IO 独立模式 1:
    IO0-IO7 独立控制 8 首曲目,IO 触发(低电平有效)指定的曲目,一直循环播放指定曲目,
    电平释放(IO0-IO7 恢复高电平)即停止播放。播放中途释放电平,即刻停止播放。
  5. UART 串口模式:
    通过UART串口发送
    起始码-指令类型-数据长度(n)-数据 1-数据 n-和检验(SM)
    来实现模块的语音播报、上一曲、下一曲等功能。
  6. One_line 单总线串口模式:
    通过特定的时序,往模块发送0码或1码的组合实现模块的语音播报、上一曲、下一曲等功能。

下文由51单片机控制SV-5W的“One_line 单总线串口模式”展开

在这里插入图片描述

模块配置

在这里插入图片描述

引脚配置CON3CON2CON1
电平设置100

根据上个图拨动拨码开关配置好模式。

接线

由上图可知SV-5W语音播报模块本身带有5W的功放芯片,可以直接接入一个5W以内的小喇叭。模块板载的USB口只能用于音频文件的传输,不能用于模块供电。还需要一直TF卡,把音频文件存入到TF卡里面,注意音频文件的命名格式以5位数字命名,少的以0补全,例如:音频文件初始名称为“123.MP3”,需要改成“00123.MP3”。
One_line 单总线控制的数据接口是模块上的IO4,根据要求接线即可。
按要求接线:

51单片机DY-SV17F5V电源喇叭
P1^1IO4
5V5V
GND- 5VGND
D6IO3
SPEAKER++
SPEAKER--

在这里插入图片描述

驱动

由手册可知单总线的0码和1码时序如下:
在这里插入图片描述
手册中的示例:
在这里插入图片描述
发送数据前,先把SDA拉低超过2ms,然后开始发送数据,注意低位在前。
0码:高电平与低电平的比例是1:3
1码:高电平与低电平的比例是3:1
空闲状态:SDA拉高

部分代码

函数定义

void delay(unsigned char);	//毫秒延时函数
void delay_us(unsigned char);	//100微秒延时函数
void dataStart(void); //开始通讯
void dataEnd(void); //结束通讯
void writeOne(void);  //写1
void writeZero(void); //写0
void writeOrder(unsigned char);	//写指令

主要函数

void writeOrder(unsigned char Order)	//写指令
{
	unsigned char i;
	
	for(i=0;i<8;i++)
	{
		
		if((bit)(Order & 0x01))
		{
			writeOne();
		}
		else
			writeZero();
		Order >>= 1;	
	}

}	

主程序

#include<reg52.h>
#include<intrins.h>
#include "DYSV.h"

#define END 0x13
#define PLAY 0x11 
#define PLAYMode 0x0E
#define STOP 0x12 
#define SDMode 0x18 
#define UP 0x14
#define DOWN 0x15

unsigned int a=0;


void main()
{
	while(1)
	{
		if(a==0)
		{
			dataStart();	//开始通讯
			writeOrder(PLAYMode);	//选择循环模式
			writeOrder(0);	//全盘循环
			dataEnd();	//结束通讯
			
			dataStart();
			writeOrder(PLAY);	//播放
			dataEnd();
		
			a++;
		}
	}
}


上面程序宏定义了部分指令,实际上只用了播放模式选择和开始播放的指令,功能指令太多不一一演示,有兴趣的小伙伴可以自行拓展,程序已经写好了发送指令的时序,调用和更改writeOrder()这个函数的参数即可。

效果展示

视频中一共播放了三段音频文件,因为是全盘循环的模式,播放完一个音频文件后会自动播放下一个。

51单总线控制SV5W语音播报模块

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值