音乐播放器设计报告
音乐播放器课程设计报告

课程设计报告之水城攒孽创作课程设计名称:音乐播放器院系:信息工程学院学生姓名:班级:学号:成绩:指导教师:开课时间:2016-2017学年 2 学期音乐播放器一、实践的内容和要求学习WAV格式音频播放原理、数字音频接口及的相关知识。
了解模拟音频信号和数字音频信号的概念。
掌握编写音频播主要内容放器的方法。
实现音频播放,小键盘输入操纵。
本系统要做一个音乐播放器,使用通用定时器定时,用比较输出功能,输出乐谱频率的方波发生声音,对 3 首歌曲编码,其支持 WAV 格式音频播放(上键:暂停;左键:上一首;右键:下一首)。
利用硬件ARM 嵌入式开发平台、用于ARM7TDMI 的 JTAG 仿真器、PC 机 Pentium100开发实现实现音频播放。
主要实现:上一首按键:当点击上一首按键时,当前播放歌曲的上一首歌首被播放。
下一首按键:当点击下一首按键时,当前播放歌曲的下一首歌曲即被播放。
当点击停止键时,当前歌曲即会被停止。
播放界面设计:在歌曲进行播放时,界面应包含所有的按键,而且要歌曲的曲目单。
二、实践原理WAV播放器系统要求能够对mp3、wav格式的音频文件进行解码,处理起来速度是有要求的,尤其是对320Kbps的MP3格式数据流的处理,必须非常快,才干实现MP3的流畅播放,可供选择的八位机有AVR、PIC,可供选择的32位处理器有SAMSUNG、STM32、ATMEL等。
选择MCU优先考虑于拥有丰富的RAM,八位机RAM主要靠扩展,内部RAM一般在4Kbyte以内,32位机里面,SAMSUNG一般不内带RAM,也要外扩。
本实验使用了ARM7处理器,MP3解码可以有两种方法,一是通过ARM处理器软解码,通过对MP3数据格式的解析实现MP3播放,二是通过外部解码芯片直接解码。
第一种方法在解码高码率的MP3时,ARM7处理能力吃紧,而且STM32还需要外部DAC来做音频输出,所以采取第二种方法进行解码。
MP3罕见的解码芯片有VS100X系列和STA01系列,STA01需要外接DAC做音频输出,而VS1003自带DAC,且解码的文件格式包含mp3和wav,另外它还可以实现录音功能,方便以后进行功能的拓展应用。
音乐播放器设计报告

信息与电气工程学院CDIO项目设计说明书(2013 /2014学年第一学期)项目名称:电子信息工程一级项目专业班级:信息(三)班学生姓名:学号:指导教师:设计成绩:2013年12月13日音乐播放器设计报告1.设计1.1设计目的1.为了更好的学习一个系统设计,善于利用所学知识应用到实践中。
2.培养综合运用所学知识独立完成汇编程序。
3.学会分析问题,解决问题能力。
4.可以把软件设计和书本的知识详解,以及对软件设计的实践应用。
1.2设计内容1.通过proteus来设计一个音乐播放器,利用8255A,8253和实现电路的综合连接。
2.根据电路的设计,使用汇编语言来编写音乐播放器的实现代码。
然后通过按键来实现对高低电平的输入和输出,这样就可以在播放器输出音乐的功能。
2.需求分析2.1流程图1.本设计流程是,当需要播放歌曲时,先把程序装入电路中实现电路的控制。
2.当需要播放一首歌曲时,通过电路按键实现控制输入。
2.2发声功能原理本项目的音乐播放器使用8086中央处理器、74LS373地址锁存器、74LS138译码器、可编程定时器/计数器8253和可编程并行接口8255A来实现。
8086中央处理器输出地址/数据码AD0-AD7,将AD0-AD7输入74LS373地址锁存器输出A0-A7,再将A3-A7和A0通过74LS138译码器进行译码输出作为8253和8255A的片选信号,A1和A2作为控制8255A和8253的片内寻址信号;8255A用来控制按键的输入;8253产生不同频率的脉冲来模拟音符,通过时间的长短来模拟音长,从而设计出一个功能完整的音乐播放器。
2.3项目仿真图3.主要设计编程过程3.1定义过程先定义8255A控制地址,然后定义A,B,C靠的地址,再利用根据8253A计时器特点设计计数器地址。
CORT EQU 00F6H ;8255A控制口地址PB_A EQU 00F0H ;8255A的A口地址PB_B EQU 00F2H ;8255A的B口地址PB_C EQU 00F4H ;8255A的C口地址COTR EQU 00FEH ;8253A控制口地址P0 EQU 00F8H ;8253A的计数器0口地址P1 EQU 00FAH ;8253A的计数器1口地址3.1音乐发声频率装入乐曲是按照一定的高低、长短和强弱关系组成的音调,在每一首乐曲中,每个音符的音高和音长与发声系统中的频率、节拍有关。
我的播放器设计报告

音乐播放器设计报告一.需求分析本周的实践任务是设计一个播放器,要求实现添加本地歌曲文件,播放,暂停,播放上一曲,下一曲,删除歌曲,用户注册和用户登录,保存登录用户的播放列表的功能。
二.功能简介1.主窗口(1)添加到播放列表:在列表区域单击右键中的“添加到播放列表”,弹出打开本地文件的窗口,可一次添加一首或多首歌曲到播放列表中。
(2)播放:选择歌曲,在右键菜单中播放歌曲,即可播放选中的歌曲;双击选中的歌曲也可以实现播放功能;直接点击播放器中的“◢”也可播放选中的歌曲。
(3)删除:选择要删除的歌曲,单击“删除”,即可从列表中删除此歌曲。
(4)单曲循环:选中歌曲,右键,选中“单曲循环”,即可重复播放选中的歌曲。
(5)退出:单击“退出”即可退出本系统。
(6)上一曲:单击“上一曲”即可播放选中歌曲的上一曲。
(7)下一曲:单击“下一曲”即可播放选中歌曲的下一首。
(8)保存:已经登录了的用户可单击“保存”,将当前的播放列表保存起来。
(9)登录:右键,单击登录,系统打开登录窗口。
(10)当前登录的用户:显示当前登录的用户的账号。
2.登录窗口(1)请输入账号:用户输入账号。
(2)请输入密码:用户输入密码,显示为保密内容。
(3)登录:当用户账号和密码正确时,即可登录,否则提示用户核对信息。
(4)取消:取消当前的输入。
(5)注册:系统打开注册窗口。
3.注册窗口(1)设置用户账号:用户自行设置账号,不能和其他用户使用相同的账号,出现重复时,系统给出提示信息。
(2)设置用户密码:用户自行设置密码,显示为保密内容。
(3)确认密码:用户在次输入密码,必须和初始设置的密码相同,否则,系统给出警示信息。
(4)确定:当用户账号不重复且两次输入的密码相同时,即可注册该用户。
(5)重置:取消当前的输入。
三.详细设计1.各模块功能的实现1.1主窗口(1)添加到播放列表的实现,使用openFileDialog控件,即可打开选择本地文件的窗口,将该控件的属性中的multiselect 改为true,即可实现一次添加多首歌曲的功能。
音乐播放器的实验报告

音乐播放器的实验报告音乐播放器的实验报告引言:音乐是人们生活中不可或缺的一部分,而音乐播放器作为传播音乐的工具,在现代社会中扮演着重要的角色。
本次实验的目的是研究音乐播放器的功能和性能,以及对音乐播放器的使用体验进行评估。
一、功能分析音乐播放器的功能主要包括音频播放、音频格式支持、播放列表管理、音量控制、音效调节等。
通过实验测试,我们发现该音乐播放器在这些方面表现出色。
首先,它支持多种音频格式,包括MP3、WAV、FLAC等,能够满足用户对不同音频格式的需求。
其次,播放器具备良好的播放列表管理功能,用户可以根据自己的喜好创建、编辑和删除播放列表,方便快捷地管理自己的音乐。
此外,音乐播放器还提供了音量控制和音效调节功能,用户可以根据自己的需求来调整音量大小和音频效果,提升音乐的听感。
二、性能测试为了评估音乐播放器的性能,我们进行了多项测试。
首先是音频播放质量测试,我们选择了不同类型的音频文件进行播放,并对比了不同音频播放器的音质表现。
结果显示,该音乐播放器在音频播放质量方面表现出众,音质清晰、细腻,能够还原音频本身的特点。
其次是播放稳定性测试,我们将大量音频文件添加到播放列表中,并进行循环播放测试。
结果显示,音乐播放器在长时间播放过程中没有出现卡顿、崩溃等问题,表现稳定可靠。
最后是资源占用测试,我们对音乐播放器的内存占用和CPU占用进行了测试。
结果显示,该音乐播放器在资源占用方面表现较好,占用资源较少,对设备性能的影响较小。
三、用户体验评估除了功能和性能,用户体验也是评价音乐播放器的重要指标之一。
为了评估用户体验,我们进行了用户调研和使用测试。
调研结果显示,用户对该音乐播放器的界面设计和操作方式较为满意,认为界面简洁、直观,操作便捷。
在使用测试中,用户对音乐播放器的播放速度、响应速度和界面切换速度进行了评估,结果显示,音乐播放器在这些方面表现良好,能够满足用户对流畅使用的需求。
此外,用户还对音乐播放器的搜索功能、歌词显示和背景音乐设置等进行了评价,认为这些功能丰富了用户体验,提升了音乐播放的乐趣。
音乐播放器课程设计报告

课程设计报告课程名称PLD原理与应用设计题目音乐播放器专业通信工程四位抢答器摘要随着我国经济和文化事业的发展,在这个竞争激烈的社会中,知识竞赛、评选优胜,选拔人才之类的活动愈加频繁。
在很多竞争场要求有快速公正的竞争裁决,例如:证劵、股票交易及各种智力竞赛等。
在现代社会生活中,智力竞赛更是作为一种生动活泼的教育形式和方法能够引起观众极大的兴趣。
但是、在竞赛中往往是多个选手一起,分为几个小组参加比赛,针对主持人提出的问题各竞赛小组进行抢答,而抢答环节就要有一种逻辑电路抢答器作为裁判员功能、实现其比赛公平、公正的规则。
智能抢答器是一种应用十分广泛的设备,在各种竞赛、抢答场合中,它都能客观、迅速地判别出最先获得发言权的选手。
新增了许多功能,如选手号码显示,抢按后的计时,选手得分显示等功能。
随着科技的发展,现在的抢答器向着数字化、智能化的方向发展.本设计借助于QuartusⅡ软件仿真制作了四人抢答器。
通过选手按动按键的先后,判定由哪位选手回答问题,并且实现倒计时和对选手加分的功能。
本设计分为三个模块:控制模块、计时模块、计分模块,各个模块共同作用,以实现整个设计的总体功能。
关键词:QuartusⅡ,仿真,抢答器,控制模块,计时模块,计分模块Four-way responderABSTRACTWith the development of China's economic and cultural undertakings, in this competitive society, knowledge contests, selection of superior, talents such as activities more and more frequent. In many competitive games require fast fair competition award. In the modern society life, quiz is as a kind of lively education form and the method can cause the audience interest. But, in the competition is often several players together, divided into several groups to participate in the game, against the host question carries on the competition team vies to answer first, vies to answer first link will have a logic circuit buzzer as referee function, achieve the game rules of fairness and justice.Smart responder is a kind of equipment, they are widely used in various competitions, vies to answer first, it can be objective, quickly won the voice discriminant out first. Added many features, such as the contestant number display, rob after pressing time, players score shows, and other functions. With the development of science and technology, now the responder toward digital, intelligent direction.This design with the aid of Quartus Ⅱsoftware simulation produced four responder. Through the player has to press a button, decide which players to answer the question, and can realize the function of the countdown and the player points. This design is divided into three modules: control module, timing module, scoring module, each module combination, to achieve the over all function of the whole design.KEY WORDS: QuartusⅡ,Simulation ,Answer four device,Control,Timing,Scoring目录前言 (1)第1章绪论 (2)1.1 抢答器系统图 (2)1.2 抢答器设计要求 (2)1.3 基本功能 (3)第2章模块设计 (4)2.1 主控制模块 (4)2.1.1 主要功能 (4)2.1.2 代码编写 (4)2.1.3 仿真波形及其分析 (6)2.2计时模块 (7)2.2.1 主要功能 (7)2.2.2 代码编写 (7)2.2.3 仿真波形及其分析 (8)2.3 计分模块 (9)2.3.1 主要功能 (9)2.3.2 代码编写 (9)2.3.3 仿真波形及其分析 (12)第3章顶层电路 (13)3.1 电路图 (13)3.2 抢答器工作原理 (14)3.2.1 各个端口的含义 (14)3.2.2 操作流程及相应波形图 (14)结论 (16)谢辞 (17)参考文献 (18)前言关于这次设计的用于多人竞赛抢答的器件,在现实生活中很常见,尤其是在随着各种智益电视节目的不断发展,越来越多的竞赛抢答器被用在了其中,这种抢答器的好处是不仅能够锻炼参赛选手的反应能力,而且能增加节目现场的紧张、活跃气氛,让观众看得更有情趣。
音乐播放器实验报告

目录一、课题的介绍和课题的任务二、设计的要求三、系统的分析和系统中功能的设计四、系统的实现及调试五、系统的使用说明六、总结七、程序主要源代码一、课题的介绍和课题的任务音乐播放器是一种用于播放各种音乐文件的多媒体播放软件。
它涵盖了各种音乐格式的播放工具,比如:MP3播放器,WMA播放器,MP4播放器等。
它们不仅界面美观,而且操作简单,带你进入一个完美的音乐空间。
利用MFC应用程序、媒体控制接口MIC的基本知识,设计一个MP3播放器。
要求能够播放常用Windows 音频格式的文件;实现播放控制:播放、暂停、清空播放列表、音量增减、添加歌曲等功能;实现从本地磁盘加入文件,然后对其进行播放。
二、设计的要求系统模块功能图:流程图:二、系统的分析和系统中功能的设计该播放器分为六大功能模块;1、背景图片:音乐播放器的背景图片。
2序中,将文件进行播放。
3、播放/暂停功能:本地磁盘音乐文件添加完毕,单击播放按钮开始播放音乐,直至播放完毕,单击按钮便可以暂停音乐的播放,再次单击按钮时继续播放。
4、播放列表功能:显示添加的歌曲5、清空播放列表功能:清除播放列表中的全部歌曲。
6、音量功能:控制音量的大小四、系统的实现及调试//说明:主要介绍系统编码的实现以及编码中遇到的问题和解决方法。
界面用动态链接库来实现,播放功能用mciSendCommand函数来实现,用外壳函数数来打开文件选项。
定义三3个类两个对话框类CInfoDlg和CEasyPlayerDlg 一个常用类MCI MCI类用来控制播放功能有以下函数Pause:暂态正在播放的音乐Play:播放Stop:停止播放Load:加载播放的音乐GetMediaString:获取播放的时间进度…CInfoDlg:用于查询歌曲的详细信息CEasyPlayerDlg:用于和用户进行交互他有以下函数:CEasyPlayerDlg::OnBtnPlay();单击播放按钮的单击事件。
电子音乐播放器的制作报告

电子音乐播放器的制作报告电子音乐播放器的制作报告电子音乐已经成为了现代社会生活的一部分,人们现在可以通过多种多样的方式来欣赏自己喜欢的音乐,其中最常见的方式便是使用音乐播放器。
作为一款电子产品,音乐播放器的设计与制作必须非常精细,才能满足人们对音乐播放的各种需求。
本文主要介绍了我们小组制作电子音乐播放器的过程和结果。
1.项目背景和目的本项目的背景是,我们小组需要借助这个项目的机会把课程中学到的知识用于实际项目中。
同时,我们希望能够设计一个高性价比的音乐播放器,满足人们对电子产品的需求。
2.需求分析在开始制作之前,我们进行了需求分析,确定了音乐播放器需要满足以下几个方面的要求:(1)数据存储方便:音乐播放器需要能够方便地存储音乐数据,不仅方便用户管理,同时也便于我们的设计。
(2)播放性能好:音乐播放器需要具备稳定的播放性能,播放出来的音质要好。
(3)体积小便携:在保证功能齐全的前提下,音乐播放器需要尽可能的小,便于携带。
(4)操作简单方便:对于一般用户来说,操作简单方便是我们设计音乐播放器的重要考虑。
3.设计在进行设计时,考虑到音乐播放器需要有大量的存储空间,我们使用了SD卡作为存储介质。
同时,我们采用红外遥控器来方便操作。
在音乐播放的技术实现上,我们使用一款STM32单片机来实现。
该单片机具备较强的处理能力,能够满足我们制作一个高级音乐播放器的需求。
4.关键技术4.1 存储方案通过研究市场上各类音乐播放器,我们发现SD卡存储方式是目前最为普遍的方案。
因此,我们设计的音乐播放器也采用了SD卡存储方案。
我们使用SDIO接口与单片机进行连接。
在操作上,我们使用FATFS文件系统来实现SD卡的读取与写入。
4.2 播放器实现在音乐处理方面,我们使用的是STM32内置DAC芯片,实现了音乐的数字信号转模拟信号。
同时,我们采用了WAV格式来作为音乐播放的主要格式。
在操作上,我们使用了I2S接口来与DAC芯片进行连接。
音乐播放器Java课程设计报告

课程设计题目:java音乐播放器
学生姓名:
专 业:XXXXXXXXXXXXX
班级:
指导教师:
20XX年X月X日
、课程设计目的
1、编程设计音乐播放软件,使之实现音乐播放的功能。
2、培养学生用程序解决实际问题的能力和兴趣。
3、加深java中对多媒体编程的应用。
二、课程设计的要求
利用学到的编程知识和编程技巧,要求学生:
songlist .setVisible( true);
songlist .addItemListener((ItemListener) this);
//添加列表监听器
MainFrame .add( songlist);
for(int i=0;i< name. length ;i++){
song [i]=loadSound( name[i]);//逐个获取
1、系统设计要能完成题目所要求的功能,设计的软件可以进行简单的播放及其 他基本功能。
2、编程简练,可用,尽可能的使系统的功能更加完善和全面
3、说明书、流程图要清楚。
三、课程设计内容
1
音乐播放软件要求:
有图形界面,能播放MP3歌曲,有播放列表,前一首、后一首等常用播放软件 功能。
2
主要运用多媒体编程、 图形界面、数组及循环进行设计,从而实现简单的音
else
{
songname .setText("暂停播放:"
停播放歌曲
play .setIcon( new ImageIcon( "2.png"));
public void mouseEntered(MouseEvent arg0){ //TODOAuto-generated method stub
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
信息与电气工程学院CDIO项目设计说明书(2013 /2014学年第一学期)项目名称:电子信息工程一级项目专业班级:信息(三)班学生姓名:学号:指导教师:设计成绩:2013年12月13日音乐播放器设计报告1.设计1.1设计目的1.为了更好的学习一个系统设计,善于利用所学知识应用到实践中。
2.培养综合运用所学知识独立完成汇编程序。
3.学会分析问题,解决问题能力。
4.可以把软件设计和书本的知识详解,以及对软件设计的实践应用。
1.2设计内容1.通过proteus来设计一个音乐播放器,利用8255A,8253和实现电路的综合连接。
2.根据电路的设计,使用汇编语言来编写音乐播放器的实现代码。
然后通过按键来实现对高低电平的输入和输出,这样就可以在播放器输出音乐的功能。
2.需求分析2.1流程图1.本设计流程是,当需要播放歌曲时,先把程序装入电路中实现电路的控制。
2.当需要播放一首歌曲时,通过电路按键实现控制输入。
2.2发声功能原理本项目的音乐播放器使用8086中央处理器、74LS373地址锁存器、74LS138译码器、可编程定时器/计数器8253和可编程并行接口8255A来实现。
8086中央处理器输出地址/数据码AD0-AD7,将AD0-AD7输入74LS373地址锁存器输出A0-A7,再将A3-A7和A0通过74LS138译码器进行译码输出作为8253和8255A的片选信号,A1和A2作为控制8255A和8253的片内寻址信号;8255A用来控制按键的输入;8253产生不同频率的脉冲来模拟音符,通过时间的长短来模拟音长,从而设计出一个功能完整的音乐播放器。
2.3项目仿真图3.主要设计编程过程3.1定义过程先定义8255A控制地址,然后定义A,B,C靠的地址,再利用根据8253A计时器特点设计计数器地址。
CORT EQU 00F6H ;8255A控制口地址PB_A EQU 00F0H ;8255A的A口地址PB_B EQU 00F2H ;8255A的B口地址PB_C EQU 00F4H ;8255A的C口地址COTR EQU 00FEH ;8253A控制口地址P0 EQU 00F8H ;8253A的计数器0口地址P1 EQU 00FAH ;8253A的计数器1口地址3.1音乐发声频率装入乐曲是按照一定的高低、长短和强弱关系组成的音调,在每一首乐曲中,每个音符的音高和音长与发声系统中的频率、节拍有关。
可参考下表:音名 C D E F G A B C D E F G A B C唱名 1 2 3 4 5 6 7 1 2 3 4 5 6 7 i频率(HZ)131 147 165 175 196 220 247 262 294 330 349 392 440 492 523其中,低音阶从低音C(131HZ)到中央C(262HZ),高音阶从中央C(262HZ)到高音C(523HZ)。
组成乐曲的音符的频率值和持续时间是乐曲程序发声所必需的两组数据,频率可以查上表,音符的持续时间根据乐曲的速度及每个音符的节拍数来确定。
在4/4拍中,四分音符为一拍,每小节四拍,全音符持续四拍,二分音符持续二拍,四分音符持续一拍,八分音符持续半拍。
如果给全音符分配1秒(100*10ms)的时间,则二分音符持续时间为0.5秒,四分音符持续时间为0.25秒,八分音符持续时间为0.125秒。
知道了音调及频率、时间的关系后,可以按照乐曲的乐谱将每个音符的频率和持续时间定义为两个数据表,然后编写程序依次取出表中的频率值和时间值。
3.3初始化8255A和8253A该发生程序是在修改BEEP发声程序的基础上,以实现为8088/86编写一个任意频率和任意持续时间的通用发声程序,然后根据程序检测按键功能和测试接口正常运行。
CODE SEGMENTASSUME CS:CODE,DS:DATAMAIN PROC FARSTART: MOV AX,DATAMOV DS,AXMOV ES,AXMOV DX,CORTMOV AL,82H ;方式0OUT DX, AL ;A口为输出,B口为输入,C口为输出 MOV DX,COTR ;初始化8253MOV AL,36H ;定时器0、方式3OUT DX,AL3.4按键消抖LP: MOV DX, PB_C ;C口置零MOV AL,0HOUT DX,ALLOOA: MOV AL,00HOUT PB_A,AL ;A口置零LOOB: IN AL,PB_BAND AL,0FHCMP AL,0FHJNZ NEXTJZ LOOANEXT: CALL DELAYIN AL,PB_BAND AL,0FHCMP AL,0FHJZ LOOB ;没有键按下跳转RE: MOV BL,3 ;行数MOV BH,3 ;列数MOV AL,0FEHMOV CL,0FHMOV CH,0H ;起始键号03.5 按键扫描通过程序检测按键的是否正常的输入,以确定正常的输入信号,可以进行发声。
LOOP1: OUT PB_A,AL ;A行输出ROL AL,1 ;准备扫描下一行MOV AH,ALIN AL,PB_BAND AL,CLCMP AL,CLJNZ LOOP2 ;有键按下跳转ADD CH,BHMOV AL,AHDEC BLJNZ LOOP1 ;行末扫完跳转继续JMP RELOOP2: INC CHROR AL,1JC LOOP2 ;无按键按下跳转MOV AL,CH ;找到按键,比配CMP AL,1JZ KEY1CMP AL,2JZ KEY2CMP AL,3JZ KEY3CMP AL,4JZ KEY4CMP AL,5JZ KEY5CMP AL,6JZ KEY6CMP AL,7JZ KEY7CMP AL,8JZ KEY8JMP KEY93.6设置播放音乐利用8086设置程序,控制播放音乐,设置输入时钟频率,调用延迟子程序,实现判断音乐的判断以及输出。
PLAY1 PROC NEARW: MOV DX,01H ;输入时钟频率:100KHzMOV AX,86A0HDIV WORD PTR [SI] ;取出频率值计算初值MOV DX,P0OUT DX,AL ;装入初值MOV AL,AHOUT DX,ALMOV DL,[DI] ;取出演奏相对时间,调用延时子程序 CALL DALLY1ADD SI,2INC DICMP WORD PTR [SI],0 ;判断是否结束JE LP ;放音结束,停止IN AL,PB_BCMP AL,0FFHJE LPJMP WPLAY1 ENDPPLAY2 PROC NEARZ: MOV DX,01H ;输入时钟频率:100KHzMOV AX,86A0HDIV WORD PTR [SI] ;取出频率值计算初值MOV DX,P0OUT DX,AL ;装入初值MOV AL,AHOUT DX,ALMOV DL,[DI] ;取出演奏相对时间,调用延时子程序 CALL DALLYADD SI,2INC DICMP WORD PTR [SI],0 ;判断是否结束JE LP ;放音结束,停止IN AL,PB_BCMP AL,0FFHJE LPJMP ZPLAY2 ENDPPLAY3 PROC NEARK: MOV DX,01H ;输入时钟频率:100KHzMOV AX,86A0HDIV WORD PTR [SI] ;取出频率值计算初值MOV DX,P0OUT DX,AL ;装入初值MOV AL,AHOUT DX,ALMOV DL,[DI] ;取出演奏相对时间,调用延时子程序 CALL DALLY2ADD SI,2INC DICMP WORD PTR [SI],0 ;判断是否结束JE LP ;放音结束,停止IN AL,PB_BCMP AL,0FFHJE LPJMP KPLAY3 ENDP3.8调试程序执行过程程序调试步骤如下:1)建立汇编源程序.2)建立连接。
3)编译为目标文件4)调试。
5)不通过,重新修改(语句错误、音调频率不准、音调节拍不符合)6)重新修改、调试。
7)正确运行。
4.设计心得通过查找资料,利用汇编语言来设计音乐播放器过程中,我体会到了很多意想不到的过程,首先是成功的喜悦,由于刚刚才开始学习汇编言语,还不能够很熟练的编写汇编的控制语言,以及对8255A和8253A的功能了解也不是非常深入,但是在设计的过程中我从中学到了更多的知识,更加的巩固了我对课本知识的熟练掌握。
其次,我通过设计我可以把理论和实践很好的相结合,也是以一种对知识的掌握的转换目的,加深和优化系统性的学习结构。
对于Proteus、emu8086等实用软件的使用更加熟练,这会为以后的应用提供一个更好的学习机会。
这次的项目设计是设计用九个按键控制扬声器播放出音乐,这九首音乐各不相同,每次按下一个键就会有一首音乐播放。
最后就是,自己动手丰衣足食,只有通过不断的学习,不断的实践就可以更好的去掌握所需知识,才能从基础逐渐的深入,才能不断的创新。
参考文献[1]王元珍,曹忠升,韩宗芬编著.80x86 汇编语言程序设计[M].湖北:华中科技大学出版社,2005年4月.[2]王成端,李晓波编著.汇编语言程序设计[M].北京:高等教育出版社,2003年8月.[3]孙琦,郑硕编著.汇编语言程序设计复习与考试指导(第二版)[M].北京:高等教育出版社,2006年7月.[4] 沈美明,温冬婵.IBM—PC汇编语言程序设计(第2版)[M]. 北京:清华大学出版社,2001年8月.[5] 阎石 . 数字电子技术基础 .高等教育出版社 . 2006年5月[6] 王忠民. 微型计算机原理. 西安电子科技大学出版社. 2007年6月附录:CORT EQU 00F6H ;8255A控制口地址PB_A EQU 00F0H ;8255A的A口地址PB_B EQU 00F2H ;8255A的B口地址PB_C EQU 00F4H ;8255A的C口地址COTR EQU 00FEH ;8253A控制口地址P0 EQU 00F8H ;8253A的计数器0口地址P1 EQU 00FAH ;8253A的计数器1口地址STACK SEGMENT STACKDW 256 DUP(?)STACK ENDSDATA SEGMENTF1 DW 393,661,589,525,525,525,525,525,495,441,525,525,393DW 393,393,661,589,525,525,525,525,525,495,441,525,525, 589,393DW 393,393,441,441,393,393,393,525,525,589,661,525,589, 589,589DW 589,525,393,441,495,589,525,0T1 DB 4,3,1,2,2,2,2,2,2,2,1,1,4,4,4,3,1,2,2,2,2,2,2,2,1,1,4,4, DB 3,1,2,2,2,1,1,2,2,2,4,2,3,1,2,2,2,5,3,1,2,2,2,5F2 DW 371,495,495,495,624,556,495,556,624DW 495,495,624,742,833,833,833,742,624DW 624,495,556,495,556,624,495,416,416,371DW 495,833,742,624,624,495,556,495,556,833DW 742,624,624,742,833,990,742,624,624,495DW 556,495,556,624,495,416,416,371,495,0T2 DB 4,6,2,4,4,6,2,4,4DB 6,2,4,4,12,1,3,6,2DB 4,4,6,2,4,4,6,2,4,4DB 12,4,6,2,4,4,6,2,4,4DB 6,2,4,4,12,4,6,2,4,4DB 6,2,4,4,6,2,4,4,12F3 DW 2 DUP(262,294,330,262)DW 2 DUP(330,349,392)DW 2 DUP(392,440,392,349,330,262)DW 2 DUP(294,196,262)DW 10 DUP(-1),0T3 DB 8 DUP(2)DB 2 DUP(1,2,3)DB 12 DUP(1)DB 6 DUP(2)DB 10 DUP(2)F4 DW 371,330,495,416,416,371,330,312,330,278,416,278,278,330,371,330,556, DW441,441,416,441,278,312,330,371,65535,416,441,495,495,495,556,330,DW65535,495,312,371,330,65535,371,416,278,441,416,441,441,495,371,0T4 DB 2,2,4,4,2,2,2,2,2,2,4,2,4,2,2,2,2,2,2,2,2,2,2,2,6,2,2, DB 2,2,2,2,2,4,2,2,2,2,2,2,2,2,4,4,2,2,2,2,2,6F5 DW 661,742,742,833,833,833,833,742,833,833,990,990,495,495DW833,742,742,742,742,742,742,990,990,495,495,742,661,661,661,495,495,8 83,883,742,556,495DW661,742,833,833,833,833,742,833,833,990,990,495,495,883,DW742,742,742,661,742,742,990,990,495,495,742,661,661,495,495,833,833,7 42,661,661,0T5 DB 3,1,4,2,2,2,1,1,1,1,2,2,1,1DB 2,1,3,1,1,1,1,2,2,1,1,2,1,1DB 2,1,1,2,2,2,2,8,4,4,2,2,2,1DB 1,1,1,2,2,1,1,3,1,2,1,1,1,1DB 2,2,1,1,3,1,2,1,1,1,2,2,1,6F6 DW 393,525,525,525,393,589,495,525DW 393,525,700,700,661,589,525,589,525,495,525,589DW 393,525,525,525,393,589,495,525DW 393,525,661,786,661,525,441,589,661,525,0T6 DB 4,3,1,8,4,3,1,8DB 4,3,1,4,3,1,2,1,1,3,1,8DB 4,3,1,8,4,3,1,8DB 4,3,1,4,3,1,4,3,1,8F7 DW 661,589,661,589,589,525,589,589DW 525,495,525,495,441,495,330,330,65535,441DW 495,525,525,525,525,495,525,589,589,589,525,589,661DW 65535,661,589,661,589,589,525,589,589DW 589,661,700,661,589,589,661,661,661,441,65535,44DW 495,525,495,441,525,525,495,525,589,525,495,589,589DW 525,525,441,441,441,441,0T7 DB 2,2,3,1,2,1,1,4DB 2,2,2,2,2,1,1,4,2DB 1,1,2,1,1,2,1,1,2,2,1,2,1,8DB 1,2,2,3,1,2,1,1,4DB 2,2,2,1,1,2,1,1,1,3,2DB 1,1,1,1,1,1,2,1,1,1,1,1,1,2,1,1,2,1,1,8F8 DW 441,441,495,441,589,556,441,441,495,441,664DW 589,441,441,882,742,589,556,495,65535,786,786,742, 589,664,589,0T8 DB 2,2,4,4,4,8,2,2,4,4,4,8,2,2,4,4,4,4,8,4,2,2,4,4,4,8 F9 DW 441,661,589,441,661,589,495,742,742,742,786,661,589,661,661,556,495,441DW 441,441,661,661,742,661,589,65535,589,495,742,661,661, 441,661,589,441,661,589,495,742DW 742,742,786,661,589,661,661,556,495,441,441,441,742, 661,742,661,589DW 65535,589,495,441,495,589,65535,661,661,742,589,661, 589,589,0T9 DB 2,2,4,2,2,4,2,2,2,1,1,2,2,2,2,2,1,1DB 3,1,2,1,1,2,5,2,2,2,2,2,2,2,2,4,2,2,4,2,2DB 2,1,1,2,2,2,2,2,1,1,3,1,2,1,1,2,5DB 2,2,2,2,2,5,3,1,2,2,1,1,5,4DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATAMAIN PROC FARSTART: MOV AX,DATAMOV DS,AXMOV ES,AXMOV DX,CORTMOV AL,82H ;方式0OUT DX, AL ;A口为输出,B口为输入,C口为输出 MOV DX,COTR ;初始化8253MOV AL,36H ;定时器0、方式3OUT DX,ALLP: MOV DX, PB_C ;C口置零MOV AL,0HOUT DX,ALLOOA: MOV AL,00HOUT PB_A,AL ;A口置零LOOB: IN AL,PB_BAND AL,0FHCMP AL,0FHJNZ NEXTJZ LOOANEXT: CALL DELAYIN AL,PB_BAND AL,0FHCMP AL,0FHJZ LOOB ;没有键按下跳转RE: MOV BL,3 ;行数MOV BH,3 ;列数MOV AL,0FEHMOV CL,0FHMOV CH,0H ;起始键号0LOOP1: OUT PB_A,AL ;A行输出ROL AL,1 ;准备扫描下一行MOV AH,ALIN AL,PB_BAND AL,CLCMP AL,CLJNZ LOOP2 ;有键按下跳转ADD CH,BHMOV AL,AHDEC BLJNZ LOOP1 ;行末扫完跳转继续 JMP RELOOP2: INC CHROR AL,1JC LOOP2 ;无按键按下跳转 MOV AL,CH ;找到按键,比配CMP AL,1JZ KEY1CMP AL,2JZ KEY2CMP AL,3JZ KEY3JZ KEY4CMP AL,5JZ KEY5CMP AL,6JZ KEY6CMP AL,7JZ KEY7CMP AL,8JZ KEY8JMP KEY9KEY1: MOV DX, PB_C ;C0给高电平,开始放音 MOV AL,01HOUT DX,ALMOV SI,OFFSET F1 ;装入频率表起始地址MOV DI,OFFSET T1 ;装入时间表起始地址CALL PLAY1KEY2: MOV DX, PB_C ;C0给高电平,开始放音 MOV AL,01HOUT DX,ALMOV SI,OFFSET F2MOV DI,OFFSET T2CALL PLAY1KEY3: MOV DX, PB_C ;C0给高电平,开始放音OUT DX,ALMOV SI,OFFSET F3MOV DI,OFFSET T3CALL PLAY2KEY4: MOV DX, PB_C ;C0给高电平,开始放音 MOV AL,01HOUT DX,ALMOV SI,OFFSET F4MOV DI,OFFSET T4CALL PLAY1KEY5: MOV DX, PB_C ;C0给高电平,开始放音MOV AL,01HOUT DX,ALMOV SI,OFFSET F5MOV DI,OFFSET T5CALL PLAY2KEY6: MOV DX, PB_C ;C0给高电平,开始放音 MOV AL,01HOUT DX,ALMOV SI,OFFSET F6MOV DI,OFFSET T6CALL PLAY2KEY7: MOV DX, PB_C ;C0给高电平,开始放音 MOV AL,01HOUT DX,ALMOV SI,OFFSET F7MOV DI,OFFSET T7CALL PLAY2KEY8: MOV DX, PB_C ;C0给高电平,开始放音 MOV AL,01HOUT DX,ALMOV SI,OFFSET F8 ;装入频率表起始地址MOV DI,OFFSET T8 ;装入时间表起始地址CALL PLAY1KEY9: MOV DX, PB_C ;GATE0给高电平,开始放音MOV AL,01HOUT DX,ALMOV SI,OFFSET F9 ;装入频率表起始地址MOV DI,OFFSET T9 ;装入时间表起始地址CALL PLAY3MAIN ENDPDALLY PROC NEAR ;节拍延时子程序D0:MOV CX,0010HD1:MOV AX,0300HD2:DEC AXJNZ D2LOOP D1DEC DLJNZ D0RETDALLY ENDPDALLY1 PROC NEAR ;节拍延时子程序1 D01:MOV CX,0010HD02:MOV AX,0200HD03:DEC AXJNZ D03LOOP D02DEC DLJNZ D01RETDALLY1 ENDPDALLY2 PROC NEAR ;节拍延时子程序2 D11:MOV CX,0010HD12:MOV AX,02A0HD13:DEC AXJNZ D13LOOP D12DEC DLJNZ D11RETDALLY2 ENDPDELAY PROC NEAR ;按键延时子程序PUSH BXPUSH AXPUSH CXMOV CX,0FHW1: MOV AX,00FFHW2: DEC AXJNZ W2LOOP W1POP CXPOP AXPOP BXRETDELAY ENDPPLAY1 PROC NEARW: MOV DX,01H ;输入时钟频率:100KHzMOV AX,86A0HDIV WORD PTR [SI] ;取出频率值计算初值MOV DX,P0OUT DX,AL ;装入初值MOV AL,AHOUT DX,ALMOV DL,[DI] ;取出演奏相对时间,调用延时子程序 CALL DALLY1ADD SI,2INC DICMP WORD PTR [SI],0 ;判断是否结束JE LP ;放音结束,停止IN AL,PB_BCMP AL,0FFHJE LPJMP WPLAY1 ENDPPLAY2 PROC NEARZ: MOV DX,01H ;输入时钟频率:100KHzMOV AX,86A0HDIV WORD PTR [SI] ;取出频率值计算初值MOV DX,P0OUT DX,AL ;装入初值MOV AL,AHOUT DX,ALMOV DL,[DI] ;取出演奏相对时间,调用延时子程序 CALL DALLYADD SI,2INC DICMP WORD PTR [SI],0 ;判断是否结束JE LP ;放音结束,停止IN AL,PB_BCMP AL,0FFHJE LPJMP ZPLAY2 ENDPPLAY3 PROC NEARK: MOV DX,01H ;输入时钟频率:100KHzMOV AX,86A0HDIV WORD PTR [SI] ;取出频率值计算初值MOV DX,P0OUT DX,AL ;装入初值MOV AL,AHOUT DX,ALMOV DL,[DI] ;取出演奏相对时间,调用延时子程序 CALL DALLY2ADD SI,2INC DICMP WORD PTR [SI],0 ;判断是否结束JE LP ;放音结束,停止IN AL,PB_BCMP AL,0FFHJE LPJMP KPLAY3 ENDPCODE ENDSEND START。