查看文章 |
3.2 MP3播放器的软件设计 不同于硬件,在软件设计是由我自己独自完成,所以对这一块比较熟悉。就如果上文介绍的几个功能模块一样,在软件编写上同样的分成那么几块,下图显示彼此间的关系:
由上图可知,SD卡读写是整个系统的最基本的一块,因为不论是什么是哪一块功能都涉及到SD卡的读写,所以在程序中我将其做成了子函数,向外只提供三个子函数,所有关于SD的操作均是由这三个函数完成: 初始化函数 SD_INIT() SD读出函数 SD_READ(INT8U *Buffer, INT16U Bytes,INT32U Number_Sector) SD写入函数 SD_WRITE(INT8U* Buffer,INT32U Number_Sector) 同样对于液晶显示部分同样进行子函数处理: 字符串显示 PutGBstring(INT8U x, INT8U y, unsigned char *c, INT16U f,INT16U b) 液晶初始化 PCF8833INIT() 液晶屏清空 PCF8833CLR() 上述两块功能对整个软件而言,无疑是最底层的设计,对于MP3播放器中的三个最主要功能:USB通信、电子书阅读、MP3解码而言都是需要用到的,所以做成子函数更有利于整个程序的模块式设计。
3.2.1 USB通信程序设计 对于MP3的三大功能,相较于其它两个,USB通信更为独立些,因为USB的通信均是由中断实现的,所以除了在主函数中涉及到其的初始化以外,在其它 部分并没有有联系的地方。其函数框图如下: (图3.6) 3.2.2 电子书、MP3解码程序 由于电子书和MP3均涉及到FAT32文件系统,所以两者在程序上关联性较大,所以在很大程序上两者的程序是混在一起的,只是到最后才分开。其框图如下:
(图3.7) 3.3 总结 本次MP3播放器采用分立芯片设计,不同现有MP3芯片整体集成化趋向。采用分立芯片设计能最大限度的发挥不同芯片的功能,因为MP3解码采用独立芯片,理论上能达到更好的音质。但在实际设计中,由于自身能力有限,未能发挥两块芯片的全部功能,如不能对WMA解码等,希望在以后的工作学习中能对其加以完善。 |


