📄 main.c
字号:
/************************************************************************************
本程序仅供广大电子爱好者制作MP3学习和参考使用,不得用于其它用途,否则后果自负
AT89C51SND1C 解码芯片做的硬盘MP3,软件还在完善中,现在只支持一块硬盘,一个分区,
至少可支持15层目录。只支持FAT32文件系统。支持USB1.1下载文件,速度300KB/S左右。
7.5*2个汉字液晶显示。可显示歌曲名,当前曲号等。可进行前后选曲。部分MP3文件不能解码。
本人联系方法:
E_mail: Computer-lov@tom.com
Blog: http://computer00.21ic.org
愿与大家共同学习。
*************************************************************************************/
/* MAIN.C File
The MP3 main file
Created by Computer-lov. Date: 2005.3.19
Last edited date: 2005.5.31
version 1.1
Copyright (c) 2005 Computer-lov
All rigths reserved
*/
#include "AT89C51SND1C.H"
#include "ide.h"
#include "hardware.h"
#include "file_system.h"
#include "Initial.h"
#include "keyboard.h"
#include "MP3.H"
#include "LCD.H"
void usb(void);
//////////////////////////////////////////// 主函数 ///////////////////////////////
void main(void)
{
unsigned char i;
unsigned char key_press_time;
unsigned char hard_disk_sleep=0;
system_initial(); //初始化
status=START;
driver_number=0; //选择第一个分区
key=0;
function=FUN_SEL; //歌曲选择状态
while(1)
{
switch (status)
{
case START: //开机
{
vol=10;
bas=10;
med=2;
tre=10;
set_vol(vol);
set_vor(vol);
set_bas(bas);
set_med(med);
set_tre(tre); //音量等初始化
LCD_go_home();
for(i=0;i<14;i++)write_LCD_data(((unsigned char *)dir_name)[i]);
LCD_line_feed();
prints("停止 ");
item_count=0;
while(!key);
if(key==KEY_FUN){status=USB;break;}
status=STOP;
break;
}
case STOP:{ //停止
LCD_go_home();
for(i=0;i<14;i++)write_LCD_data(((unsigned char *)dir_name)[i]);
while(!key);
switch (key)
{
case KEY_OK:
{
key_press_time=0;
while(!(P1_3))
{
delayXms(10);
key_press_time++;
if(key_press_time==130)break;
}
if(key_press_time==130)
{
write_IDE_command(IDE_Sleep);
LCD_line_feed();
prints("现在可以关机了");
hard_disk_sleep=0xFF;
break;
}
if(hard_disk_sleep)
{
reset_IDE();
hard_disk_sleep=0;
LCD_line_feed();
prints(" ");
}
if(file_or_folder==IS_MP3FILE)
{
get_nst_file();
status=PLAY;
}
if(file_or_folder==IS_FOLDER)
{
enter_dir();
get_next_item();
LCD_line_feed();
for(i=0;i<14;i++)write_LCD_data(((unsigned char *)item_name)[i]);
}
break;
}
case KEY_UP:
{
get_pre_item();
LCD_line_feed();
for(i=0;i<14;i++)write_LCD_data(((unsigned char *)item_name)[i]);
break;
}
case KEY_DOWN:
{
get_next_item();
LCD_line_feed();
for(i=0;i<14;i++)write_LCD_data(((unsigned char *)item_name)[i]);
break;
}
case KEY_FUN:
{
exit_dir();
get_next_item();
LCD_line_feed();
for(i=0;i<14;i++)write_LCD_data(((unsigned char *)item_name)[i]);
break;
}
}key=0;break;
}
case PLAY:{play();break;} //播放
case USB: {usb();break;} //USB下载
key=0;
}
}
}
/////////////////////////////////////////////////////////////////////////////////////////
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -