MP3-TF-16P语音播放模块——C51串口控制程序

模块

模块图
VCC_电源5V
GND_电源地
RX_
TX_
SPK1/SPK2为喇叭两个引脚
由于程序是对串口进行配置,故其他引脚的连接不过多陈述

程序

MAIN文件

/******************************************************************************************************************
        
							+--------------------------------------------------+
							             	 主函数部分
							+--------------------------------------------------+

 - 实现功能:

 - 目前进展:
 - 日期    :2013-05-06

 - 作者    :

 - 运行环境:STC   晶振:11.0592M     波特率:9600

 - 备注    :在普中科技的51开发板上调试OK --- STC89C516RD+
 
 1、实现芯片上电分别指定播放第一曲和第二曲,基本的程序供用户测试
 2、该测试程序必须是模块或者芯片方案中,有设备在线,譬如U盘、TF卡、FLASH等等
 3、
******************************************************************************************************************/
#include "STK6037.h"

//运行晶振:11.05926MHZ
#define TIMER0_H   (65536-1800)/256//定时2Ms
#define TIMER0_L   (65536-1800)%256

#define SYS_Fosc        11059200  //晶振频率			   
#define COMM_BAUD_RATE  9600      //串口波特率

#define OSC_FREQ        11059200  //11059200  


static INT8U Send_buf[10] = {0} ;
static INT8U Recv_buf[10] = {0} ;

static INT8U SendDataLen = 0 ;
static INT8U ResendDataLen = 0 ;

/******************************串口1的波特率********************************/
//T1作波特率发生器
//在波特率加倍情况下 
#define BAUD_57600    			256 - (OSC_FREQ/192L)/57600L    // 254 FF
#define BAUD_28800    			256 - (OSC_FREQ/192L)/28800L    // 254 FE
#define BAUD_19200    			256 - (OSC_FREQ/192L)/19200L    // 253 FD
#define BAUD_14400    			256 - (OSC_FREQ/192L)/14400L    // 252 FC
#define BAUD_9600     			256 - (OSC_FREQ/192L)/9600L     // 250 FA

/*****************************************************************************************************
 - 功能描述:10us的延时函数
 - 隶属模块:常用函数库(内部)
 - 参数说明:无
 - 返回参数:无
 - 注: 在这里的运行环境是51,晶振为12MHZ		
*****************************************************************************************************/
void Delay_Us(INT32U z)
{
	while(z--);
}

/***********************毫秒级别延时************************/

void Delay_Ms(INT32U z)
{
	INT32U x=0 , y=0;
	for(x=110 ; x>0 ;x--)
	for(y=z; y>0;y-- );
}

/*****************************************************************************************************
 - 功能描述: 串口1初始化
 - 隶属模块: 外部
 - 参数说明: 无
 - 返回说明: 无
 - 注:	      都是9600波特率
*****************************************************************************************************/
void Serial_init(void)
{
	TMOD = 0x20;                // 设置 T1 为波特率发生器
	SCON = 0x50;                // 0101,0000 8位数据位, 无奇偶校验
				   		
	PCON = 0x00;                //PCON=0;

	TH1=256-(SYS_Fosc/COMM_BAUD_RATE/32/12);//设置为9600波特率
	TL1=256-(SYS_Fosc/COMM_BAUD_RATE/32/
  • 8
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
要控制MP3-TF-16P模块,你需要使用Arduino和相应的软件库。以下是一些步骤: 1.将MP3-TF-16P模块连接到Arduino。 2.下载并安装DFPlayer Mini库。 3.在Arduino IDE中打开示例DFPlayer Mini库程序,并将其上传到Arduino。 4.你可以使用DFPlayer Mini库中的命令控制MP3-TF-16P模块,例如播放/暂停、上一曲/下一曲、调节音量等等。 以下是一个简单的示例代码,可以演示如何控制MP3-TF-16P模块: ``` #include "SoftwareSerial.h" #include "DFRobotDFPlayerMini.h" SoftwareSerial mySerial(10, 11); // RX, TX DFRobotDFPlayerMini myDFPlayer; void setup() { mySerial.begin(9600); Serial.begin(115200); while (!myDFPlayer.begin(mySerial)) { Serial.println(F("无法找到DFPlayer Mini模块")); delay(1000); } Serial.println(F("DFPlayer Mini模块已连接")); myDFPlayer.volume(20); myDFPlayer.play(1); } void loop() { if (myDFPlayer.available()) { printDetail(myDFPlayer.readType(), myDFPlayer.read()); //输出命令类型和参数 } } void printDetail(uint8_t type, int value) { switch (type) { case TimeOut: Serial.println(F("超时")); break; case WrongStack: Serial.println(F("数据堆栈错误")); break; case DFPlayerCardInserted: Serial.println(F("卡已插入")); break; case DFPlayerCardRemoved: Serial.println(F("卡已移除")); break; case DFPlayerCardOnline: Serial.println(F("在线")); break; case DFPlayerPlayFinished: Serial.print(F("播放完成,曲目号:")); Serial.println(value); break; case DFPlayerError: Serial.print(F("DFPlayer Mini错误代码:")); switch (value) { case Busy: Serial.println(F("忙")); break; case Sleeping: Serial.println(F("睡眠")); break; case SerialWrongStack: Serial.println(F("数据堆栈错误")); break; case CheckSumNotMatch: Serial.println(F("校验和不匹配")); break; case FileIndexOut: Serial.println(F("文件索引超出范围")); break; case FileMismatch: Serial.println(F("文件类型不匹配")); break; case Advertise: Serial.println(F("广告")); break; default: break; } break; default: break; } } ``` 请注意,这只是一个基本的示例代码,你需要根据你的具体需求来编写你自己的代码。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值