📄 main._c
字号:
0x3e10, 0xb803, 0x3e11, 0x7806, 0x3e11, 0xf813, 0x3e13, 0xf80e,
0x3e13, 0x4024, 0x3e04, 0x7810, 0x449a, 0x0040, 0x0001, 0x0003,
0x2800, 0x7304, 0x4036, 0x03c1, 0x0003, 0xffc2, 0xb326, 0x0024,
0x0018, 0x0042, 0x4326, 0x4495, 0x4024, 0x40d2, 0x0000, 0x0180,
0xa100, 0x4090, 0x0010, 0x0fc2, 0x4204, 0x0024, 0xbc82, 0x4091,
0x459a, 0x0024, 0x0000, 0x0054, 0x2800, 0x7204, 0xbd86, 0x4093,
0x2400, 0x71c5, 0xfe01, 0x5e0c, 0x5c43, 0x5f2d, 0x5e46, 0x020c,
0x5c56, 0x8a0c, 0x5e53, 0x5e0c, 0x5c43, 0x5f2d, 0x5e46, 0x020c,
0x5c56, 0x8a0c, 0x5e52, 0x0024, 0x4cb2, 0x4405, 0x0018, 0x0044,
0x654a, 0x0024, 0x2800, 0x8000, 0x36f4, 0x5810, 0x81d1, 0x3e12,
0xb814, 0x0000, 0x800a, 0x3e10, 0x3801, 0x3e10, 0xb803, 0x3e11,
0x7806, 0x3e11, 0xf813, 0x3e13, 0xf80e, 0x3e13, 0x4024, 0x3e04,
0x7810, 0x449a, 0x0040, 0x0000, 0x0803, 0x2800, 0x7ec4, 0x30f0,
0x4024, 0x0fff, 0xfec2, 0xa020, 0x0024, 0x0fff, 0xff02, 0xa122,
0x0024, 0x4036, 0x0024, 0x0000, 0x1fc2, 0xb326, 0x0024, 0x0010,
0x4002, 0x4326, 0x4495, 0x4024, 0x40d2, 0x0000, 0x0180, 0xa100,
0x4090, 0x0010, 0x0042, 0x4204, 0x0024, 0xbc82, 0x4091, 0x459a,
0x0024, 0x0000, 0x0054, 0x2800, 0x7dc4, 0xbd86, 0x4093, 0x2400,
0x7d85, 0xfe01, 0x5e0c, 0x5c43, 0x5f2d, 0x5e46, 0x0024, 0x5c56,
0x0024, 0x5e53, 0x5e0c, 0x5c43, 0x5f2d, 0x5e46, 0x0024, 0x5c56,
0x0024, 0x5e52, 0x0024, 0x4cb2, 0x4405, 0x0010, 0x4004, 0x654a,
0x9810, 0x0000, 0x0144, 0xa54a, 0x1bd1, 0x0006, 0x0013, 0x3301,
0xc444, 0x687e, 0x2005, 0xad76, 0x8445, 0x4ed6, 0x8784, 0x36f3,
0x64c2, 0xac72, 0x8785, 0x4ec2, 0xa443, 0x3009, 0x2440, 0x3009,
0x2741, 0x36f3, 0xd80e, 0x36f1, 0xd813, 0x36f1, 0x5806, 0x36f0,
0x9803, 0x36f0, 0x1801, 0x2000, 0x0000, 0x36f2, 0x9814, 0x8211,
0x4c82, 0x0024, 0x0000, 0x0024, 0x2000, 0x0005, 0xf5c2, 0x0024,
0x0000, 0x0980, 0x2000, 0x0000, 0x6010, 0x0024, 0x0050,
};
//-------------- 音乐播放程序 -------------------//
void VS1003_Play(void);
//----------------- ------------------------------
//
// 主函数
//
//------------------------------------------------
void main()
{
Usart_Init(9600); // 串口初始化9600bps
SPI_Init(); // SPI初始化,默认速度400Hz
VS1003_Init(); // VS1003芯片初始化
while(SD_Init()); // SD卡循环初始化
Fat_Init(); // 文件系统初始化
AD_Init(); // AD初始化
TC0_Init(); // T/C0初始化
VS1003_Play(); // 音乐播放
}
//----------------- ------------------------------
//
// 音乐播放函数
//
//------------------------------------------------
void VS1003_Play(void)
{
uint32 n;
uint32 i;
uint32 size_buf=0; // 已播放的文件大小
uint32 num; // 音乐文件所在的簇
uint8 music_num=0; // 正在播放文件的号码
uint8 play_flag=0; // 播放标志
uint16 data_pointer=0;
uint8 music_next=0,music_last=0; // 音乐换曲标志
uint8 vol_flag=0; // 音量调节标志
AD_Flag=0; // AD键盘标志
AD_time=0; // AD键盘采样次数
key_num=0; // 按键号
GetMusicFile(); // 获取音乐文件
num = fclust[music_num]; // 调用音乐文件
while(1)
{
for(i=0;i<8;i++)
{
SD_ReadBlock(FirstDataSector+(num-2)*8+i,Fat_Buffer); // 获取音乐文件的数据
do
{
//--------------------------- AD按键检测 ---------------------------//
if(key_num==6&&AD_time==0)play_flag=1; // Key6按下,播放
else if(key_num==5&&AD_time==0)play_flag=0; // Key5按下,停止
else if(key_num==1&&AD_time==0)music_next=1; // Key1按下,下一首
else if(key_num==4&&AD_time==0)music_last=1; // Key4按下,上一首
else if(key_num==3&&AD_time==0)vol_flag=1; // Key3按下,音量+
else if(key_num==2&&AD_time==0)vol_flag=2; // Key2按下,音量-
//-------------- 音量调节 ----------------//
if(vol_flag!=0)
{
if(vol_flag==1)
{
if(VOL>27)VOL=29;
else VOL+=2;
}
else
{
if(VOL<2)VOL=0;
else VOL-=2;
}
VS1003_WriteReg(VS1003_SPI_VOL ,VOL_BUFFER[VOL]); // 送音量数据
while(VS1003_DREQ_STATE() != VS1003_DREQ); // 等待
key_num = 0;
vol_flag=0;
}
//----------------- 换曲操作 -----------------//
if(music_next!=0||music_last!=0)
{
data_pointer=512;
i=8;
}
//---------------- 音乐数据送入 ------------------//
else if(VS1003_DREQ_STATE()== VS1003_DREQ&&play_flag!=0)
{
for(n=0;n<32;n++)
{
VS1003_WriteDat(Fat_Buffer[data_pointer]); // 发送数据
data_pointer++;
}
size_buf+=32;
}
if(size_buf>=fsize[music_num]-64)
{
data_pointer=512;
i=8;
size_buf=0;
}
}while(data_pointer<511);
data_pointer=0;
}
//---------- 下一簇 ------------//
num = FatNextCluster(num);
if(num==CLUST_EOFE||music_next!=0||music_last!=0)
{
if(music_last!=0)
{
if(music_num>0)music_num--;
else music_num = fcount-1;
}
else
{
if(music_num<fcount-1)music_num++;
else music_num=0;
}
num = fclust[music_num];
play_flag=1;
music_next = 0;
music_last = 0;
key_num=0;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -