⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.c

📁 用C51单片机实现的MP3播放器的c代码程序。
💻 C
字号:
#include <stdio.h>
#include <string.h>
#include "..\Inc\AT8xC51SND1.h"
#include "..\Inc\GLOBAL.h"
#include "..\Inc\CHIPSOURCE.h"
#include "..\Inc\COMMON.h"
#include "..\Inc\IDEIO.h"
#include "..\Inc\FAT32.h"
#include "..\Inc\MP3DECODER.h"
//#include "..\Inc\LCD.h"
#include "mp3player.c"

WORD test=0;

xdata char filename1[100];


void main(void)
{
	xdata WORD i,j=0;
	xdata BYTE key,status,f2,function=0;

	EA=1;
	
	//初始化
	//LCDInit();
	//LCDPrint(0,Title);
	InitPLL();

	InitUART();
	InitKEY();
//	InitTimer0();
    sendstring("UART and KEY OK");
	InitMP3Decoder();
	sendstring("InitMP3Decoder OK");
	IDEInit();
    sendstring("IDEInit OK");

	//printf("ok\n");
	//printf("%bd Drivers found!\n",IDE.TotalDevices);
	//printf("Device 0 LBA: %ld\n",IDEDevice[0].TotalSectors);
	//printf("Device 1 LBA: %ld\n",IDEDevice[1].TotalSectors);

	IDESetCurrentDevice(IDE_DEVICE_MASTER);

	sendstring("Ready\n");
	FAT32Init();
	i=FAT32MountPartition();
	sendstring("Mount Hard Disk Partition Table...ok\n");
	i=FAT32MountVolumeID(0);
	//printf("\nMount Hard Disk Partition P%bd...ok\n",HDD.CurrentPartition);
	//printf("Total Size:\t%ld bytes\nFree Size:\t%ld bytes\n",FAT32DiskSize(),FAT32DiskFreeSize());
	//ShowDiskSize();
	filename1[0]=0;
	Play.CurrentPoint=1;
	while((status=FAT32GetDirName(Play.CurrentPoint))==3) Play.CurrentPoint++;
	//printf("\n%d\n",Play.CurrentPoint);
	function=1;
	sendstring("\nenter while loop\n");
	while(1)
	{
		key=GetKey();
		//printf("key:%bd\n",key);
		switch (key)
		{
			case KEY_LEFT		:
				FunctionProcess(function,0);
				sendstring("\nKEY_LEFT processing\n");
				break;
			case KEY_RIGHT	:
				FunctionProcess(function,1);
				sendstring("\nKEY_right processing\n");
				break;
			case KEY_UP	:
				function--;
				if (function>MAX_MENU) function=MAX_MENU-1;
                sendstring("\nKEY_up processing\n");
				//printf("%bd,%s\n",function,MenuList[function]);
				//LCDClearLine(0);
				//LCDPrint(0,MenuList[function]);
				break;
			case KEY_DOWN	:
				function=(++function)%MAX_MENU;
				sendstring("\nKEY_down processing\n");
				//printf("%bd,%s\n",function,MenuList[function]);
				//LCDClearLine(0);
				//LCDPrint(0,MenuList[function]);
				break;
			case KEY_OK		:
				if (FAT32GetDirName(Play.CurrentPoint)==2)
				{   sendstring("\nFAT32GetDirName(Play.CurrentPoint)==2\n");
					strcpy((char *) filename1,(char *) LongFileName);
					//printf("%08lx->",FAT32.CurrentDirectory);

					FAT32ChangeDirectory(filename1);
					sendstring("\nFAT32ChangeDirectory ok\n");
					//printf("%08lx->\n",FAT32.CurrentDirectory);
					Play.CurrentPoint=1;
					while((status=FAT32GetDirName(Play.CurrentPoint))==3) Play.CurrentPoint++;
					//LCDClearLine(1);
					status=FAT32GetDirName(Play.CurrentPoint);
					if (status==1)
					{    sendstring("\nstatus==1 process\n");
						//printf("%bd FILE->",Play.CurrentPoint);
						//LCDPrint(0x10,"--");
					}
					else if (status==2)
					{   sendstring("\nDIR->\n");
				 		//printf("DIR->");
						//LCDPrint(0x10,"->");
					}
					//printf("%s\n",LongFileName);
					//LCDPrint(0x11,LongFileName);
				}
				else
				{   sendstring("\nFAT32GetDirName(Play.CurrentPoint)!=2\n");
					if (MP3.Playing)
					{   sendstring("\nMP3.Playing==1\n");
						if (AUDCON1&0x40)
							MP3DecoderControl(MP3_PAUSE,0);
							sendstring("\nMP3_PAUSE,0\n");
						else
							MP3DecoderControl(MP3_PAUSE,1);
                            sendstring("\nMP3_PAUSE,1\n");
					}
					else					
					{   sendstring("\nMP3.Playing==0\n");
						if ((status=FAT32GetDirName(Play.CurrentPoint))==0) 
						  {j=1;status=FAT32GetDirName(Play.CurrentPoint);}
						  strcpy((char *) filename1,(char *) LongFileName);
						  f2=FAT32OpenFile(filename1);
						if (f2==FAT32_ERR_FILE_OPEN_ERROR) {send_string("fail to open file\n");}
						else
						{
							printf("open file:%s \t%ld \t%lx\n",FCB[f2].FileName,FCB[f2].Size,FCB[f2].FirstCluster);
	//						InitMP3Decoder();
							LoadMP3Data(f2);
						}
					}
				}
				break;
			case KEY_CANCEL	:
				if (MP3.Playing)
				{
					MP3.Playing=0;
					FAT32CloseFile(MP3.File);
					send_string("play over\n");
				}
				else
				{
					strcpy(filename1,"..         ");
					printf("%08lx->",FAT32.CurrentDirectory);
					FAT32ChangeDirectory(filename1);
					printf("%08lx->\n",FAT32.CurrentDirectory);
					Play.CurrentPoint=1;
					while((status=FAT32GetDirName(Play.CurrentPoint))==3) Play.CurrentPoint++;
					LCDClearLine(1);
					status=FAT32GetDirName(Play.CurrentPoint);
					if (status==1)
					{
						printf("%bd FILE->",Play.CurrentPoint);
						LCDPrint(0x10,"--");
					}
					else if (status==2)
					{
				 		send_string("DIR->");
						LCDPrint(0x10,"->");
					}
					printf("%s\n",LongFileName);
					LCDPrint(0x11,LongFileName);
				}
				break;
		}
}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -