?? 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 + -