Mini MP3 Player播放器简介与STC12例程

news2024/11/21 0:24:07

文章目录

  • 1、DFRobot arduino DFPlayer官方资料
    • 1-1、简介
    • 2-2、 基本功能详述
    • 1-3、 用途
    • 1-4、 引脚说明
    • 1-5、工作模式
      • 1-5-1、 串口工作模式
      • 1-5-2、 ADC按键工作模式
      • 1-5-3、 普通按键工作模式
  • 2、串口模式电路搭建与例程
  • 参考文献

1、DFRobot arduino DFPlayer官方资料

1-1、简介

The DFPlayer Mini MP3 Player For Arduino is a small and low price MP3 module with an simplified output directly to the speaker. The module can be used as a stand alone module with attached battery, speaker and push buttons or used in combination with an Arduino UNO or any other with RX/TX capabilities.

简介
DFPlayer迷你MP3播放器Arduino是一个小而便宜的MP3模块,简化输出直接到扬声器。该模块可以作为独立模块使用,附带电池、扬声器和按钮,也可以与Arduino UNO或任何其他具有RX/TX功能的模块结合使用。

图1
图1-1-1:开源Mini MP3 Player播放器

2-2、 基本功能详述

  • supported sampling rates (kHz): 8/11.025/12/16/22.05/24/32/44.1/48
  • 24 -bit DAC output, support for dynamic range 90dB , SNR support 85dB
  • fully supports FAT16 , FAT32 file system, maximum support 32G of the TF card, support 32G of U disk, 64M bytes NORFLASH
  • a variety of control modes, I/O control mode, serial mode, AD button control mode
  • advertising sound waiting function, the music can be suspended. when advertising is over in the music continue to play
  • audio data sorted by folder, supports up to 100 folders, every folder can hold up to 255 songs
  • 30 level adjustable volume, 6 -level EQ adjustable

基本功能详述

  • 支持采样率(kHz): 8/11.025/12/16/22.05/24/32/44.1/48

  • 24位DAC输出,支持动态范围90dB,信噪比支持85dB

  • 完全支持FAT16、FAT32文件系统,最大支持32G的TF卡,支持32G的U盘,64M字节的NORFLASH

  • 多种控制方式,I/O控制方式,串行控制方式,AD按钮控制方式

  • 广告声音等待功能,音乐可以暂停播放。当广告结束时,音乐继续播放

  • 音频数据按文件夹排序,最多支持100个文件夹,每个文件夹最多可存放255首歌曲

  • 30级音量可调,6级EQ可调

1-3、 用途

  • Car navigation voice broadcast;
  • Road transport inspectors, toll stations voice prompts;
  • Railway station, bus safety inspection voice prompts;
  • Electricity, communications, financial business hall voice prompts;
  • Vehicle into and out of the channel verify that the voice prompts;
  • The public security border control channel voice prompts;
  • Multi-channel voice alarm or equipment operating guide voice;
  • The electric tourist car safe driving voice notices;
  • Electromechanical equipment failure alarm;
  • Fire alarm voice prompts;
  • The automatic broadcast equipment, regular broadcast.

用途

  • 汽车导航语音广播;

  • 道路运输巡视员、收费站语音提示;

  • 火车站、公交安全检查语音提示;

  • 电力、通信、金融营业厅语音提示;

  • 车辆进出通道验证,语音提示;

  • 公安边防通道语音提示;

  • 多声道语音报警或设备操作引导语音;

  • 电动旅游车安全驾驶语音提示;

  • 机电设备故障报警;

  • 火灾报警语音提示;

  • 自动播音设备,定时播音。

1-4、 引脚说明

引脚说明
请添加图片描述
图1-4-1:mini MP3 引脚说明

1-5、工作模式

1-5-1、 串口工作模式

官方的英文文档串口模式只是寥寥数笔,于是我找到mini MP3板载的芯片“YX5200-24SS串口语音芯片”的资料,对串口控制有非常详细的说明。
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
图1-5-1-2:YX5200-24SS串口语音芯片串口功能简介

1-5-2、 ADC按键工作模式

We use the AD module keys, instead of the traditional method of matrix keyboard connection, it is to take advantage of increasingly powerful MCU AD functionality, Our module default configuration 2 AD port, 20 key resistance distribution.

我们采用AD模块按键,代替传统的矩阵键盘连接方式,它是利用单片机日益强大的AD功能,我们的模块默认配置2个AD端口,20个按键电阻分布。
请添加图片描述
图1-5-2:AD 按键模式接线图

1-5-3、 普通按键工作模式

请添加图片描述
图1-5-3-1:按键控制模式接线图

2、串口模式电路搭建与例程

在这里插入图片描述
图2-1:串口模式mini MP3模块电路接线图

STC12例程

#include <STC12C5A60S2.H>
#include <intrins.h>

/*数据类型宏定义*/
#define uchar unsigned char
#define uint unsigned int

/*系统时钟空定义*/
#define MAIN_Fosc		11059200L	//宏定义主时钟HZ
//#define MAIN_Fosc		12000000L

/*全局变量定义*/
static uchar Send_buf[9] = {0};


//基于STC12单片机1ms延时函数
//函数说明:内部调用
static void Delay1ms()		
{
	# if MAIN_Fosc == 11059200L
	//晶振11.0592MHz
	unsigned char i, j;

	_nop_();
	i = 11;
	j = 190;
	do
	{
		while (--j);
	} while (--i);
	
	#elif MAIN_Fosc == 12000000L
	//晶振12.000000MHZ
	unsigned char i, j;

	_nop_();
	_nop_();
	i = 12;
	j = 168;
	do
	{
		while (--j);
	} while (--i);
	
	#endif
	
}

//基于STC12单片机ms延时函数
//函数说明:外部调用
void Delay_ms(uint time)
{
	int i;
	for(i=0; i<time; i++)
	{
		Delay1ms();
	}
}

//串口初始化,晶振11.0592,波特率9600
void UartInit(void)		//9600bps@11.0592MHz
{
	PCON &= 0x7F;		//波特率不倍速
	SCON = 0x50;		//8位数据,可变波特率
	AUXR |= 0x04;		//独立波特率发生器时钟为Fosc,即1T
	BRT = 0xDC;		//设定独立波特率发生器重装值
	AUXR |= 0x01;		//串口1选择独立波特率发生器为波特率发生器
	AUXR |= 0x10;		//启动独立波特率发生器
	
	//EA = 1;//开总中断
	//ES = 1;//开串口中断
}

/***************************************
 *函数名称:void sendArray(uchar *s, uint len)
 *函数输入:*s 发送的数组指针,len数组长度
 *函数返回:无
 *函数说明:向串口发送一段数组
 ***************************************/
void sendArray(uchar *s, uint len)
{
	uint i;
	for(i=0; i<len; i++)
	{
		SBUF = *s++;
		while(!TI);
		TI = 0;
	}
}

//向串口发送一个字符
void putchar(char ch)
{
	SBUF = ch;
	while(!TI);TI = 0;
}

/************************************************
 - 功能描述:求和校验
 - 隶属模块:
 - 参数说明:
 - 返回说明:
 - 注:      和校验的思路如下
             发送的指令,去掉起始和结束。将中间的6个字节进行累加,最后取反码
             接收端就将接收到的一帧数据,去掉起始和结束。将中间的数据累加,再加上接收到的校验
             字节。刚好为0.这样就代表接收到的数据完全正确。
**************************************************/
void DoSum( uchar *Str, uchar len)
{
    uint xorsum = 0;
    uchar i;

    for(i=0; i<len; i++)
    {
        xorsum  = xorsum + Str[i];
    }
	xorsum     = 0 -xorsum;
	*(Str+i)   = (uchar)(xorsum >>8);
	*(Str+i+1) = (uchar)(xorsum & 0x00ff);
}

/***********************************************
 - 功能描述: 串口向mini MP3发送命令[包括控制和查询]
 - 隶属模块: 外部
 - 参数说明: CMD:表示控制指令,请查阅指令表,还包括查询的相关指令
              feedback:是否需要应答[0:不需要应答,1:需要应答]
              data:传送的参数
 - 返回说明:
 - 注:       
*************************************************/
void Uart_miniMP3_SendCMD(uchar CMD, uchar feedback, uint dat)
{
	Send_buf[0] = 0xff;    							//保留字节 
	Send_buf[1] = 0x06;    							//长度
	Send_buf[2] = CMD;     							//控制指令
	Send_buf[3] = feedback;							//是否需要反馈
	Send_buf[4] = (uchar)(dat >> 8);    //datah
	Send_buf[5] = (uchar)(dat);         //datal
	DoSum(&Send_buf[0],6);              //校验
	
	putchar(0x7E);											//发送启始指令
	sendArray(&Send_buf[0], 8);					//发送此帧数据
	putchar(0xEF);											//发送结束指令
}

/*****************************************
 *函数名称:miniMP3_numBroadcasting
 *函数功能:播报组合数字
 *函数输入:num 需要播报到数字(只能播报1-9999到数字组合)
 *函数返回:无
 *****************************************/
void miniMP3_numBroadcasting(uint num)
{
	uint ge,shi,bai,qian;
	
	qian = num/1000;
	bai = num/100%10;
	shi = num/10%10;
	ge = num/1%10;
	
	if(qian != 0)
	{
		Uart_miniMP3_SendCMD(0x03, 0, qian);//播报千位数字
		Delay_ms(1100);
		Uart_miniMP3_SendCMD(0x03, 0, 0x0D);//播报千
		Delay_ms(1100);
		Uart_miniMP3_SendCMD(0x03, 0, bai);//播报百位数字
		Delay_ms(1100);
		Uart_miniMP3_SendCMD(0x03, 0, 0x0C);//播报百
		Delay_ms(1100);
		Uart_miniMP3_SendCMD(0x03, 0, shi);//播报十位数字
		Delay_ms(1100);
		Uart_miniMP3_SendCMD(0x03, 0, 0x0a);//播报十
		Delay_ms(1100);
		Uart_miniMP3_SendCMD(0x03, 0, ge);//播报个位数字
		Delay_ms(1100);
		
		return;
	}
	else if(bai != 0)
	{
		Uart_miniMP3_SendCMD(0x03, 0, bai);//播报百位数字
		Delay_ms(1100);
		Uart_miniMP3_SendCMD(0x03, 0, 0x0C);//播报百
		Delay_ms(1100);
		Uart_miniMP3_SendCMD(0x03, 0, shi);//播报十位数字
		Delay_ms(1100);
		Uart_miniMP3_SendCMD(0x03, 0, 0x0a);//播报十
		Delay_ms(1100);
		Uart_miniMP3_SendCMD(0x03, 0, ge);//播报个位数字
		Delay_ms(1100);
		
		return;
	}
	else if(shi != 0)
	{
		Uart_miniMP3_SendCMD(0x03, 0, shi);//播报十位数字
		Delay_ms(1100);
		Uart_miniMP3_SendCMD(0x03, 0, 0x0a);//播报十
		Delay_ms(1100);
		Uart_miniMP3_SendCMD(0x03, 0, ge);//播报个位数字
		Delay_ms(1100);
		
		return;
	}
	else if(ge != 0)
	{
		Uart_miniMP3_SendCMD(0x03, 0, ge);//播报个位数字
		Delay_ms(1100);
		
		return;
	}
}

void main(void)
{
	Delay_ms(1000);				//延时1秒等待系统稳定
	UartInit();						//串口初始化,波特率9600
	
	miniMP3_numBroadcasting(1234);
	Uart_miniMP3_SendCMD(0x03, 0, 0x11);//播放指定文件
	Delay_ms(5000);
	
	miniMP3_numBroadcasting(123);
	Uart_miniMP3_SendCMD(0x03, 0, 0x11);//播放指定文件
	Delay_ms(5000);
	
	miniMP3_numBroadcasting(12);
	Uart_miniMP3_SendCMD(0x03, 0, 0x11);//播放指定文件
	Delay_ms(5000);
	
	miniMP3_numBroadcasting(1);
	Uart_miniMP3_SendCMD(0x03, 0, 0x11);//播放指定文件
	Delay_ms(5000);
	while(1);
}

参考手册、代码例程、语音合成软件:
链接:https://pan.baidu.com/s/1hzq6GUMjYvccphqfJBP5cQ
提取码:cxv1

参考文献

[1]广州悦欣电子科技有限公司YX5200-24SS串口语音芯片简介
https://www.yxin18.com/product/product-94-261.html
[2]DFRobot arduino DFPlayer官方资料
https://wiki.dfrobot.com/DFPlayer_Mini_SKU_DFR0299

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/106286.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

KingbaseES运维案例之---服务进程(backend process)终止

​ 案例说明&#xff1a; 如下图所示&#xff1a;KingbaseES服务进程结构 KingbaseES使用客户端/服务器的模型。 对于每个客户端的连接&#xff0c;KingbaseES主进程接收到客户端连接后&#xff0c;会为其创建一个新的服务进程。 KingbaseES 用服务进程来处理连接到数据库服务的…

Java Swing JTextField:单行文本框组件

Swing 中使用 JTextField 类实现一个单行文本框&#xff0c;它允许用户输入单行的文本信息。该类的常用构造方法如下。 JTextField()&#xff1a;创建一个默认的文本框。JTextField(String text)&#xff1a;创建一个指定初始化文本信息的文本框。JTextField(int columns)&…

Nacos学习笔记 (4)Nacos整合SpringBoot流程

前提&#xff0c;先下载Nacos并启动 Nacos Server。 1. Nacos 融合 Spring Boot 为注册配置中心 实现&#xff1a; 通过 Nacos Server 和 nacos-config-spring-boot-starter 实现配置的动态变更&#xff1b;通过 Nacos Server 和 nacos-discovery-spring-boot-starter 实现服…

OpenAI 3D 模型生成器Point-E极速体验

OpenAI 3D 模型生成器Point-E极速体验 3090显卡&#xff0c;极速体验三维模型生成&#xff0c;体验地址&#xff1a;Gradio 文本生成图像的 AI 最近已经火到了圈外&#xff0c;不论是 DALL-E 2、DeepAI 还是 Stable Diffusion&#xff0c;人人都在调用 AI 算法搞绘画艺术&…

Unreal Engine工程项目目录及对应作用

目录 .vs Binaries&#xff1a;编译文件 Config&#xff1a;配置文件 Content&#xff1a;资产文件 DerivedDataCache&#xff1a;UE针对平台特化的资源版本 Intermediate&#xff1a;中间文件 Saved&#xff1a;自动保存的内容 Source&#xff1a;源&#xff08;代码&…

ADI Blackfin DSP处理器-BF533的开发详解66:MP3解码(含源码)

硬件准备 ADSP-EDU-BF533&#xff1a;BF533开发板 AD-HP530ICE&#xff1a;ADI DSP仿真器 软件准备 Visual DSP软件 硬件链接 代码实现功能 代码实现了读取工程目录下的一个 MP3 文件&#xff0c;对文件进行解码后&#xff0c;将生成的数据以 PCM 文件的形式保存在工程目录…

关于数组的一些题---获取数组对象的各种数据

关于数组的一些题—获取数组对象的各种数据 题目1:将数组对象中的属性值提出来生成新的对象 var arr [{label:男&#xff0c;value: 1}, {label:女&#xff0c;value: 0}]function f(arr) {// 写代码&#xff0c;得到 } var obj f(arr); console.log(obj) // obj {1: 男&am…

1 | Trerraform的使用及创建CVM

目录1 Trerraform简介2 Trerraform的安装2.1 参考地址2.2 安装方式3 使用Terraform管理腾讯云3.1 创建帐号并授权3.2 添加Terraform的环境变量3.3 配置provider文件3.4 terraform init3.5 terraform init -upgrade3.6 terraform plan3.7 terraform apply3.8 terraform destroy4…

5分钟让你做出HR一眼看中的简历,方法简单易操作

写简历&#xff0c;真的是个“力气活”。 但凡求职经验丰富的朋友们&#xff0c;可以仔细想一想&#xff0c;之前我们面试求职的过程中&#xff0c;哪次不是通宵达旦在修改和“润色”简历中&#xff0c;在写简历里费劲功夫&#xff0c;目的还是为了引起HR的关注&#xff0c;从…

DASOU知识星球学的知识图谱

1.经典课程 1.经典课程 东南大学研究生课程: 东南大学研究生课程&#xff1a; https://github.com/npubird/KnowledgeGraphCourse 书籍推荐: 知识图谱的书籍的话可以看下作者是王昊奋【知识图谱:方法、实践与应用】那本书&#xff0c;算是近些年出版的里面质量不错的了&…

解决问题:VMware Tools 启动脚本未能在虚拟机中成功运行。

目录 问题 解决 方法一、重装 open-vm-tools-desktop 方法二、重装 vmware-tools 问题 Ubuntu 虚拟机开机时提示报错&#xff0c;具体信息如下&#xff1a; VMware Tools 启动脚本未能在虚拟机中成功运行。如果您在此虚拟机中配置了自定义启动脚本&#xff0c;请确保该脚本…

USB TO SPI(上海同旺电子)调试器调试TC77温度传感器(三线SPI)

所需设备&#xff1a; 1、USB TO SPI(上海同旺电子)&#xff1b; 2、TC77 带 SPI 接口的温度传感器; 特别注意TC77温度传感器(三线制SPI) 特性 • 5引脚 SOT-23A 和8引脚SOIC 封装的数字温度传感器 • 以13 位数字字格式输出温度值 • SPI 和 MICROWIRE™ 兼容接口 • 固态…

IB科学课程的Group 4 project是什么?

。IBDP第4科学科目组中的科学类课程是必选课程。中国IB学生常选物理、化学、生物、计算机科学这类IB科学课程。这些IBDP科学课程都有一个共同的课程项目&#xff0c;那就是——The group 4 project&#xff01; 什么是The group 4 project&#xff1f; The group 4 project是一…

图表控件TeeChart for .NET系列教程四:轴控制(中)

TeeChart for .NET是优秀的工业4.0 WinForm图表控件&#xff0c;官方独家授权汉化&#xff0c;集功能全面、性能稳定、价格实惠等优势于一体。TeeChart for .NET 中文版还可让您在使用和学习上没有任何语言障碍&#xff0c;至少可以节省30%的开发时间。 TeeChart for .NET最新…

【Python黑帽子】——简易的ZIP文件密码破解器

作者名&#xff1a;Demo不是emo 主页面链接&#xff1a;主页传送门 创作初心&#xff1a;舞台再大&#xff0c;你不上台&#xff0c;永远是观众&#xff0c;没人会关心你努不努力&#xff0c;摔的痛不痛&#xff0c;他们只会看你最后站在什么位置&#xff0c;然后羡慕或鄙夷座…

[翻译+笔记]生成对抗网络: 从GAN到WGAN

最近读了一篇社会力模型的论文, 里面用到了GAN, 发现自己不是很懂. 想翻译一下一个大神的博客, 做一下笔记. 并不是全文翻译, 只翻译一部分. 原文地址: from GAN to WGAN 1. K-L和J-S散度 在介绍GAN之前, 首先复习一下衡量两个概率分布相似度的两种指标. (1) K-L散度: KL散度…

java Lambda表达式 省略模式写法

我们先来看一个普通的Lambda表达式 我们创建一个包 下面创建一个接口 testInterface 参考代码如下 public interface testInterface {int eat(int max,int min); }text 测试类 参考代码如下 public class text {public static void main(String args[]) {newTestInterface(…

夺冠热度空前,梅西Instagram粉丝破4亿,跨境卖家如何借这股东风?

阿根廷队世界杯夺冠&#xff0c;35岁的梅西终于实现了职业生涯大满贯&#xff0c;全世界球迷都在为梅西欢呼。梅西夺冠的热度席卷全球&#xff0c;当前其Instagram账号的粉丝就突破了4亿&#xff0c;成为世界上第二个Instagram粉丝超4亿的人。 梅西夺冠当日在Instagram上的发帖…

易观千帆 | 2022年11月银行APP月活跃用户规模盘点

易观分析&#xff1a;11月手机银行服务应用活跃人数52639.05万&#xff0c;环比增长0.68%&#xff1b;排在前三的手机银行APP仍然为中国工商银行、中国农业银行、中国建设银行。 11月城商行手机银行服务应用活跃人数3730.98万&#xff0c;环比增长4.64%&#xff0c;从月活表现来…

Spring Boot 实现 SSE 服务端推送事件

源码地址 关于 SSE SSE 全程 Server Send Event&#xff0c;是 HTTP 协议中的一种&#xff0c;Content-Type 为 text/event-stream&#xff0c;是服务端主动向前端推送数据。类似于 WebSocket。 SSE 优势我们可以划分为两个&#xff1a; 长链接服务端能主动向客户端推送数据…