• 大小: 296KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-07-24
  • 语言: 其他
  • 标签: mp3源码  

资源简介

上次 硬盘MP3播放器 的原理图及源代码改进版 经过一段时间的使用,上次的硬盘MP3播放器增加了USB下载文件功能; 汉字LCD显示功能;子文件夹功能等。并对软件做了一些修改。并将 硬件电路图画出来了。由于做得仓促,难免有不妥之处,请大家谅解, 欢迎指出错误。谢谢。 现在情况如下: 支持FAT32,FAT16/12还未做。 支持USB下载文件功能,速度300KB/S左右(USB1.1)。 无录音功能。 7.5*2个汉字LCD显示功能,能显示歌曲名,路径名(滚动显示) 支持多个文件夹功能。 有前后选曲、暂停、软件音量、高、中、低音控制,重低音音效等功能。 无软关机功能,现在拔电源操作^_^。 软件还在完善中,有一些bug。

资源截图

代码片段和文件信息

/************************************************************************************
  本程序仅供广大电子爱好者制作MP3学习和参考使用,不得用于其它用途,否则后果自负
  
  file_system.c 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 “file_system.h“
#include “IDE.H“
#include “hardware.h“
#include “lcd.h“
#include “mp3.h“
#include “keyboard.h“


FILE xdata file;
unsigned int dir_length;     //文件名长度
unsigned int folder_length;  //文件夹名长度

////////////////////////////////////  判断是否为一个 MP3 文件   ///////////////////////////////
unsigned char is_a_mp3_file(void)
{
 if((file.name[0]==0x00)||(file.name[0]==0xE5)||(file.name[0]==‘.‘))return 0;
 if(file.attribute==0x0F)return 0;  //此项目为长文件名项目
 if(file.attribute & 0x04)return 0;  //此文件为系统文件
 if(file.attribute & 0x08)return 0;  //此项目为系统标卷
 if(file.attribute & 0x10)return 0;  //此项目为子目录
 if((file.name[8]==‘M‘)&&(file.name[9]==‘P‘)&&(file.name[10]==‘3‘))return 1;
 else return 0;
}
///////////////////////////////////////////////////////////////////////////////////////////////

unsigned long int LAST_FAT_LBA; 
//最后一次读取FAT时的逻辑块地址,用来判断本次读取是否需要重新从硬盘中读取,以加快速度
unsigned int disp_count=0;
unsigned char disp_time;

////////////////////////////////////////////////////////////////////////////////////////////////
unsigned long int get_next_sector(void)  //根据当前簇号,获取下一个扇区地址
{
 unsigned long int LBA;
 unsigned  int i;
 LBA=(file.next_cluster_number)/((dbr[driver_number].bytes_per_sectors)/4);  //计算扇区地址
 i=(file.next_cluster_number)*4-LBA*dbr[driver_number].bytes_per_sectors; //计算偏移地址
 if(LAST_FAT_LBA!=LBA)                  //如果数据不在FAT_buffer[]中,则需要重新读取
  {
   LAST_FAT_LBA=LBA;
   LBA=LBA+FAT_start_sector[driver_number];
   read_IDE_FAT_sector(LBA);
  }
 ((unsigned char *)&(file.next_cluster_number))[3]=FAT_buffer[i];
 i++;
 ((unsigned char *)&(file.next_cluster_number))[2]=FAT_buffer[i];
 i++;
 ((unsigned char *)&(file.next_cluster_number))[1]=FAT_buffer[i];
 i++;
 ((unsigned char *)&(file.next_cluster_number))[0]=FAT_buffer[i];  //获取下一簇号
 LBA=file.next_cluster_number-(dbr[driver_number].root_cluster_num);                                   //保存簇号
 LBA=LBA*(dbr[0].sectors_per_cluster)+DATA_start_sector[0];        //转换成扇区地址
// IDE_LED=!IDE_LED;                                                 //硬盘指示灯闪烁
 disp_time++;
 if(disp_time>3)
  {
   disp_time=0; 
   LCD_go_home();
   disp_count+=2;
   for(i=0;i<14;i++)write_LCD_data(((unsigned char *)dir_name)[(i+disp_count)%(dir_length+4)]);
  }  
 return LBA;
}
////////////////////////////////////////////////////////////////////////////////////////////////

/////////////////////////////////////////////////  获取文件夹的下一扇区地址  ///////////////////
unsigned long int get_dir_next_sector(void)
{
 unsigned long int LBALBA2;
 unsigned int i;
 LBA=current_dir.curren

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件        865  2006-03-02 23:11  MP3_OK\MP3.h

     文件      17650  2006-03-02 23:11  MP3_OK\file_system.c

     文件      14225  2006-03-02 23:11  MP3_OK\IDE.C

     文件       2767  2006-03-02 23:11  MP3_OK\Initial.c

     文件       1030  2006-03-02 23:11  MP3_OK\keyboard.c

     文件       4825  2006-03-02 23:11  MP3_OK\LCD.C

     文件       4930  2006-03-02 23:13  MP3_OK\main.c

     文件       7648  2006-03-02 23:11  MP3_OK\MP3.c

     文件       7809  2005-04-06 18:53  MP3_OK\MP32.c

     文件      25805  2006-03-02 23:11  MP3_OK\Usb.c

     文件       7872  2005-04-02 19:50  MP3_OK\AT89C51SND1C.h

     文件       1909  2006-03-02 23:11  MP3_OK\file_system.h

     文件       1197  2006-03-02 23:11  MP3_OK\hardware.h

     文件       5825  2006-03-02 23:11  MP3_OK\IDE.h

     文件       2259  2006-03-02 23:11  MP3_OK\Initial.h

     文件        635  2006-03-02 23:11  MP3_OK\Keyboard.h

     文件        845  2006-03-02 23:11  MP3_OK\LCD.H

     文件       2474  2005-06-17 19:07  MP3_OK\MASS_STORAGE.H

     文件     119327  2006-03-02 23:08  MP3_OK\UNICODE.H

     文件       6255  2005-06-17 19:06  MP3_OK\USB.H

     文件       2619  2005-05-31 18:09  MP3_OK\MP3.Uv2

     文件        161  2006-03-02 23:12  MP3_OK\MP3.plg

     文件     115079  2006-03-02 23:11  MP3_OK\MP3.M51

     文件     124125  2006-03-02 23:11  MP3_OK\MP3.hex

     文件       7794  2006-03-02 23:11  MP3_OK\main.LST

     文件      23821  2006-03-02 23:11  MP3_OK\main.OBJ

     文件      21704  2006-03-02 23:11  MP3_OK\IDE.LST

     文件      33689  2006-03-02 23:11  MP3_OK\IDE.OBJ

     文件      25563  2006-03-02 23:11  MP3_OK\file_system.LST

     文件      48589  2006-03-02 23:11  MP3_OK\file_system.OBJ

............此处省略17个文件信息

评论

共有 条评论

相关资源