MP3课程设计

合集下载

面向对象MP3仿真程序课程设计报告文档

面向对象MP3仿真程序课程设计报告文档

课程设计报告文档题目:MP3仿真程序一.任务的描述1.目标:通过本课程设计,使我们巩固C++程序设计的基本概念、原理和技术,学会使用C++语言进行简单程序的开发,将理论与实际相结合,完成一个小型程序的设计与实现,并在此基础上强化学生的实践意识,提高其实际动手能力和创新能力。

2.任务描述:1>.模拟MP3运行程序,实现初始化、播放、暂停、停止、增加音量、减小音量等功能,可以调用相应函数播放存放在计算机上的歌曲;;2>.以常见MP3作为仿真的原型,抽象出MP3的一般模型;3>.可以从四个层次的任一个层次实现MP3仿真:(1)单线程控制台程序仿真MP3;(2)多线程控制台程序仿真MP3;(3)多线程可视化程序仿真MP3;4>.模块功能满足要求、界面友好、具有一定的健壮性3.运行环境:硬件:装有Windows操作系统的计算机软件:Visual C++6.04.条件与限制:1>仅限于模拟MP3运行过程,没有嵌入计算机内歌曲的调用;2>MP3按键较少,因此输入操作选项较少。

二.任务设计1.系统体系结构:2.系统流程图:3.类图:三.类的划分由于本程序模拟比较简单,所以系统只设1个类:CMp3.在CMp3类中完成对MP3的模拟。

类中各函数的功能说明如下:1> void on_off():选择开关机;2> void play_pause():控制播放和暂停;3> int random():随机函数以模拟随机播放的模式;4> int next_prior():控制播放下一首或上或下一首;5> void volum():查询并增减音量;6> void power():显示剩余电量,并控制低电量关机;7>void run():初始化及运行播放器四.编写代码(1)问题描述:模拟播放器的随机播放模式,调用random()函数出现问题(2)解决办法:上网搜索,调用time.h,并将random()定义为int,实现了每次随机播放,并次次不同的播放功能五.程序运行1.程序运行的过程:1>功能界面,提示用户选择选项确定开关机;2>主界面,有四个功能:播放或暂停、播放上一首或下一首、调节音量、电量查询。

音乐播放器课程设计

音乐播放器课程设计

音乐播放器课程设计一、课程目标知识目标:1. 学生能够理解音乐播放器的基本原理和功能。

2. 学生掌握音乐播放器界面设计的基本元素和布局。

3. 学生了解音乐播放器中不同音乐格式及其特点。

技能目标:1. 学生能够使用音乐播放器软件进行音乐播放、暂停、停止等基本操作。

2. 学生能够通过音乐播放器软件对音乐进行分类、排序和搜索。

3. 学生能够运用所学知识设计和制作简单的音乐播放器界面。

情感态度价值观目标:1. 培养学生对音乐的热爱和欣赏能力,提高审美情趣。

2. 培养学生团队协作和沟通能力,学会分享和交流音乐心得。

3. 增强学生对科技产品的认识,激发创新意识和探索精神。

课程性质:本课程为信息技术与音乐相结合的综合性课程,注重实践操作和实际应用。

学生特点:六年级学生具有一定的信息技术基础和音乐素养,对新事物充满好奇,喜欢动手实践。

教学要求:结合学生特点,采用任务驱动法,引导学生自主探究和合作学习,注重理论与实践相结合,提高学生的实际操作能力和创新能力。

通过本课程的学习,使学生能够将所学知识应用于实际生活,提升音乐欣赏和信息技术素养。

二、教学内容1. 音乐播放器原理与功能- 了解音乐播放器的基本构成和原理- 掌握音乐播放器的主要功能及操作方法2. 音乐播放器界面设计- 学习音乐播放器界面设计的基本原则- 分析并模仿经典音乐播放器界面布局3. 音乐格式及特点- 介绍常见音乐格式(如MP3、WAV等)及其特点- 了解音乐格式对播放效果和文件大小的影响4. 音乐播放器操作与使用- 学习使用音乐播放器软件进行基本操作(播放、暂停、停止等)- 掌握音乐播放器的高级功能(如音乐分类、排序、搜索等)5. 设计制作音乐播放器界面- 学习运用设计软件制作音乐播放器界面- 结合团队协作,设计并展示个性化的音乐播放器界面教学大纲安排:第一课时:音乐播放器原理与功能第二课时:音乐播放器界面设计第三课时:音乐格式及特点第四课时:音乐播放器操作与使用第五课时:设计制作音乐播放器界面教学内容关联教材章节:《信息技术》六年级上册:第五章 多媒体技术应用,第三节 音乐播放器原理与使用。

mp3移植课程设计

mp3移植课程设计

mp3移植课程设计一、课程目标知识目标:1. 理解并掌握MP3播放器的基本原理与功能;2. 学习并掌握数字音频文件格式,特别是MP3格式的特点;3. 了解音频压缩技术的原理及其在MP3播放器中的应用。

技能目标:1. 学会使用相关的软件和硬件工具进行MP3文件的移植操作;2. 能够独立进行MP3播放器的简单故障排查与问题解决;3. 培养学生对信息技术课程的实践操作能力,通过实际操作加深对知识点的理解。

情感态度价值观目标:1. 培养学生对新技术的探索精神和动手实践的兴趣;2. 增强学生的团队合作意识,通过小组合作完成课程任务;3. 激发学生对于科技创新的热情,理解科技进步对生活的影响。

课程性质:本课程为信息技术学科的课程,侧重于实践操作和问题解决能力的培养。

学生特点:考虑到学生所在年级,具备一定的信息技术基础,对新鲜事物充满好奇心,但需进一步引导其将理论知识与实践相结合。

教学要求:结合学生特点和课程性质,要求教师在教学过程中注重理论与实践的结合,强调学生在学习过程中的主动参与和实际操作,鼓励学生提出问题并解决问题,达到学以致用的目的。

通过具体的学习成果的分解,教师将能够有效设计和评估后续的教学活动。

二、教学内容1. 引言:介绍MP3播放器的发展历程,引发学生对课程内容的兴趣。

教材关联:信息技术教材第五章“数字媒体技术”。

2. 理论知识:a. 数字音频基础:音频信号的数字化过程,采样、量化、编码等概念。

b. MP3格式原理:了解MP3文件的压缩算法和特点。

c. 音频压缩技术:探讨不同音频压缩技术的优缺点。

3. 实践操作:a. MP3播放器使用:学习如何正确使用MP3播放器及其功能。

b. 文件移植方法:掌握如何在不同设备间移植MP3文件。

c. 故障排查:学会对MP3播放器进行简单故障排查与问题解决。

4. 教学大纲:第一课时:数字音频基础及MP3格式原理介绍。

第二课时:音频压缩技术讲解及实践操作指导。

第三课时:MP3播放器使用方法及文件移植操作演示。

MP3播放器实验报告

MP3播放器实验报告

基于stm32的MP3播放器课程设计报告指导教师:组员:前言MP3播放器其实就是一个功能特定的小型电脑。

在MP3播放器小小的机身里,拥有MP3播放器存储器(存储卡)、MP3播放器显示器(LCD显示屏)、MP3播放器中央处理器MCU(微控制器)和MP3播放器解码DSP(数字信号处理器)等。

Saehan公司于1998年推出了世界上第一台的MP3播放器——MPMan F10,自从第一台MP3播放器推出以来,MP3播放器市场以极快的速度发展,随着生活水平的提高,人们对消费电子的需求也越来越高。

多功能MP3播放器也受到越来越多人的喜欢,很多年轻人的第一台电子产品就是MP3播放器。

现在,人手一台智能机,但MP3并未消失,电子技术快速的发展和消费者的爱好需求,使得MP3的功能也越来越多,体积越来越小,人们不必在健身的时候还带着手机,只要一个轻便的MP3就能让他们听着音乐运动,满足了用户需求。

系统采用ARM Cortex-M3内核的STM32F103VET6作为微控制器,结合VS1053B音频解码芯片,SD卡存储器,TFT液晶显示屏以及独立按键,,设计并实现了集音乐播放﹑切换、音量控制、SD读卡器等为一体的多功能MP3播放器。

关键词:STM32F103VET6;VS1053B;SD卡;TFT液晶屏;MP3播放器目录1.系统方案 (3)1.1系统结构 (3)1.2组成模块 (3)1.2.1 STM32F103VET6 (3)1.2.2 ATK-VS1053 MP3 MODULE (3)1.2.3 SD卡 (5)1.2.4 TFT屏 (5)2.电路设计 (6)2.1工作原理 (6)2.2电路连接 (8)3.程序设计 (9)3.1程序的组成 (9)4.测试结果 (9)5.结论 (9)6.附录 (9)1.系统方案1.1系统结构本MP3播放器系统主要由STM32F103VET6开发板和高性能音频解码模块ATK-VS1053 MP3 MODULE,显示的TFT屏,以及SD卡组成。

MP3音乐播放器软件课程设计报告(MFC)1

MP3音乐播放器软件课程设计报告(MFC)1

MP3音乐播放器软件课程设计报告(MFC)课程设计说明书课程设计名称:软件综合课程设计课程设计题目:音频播放器程序的设计与实现学院名称:信息工程学院电子信息工程专业课程设计任务书正文:目录引言 (5)一、设计程序的目的与要求 (6)目的 (6)要求 (6)二、方案实现与调试 (6)总体设计 (6)1、实现功能 (6)2、功能模块图 (7)详细设计 (7)1、界面布局 (7)2、各模块功能设计 (8)2.1处理“打开”按钮 (9)2.2处理“播放”按钮 (9)2.3处理“暂停”按钮 (9)2.4处理“停止”按钮 (9)2.5处理“音量”按钮 (10)2.6处理“退出”按钮 (10)3 操作步骤 (10)三、课程设计分析与总结 (11)分析 (11)总结 (11)附录 (13)关键程序清单 (13)参考文献 (20)引言MP3播放器的设计是利用MFC应用程序、媒体控制接口MIC 的基本知识而设计的。

1.1 MFC简介MFC是Visual C++是核心。

MFC类库将所有图形用户界面的元素如窗口、菜单和按钮等都以类的形式进行了封装,MFC AppWizard 向导根据继承性利用MFC派生出自己的类,并对Windows应用程序进行了分解,利用MFC派生类对应用程序重新进行组装,同时还规定了应用程序中各个MFC派生类对象之间的相互联系,实现了标准Windows应用程序的功能,这就是向导生成的所谓MFC应用程序框架。

每个MFC类都包括了一些函数,函数放到类中,符合C++编程方法。

这些函数,必须通过类定义对象才能使用[1]。

1.2 MCI简介MCI(Media Control Interface)媒体控制接口是MircroSoft提供的一组多媒体设备和文件的标准接口,它的好处是可以方便地控制绝大多数多媒体设备包括音频、视频、影碟、录像等多媒体设备,而不需要知道它们的内部工作状况。

它所支持的媒体格式包括mp3、avi、wav、mpeg等等[2]。

MP3播放器课程设计报告

MP3播放器课程设计报告

VB课程设计报告报告名称 MP3播放器详细设计报告年级 10级学院计算机学院专业计算机科学与技术专业学号 12101113 姓名张木春任课教师于时飞完成时间 2013.5.31 成绩(报告在给出成绩的同时须由评阅人写出评语)详细设计说明1.引言 (3)1.1编写目的 (3)1.2项目背景 (3)1.3定义 (3)1.4参考资料 (4)2.总体设计 (4)2.1需求概述 (4)2.2软件结构 (4)3.程序描述 (4)3.1功能 (8)3.2性能 (8)3.3输入项目 (8)3.4输出项目 (9)3.5限制条件 (9)3.6测试要点 (9)1.引言1.1编写目的编写本程序的目的是设计一个MP3播放器,能实现,播放,停止,暂停,音量设置,左右声道,音乐添加删除,音乐列表的记忆功能,顺序播放,随机播放,循环播放等功能.通过阅读详细设计说明书,我们可以清楚的知道界面上每个控件的功能及每段代码所实现的功能.该说明说适合于所有了解VB语言的读者,可读性强.1.2项目背景本项目是在我们上完Visual Basic 2005 程序设计课和软件工程课之后,王国伟老师为了对我们进行简单考核而提出的课程设计题目.该项目由王国伟老师直接主管,并依托于信息技术学院六楼数学实验室来完成,项目时间为两周.1.3定义1.3定义(1)数据类型:String 字符串Boolean 浮点型Integer 整型(2)常用控件及属性Button 命令按钮控件RadioButton 单选框控件OpenFileDialog 打开文件对话框控件File close()关闭文件函数ListView控件:(属性)Add: 添加列表项SelectedItems():选中的列表项Remove: 删除列表项AxWindowsMediaPlayer控件:(属性)URL:获取多媒体文件的路径及文件名Ctlcontrols: 获取多媒体文件的控制方法CurrentPosition:获取多媒体当前的播放进度TrackBar控件:(属性)Value:获取滑块目前所在的位置1.4参考资料[1] 李捷. Visual Basic 2005—程序设计教程-北京机械工业出版社,2007.7[2] 杨富国. Visual Basic 程序开发案例解析-清华大学出版社,2006.1[3]康祥顺. Visual Basic 案例开发集锦-电子工业出版社,2006.12.总体设计2.1需求概述本项目的开发宗旨是实现Windows Media player 的MP3播放器功能,使用户方便的播放音乐,并根据兴趣添加播放列表.根据系统实现的目的,可以描述出MP3播放器功能,该系统主要包括下列四部分:1.音乐播放功能;2.歌曲列表管理功能;3.音量设置,左右声道设置;4.播放模式更换功能.其中,音乐播放功能包括音乐的播放,暂停,停止, ,是本程序的基本功能.歌曲列表管理功能实现了歌曲列表的添加,删除保存等功能,方便用户使用.音量,声道设置功能可以实现,歌曲音量大小的调节和左右声道模式的转换.播放模式更换功能,可以实现顺序播放,随机播放,单曲循环等不同模式之间的转换,,使播放方式更加人性化.2.2软件结构需求分析---详细设计---调试----改进---再调试3.程序描述1.全局变量声明Public Class Form1'设置全局变量Dim paths() As String'定义打开文件路径数组Dim FileName As String'定义文件名Dim SingName As String'定义歌曲名称Dim i As IntegerDim selIndex As IntegerDim path As StringDim d1, d2 As Integer2.‘添加按纽事件Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.ClickDim sfile As String'定义歌曲名称Dim j As Integer'定义循环变量Dim count As Integer'定义已有歌曲数目With OpenFileDialog1 '打开新文件.Title = "打开mp3文件".Multiselect = True.Filter = "mp3文件(*.mp3)|*.mp3".ShowDialog()paths = .FileNamesEnd Withi = paths.GetUpperBound(0) '获取此次打开文件的数目For j = 0 To icount = ListView1.Items.Countsfile = paths(i - j).Substring(paths(j).LastIndexOf("/") + 1) '获取歌曲名称Dim mitem As New ListViewItem(Str(count + 1), j)mitem.SubItems.Add(sfile)mitem.SubItems.Add(paths(i - j))ListView1.Items.Add(mitem) '把新打开的文件添加到列表控件中NextEnd Sub3.'播放按纽事件Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.ClickselIndex = ListView1.SelectedItems(0).Text - 1FileName = ListView1.SelectedItems.Item(0).SubItems(1).Text '获取歌曲名称 path = ListView1.SelectedItems.Item(0).SubItems(2).TextAxWindowsMediaPlayer1.URL = path '设置播放文件 AxWindowsMediaPlayer1.Ctlcontrols.play() '开始播放Label2.Text = FileNameDim Str As StringLabel2.Text = FileNameTimer1.Enabled = TrueButton2.Enabled = TrueStr = FileName.Substring(stIndexOf("."))FileName = FileName.Remove(FileName.Length - _Str.Length, Str.Length)Label2.Text = FileName '对字符串进行处理,仅获取无后缀歌曲名End Sub4.'停止按纽事件,Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.ClickAxWindowsMediaPlayer1.Ctlcontrols.stop()End Sub5.'退出并保存列表按纽事件Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.ClickFileOpen(1, "d:\xs.txt", OpenMode.Output)Dim i, j As IntegerDim st As String = ""j = ListView1.Items.Count - 1For i = 0 To jst = ListView1.Items(i).SubItems(2).TextPrintLine(1, st)NextFileClose(1)Close()EndEnd Sub6.'计时器事件Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.TickDim m1, m2 As IntegerDim s1, s2 As IntegerDim n As Integerd1 = AxWindowsMediaPlayer1.Ctlcontrols.currentPosition '获取当前播放进度 d2 = AxWindowsMediaPlayer1.currentMedia.duration '获取需要的总时间 TrackBar1.Value = d1TrackBar1.TickFrequency = d2TrackBar1.Maximum = d2m1 = d1 \ 60 : s1 = d1 Mod 60m2 = d2 \ 60 : s2 = d2 Mod 60Label1.Text = "已播放" & m1 & ":" & Format(s1, "00") & "(" & m2 & ":" & Format(s2, "00") & ")"'显示播放进度If m1 = m2 And m1 <> 0 And s1 = s2 ThenIf RadioButton1.Checked = True Thenn = selIndexListView1.Items(n).Selected = Falsen = n + 1If n < ListView1.Items.Count - 1 ThenListView1.Items(n).Selected = Truebf()End IfElseIf RadioButton2.Checked = True Thenn = selIndexListView1.Items(n).Selected = FalseRandomize()n = CInt(Int((ListView1.Items.Count - 1 - 0 + 1) * Rnd()))ListView1.Items(n).Selected = Truebf()Elsebf()End IfEnd IfEnd Sub7 '列表视图控件Private Sub ListView1_DoubleClick(ByVal sender As Object, ByVal e As System.EventArgs) Handles ListView1.DoubleClickDim str As StringselIndex = ListView1.SelectedItems(0).Text - 1FileName = ListView1.SelectedItems.Item(0).SubItems(1).Text '获取歌曲名称 path = ListView1.SelectedItems.Item(0).SubItems(2).Text '获取歌曲路径 AxWindowsMediaPlayer1.URL = path '设置播放文件 AxWindowsMediaPlayer1.Ctlcontrols.play() '开始播放Label2.Text = FileNameTimer1.Enabled = TrueButton2.Enabled = Truestr = FileName.Substring(stIndexOf("."))FileName = FileName.Remove(FileName.Length - str.Length, str.Length)Label2.Text = FileNameEnd Sub8'删除Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.ClickDim INQ As IntegerDim ri As IntegerDim count As IntegerINQ = ListView1.SelectedItems(0).Text - 1ListView1.Items(INQ).Remove()count = ListView1.Items.CountFor ri = 0 To count - 1ListView1.Items(ri).SubItems(0).Text = Str(ri + 1)NextEnd Sub9 '左声道Private Sub Button6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button6.ClickAxWindowsMediaPlayer1.settings.balance = -100End Sub10'右声道Private Sub Button7_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button7.ClickAxWindowsMediaPlayer1.settings.balance = 100End Sub11'暂停Private Sub Button8_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button8.ClickAxWindowsMediaPlayer1.Ctlcontrols.pause()End SubSub bf()selIndex = ListView1.SelectedItems(0).Text - 1FileName = ListView1.SelectedItems.Item(0).SubItems(1).Text '获取歌曲名称 path = ListView1.SelectedItems.Item(0).SubItems(2).TextAxWindowsMediaPlayer1.URL = path '设置播放文件 AxWindowsMediaPlayer1.Ctlcontrols.play() '开始播放Label2.Text = FileNameEnd SubEnd Class3.1功能1.音乐播放功能;2.歌曲列表管理功能;3.音量设置,左右声道设置;4.播放模式更换功能.3.2性能本播放器结构简单,性能良好,操作简单,适合于大众人群的使用.3.3输入项目对该播放器的播放列表添加想要播放的歌曲,播放器就能按要求播放音乐.3.4输出项目3.5限制条件硬件条件:普通的计算机和工作站软件条件:运行环境需安装Visual Basic 2005软件3.6测试要点对播放器的每个功能都需要逐一测试,具体要求是:1.对播放功能的各个控件功能进行测试2.对歌曲列表管理功能进行测试3.对音量设置功能进行测试,包括音量测试,和左右声道功能测试4.对不同的播放模式进行测试,看能否实现音乐的顺序播放,随机播放,单曲循环功能.。

androidmp3课程设计

androidmp3课程设计

androidmp3课程设计一、课程目标知识目标:1. 学生能理解Android系统中MP3播放器的基本原理和功能。

2. 学生能掌握在Android平台上开发MP3播放器的关键技术和步骤。

3. 学生能了解MP3文件格式和相关音频处理知识。

技能目标:1. 学生能够运用Android Studio开发环境,独立设计和编写具有基本功能的MP3播放器应用程序。

2. 学生能够通过调试和测试,优化MP3播放器性能,解决常见问题。

3. 学生能够运用所学的编程知识,为MP3播放器添加自定义功能和界面设计。

情感态度价值观目标:1. 学生培养对编程和移动应用开发的兴趣,提高信息技术素养。

2. 学生树立团队协作意识,学会与他人共同解决问题,提高沟通能力。

3. 学生养成自主学习和持续探究的习惯,勇于面对挑战,克服困难。

课程性质:本课程为信息技术课程,以实践操作为主,理论讲解为辅。

学生特点:学生具备一定的编程基础,对Android系统有一定了解,具有较强的学习能力和动手能力。

教学要求:教师应注重培养学生的实际操作能力,鼓励学生自主探究和团队协作,关注学生个体差异,提供有针对性的指导。

教学过程中,将目标分解为具体的学习成果,便于教学设计和评估。

二、教学内容1. Android系统简介:Android平台的发展历程、系统架构及特点。

- 教材章节:第一章 Android概述2. MP3文件格式与处理:MP3文件的结构、编码原理及音频处理技术。

- 教材章节:第二章 音频技术基础3. Android音频播放框架:MediaPlayer类的使用、音频焦点管理、通知栏控制等。

- 教材章节:第三章 Android音频播放4. Android Studio开发环境配置:安装Android Studio、配置模拟器及真机调试。

- 教材章节:第四章 Android开发工具与环境5. MP3播放器界面设计:UI布局、控件使用、自定义控件。

- 教材章节:第五章 Android界面设计6. 编写MP3播放器代码:初始化MediaPlayer、播放/暂停/停止功能、进度条更新、列表播放等。

音乐播放器课程设计

音乐播放器课程设计

音乐播放器课程设计一、课程目标知识目标:1. 学生理解音乐播放器的基本组成结构与功能;2. 学生掌握音乐播放器界面设计的基本原则;3. 学生了解音乐播放器中音乐格式及播放原理。

技能目标:1. 学生能够运用所学的界面设计原则,设计出美观、实用的音乐播放器界面;2. 学生能够利用相关软件或编程语言,实现音乐播放器的基本功能,如播放、暂停、切换歌曲等;3. 学生能够通过小组合作,共同完成音乐播放器的制作,提高团队协作能力。

情感态度价值观目标:1. 学生培养对音乐艺术的热爱和欣赏能力;2. 学生养成积极探索、勇于创新的学习态度,增强解决问题的信心;3. 学生通过课程学习,认识到科技与艺术的结合,提高审美观念和人文素养。

课程性质:本课程以实践操作为主,结合理论讲解,培养学生的动手能力和创新思维。

学生特点:六年级学生对音乐有一定的兴趣和认知,具备一定的计算机操作能力,喜欢探索新事物。

教学要求:教师需关注学生的个体差异,提供个性化的指导,鼓励学生积极参与课堂讨论和实践活动,以达到课程目标。

在教学过程中,注重将目标分解为具体的学习成果,便于教学设计和评估。

二、教学内容1. 音乐播放器的基本原理- 介绍音乐播放器的发展历程;- 讲解音乐播放器的硬件与软件组成;- 分析音乐播放器的工作原理。

2. 音乐播放器界面设计原则- 探讨界面设计的基本原则,如简洁、易用、美观等;- 分析优秀音乐播放器界面的设计特点;- 学习界面设计的基本工具和方法。

3. 音乐格式及播放器功能实现- 介绍常见的音乐格式,如mp3、wav等;- 讲解音乐播放器中解码、播放、音效处理等功能的实现方法;- 学习使用编程语言或软件实现音乐播放器的功能。

4. 实践操作:音乐播放器制作- 分组讨论,确定音乐播放器的主题和功能;- 设计并制作音乐播放器界面;- 编程实现音乐播放器的基本功能;- 测试、优化音乐播放器。

教学内容依据课程目标,结合教材,确保科学性和系统性。

VB课设MP3设计报告

VB课设MP3设计报告

福建工程学院VB课程设计课题:具有记忆功能的MP3播放器班级:电气1102学号:姓名:同组组员:指导老师:黄旭红、;林挺钊、林丽日期:2014.5.30目录一、设计的目的与要求 (3)二、准备工作 (3)三、系统分析与项目的实现步骤 (3)3.1、对于MP3播放器设计的个人分析、想法 (3)3.2、系统实现的方法 (4)3.3、程序设计的总框图 (5)3.4、项目的具体设计方案 (5)3.4.1设计涉及的一些基本知识介绍 (5)3.4.2、MP3播放器的设计原理 (9)3.4.3、MP3播放器的设计流程图 (9)3.5扩展部分 (9)3. 6类声明与核心算法程序代码 (11)四、测试与结论 (23)五、课程设计总结 (25)六、参考文献 (26)七、附录 (27)1.窗体 (27)2.程序代码 (27)3“MP3播放器”窗体控件表 (43)一、设计的目的与要求MP3播放器为多媒体播放器中的一大类,各类可在window上运行的MP3播放器软件也很多。

试开发一个具有记忆功能的MP3播放器软件,要求如下:1.菜单式的人机界面。

2.该MP3播放器要具有如下功能:(1)可手动添加、删除MP3文件;(2)可打开、播放、暂停、停止;(3)可以载入上一次播放列表;(4)可以调节声音大小;(5)可以循环播放。

二、准备工作在开始做课程设计项目前,应回顾或复习的相关内容;需要的VB集成开发环境软件,以及项目牵涉到的哪些原理。

三、系统分析与项目的实现步骤3.1、对于MP3播放器设计的个人分析、想法3.1、对于MP3播放器设计的个人分析、想法1.用过菜单编辑器编辑菜单式的人机界面,可设置弹出式菜单2.使用MMC控件实现歌曲播放、暂停、停止3.使用通用对话框实现打开4.通过数据库记录歌曲全路径,再运行程序使加载到listbox,用listbox的相关属性和命令来实现对歌曲的添加删除,循环播放,可添加清除功能清除所有歌曲以及随机播放功能5.声音的调节通过使用API函数来实现,可以扩展设置静音3.2、系统实现的方法系统的功能结构MP3播放器播放列表播放控制1. 用过菜单编辑器编辑菜单式的人机界面,可设置弹出式菜单,有添加删除清除三个项目2.利用mci命令,api函数实现歌曲播放、暂停、停止,歌曲播放进度等操作3. 使用通用对话框实现打开文件功能,打开后自动4.通过mic命令获取mp3文件的位置,通过两个listbox控件,一个隐藏的加载mp3文件全路径,一个显示的保存歌曲名和演唱者(通过对mp3文件获取信息和路径的相关处理得到歌曲名,演唱者)。

基于DSP的MP3播放器设计

基于DSP的MP3播放器设计

淮阴工学院《DSP技术及使用》课程设计选题名称: 基于DSP的MP3播放器设计系(院):专业:班级:姓名:学号:指导教师:学年学期:2010 ~ 2011 学年第 2 学期2010 年7 月 2 日设计任务书课题名称基于DSP的MP3播放器设计设计目的1.了解MP3播放器系统的功能;2.理解DSP使用系统开发的基本思路及方法;3.练习使用汇编语言编写使用程序的基本步骤;4.学习软件开发过程及资料收集和整理,学会撰写课程设计报告;5.学会对所学知识进行总结和提高;实验环境1.Windows 2000以上操作系统;2.CCS开发环境;任务要求1.利用课余时间去图书馆或上网查阅课题相关资料,深入理解课题含义及设计要求,注意材料收集和整理;2.在第18周末之前完成预设计,并请指导教师审查。

通过后方可进行下一步工作;3.按指导书要求设计软件,实现设计的功能,并显示正确的结果;4.要求形成稳定的程序软件,可以运行,方可申请参加答辩;工作进度计划序号起止日期工作内容1 2011.6.27~2011.6.28 在预设计的基础上,进一步查阅资料,完成硬件电路设计。

2 2011.6.28~2011.6.29 编写软件代码,调试和完善。

3 2011.6.29~2011.6.30 测试程序,优化代码,增强功能,撰写课程设计报告。

4 2011.6.30~2011.7.1 提交软件代码、硬件电路成果和设计报告,参加答辩。

指导教师(签章):年月日摘要:在当今这个信息、科技高速发展的数字化时代,数字信号处理技术逐步体现出它的优势和拓展空间。

越来越多的电子产品将数字信号处理作为技术核心,并广泛使用于控制、通信、图像处理等各个领域。

为了适应这一发展趋势,基于DSP的MP3播放器设计的这一课题也就如期而至,在这次接近实践的实习中我们将针对DSP的硬件实现原理和其结构特点,利用汇编语言设计相应的代码来实现预期目的中所要达到的MP3播放器各项功能。

智能音乐播放器课程设计

智能音乐播放器课程设计

智能音乐播放器课程设计一、课程目标知识目标:1. 让学生了解智能音乐播放器的基本原理,掌握其硬件组成和软件编程的基础知识。

2. 使学生掌握音乐播放器中音阶、音色、节奏等音乐元素的相关概念及其在编程中的应用。

3. 帮助学生理解智能音乐播放器与其他电子设备的连接与互动方式。

技能目标:1. 培养学生运用所学的编程知识,设计并实现简单的音乐播放功能。

2. 提高学生动手实践能力,能够独立完成智能音乐播放器的组装和调试。

3. 培养学生团队协作和沟通能力,能够在小组合作中发挥各自优势,共同完成项目任务。

情感态度价值观目标:1. 培养学生对智能硬件设备和编程的兴趣,激发创新意识和探索精神。

2. 引导学生关注音乐艺术与科技结合的前沿动态,提高审美素养。

3. 培养学生珍惜团队合作成果,树立正确的价值观和责任感。

本课程针对的学生特点是具有一定电子知识和编程基础,对新鲜事物充满好奇心,喜欢动手实践。

课程性质为实践性、综合性、创新性,旨在通过项目式教学,让学生在动手实践中掌握知识,提高技能,培养情感态度价值观。

教学要求注重理论与实践相结合,鼓励学生创新思维,关注实际应用。

通过本课程的学习,学生将能够具备设计简单智能音乐播放器的能力,为后续相关课程打下坚实基础。

二、教学内容1. 理论知识:- 硬件组成:介绍智能音乐播放器的核心元件,如微控制器、音频解码器、存储器等。

- 软件编程:讲解编程语言基础,如C语言或Python,以及音乐编程的相关库和函数。

- 音乐元素:阐述音阶、音色、节奏等基本音乐概念及其在编程中的应用。

2. 实践操作:- 组装与调试:指导学生进行智能音乐播放器的组装,学习调试方法和技巧。

- 编程实践:通过编写程序,实现音乐播放、音量调节、曲目选择等功能。

- 项目制作:以小组形式,设计并完成一个具有创意的智能音乐播放器项目。

3. 教学大纲:- 第一周:智能音乐播放器硬件组成及功能介绍。

- 第二周:编程语言基础及音乐编程相关库的学习。

Mp3播放器课程设计专业方向课程设计

Mp3播放器课程设计专业方向课程设计

软件专业方向课程设计——— Mp3音频播放器学号:姓名:班级:专业:软件工程指导老师:成绩:目录1. 需求分析 (4)课题背景 (4)音频播放器简介 (4)目的和意义 (4)功能需求 (4)进度安排 (4)2概要设计 (5)系统需求用例设计: (5)3.详细设计 (7)播放器界面 (7)添加各空间类向导 (8)音乐浏览控件: (8)播放功能控件: (9)考文献 (10)1.需求分析课题背景音频播放器简介音频播放器(audio player)是一种可储存、组织与播放音讯档案格式的装置。

常被称为“MP3播放器”(因为MP3格式的普遍性),它可以播放很多其他的格式,如WMA,AAC,WA V等。

一些格式会跟有限制性的技术DRM合并, 比如Janus和FairPlay, 一般是一些付费下载网站的一部分。

其它一些格式则是完全的专利自由或者在另外一些方面开放,比如Ogg V orbis,FLAC,Speex (Ogg开放多媒体工程的所有部分),以及Module file格式。

目的和意义通过独立设计完成制作一个播放器软件,更加理解了MFC单文档和多文档程序的构成框架,以及各个类之间数据传递的关系。

同时,对鼠标和键盘的多消息响应有了进一步的认识。

在设计制作的过程中,C++语言是基础,在熟悉MFC Windows 程序设计的同时,也复习了C++程序语言设计。

功能需求随着社会的发展,有越来越多的人接触电脑,也有越来越多的人喜欢在上网、工作的时候,播放一点音乐,娱乐一下,缓解一下。

所以,应运而生的是音频播放器软件,能够为用户播放常见的格式音频文件。

并且,在使用的过程中,也尽可能设计出一些人性化的设计。

比如,能最小化到托盘并可以进行操作。

良好的人机交互界面,也能给人以美好的感官享受。

利用MFC 应用程序、媒体控制接口MIC 的基本知识,设计一个MP3 播放器。

要求能够浏览本地音乐文件,播放常用Windows 音频格式的文件;实现播放控制:播放、暂停、停止等;实现音量控制:静音、声音放大减小;软件说明;退出系统。

音乐播放器课程设计

音乐播放器课程设计

目录一、设计要求 (1)二、设计目的 (1)三、设计的具体实现 (1)3.1 系统概述 (1)3.2单元电路设计 (1)3.2.1 8086中央处理器 (1)3.2.2 74LS373地址锁存电路 (5)3.2.3 74LS138 译码电路 (6)3.2.4 定时/计数器8253A (7)3.3 软件程序设计和调试 (13)四、结论与展望 (17)五、心得体会及建议 (17)六、附录 (18)七、参考文献 (19)电子音乐播放器设计报告一、设计要求利用8253作为音频频率发生器,应先对一段音乐进行编码后存入音符表,并建立好音阶表(只建立一个8度即可,音阶表见附录),音符长度不能少于60个,连续播放3遍后停止。

具体要求如下:1、系统硬件电路设计:根据所选题目和所用的接口电路芯片设计出完整的系统硬件电路,并进行电路连接和调试。

2、程序设计:要求画出程序框图,设计出全部程序并给出程序设计说明和程序注释。

二、设计目的本课程设计培养学生运用该课程的理论知识和技术知识解决工程实际问题的能力,学习微机系统设计的方法;学生通过对实验室系统的实际调试,进一步培养并提高了科学实验的能力。

因此,本课程设计为学生提供一个良好的理论联系实际的机会和场所,有利于为学生树立微机整体的概念,同时加强了学生编制和调试程序的能力,进一步培养学生的独立工作能力。

因此,课程设计是教学计划中必不可少的重要一环。

三、设计的具体实现1.系统概述该音乐播放器通过用8086中央处理器、74LS373地址锁存电路、74LS138译码电路、定时/计数器8253A来实现功能。

8086中央处理器输出地址码A16-A19和数据AD0-AD15,将AD0-AD7输入地址锁存器输出A0-A7,再将A0-A7通过译码器进行译码输出作为8253的片选信号,8253产生不同频率的脉冲来模拟音符,通过时间的长短来模拟音长,从而设计出一个功能完整的音乐播放器。

2.单元电路设计2.1 8086中央处理器8086中央处理器是Intel系列的16位微处理器,有16根数据线和20跟地址线。

c课程设计音乐播放器

c课程设计音乐播放器

c 课程设计音乐播放器一、教学目标本课程的目标是让学生掌握音乐播放器的制作原理和技巧,学会使用C语言进行程序设计,培养学生的编程能力和逻辑思维能力。

具体的学习目标包括:1.知识目标:学生需要了解音乐播放器的基本原理,掌握C语言的基本语法和数据结构,熟悉音乐文件的处理方法和音效控制技术。

2.技能目标:学生能够运用C语言编写音乐播放器程序,进行音频文件的播放、暂停、停止、跳转等操作,调整音量大小和音效效果,实现歌词同步和专辑封面显示等功能。

3.情感态度价值观目标:学生通过制作音乐播放器,培养对编程和音乐的兴趣,提高创新意识和团队合作能力,增强自信心和自我成就感。

二、教学内容根据课程目标,教学内容主要包括以下几个部分:1.音乐播放器的基本原理:介绍音乐播放器的工作原理,包括音频解码、音量控制、音效处理等模块。

2.C语言基础知识:讲解C语言的基本语法、数据类型、运算符、控制结构等,为学生编写音乐播放器程序打下基础。

3.音乐文件处理:介绍音乐文件的常见格式和结构,讲解如何读取、解析和播放音乐文件。

4.音效控制技术:讲解如何在音乐播放器中实现音量调整、音效效果等功能。

5.歌词同步和专辑封面显示:介绍如何实现歌词同步播放和专辑封面显示功能,提高音乐播放器的用户体验。

6.音乐播放器程序设计:引导学生运用所学知识,分组设计和实现一个简单音乐播放器程序。

三、教学方法为了激发学生的学习兴趣和主动性,本课程采用以下教学方法:1.讲授法:讲解音乐播放器的基本原理、C语言基础知识、音乐文件处理方法等,为学生提供理论支持。

2.案例分析法:分析实际的音乐播放器案例,引导学生学会分析问题、解决问题,提高编程能力。

3.实验法:分组进行音乐播放器程序设计,让学生动手实践,培养学生的实际操作能力。

4.讨论法:学生进行小组讨论,分享编程心得和解决问题的方法,促进团队合作和交流。

四、教学资源为了支持教学内容和教学方法的实施,本课程准备以下教学资源:1.教材:选用权威、实用的C语言编程教材,为学生提供系统的学习资料。

VC++MP3播放器课程设计实验报告

VC++MP3播放器课程设计实验报告

西安科技大学《VC++程序设计》课程设计报告题目 MP3播放器院、系(部)计算机学院软件工程系专业及班级软件工程0902 姓名王浩日期09080102241 题目要求要求用所学知识编写mp3播放器来实现mp3播放基本功能2 功能需求Mp3播放器基本的添加歌曲,播放,暂停,暂停恢复,停止,下一首,前一首,播放列表,最小化到托盘等3 总体设计3.1 系统模块3.2 系统业务处理流程4 详细设计1.新建对话框MFC应用程序2.添加基类class MCIMP3在头文件中添加#include<mmsystem.h>#pragma comment(lib,"winmm.lib")类成员public:MCIMP3();virtual ~MCIMP3();DWORD MCIOpen(const CString &strPath);DWORD MCIClose();DWORD MCIPlay();DWORD MCIPause();DWORD MCIResume();DWORD MCIStop();DWORD MCISetMute(BOOL bMute);DWORD MCIGetLength(DWORD *dwReturn);DWORD MCIGetPos(DWORD *dwPos);DWORD MCISeekTo(DWORD dwTo);DWORD MCISeekToStart();DWORD MCISeekToEnd();BOOL MCIIsPlaying();BOOL MCIIsOpened();DWORD m_dwLength;protected:MCIDEVICEID m_wID;在类实现文件MCIMP3.cpp中添加如下代码//构造函数MCIMP3::MCIMP3(){m_wID=NULL;m_dwLength=0;}//析构函数MCIMP3::~MCIMP3(){MCIClose();}//打开MCI设备参数为文件地址DWORD MCIMP3::MCIOpen(const CString &strPath) {MCI_OPEN_PARMS mciOP;DWORD dwReturn;ASSERT(m_wID==NULL);mciOP.lpstrDeviceType=NULL;mciOP.lpstrElementName=strPath;dwReturn=mciSendCommand(NULL,MCI_OPEN,MCI_OPEN_ELEMENT|MCI_WAIT|MCI_O PEN_SHAREABLE,(DWORD)(LPVOID)&mciOP);if (dwReturn==0){m_wID=mciOP.wDeviceID;if(this->MCIGetLength(&m_dwLength)!=0)m_dwLength=0;}elsem_wID=NULL;return dwReturn;}//关闭MCI设备DWORD MCIMP3::MCIClose(){MCI_GENERIC_PARMS mciGP;DWORD dwReturn;dwReturn=mciSendCommand(m_wID,MCI_CLOSE,MCI_NOTIFY|MCI_WAIT, (DWORD)(LPVOID)&mciGP);m_wID=NULL;return dwReturn;}//播放DWORD MCIMP3::MCIPlay(){MCI_PLAY_PARMS mciPP;return mciSendCommand(m_wID,MCI_PLAY,MCI_NOTIFY,(DWORD)(LPVOID)&mciPP);}//暂停DWORD MCIMP3::MCIPause(){MCI_GENERIC_PARMS mciGP;return mciSendCommand(m_wID,MCI_PAUSE,MCI_NOTIFY|MCI_WAIT, (DWORD)(LPVOID)&mciGP);}//继续(从暂停恢复)DWORD MCIMP3::MCIResume()MCI_GENERIC_PARMS mciGP;return mciSendCommand(m_wID,MCI_RESUME,MCI_NOTIFY|MCI_WAIT, (DWORD)(LPVOID)&mciGP);}//停止播放DWORD MCIMP3::MCIStop(){MCI_GENERIC_PARMS mciGP;return mciSendCommand(m_wID,MCI_STOP,MCI_NOTIFY|MCI_WAIT, (DWORD)(LPVOID)&mciGP);}//到dwTo处DWORD MCIMP3::MCISeekTo(DWORD dwTo){DWORD dwreturn;if (dwTo>0&& dwTo<m_dwLength){MCI_SEEK_PARMS mciSP;mciSP.dwTo=dwTo*1000;dwreturn=mciSendCommand(m_wID,MCI_SEEK,MCI_WAIT|MCI_NOTIFY|MCI_TO, (DWORD)(LPVOID)&mciSP);}else if (dwTo>=m_dwLength)dwreturn=MCISeekToEnd();elsedwreturn=MCISeekToStart();return dwreturn;}//到开始处DWORD MCIMP3::MCISeekToStart(){MCI_SEEK_PARMS mciSP;return mciSendCommand(m_wID,MCI_SEEK,MCI_WAIT|MCI_NOTIFY|MCI_SEEK_TO_START,(DWORD)(LPVOID)&mciSP); }//到结束处DWORD MCIMP3::MCISeekToEnd(){MCI_SEEK_PARMS mciSP;returnmciSendCommand(m_wID,MCI_SEEK,MCI_WAIT|MCI_NOTIFY|MCI_SEEK_TO_END, (DWORD)(LPVOID)&mciSP);}//得到播放文件长度DWORD MCIMP3::MCIGetLength(DWORD *dwLength){MCI_STATUS_PARMS mciSP;mciSP.dwItem=MCI_STATUS_LENGTH;DWORD dwReturn=mciSendCommand(m_wID,MCI_STATUS,MCI_STATUS_ITEM, (DWORD)(LPVOID)&mciSP);if(dwReturn==0)*dwLength=mciSP.dwReturn/1000;return dwReturn;}//得到当前播放文件播放到的地方DWORD MCIMP3::MCIGetPos(DWORD *dwPos){MCI_STATUS_PARMS mciSP;mciSP.dwItem=MCI_STATUS_POSITION;DWORD dwReturn=mciSendCommand(m_wID,MCI_STATUS,MCI_STATUS_ITEM, (DWORD)(LPVOID)&mciSP);if(dwReturn==0)*dwPos=mciSP.dwReturn/1000;return dwReturn;}//静音DWORD MCIMP3::MCISetMute(BOOL bMute){MCI_SET_PARMS mciSP;mciSP.dwAudio=MCI_SET_AUDIO_ALL;DWORD dwFlags;if(bMute)dwFlags=MCI_WAIT|MCI_SET_AUDIO|MCI_SET_OFF;elsedwFlags=MCI_WAIT|MCI_SET_AUDIO|MCI_SET_ON;return mciSendCommand(m_wID,MCI_SET,dwFlags,(DWORD)(LPVOID)&mciSP);}//判断是否播放BOOL MCIMP3::MCIIsPlaying(){MCI_STATUS_PARMS mciSP;mciSP.dwItem=MCI_STATUS_MODE;DWORD dwReturn=mciSendCommand(m_wID,MCI_STATUS,MCI_STATUS_ITEM, (DWORD)(LPVOID)&mciSP);if(dwReturn==0){if(mciSP.dwReturn==MCI_MODE_PLAY)return true;}return false;}//判断是否打开BOOL MCIMP3::MCIIsOpened(){MCI_STATUS_PARMS mciSP;mciSP.dwItem=MCI_STATUS_MODE;DWORD dwReturn=mciSendCommand(m_wID,MCI_STATUS,MCI_STATUS_ITEM, (DWORD)(LPVOID)&mciSP);if(dwReturn==0){if(mciSP.dwReturn==MCI_MODE_OPEN||mciSP.dwReturn==MCI_MODE_PLAY||mciSP.dwReturn==MCI_MODE_PAUSE||mciSP.dwReturn==MCI_MODE_STOP||mciSP.dwReturn==MCI_MODE_SEEK)return true;}return false;}3.按如图方式添加控件对话框属性改为无边框,列表框属性也为无边框编辑框改为只读无边框控件名控件类型ID 变量类型变量关联正在播放静态文本示例编辑框编辑框ID_NAME CString path示例编辑框编辑框ID_TIME CString m_time列表框IDC_LIST CListBox m_list滑块IDC_SLIDER1 CSliderCrtl m_ctrlSlider4.int flag;int j;int pause;void view();CString str1;CString str;int file1;int play;int time;int nPos;int temp;int i;CString m_Path;MCIMP3 m_mp3player;5.引入背景位图并改ID为IDB_BEIJING和IDB_BEIJINGM在OnPaint函数中else后屏蔽CDialog::OnPaint();在后面添加如下代码if(flag==1){CPaintDC dc(this);CDC memdc;memdc.CreateCompatibleDC(&dc);CBitmap bkg;bkg.LoadBitmap(IDB_BEIJING);BITMAP bkginfo;bkg.GetBitmap(&bkginfo);memdc.SelectObject(&bkg);RECT rect;GetWindowRect(&rect);dc.StretchBlt(0,0,rect.right-rect.left,rect.bottom-rect.top,&memdc,0,0,bkginfo.bmWidth,bk ginfo.bmHeight,SRCCOPY);}if(flag==0){CPaintDC dc(this);CDC memdc;memdc.CreateCompatibleDC(&dc) ;CBitmap bkg;bkg.LoadBitmap(IDB_BEIJINGM);BITMAP bkginfo;bkg.GetBitmap(&bkginfo);memdc.SelectObject(&bkg);RECT rect;GetWindowRect(&rect);dc.StretchBlt(0,0,rect.right-rect.left,rect.bottom-rect.top,&memdc,0,0,bkginfo.bmWidth,bk ginfo.bmHeight,SRCCOPY);}6.系统托盘实现在CPlayerDlg类中添加函数toTray(bool show)void CPlayerDlg::toTray(bool show){// TODO: Add your control notification handler code hereNOTIFYICONDATA pnid;pnid.cbSize=(DWORD)sizeof(NOT IFYICONDATA);pnid.hIcon=AfxGetApp()->LoadI con(IDR_MAINFRAME);strcpy(pnid.szTip,"MP3播放");pnid.hWnd=m_hWnd;pnid.uCallbackMessage=UM_SHOW WINDOW;pnid.uFlags=NIF_ICON|NIF_MESS AGE|NIF_TIP;pnid.uID=ID_TASKBARICON;pnid.uID=(UINT)m_hIcon;if(show){Shell_NotifyIcon(NIM_ADD,&pni d);ShowWindow(SW_HIDE);}else{Shell_NotifyIcon(NIM_DELETE,& pnid);ShowWindow(SW_SHOW);}}在构造函数中添加ON_MESSAGE(UM_SHOWWINDOW,OnNotif yIcon)到BEGIN_MESSAGE_MAP(CPlayerDlg, CDialog)和END_MESSAGE_MAP()之间添加函数voidCPlayerDlg::OnNotifyIcon(WPARAM wParam, LPARAM lParam){switch(lParam){case WM_LBUTTONDBLCLK:toTray(false);break;}}最后对按钮- 添加消息响应函数void CPlayerDlg::OnMin(){// TODO: Add your control notification handler code here toTray(true);}7.实现点击对话框拖动打开classwizard添加WM_LBUTTONDOWNvoidCPlayerDlg::OnLButtonDown(UINT nFlags, CPoint point){// TODO: Add your messagehandler code here and/or calldefaultPostMessage(WM_NCLBUTTONDOWN,HTCAPTION,MAKELPARAM(point.x,point.y));CDialog::OnLButtonDown(nFlags, point);}8.初始化变量在构造函数中添加m_time = _T("");path = _T("");i=0;temp=0;nPos=0;play=0;file1=0;pause=0;j=0;flag=0;9.对?按钮添加消息响应函数void CPlayerDlg::OnAbout(){CAboutDlg dlg;dlg.DoModal();}10.对退出按钮添加消息响应函数void CPlayerDlg::OnExit(){exit(0);}11.对添加按钮添加消息响应函数void CPlayerDlg::OnOpen() {CFileDialogfile(TRUE,NULL,NULL,OFN_HIDEREAD ONLY,"MP3 Files (*.mp3)|*.mp3|AVI Files(*.avi)|*.avi|WAVFiles(*.wav)|*.wav|WMAFiles(*.wma)|*.wma");file.DoModal();m_Path=file.GetPathName();intnIndex=m_list.InsertString(-1,m_ Path);m_list.SetCurSel(j);j++;file1=1;}12.对播放按钮添加消息响应函数void CPlayerDlg::OnPlay(){if(play==0&&file1==1){m_ctrlSlider.SetRange(0,100);SetTimer(1,1000,NULL);m_mp3player.MCIOpen(m_Path);m_mp3player.MCIPlay();play=1;path=m_Path;UpdateData(FALSE);}}13.对暂停按钮添加消息响应函数void CPlayerDlg::OnPause(){if(play==1){KillTimer(1);m_mp3player.MCIPause();pause=1;}}14.对继续按钮添加消息响应函数void CPlayerDlg::OnResume() {if(play==1&&pause==1){SetTimer(1,1000,NULL);m_mp3player.MCIResume();}}15.对停止按钮添加消息响应函数void CPlayerDlg::OnStop(){if(play==1){m_mp3player.MCIStop();KillTimer(1);m_ctrlSlider.SetPos(0);// m_mp3player.MCISeekTo(0);m_mp3player.MCIClose();play=0;file1=0;i=0;view();UpdateData(FALSE);}}16.对上一首按钮添加消息响应函数void CPlayerDlg::OnPre(){int n=m_list.GetCurSel();if( play==1 && file1==1 && n-1>=0){CString p;KillTimer(1);m_list.GetText(n-1,p);m_Path=p;i=0;m_list.SetCurSel(n-1);OnStop();file1 = 1;play = 1;m_mp3player.MCIOpen(m_Path);m_mp3player.MCIPlay();path=m_Path;SetTimer(1,1000,NULL);}if(play==1 && file1==1 &&n-1<0){KillTimer(1);m_list.SetCurSel(j-1);CString p;m_list.GetText(j-1,p);m_Path=p;i=0;OnStop();file1 = 1;play = 1;m_mp3player.MCIOpen(m_Path);m_mp3player.MCIPlay();path=m_Path;SetTimer(1,1000,NULL);}}16.对下一首添加消息响应函数void CPlayerDlg::OnNext(){int n=m_list.GetCurSel();if( play==1 && file1==1 && n+1<j){CString p;KillTimer(1);m_list.GetText(n+1,p);m_Path=p;i=0;m_list.SetCurSel(n+1);OnStop();file1 = 1;play = 1;m_mp3player.MCIOpen(m_Path);m_mp3player.MCIPlay();path=m_Path;SetTimer(1,1000,NULL);}if(play==1 && file1==1 && n+1>=j) {n=0;KillTimer(1);m_list.SetCurSel(n);CString p;m_list.GetText(n,p);m_Path=p;i=0;OnStop();file1 = 1;play = 1;m_mp3player.MCIOpen(m_Path);m_mp3player.MCIPlay();path=m_Path;SetTimer(1,1000,NULL);}}17.添加定时器响应滑块的移动在classwizard中添加WM_TIMER消息编辑函数void CPlayerDlg::OnTimer(UINT nIDEvent){if(i<m_mp3player.m_dwLength){i++;temp=i*100/m_mp3player.m_dwLengt h;m_ctrlSlider.SetPos(temp);view();Invalidate(FALSE);}CDialog::OnTimer(nIDEvent);}其中view函数需另行添加在类CPlayerDlg中添加view函数void CPlayerDlg::view(){str.Format("%d",i);zhuanhuan(str);str1.Format("%ld",m_mp3player .m_dwLength);zhuanhuan(str1);m_time=str+'/'+str1;UpdateData(FALSE);}18.给DEL按钮添加消息响应函数void CPlayerDlg::OnDellist() {intnIndex=m_list.GetCurSel();if(nIndex!=LB_ERR){delete(CString*)m_list.GetItemDataPtr (nIndex);m_list.DeleteString(nIndex);UpdateData(FALSE);}}19用classwizard添加WM_HSCROLL水平滚动消息的处理函数void CPlayerDlg::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar){if(pScrollBar->GetDlgCtrlID() ==IDC_SLIDER1&&play==1){KillTimer(1);nPos=m_ctrlSlider.GetPos();time=nPos*m_mp3player.m_dwLength /100;i=nPos*m_mp3player.m_dwLength/10 0;m_mp3player.MCISeekTo(time);m_mp3player.MCIPlay();SetTimer(1,1000,NULL);}}19.对话框资源选中列表框打开classwizard添加LBN_DBLCLK响应函数代码如下void CPlayerDlg::OnDblclkList() {intnIndex=m_list.GetCurSel();if(nIndex!=LB_ERR||play==1||f ile1==1){CString p;m_list.GetText(nIndex,p);m_Path=p;i=0;OnStop();m_mp3player.MCIOpen(m_Path);m_mp3player.MCIPlay();path=m_Path;SetTimer(1,1000,NULL);play=1;file1=1;}}20.在初始化时定义对话框的大小以及位置在OnInitDialog函数中添加MoveWindow(200,200,444,146);为List按钮添加消息响应函数void CPlayerDlg::OnListbutt() {if(flag==0){for(int i=146;i<=233;i++){Sleep(2);MoveWindow(200,200,444,i);Invalidate(FALSE);}flag=1;}else{for(int i=233;i>=146;i--){Sleep(2);MoveWindow(200,200,444,i);Invalidate(FALSE);}flag=0;}}5 测试与实现主界面打开列表添加列表添加列表项并播放上一首List最小化到托盘停止Del6 总结该程序基本完成了一个播放器需要的基本功能,能显示进度条能通过进度条的拖动到歌曲相应位置,但是不足之处也是很多,首先一些空间在刷过背景图后成了白色的块块影响美观,没有完成连续播放,随机播放,单曲循环等等,没有实现音量的变化,在时间的位置没有把秒转化为分钟:秒的样子,由于时间的原因从原先不会mci到现在懂得了点皮毛并作出了个播放器,我觉得我收获还是挺大的,通过这个程序以及这一周来的时间做的课程设计,我对对话框的编程又有了更深入的认识,明显比上次做计算器要来的熟练的多,希望以后通过程序的制作能提高我的编程能力。

本地音播放器课程设计

本地音播放器课程设计

本地音播放器课程设计一、课程目标知识目标:1. 学生理解本地音播放器的基本概念,掌握其工作原理;2. 学生掌握本地音播放器的主要功能及其操作方法;3. 学生了解音频文件格式及其特点,能够识别常见的音频文件。

技能目标:1. 学生能够独立安装和设置本地音播放器;2. 学生能够熟练操作本地音播放器,进行播放、暂停、停止、切换歌曲等基本操作;3. 学生能够解决使用本地音播放器过程中遇到的基本问题。

情感态度价值观目标:1. 学生培养对音乐的热爱,提高音乐素养;2. 学生养成正确使用音播放器的习惯,尊重知识产权;3. 学生通过学习本地音播放器,增强对信息技术的兴趣,提高自主学习能力。

课程性质:本课程为信息技术课程,旨在帮助学生掌握本地音播放器的使用,提高他们的信息素养。

学生特点:六年级学生对信息技术有一定的基础,对新事物充满好奇,具备一定的自主学习能力。

教学要求:教师需结合学生特点,以实践操作为主,注重培养学生的实际操作能力和解决问题的能力。

同时,关注学生的情感态度价值观培养,使他们在学习过程中得到全面发展。

通过本课程的学习,学生能够将所学知识应用于实际生活,提高生活质量。

二、教学内容1. 本地音播放器概述- 定义及分类- 音播放器的发展历程2. 本地音播放器的原理与功能- 数字音频基础- 音频解码与播放- 常见功能介绍(播放、暂停、停止、切换、音量调节等)3. 常见音频文件格式- WAV- MP3- FLAC- AAC4. 本地音播放器的安装与设置- 软件下载与安装- 播放器界面介绍- 基本设置(界面主题、播放模式、音效调节等)5. 本地音播放器的操作技巧- 播放列表管理- 歌曲搜索与收藏- 睡眠定时与铃声设置6. 问题和解决方法- 播放器无法启动- 音频文件无法播放- 播放器卡顿或音质问题教学内容安排与进度:第一课时:本地音播放器概述、原理与功能第二课时:常见音频文件格式、安装与设置第三课时:操作技巧、问题及解决方法教学内容与教材关联性:本教学内容与教材中“多媒体技术与应用”章节相关,结合教材内容,让学生在实践中掌握本地音播放器的使用,提高他们的信息技术素养。

《欣赏MP3音乐》课程教案

《欣赏MP3音乐》课程教案

《欣赏MP3音乐》课程教案[教学目的与要求]1、知识与技能(1)学会利用百度网站搜索MP3音乐的方法(2)掌握在网上浏览MP3音乐的方法(3)学会播放MP3音乐2、过程与方法(1)通过自学、自主探究、教师引导等多种方式掌握搜索与播放MP3音乐的方法(2)通过组织“小小音乐欣赏会”让同学感受数字音乐的魅力3、情感态度价值观(1)通过网络搜索同学喜欢的MP3音乐让同学进一步体会网络给生活带来的方便与乐趣(2)通过音乐欣赏让同学充沛感受音乐的魅力培养同学的审美能力(3)通过教师的引导让同学明白网络音乐资源也是拥有一定的知识产权的不能随意的使用和传达[课时布置]1课时[教学重点与难点]重点:利用百度网站搜索MP3音乐;在网上浏览MP3音乐难点:在网上浏览MP3音乐;播放MP3音乐[教学过程]教学内容教师活动同学活动导入课前欣赏音乐《让我们荡起双桨》你知道刚才老师课前播放的是首歌你喜欢这首歌为什么你还喜欢那些歌曲今天我们就来进行一个小小音乐欣赏会我们来一起在计算机上欣赏我们喜欢的音乐好不好计算机上听音乐呢音乐在什么地方呢大家有没有听说过“MP3”“MP3”它是目前网络上非常流行的一种音乐格式我们可以通过计算机和专用的MP3播放器来欣赏它今天我们就来学习如何从网络上浏览大家喜欢音乐的MP3并播放它出示课题:第25课欣赏MP3音乐音乐欣赏交流与讨论要在网上浏览MP3音乐我们还是可以借助百度网站在百度网站上有一个专门的MP3栏目通过它我们就可以找到自身想要的音乐了(边讲解边演示)你能通过百度网站找到你自身想要的MP3音乐提示同学可以参考书可以小组交流可以自身操作实践同学反馈请同学演示搜索过程提醒同学关注音乐格式的选择、关键字的正确输入同学自主探究MP3搜索方法同学演示其余同学学习观察浏览MP3音乐引导同学关注搜索到的音乐列表看一看文件的大小、链接速度等参考选项让同学学会选择合适的资源进行浏览教师演示浏览方法[中国-.LSPjy.}同学尝试浏览提示同学注意保管位置同学自学“知识屋”小组相互检查保管是否胜利同学观察并考虑同学操作播放MP3音乐教师提示同学到保管位置检查保管是否胜利并双击打开文件试听引导同学关注播放音乐的软件同学尝试练一练在网上浏览自身喜欢的音乐小小音乐欣赏会同学推荐一首自身喜欢的音乐先说说喜欢它的理由然后全班一起欣赏同学浏览音乐总结今天你学会了些知识网络上的资源是非常丰富的今天我们学习了如何通过网络浏览并播放MP3音乐为我们的学习生活增添了很多乐趣网络上还有一些其他格式的音乐浏览音乐也有一些注意事项在老师给大家提供的阅读资料中有这些内容的介绍有兴趣的话大家可以阅读一下。

mp3课设

mp3课设

MP3课程设计报告一设计基本要求及目标1、教学目标⑴掌握以单片机为核心的电路设计的基本流程与方法⑵掌握单片机C51程序设计⑶培养解决实际问题的能力2、设计要求⑴设计分为几个过程:①设计电路板(1周)②Protel DXP 制板(1周)③元件焊接与调试(1周)④C51程序设计及MP3程序调试USB驱动程序调试(1周)⑤制作出MP3+U盘应按规定时间完成相应的设计计划。

⑵在设计的过程中,应对所使用的器件原理及结构进行相应的了解。

认真阅读所给的相应的资料,有助于更好的完成设计。

二、硬件电路设计流程(一)、硬件电路设计步骤:1、功能定义;2、方案选定;3、电路原理图设计;4、原件采购;5、印刷电路板设计;6、电路板加工;7、电路焊接与赢家调试;8、软件设计。

(二)、各步骤设计过程1、功能定义刚刚接到这个可设题目时,我们都很有兴趣也很好奇,因为大家都知道自己可以做MP3了,可是当老师发下资料时,我们茫然了,原来并不是我们想象的那么简单。

认真看资料后才知道我们第一步应该先功能定义,这一部很重要,因为这是我们初步了解MP3的各个功能。

经过认真反复的查阅资料我们初步知道了MP3的几个模块的功能,又经过不停地上网查询相关信息,不断改进。

经过努力,我们完成了第一项工作。

2、方案选择功能定义的时候形成了几套方案,要选出一套可行的方案,还需要进一步研究。

首先必须了解各个基本部分的技术细节,知道每部分用什么芯片好,用什么器件性能比较稳定,用什么器件能让作出的MP3更方便等等。

其次就是对选用的方案进行功能整合,做出一套可行的方案。

做这些工作我们可以借助上网查找芯片资料。

3、电路原理图设计⑴最小的系统设计应该包括:MCU芯片、电源、晶振、复位电路(结核芯片资料和电路)(2)设计完成的总的原理图知道了最小系统的设计,我们就可以在最小系统上设计原理图。

按照已经选好的方案根据每个模块的功能选用器件。

具体分析整合后形成了中的原理图。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

辽宁工业大学课程设计报告院(系):电子与信息工程学院专业班级:学号:学生姓名:指导教师:教师职称:课程设计(论文)任务及评语院(系):电子与信息工程学院教研室:计算机科学与技术学号070401043 学生姓名高洪阳专业班级计算机072课程设计(论文)题目MP3播放器与U盘设计课程设计报告课程设计任务要求与步骤:(1)功能定义(2)方案选定(3)电路原理图设计(4)采购元件(5)印刷电路板设计(6)电路板加工(7)电路焊接与硬件调试(8)软件设计指导教师评语及成绩成绩:指导教师签字:2010年月日目录第1章实践目的 (1)1.1 开发背景与意义 (1)1.2 开发流程 (1)1.3本次实习的具体目的 (2)第2章开发工具及介绍 (3)1 Altium Designer Winter 09 (3)2 Keil C51 (3)第3章系统设计 (4)3.1 硬件总体框图 (4)3.2使用功能及软件流程图 (4)第4章系统实现 (6)4.1 硬件原理图 (6)4.2 软件具体设计 (9)4.3代码 (10)第5章总结 (14)参考文献 (15)第1章实践目的1.1 开发背景与意义嵌入式系统在中国的发展由来已久,从最初的8位8051单片机的应用,到现今32位嵌入式处理器的风行,当前,mp3或者U盘这样的产品已经没有太多技术上的差异,从技术发展的趋势来看,嵌入式系统已经由早期的8位单片机应用为主,过渡到现在16位DSP的普遍应用。

将来,32位的嵌入式处理器的应用也必将成为主流。

当然,MP3的制作是较简单的嵌入式系统应用,一个复杂的嵌入式系统的设计,不管是处理器的控制,还是调试手段和方法以及外围设备连接和驱动,还有电路板设计和布线,都有很多技术细节内容,需要在不断的实践和学习中才能掌握。

1.2 开发流程(1)功能定义:功能定义过程中,要明白自己到底想做什么。

一个结合自己知识积累情况和实力的切实可行的想法是项目得以实施的关键。

如果目标过高将会由于条件受限而无法实现。

(2)方案选定,方案的内容一般是什么芯片实现什么功能,以及这些芯片之间如何接口等。

对这些方案进行对比分析,综合考虑其价格、可参考设计等内容取舍,最后选定一种方案实施。

(3)电路原理图设计根据方案选定的结果,将所选择芯片的各种信号引脚以一定的规律与自己的设计考虑连接起来。

一般使用Protel电路图制作软件。

(4)采购元件电路原理图设计完成之后,就可以通过各种途径购买元件了。

(5)印刷电路板设计元件购买齐全之后,就要根据元件的封装情况来设计印刷电路板。

因为印制电路板不同于导线连接的电路,修改起来非常麻烦,并增加了电路工作的不可靠性,因此,要尽量确保印制电路板上的元件封装正确,最好将印制电路板以真实比例打印出来,然后将元件放置在打印出来的图上进行核对。

(6)电路板加工电路板加工一般请专门的厂商进行。

(7)电路焊接与硬件调试电路板制作完成之后,只要配置有基本的焊接工具,就可以进行电路焊接。

因为无法确保电路按设计正常工作,所以焊接过程也是硬件调试过程。

按照一定的顺序,对各个功能模块的元件依次焊接,并依次进行测试。

必要时,可能还需要割线、飞线,直至调通硬件。

(8)软件设计硬件调试通过以后,就开始调试软件了。

硬件电路设计与软件编程填写必须相辅相成、相得益彰,才能使设计的功能顺利实现。

1.3本次实习的具体目的(1)掌握电路原理图的设计步骤;(2)掌握Altium Designer 6.6电路原理图设计工具,图纸设置;(3)掌握Altium Designer 6.6中各个元器件符号及含义;(4)通过实例熟悉电路图的设计过程;(5)通过实例操作熟悉印制电路板图的设计过程;(6)通过设计出的MP3与U盘的电路图,以及对各模块代码的阅读,深入了解其内部功能实现原理。

第2章开发工具及介绍1 Altium Designer Winter 09Altium Designer Winter 09 提供了唯一一款统一的应用方案,其综合电子产品一体化开发所需的所有必须技术和功能。

Altium Designer Winter 09 在单一设计环境中集成板级和FPGA系统设计、基于FPGA和分立处理器的嵌入式软件开发以及PCB版图设计、编辑和制造。

并集成了现代设计数据管理功能,使得Altium Designer Winter 09成为电子产品开发的完整解决方案-一个既满足当前,也满足未来开发需求的解决方案。

2 Keil C51Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。

用过汇编语言后再使用C来开发,体会更加深刻。

Keil C51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。

另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到Keil C51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。

在开发大型软件时更能体现高级语言的优势。

下面详细介绍Keil C51开发系统各部分功能和使用。

Keil C51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。

在开发大型软件时更能体现高级语言的优势。

第3章 系统设计3.1 硬件总体框图3.2使用功能及软件流程图在主程序时,如果处于播放状态,则调用playMP3程序播放歌曲,直至播放到最后一首,在playMP3里面,MP3解码器一旦开始工作以后,就会一直向cpu 请求数据,直至歌曲结束,程序进入此函数以后,只有改变当前歌曲的键盘操作才会使此函数提前结束,进入下一首歌的播放。

FLASH 存储系统电源转换与电压整D/A 转换与音频放大 AT89C51SND1基本系统串口调试电平转换电路Audio.SCHMP3.SCHPower.SCH产生数据请求中断需要读下一个扇区的数据当前数据已经不是一扇区是否按了暂停键是否单击“选曲”按钮结束当前歌曲,指向下一首歌读出一个新的扇区继续往解码器中送数据等待再次按下暂停键是是是是否否否否否第4章系统实现4.1 硬件原理图4.2 软件具体设计C51程序设计基本流程图7 单片机C51程序开发流程即使是一个简单的程序,也需要不断地编译,生成目标代码,然后下载到目标系统中运行,对程序进行调试,直至在目标系统上运行得到正确的结果为止。

编辑代码生成目标代码编译程序代码查错链接模块仿真调试得到正确结果可使用各种文本编辑软件、专门的代码编辑软件或是在集成编译环境中进行修改语法上的错误生成可在单片机中运行的目标程序可以有多种选择,使用不同厂商的编译程序可使用任意一种链接程序稳定运行是否4.3代码REGSND1.H"#include "UART.H"/** 宏定义USB端点中断的标志位 **/#define EP2 (0x1<<2)#define EP1 (0x1<<1)#define EP0 (0x1<<0)#define EKB (0x10)/** 宏定义MP3播放功能的标志位 **/#define SELECTSONG 3#define PLAY 1#define STOP 0/** 声明外部函数 **/extern void AtmelUSBInit();extern void EpEnable();extern void Ep0();extern void main_txdone();extern void main_rxdone();extern void Flash_Reset(void);extern void MP3_Init();extern void PlayInit(unsigned char *SongName); extern unsigned char GetMP3List(void);extern void Func();extern void Next();extern void Previous();extern void PlayPause();extern void PlayMP3(unsigned char *SongName); extern void KeyBoardInit();/** 定义MP3播放相关的变量 **/unsigned char SONG[88] = {'M', 'O', 'O', 'N', ' ', ' ', ' ', ' ', 'T', 'X', 'T'}; unsigned char data CurrentFun = SELECTSONG;unsigned char data PlayState = STOP;unsigned char data NowPlaying = 0;unsigned char data NumofSong = 0;unsigned char data MP3InitFlag;void key_interrupt() interrupt 11{unsigned char i = 200;EA = 0; //关中断 IEN1 &= (~EKB);//Enable KeyBoard Interruptwhile (i){i--;}i = KBSTA; //取键盘中断位switch (i){ //依次处理四个键中的某个键case 1 : Func(); break; //被按下时的情况case 2 : Next(); break;case 4 : Previous(); break;case 8 : PlayPause(); break;default : break;}IEN1 |= EKB; //Enable KeyBoard InterruptEA = 1; //开中断return;}void main(){printu(">>>> UP-TECH MP3 USB Disk V3.00 <<<<\n");CKCON|=0x01; //使能该单片机的X2模式Flash_Reset(); //Flash 芯片复位if(P3_4) //此引脚为USB接入检测端 { //在此将设备做为U盘处理 printu("Entering USB Mode...\n"); //输出进入U盘功能的信息 AtmelUSBInit(); //USB寄存器配置函数 EpEnable(); //使能有关USB的配置 while(1){if (UEPINT & EP0) Ep0();if (UEPINT & EP1) main_txdone();if (UEPINT & EP2) main_rxdone();UEPINT=0;}}else //进入MP3播放模式 {printu("Entering MP3 Mode...\n");MP3_Init(); //MP3初始化KeyBoardInit(); //键盘初始化MP3InitFlag = 1;EA = 1; //开中断,键盘可以开始工作P3_5 = 0; //打开USB灯亮 NumofSong = GetMP3List(); //得到U盘中的MP3歌曲列表printuf("Song:%x\n", NumofSong); //输出歌曲总数信息if(NumofSong == 0){printu("There is no MP3 file in USB Disk!\n");P3_5 = 1; //关闭指示LED} while(1){if(NumofSong != 0){if(MP3InitFlag){PlayInit(&SONG[11 * NowPlaying]);MP3InitFlag = 0;}PlayMP3(&SONG[11 * NowPlaying]); //如果处于播放状态,则播放当前歌曲}if(NowPlaying == NumofSong){PlayState = STOP; //全部歌曲播放完了,播放器停止// NowPlaying = 0; //循环播放}P3_5 =~P3_5; //指示LED闪烁}第5章总结经过为期一周的MP3播放器与U盘设计课设,我学到了很多知识。

相关文档
最新文档