标题:
基于51单片机控制ysm3a3芯片的音乐播放器MP3的程序源码
[打印本页]
作者:
asjhd111
时间:
2018-7-11 21:52
标题:
基于51单片机控制ysm3a3芯片的音乐播放器MP3的程序源码
可以显示播放时间,显示音量和显示歌名。不过歌名只能显示3个中文字或者6和英文字符。
0.png
(40.54 KB, 下载次数: 25)
下载附件
2018-7-12 01:50 上传
单片机源程序如下:
#include "reg52.h"
#include "delay.h"
#include "12864.h"
#include "ysm3a3.h"
#include "stdio.h"
#define FOSC 11059200L //System frequency
bit busy,SOE;
unsigned int data1[4]={0xfd,0x02,0x04,0xdf}; //上一曲
unsigned int data2[4]={0xfd,0x02,0x03,0xdf}; //下一曲
unsigned int data3[4]={0xfd,0x02,0x05,0xdf}; //音量加
unsigned int data4[4]={0xfd,0x02,0x06,0xdf}; //音量减
unsigned int datak[4]={0xfd,0x02,0x0c,0xdf}; //暂停播放
unsigned char data5[5]={0xfd,0x03,0x31,0x02,0xdf}; //设置音量为05/30
unsigned char data6[5]={0xfd,0x03,0x33,0x00,0xdf}; //设置循环模式为
unsigned int data7[7]={0xfd,0x04,0x41,0x00,0x01,0xdf}; //播放第一首歌
unsigned int datac1[4]={0xfd,0x02,0x11,0xdf}; //查询音量
unsigned int datac4[4]={0xfd,0x02,0x1c,0xdf}; //当前时间
unsigned int datac6[4]={0xfd,0x02,0x1e,0xdf}; //查询歌名
unsigned char j;
unsigned char ss[7];
sbit key1=P1^0; //上一曲
sbit key2=P1^1; //下一曲
sbit key3=P1^2; //音量+
sbit key4=P1^3; //音量-
sbit key5=P1^4; //暂停播放
void SendData(unsigned char dat)
{ while (busy); //Wait for the completion of the previous data is sent
ACC = dat; //Calculate the even parity bit P (PSW.0)
busy = 1;
SBUF = ACC; //Send data to UART buffer
}
void mp3init()
{unsigned int i;
SCON = 0x50; //8-bit variable UART
TMOD = 0x20; //Set Timer1 as 8-bit auto reload mode
TH1 = TL1 = -(FOSC/12/32/9600); //Set auto-reload vaule
TR1 = 1; //Timer1 start run
ES = 1; //Enable UART interrupt
EA = 1; //Open master interrupt switch
key1=key2=key3=key4=1;
for(i=0;i<5;i++)SendData(data5[i]);Delay(2600); //音量
for(i=0;i<5;i++)SendData(data6[i]);Delay(2600); //循环模式
for(i=0;i<6;i++)SendData(data7[i]);Delay(2600); //播放第xx首
}
void mp3()
{ unsigned int i,t,ge,shi,j0,j1,fen,miao;
j=0;
if(key1==0)
{for(i=0;i<4;i++)SendData(data1[i]);DelayMs(100);} //上一曲
if(key2==0)
{for(i=0;i<4;i++)SendData(data2[i]);DelayMs(100);} //下一曲
if(key3==0)
{for(i=0;i<4;i++)SendData(data3[i]);DelayMs(100);} //音量加
if(key4==0)
{for(i=0;i<4;i++)SendData(data4[i]);DelayMs(100);} //音量减
if(key5==0)
{for(i=0;i<4;i++)SendData(datak[i]);DelayMs(100);} //暂停播放
for(i=0;i<4;i++)SendData(datac4[i]);DelayMs(60); //查询时间
Show(0x9b,8,ss); //显示收到的指令
shi=ss[4]%16;j0=ss[4]/16; //ASCII吗转10进制
ge=ss[5]%16;j1=ss[5]/16;
if(j0==6)shi=shi+9;
if(j1==6)ge=ge+9;
t=shi*16+ge;
Show_dig(0x8f,t); //显示过滤和转换的时间(s)
fen=t/60;miao=t%60;
Show_dig(0x8b,fen);
Show(0x8c,2,"分");
Show_dig(0x8d,miao);
Show(0x8e,2,"秒");
}
void mp3name()
{ unsigned int i;
unsigned char xx[5];
j=0;
if(key1==0)
{for(i=0;i<4;i++)SendData(data1[i]);DelayMs(100);} //上一曲
if(key2==0)
{for(i=0;i<4;i++)SendData(data2[i]);DelayMs(100);} //下一曲
if(key3==0)
{for(i=0;i<4;i++)SendData(data3[i]);DelayMs(100);} //音量加
if(key4==0)
{for(i=0;i<4;i++)SendData(data4[i]);DelayMs(100);} //音量减
if(key5==0)
{for(i=0;i<4;i++)SendData(datak[i]);DelayMs(100);} //暂停播放
for(i=0;i<4;i++)SendData(datac6[i]);DelayMs(200); //查询歌名
Show(0x9b,8,ss); //显示收到的指令
xx[0]=ss[2];
xx[1]=ss[3];
xx[2]=ss[4];
xx[3]=ss[5]; //暂存歌名
xx[4]=ss[6];
xx[5]=ss[7];
Show(0x8b,4,"名:");
Show(0x8d,6,xx);
}
void mp3yinliang()
{ unsigned int i,t,ge,shi,j0,j1;
j=0;
if(key1==0)
{for(i=0;i<4;i++)SendData(data1[i]);DelayMs(100);} //上一曲
if(key2==0)
{for(i=0;i<4;i++)SendData(data2[i]);DelayMs(100);} //下一曲
if(key3==0)
{for(i=0;i<4;i++)SendData(data3[i]);DelayMs(100);} //音量加
if(key4==0)
{for(i=0;i<4;i++)SendData(data4[i]);DelayMs(100);} //音量减
if(key5==0)
{for(i=0;i<4;i++)SendData(datak[i]);DelayMs(100);} //暂停播放
for(i=0;i<4;i++)SendData(datac1[i]);DelayMs(100); //查询音量
Show(0x9b,8,ss); //显示收到的指令
shi=ss[2]%16;j0=ss[2]/16; //ASCII吗转10进制
ge=ss[3]%16;j1=ss[3]/16;
if(j0==6)shi=shi+9;
if(j1==6)ge=ge+9;
t=shi*16+ge;
Show(0x8b,6,"音量:");
Show_dig(0x8e,t);
Show(0x8f,2," "); //显示过滤和转换的音量
}
void Uart_Isr() interrupt 4 using 1
……………………
…………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码
所有资料51hei提供下载:
mp3 12864 TEA5767(显示时间,歌名和音量).rar
(1.62 KB, 下载次数: 44)
2018-7-11 21:50 上传
点击文件名下载附件
下载积分: 黑币 -5
作者:
Hua555
时间:
2019-12-12 13:28
里面的音乐内容是什么?
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1