欢迎来到毕设资料网! | 帮助中心 毕设资料交流与分享平台
毕设资料网
全部分类
  • 毕业设计>
  • 毕业论文>
  • 外文翻译>
  • 课程设计>
  • 实习报告>
  • 相关资料>
  • ImageVerifierCode 换一换
    首页 毕设资料网 > 资源分类 > DOC文档下载
    分享到微信 分享到微博 分享到QQ空间

    电子综合课程设计报告--基于ARM+linux的MP3播放器

    • 资源ID:1397438       资源大小:42KB        全文页数:9页
    • 资源格式: DOC        下载积分:100金币
    快捷下载 游客一键下载
    账号登录下载
    三方登录下载: QQ登录
    下载资源需要100金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。

    电子综合课程设计报告--基于ARM+linux的MP3播放器

    1、 电子综合课程设计报告电子综合课程设计报告 基于 ARM+linux 的 MP3 播放器 一、主要指标和要求:主要指标和要求:1、能够正常的播放音乐 2、能够播放自己随意指定的音乐 3、播放的是 MP3 格式的音乐 4、能够实现五秒快进和五秒快退 5、能够实现正常退出 二、二、方案选择及工作原方案选择及工作原理:理: 1、MP3解码原理:MP3文件解码流程 对于一个MP3文件的解码,本质上就是循环地对每一个 Frame进行解码,直到完成所有Frame的解码,或者中途出现 错误而中止。MP3文件的解码流程如图l所示bj。 而对于每一帧的解码,首先是要获取每一帧的同步字符 和帧头信息,从而获得相应

    2、的参数,并根据对帧头信息的分析 进而得到实际一帧的音频数据; 然后读取主要数据并获得缩放因子数 据和霍夫曼码字,接着进行霍夫曼解码;其次进行反 量化,并根据帧头的立体声信息对反量化结果进行立体声处 理;最后通过混迭处理、IMDCT和合成滤波器重建数字音频信 号的解码,生成PCM数据。然后将PCM数据写入声卡设 备,即可实现音频文件的播放。 2 、MP3播放原理:在linux内核中有已经做好了的声卡驱动程序,所 以当我们加载声卡驱动后我们就会在文件系统的/dev/下看到 /dev/dsp 这个声卡文件,根据文件的特性我们只要把我们的解码后 的音乐文件不断地读出并写入声卡文件即可实现正常的声音播放

    3、, 其 中我们读文件用read()这个系统调用函数写文件用write()这系统调 用,用ioctl()控制声卡文件的某些参数。 3、实现快进、快退的方案: a:循环读写文件之前创建一个子进程,这个子进程专门负责循环检 测getchar()中输入的字符,根据不同的字符做出不同的反应,比如 快进、快退、正常退出等,这个方案优点是思路明了,便于接受,但 其缺点是进程是属于强占式的不利于进程的执行。 b:在循环读写文件之前, 编写一个函数mode(),用来把程序由阻塞同 步变为异步模式,这样只要在循环读写中加入getchar()就不会阻塞 进程了,该方法实现简单,使程序执行也更合理。 综上,我们选择b

    4、方案。 三 、各模块及顶层文件的设计:各模块及顶层文件的设计: 1、MP3 解码原理图: 否 是 是 否 是 2、系统主程序流程图: 开始 查找同步信号 能否同步? 解码一音频数据 样本频率程度转换 写入播放缓冲区 移动下一帧头的 位置 缓冲区满 最后一帧 结束 否 是 是 否 是 否 以下为部分主程序 int main(char argc,char *argv) 主程序入口 打开声卡文 件成功? 打开音频文 件成功? 设置好声卡 文件参数 读音频文件 返回值是否 为正? 写声卡文件 成功? 进程正常退 出 进程异常退 出 int fd1,fd2,n,speed=44100,channel=2

    5、,fmt=AFMT_S16_LE; char buf11024; char com; struct wav_fmt wav; if(argc2) printf(“The parameter is too lessn“); exit(1); fd1=open(argv1,O_RDONLY); if(fd10) printf(“open the %s failn“,argv1); exit(1); fd2=open(“/dev/dsp“,O_WRONLY); if(fd20) write(fd2,buf1,n); com=getchar(); switch(com) case a:lseek(fd

    6、1,time,SEEK_CUR);break; case b:lseek(fd1,-time,SEEK_CUR);break; case q:printf(“n“);exit(0); default:break; printf(“your opration is successfuln“); exit(0); 四、四、遇到的问题及解决方法:遇到的问题及解决方法: 1、声卡的参数不好设置,即声卡的采样速度、声道、格式等不 好准确地设置。 解决方法:用wav_fmt这个结构体将音频文件额参数特性读进这 个结构,这个结构中的变量的值就是与该音频文件相对应的参数 2、在控制快进、快退等功能时需要getchar(),而这个函数在键 盘没有输入时进程会阻塞,这样可能造成音频难以继续播放 解决方法: 编写一个mode()函数使进程在getchar()之前进入异 步模式,这样就能使进程在没有输入字符的情况下照样正常运行。 经过后续测试上述方法很好的解决了所遇


    注意事项

    本文(电子综合课程设计报告--基于ARM+linux的MP3播放器)为本站会员(毕****文)主动上传,毕设资料网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请联系网站客服QQ:540560583,我们立即给予删除!




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们
    本站所有资料均属于原创者所有,仅提供参考和学习交流之用,请勿用做其他用途,转载必究!如有侵犯您的权利请联系本站,一经查实我们会立即删除相关内容!
    copyright@ 2008-2025 毕设资料网所有
    联系QQ:540560583