找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 7299|回复: 3
收起左侧

YS-M3A4语音播放模块的资料与单片机源程序分享

[复制链接]
ID:385164 发表于 2018-8-11 01:32 | 显示全部楼层 |阅读模式
分享一下YS-M3A4语音播放模块的资料。有需要自取
0.png
注意:此模块的连接方法主要是串口连接,即利用 RXD 和 TXD 2 个端口,当然也需要接上电源正负极。同时注意串口连接是需要 RXD 和 TXD 交叉进行连接,部分厂家下载器的标号是标反的,自行判断!
0.png
YS-M3A3是一个提供串口的MP3芯片,完美的集成了MP3、WMV的硬解码。支持FAT16、FAT32 文件系统。通过简单的串口指令即可完成播放指定的音乐,以及如何播放音乐等功能,无需繁琐的底层操作,直接播放 TF 卡内部歌曲,使用方便,稳定可靠是此款产品的最大特点.

1.2 功能
1、支持采样率(KHz):8/11.025/12/16/22.05/24/32/44.1/48
2、24 位 DAC 输出,动态范围支持 90dB,信噪比支持 85dB
3、完全支持 FAT16、FAT32 文件系统,最大支持 16G 的 TF 卡
4、具备串口控制模式
5、广播语插播功能,可以暂停正在播放的背景音乐
6、音频数据按文件夹排序,最多支持 255 个文件夹,每个文件夹可以分配 500 首歌曲
7、30 级音量可调,5 级 EQ 可调
8、可以通过单片机串口进行控制播放指定的音乐;
9、具备循环播放、单曲不循环、随机等多种播放模式
1.3 应用
1、 车载导航语音播报
2、 公路运输稽查、收费站语音提示;
3、 火车站、汽车站安全检查语音提示;
4、 电力、通信、金融营业厅语音提示;
5、 车辆进、出通道验证语音提示;
6、 公安边防检查通道语音提示;
7、 多路语音告警或设备操作引导语音;
8、 电动观光车安全行驶语音告示;
9、 机电设备故障自动报警;
10、消防语音报警提示;
11、自动广播设备,定时播报

3. 串口通讯协议
串口作为一种在控制领域常用的通信,我们进行了工业级别的优化,加入的帧的校验、重发、错误处理等措施,大大加强通信的稳定性和可靠性,同时可以在此基础上扩展更加强大的 RS485 进行组网功能,串口的通信波特率可自行设置,默认为 9600
3.1 通讯格式
支持异步串口通讯模式,通过串口接受上位机发送的命令
通讯标准:9600 bps
数据位 :1
校验位 :none
流控制 :none
0.png
例如,如果我们指定播放,就需要发送:FD 04 41 00 01 DF
数据长度为 4 ,这 4 个字节分别是[04 41 00 01] 。不计算起始、结束。
连续播放【FD 04 41 00 01 DF】【FD 04 41 00 02 DF】【FD 04 41 00 03 DF】三段
播放完暂停

0.png


例:读取音量大小发送【FD 02 11 DF】 则直接返回音量大小(十六位)
注:1.当为单曲播放时,放完一曲停止,并返回 STOP,全盘播放时会一直播放,放完最后一曲,播放第一曲 默认最大声音和单曲播放。
2.返回‘err’时表示指令无法识别
3.每发一条正确指令会返回‘OK’

0.png

(16 位设定)
例如,选指定歌曲,发送:FD 04 41 00 08 DF , FD 起始地址 04 位长度,41 指令,00 08 第 8
曲,DF 结束地址
连续播放,发送:
FD 04 41 00 01 DF
FD 04 41 00 02 DF
FD 04 41 00 03 DF
FD 04 41 00 04 DF
播放第 1,2,3,4 曲,最多连续播放 10 曲。
指定文件夹播放,文件夹名必须为 0-99 文件号,内总曲目名字必须改为 1-255.MP3/WAV
开机后发播放,上一曲,下一曲,都可以播放,默认播放 SPI FLASH ,没带 SPI FLASH
播放以有设备,开机后,后插入设置,系统会自动转为所插设置模式,发播放指令或按键可以播放
插播功能:当前正在播放音乐,当插播 MP3 或 WAV 进来时,立即播放插播文件,放完接着播放当前音乐。 插播指定文件夹内曲目也如此。
如图,指定文件夹名字:

插播指定文件夹内文件名也是如此,如:插播 010 十楼到了.MP3 发送:FD 04 44 01 0A DF
如:插播 001 一楼到了.MP3 发送:FD 04 44 01 01 DF
根目录文件排序技巧(先存入的为第一首,故采用以下方式安排好位置再存入)由于 TF 卡里面的文件在根目录的存储地址顺序是按索引先后顺序的,即谁先拷贝进去谁额存储地址排在先。而 M3A1 模块也是根据这种顺序播放,则先按计划的顺序存放入 TF 卡,下面是存放文件的方法:

1、外接喇叭功率不得超过 2W,功率过大芯片发热需要加散热片,如声音大小不满足建议加更大的功放板或者接音箱。
2、在通电前注意检查正负极连接正确后进行通电工作,模块不带防接反和短路保护功能。
3、如此说明书未及时更新不另行通知、以实物为准。

此模块与电脑的应该方法是采用电脑串口软件向本模块发送 16 进制数据进行播放。
1、首先需要安装 USB 转 TTL 的驱动到电脑中。( )
2、根据以下接线图进行连接电路。
3、打开串口软件如下图,最后点击发送即可播放对应指令的声音

单片机源程序如下:
  1. #include "reg51.h"
  2. #include "intrins.h"

  3. typedef unsigned char BYTE;
  4. typedef unsigned int WORD;

  5. #define FOSC 11059200L      //System frequency
  6. #define BAUD 9600           //UART baudrate

  7. bit busy;

  8. void SendData(BYTE dat);
  9. void SendString(char *s);

  10. unsigned int MP3data1[5]={0xfd,0x02,0x01,0xdf}  //播放
  11. unsigned int MP3data2[5]={0xfd,0x02,0x02,0xdf}  //暂停
  12. unsigned int MP3data3[6]={0xfd,0x04,0x41,0x00,0x01,0xdf}  //播放第一首歌

  13. sbit key1=P1^0; //定义按键1
  14. sbit key2=P1^0; //定义按键2


  15. void Delay20ms()                //@11.0592MHz
  16. {
  17.         unsigned char i, j;

  18.         i = 36;
  19.         j = 217;
  20.         do
  21.         {
  22.                 while (--j);
  23.         } while (--i);
  24. }


  25. void main()
  26. {
  27. unsigned int i;       

  28.     SCON = 0x50;            //8-bit variable UART
  29.     TMOD = 0x20;            //Set Timer1 as 8-bit auto reload mode
  30.     TH1 = TL1 = -(FOSC/12/32/BAUD); //Set auto-reload vaule
  31.     TR1 = 1;                //Timer1 start run
  32.     ES = 1;                 //Enable UART interrupt
  33.     EA = 1;                 //Open master interrupt switch

  34.     while(1)
  35.         {
  36.                 if(key1==0)
  37.                  {
  38.                         Delay20ms();
  39.                         if(key1==0)
  40.                         {
  41.                                 while(key1==0);
  42.                                 for(i=0;i<5;i++)
  43.                                 {
  44.                                   SendData(MP3data3[i]);//按下按键1 播放第一首歌曲               
  45.                                 }
  46.                         }       
  47.                   }       
  48.        
  49.          };
  50. }

  51. /*----------------------------
  52. UART interrupt service routine
  53. ----------------------------*/
  54. void Uart_Isr() interrupt 4 using 1
  55. {
  56.     if (RI)
  57.     {
  58.         RI = 0;             //Clear receive interrupt flag
  59.     }
  60.     if (TI)
  61.     {
  62.         TI = 0;             //Clear transmit interrupt flag
  63.         busy = 0;           //Clear transmit busy flag
  64.     }
  65. }

  66. /*----------------------------
  67. Send a byte data to UART
  68. Input: dat (data to be sent)
  69. Output:None
  70. ----------------------------*/
  71. void SendData(BYTE dat)
  72. {
  73.     while (busy);           //Wait for the completion of the previous data is sent
  74.     ACC = dat;              //Calculate the even parity bit P (PSW.0)
  75.     busy = 1;
  76.     SBUF = ACC;             //Send data to UART buffer
  77. }

  78. /*----------------------------
  79. Send a string to UART
  80. Input: s (address of string)
  81. Output:None
  82. ----------------------------*/
  83. void SendString(char *s)
  84. {
  85.     while (*s)              //Check the end of the string
  86.     {
  87.         SendData(*s++);     //Send current char and increment string ptr
  88.     }
  89. }


复制代码
0.png
所有资料51hei提供下载:
YS-M3A3串口语音播放模块--配套资料(20151011).zip (1.36 MB, 下载次数: 70)

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

ID:443820 发表于 2018-12-11 09:41 | 显示全部楼层
居然这都有
回复

使用道具 举报

ID:463135 发表于 2019-1-6 16:45 | 显示全部楼层
感谢分享
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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