详细设计说明书目录1引言….......................................................................................21.1编写目的…............................................................................21.2项目背景…............................................................................21.3问题定义….............................................................................21.4参考资料….............................................................................32、功能概述…..............................................................................32.1目标…...................................................................................32.2完成功能…............................................................................32.3系统技术….............................................................................33.软件结构化计….........................................................................33.1概要设计…..............................................................................33.2系统流程图…..........................................................................43.3数据流说明…...........................................................................63.主要函数及实现功能…...............................................................71、引言MP3的全名是MPEGAudioLayer-3,是一种声音文件的压缩格式。世界第一台MP3播放器诞生在韩国企业Saehan(世韩,1995年从三星分离出来),并在1998年推出第一台MP3播放器MPmanF10。MPMan取意于MP3与WALKMAN的结合。MPManF10的体积为70×90×16.5mm,约有四个1.44M软盘堆叠起来这么大,体重为65g。由于MP3的小体积、便携带、低价格、高音质等功能,MP3已经成为了当今音乐播放领域的主流产品,并在市场中牢牢地占有一席之地。其中,最具特色的是以ATmega16单片机为核心的MP3播放器,它是能以单一的技术整合方案,更低廉的生产成品来实现一台可用的MP3播放器。1.1编写目的为明确MP3播放器设计实现的软件需求,安排软件规划与进度,分配成员的任务,完成软件的开发与测试,撰写本文档,以供开发人员参考。1.2项目背景基于ATmega16单片机为核心的MP3播放器开发以其较简单的程序设计和便宜的开发板成为了电子专业学生实训的最先选择。故学院给我们电科专业安排了这样一个实训,旨在提高我们的实践能力,提高将知识学以致用的意识。1.3问题定义MP3播放器总的实现目标是:实现播放歌曲、歌曲暂停、切换上下歌曲、显示播放列表、调节音量等基本播放功能;实现按数字键换歌、显示音量和歌曲数等扩展功能。1.4参考资料(1)《育松电子QC12864B使用说明》(2)《cn_mega16-16L》(3)《VS1003(1)》2、功能概述2.1目标设计出一款可以播放后缀为.MP3的歌曲文件,有基础功能:播放、显示播放列表、调节音量、歌曲切换。有拓展功能:暂停,按数字键换歌、音量显示。2.2完成功能1.能播放后缀为.MP3的歌曲文件2.基础功能:播放、显示播放列表、调节音量、歌曲切换3.拓展功能:暂停,按数字键换歌、音量显示2.3系统技术本嵌入式开发主要是基于AVRSTUDIO4的平台和MP3实训工程开发板,采用C语言编程实现,同时运用其他语言的思维逻辑。3.软件结构化设计3.1概要设计MP3播放器主要由以下几个模块组成:串口、LCD、SPI+VS1033、SD+PFATFS、Infraredremode。需要分别完成:(1)串口USART的通信(2)驱动LCD12864(3)驱动VS1003(4)SD卡驱动(5)移植Fatfs文件系统(6)红外的接口实现与中断函数(7)主程序逻辑实现3.2系统流程图1.屏幕点亮,数据初始化(包括LCD初始化,VS1003初始化)2.判断是否切歌,如果是,切换到所要听的歌。如果否,Mp3开始顺序播放。同时屏幕上显示音量,歌曲名,当前歌曲排序以及总共歌曲数。3.判断是否调音,如果调高声音,则屏幕上显示声音值增加,如果调低声音,则显示声音值降低。4.判断是否暂停,如果是,则屏幕上内容静止不动,如果否,不动作。5.判断是否不动作超过30秒,如果是,则屏幕停止显示背光,否则,一直显示背光。6.判断是否播放到最后一首歌,如果是,则开始切换到第一首歌,否则不动作。开始数据初始化显示播放列表切歌切换到所要听的歌顺序播放调音调高声音,则屏幕上显示声音值增加调低声音,则屏幕上显示声音值降低暂停屏幕上内容静止不动不动作超过30秒屏幕停止显示背光一直显示背光播放LAST开始切换到第一首歌继续播放歌曲否是否是否是否是否是3.3数据流说明1.LCD和VS1003的初始化接上USB插口,PC4给高电平,致使LCD点亮。同时,数据开始初始化,包括LCD的初始化和VS1003的初始化。具体步骤如下:LCD:初始化之后,主芯片即ATmega发送写命令,将当前歌曲名等信息写到LCD屏幕上。VS1003:初始化之后,主芯片要转变声音信号的电信号信息写到VS1003芯片上,经过VS1003解码,读到主芯片上,再经过耳机转变成声音信号。2.SD卡驱动SD卡驱动流程:(1)挂载一个SD卡程序代码:pf_mount(2)打开一个目录程序代码:pf_opendir(3)读取目录中的一个条目程序代码:pf_readdir(4)打开一个文件程序代码:pf_open(5)读取文件中的具体内容程序代码:pf_read(6)通过指针去访问不同的文件程序代码:pf_lseek3.中断处理3.4主要函数及实现功能1.文件名:led..c功能:点亮芯片上的D3发光二极管描述:led头文件,用于点灯调用通过给TMS(PC3)引脚一个高电平,使其相连的二极管发光。2.文件名:usart.c功能:串口通信模块描述:实现串口的字符、字符串的接收与发送(1)函数名称:voidUsart_Init(void)描述:串口的初始化注释:PD0、1(2)函数名称:voidPut_Char(unsignedcharc)描述:通过串口发送一字节输入格式:unsignedcharc:0~255(3)函数名称:unsignedcharGet_Char(void)描述:通过串口接收一字节返回值格式:unsignedcharc:0~255(4)函数名称:voidPut_String(char*str)描述:打印一个字符串输出到串口输入格式:char*str(5)函数名称:usart.h描述:usart.h头文件3.文件名:vs1003.c(1)函数名称:vs1003.c描述:vs1003.c源文件(2)函数名称:SPI_Init描述:SPI初始化(3)函数名称:SPI_SetSpeed描述:设置SPI速率输入格式:unsignedcharx:0:全速1:64分频(4)函数名称:SPI_RW描述:SPI总线读取数据输入格式:unsignedchardata返回格式:unsignedchar(5)函数名称:VS1003_Write描述:VS1003在对应的地址写数据输入格式:unsignedchararr:unsignedshortdata:(6)函数名称:VS1003_Read描述:从VS1003对应的地址读取2字节数据输入格式:unsignedchararr:输出格式:unsignedshort:(7)函数名称:VS1003_Init描述:vs1003初始化(8)函数名称:VS1003_SineTest描述:vs1003正弦测试输入格式:unsignedcharx3.文件名:lcd12864.c(1)函数名称:lcd12864.h描述:lcd12864.h头文件(2)函数名称:staticvoidLCD_Busy(void);描述:判断LCD12864当前是否忙(3)函数名称:staticvoidWrite_Command(unsignedcharcmd)描述:向LCD12864发出对应的cmd输入格式:unsignedchar:cmd根据LCD12864手册填写(4)函数名称:staticvoidWrite_Command(unsignedchardata)描述:向LCD12864发出对应的data输入格式:unsignedchar:data根据LCD12864手册填写(5)函数名称:voidLCD12864_Init(void)函数描述:LCD12864的初始化(6)函数名称:LCD12864_Putchar描述:在具体带的坐标处输出对应的字符输入格式:unsignedcharx:行0~3unsignedchary:列0~7unsignedcharc:输入的ASCII表(7)函数名称::LCD12864_Putstring描述:在具体带的坐标处输出对应的字符串输入格式:unsignedcharx:行0~3unsignedchary:列0~7char*string:字符串(8)函数名称::LCD12864_Clear描述:清屏函数输入格式:unsignedcharx:0~3:清楚对应的行4:清楚所有行4.文件名:Main.c(1)函数名称:intmain(void)描述:主程序,用于调用调用一些分支函数及其他简单程序(2)函数名称:voidShow_Music_List(unsignedchartmp)函数描述:用于显示歌曲列表(3)函数名称:staticvoidMusicList_Update(void)描述:更新播放列表,并打印打印到串口输出。