DY-SV17F语音播放模块应用篇二 【UART 串口模式】

UART 串口模式 是采用波特率为 9600 的全双工串口通信。
  1. 语音模块做为从机处理,上电默认等待状态,所有播放操作全由主机控制。
  2. 从机不会主动发起通信,所有通信都是由主机发起。
串口模式接线图:
DY-SV17F语音播放模块应用篇二 【UART 串口模式】_第1张图片

使用串口可以存放65535首曲目(需要注意模块只有4m内存),通过通信指令可以实现多种模式播放,具体如下:

控制指令 :

DY-SV17F语音播放模块应用篇二 【UART 串口模式】_第2张图片

DY-SV17F语音播放模块应用篇二 【UART 串口模式】_第3张图片

设置指令 :

DY-SV17F语音播放模块应用篇二 【UART 串口模式】_第4张图片

查询指令

DY-SV17F语音播放模块应用篇二 【UART 串口模式】_第5张图片

      指令太多,就不全部介绍了,本文只使用指定播放功能:

 DY-SV17F语音播放模块应用篇二 【UART 串口模式】_第6张图片

 AA 07 02 前三位固定的,不用管;

后三位分别是 曲目高8位 曲目低8位 SM

                    其中高8位和低8位刚好组成16进制,如0xFFFF刚好对应65535。

                    SM和检验,代表前面几个数据的和。

介绍完毕(细节操作过程请看第一章)

代码部分:

#include 

typedef unsigned char u8;

u8 Music_Cmd_Appoint[] = {0xAA,0x07,0x02,0x00,0x00,0x00};	//播放指定曲目初始化数组
						 //AA 07 02 曲目高8位 曲目低8位 SM(和检验,前面所有字节之和)

void UartInit(void)		//9600波特率 @11.0592MHz
{
	PCON &= 0x7F;		//波特率不倍速
	SCON = 0x50;		//8位数据,可变波特率
	TMOD &= 0x0F;		//设置定时器模式
	TMOD |= 0x20;		//设置定时器模式
	TL1 = 0xFD;			//设置定时初始值
	TH1 = 0xFD;			//设置定时重载值
	ET1 = 0;			//禁止定时器%d中断
	TR1 = 1;			//定时器1开始计时
}

void UartSendByte(u8 C)		//串口数据发送
{
    SBUF = C;		
    while(!TI);		//等待发送完成
    TI = 0;			//软件置0
}

/*
  说明:播放指定曲目
  参数1:数组
  参数2:播放第x首曲目
*/
void USART_MUSIC(u8 *mdate, u8 num)	   
{
	u8 i;
	mdate[4] = num;			//写入播放曲目
	mdate[5] = 0;
	for(i=0; i<5; i++)		//SM 把前面 数组0~4 总共5个数加起来
	{
		mdate[5] += mdate[i];
	}	
	for(i=0; i<6; i++)		//把修改后的曲目发送出去(每次发送一个数据,分6次发送完)
	{
		UartSendByte(mdate[i]);		
	}	
}

void main()			//主程序
{
	UartInit();		//串口初始化
	
	USART_MUSIC(Music_Cmd_Appoint, 2);		//指定播放第二首
	
	while(1)
	{
			
	}	
}

//完。

相关资料:

DY-SV17F语音播放模块应用篇一 【IO独立模式】_啊维的博客-CSDN博客

你可能感兴趣的:(51单片机,单片机,物联网,嵌入式硬件)