优质实用文档精选——微机原理与汇编语言课程设计任务书——电子琴

上传人:高远 文档编号:145944351 上传时间:2020-09-24 格式:DOCX 页数:26 大小:243.45KB
返回 下载 相关 举报
优质实用文档精选——微机原理与汇编语言课程设计任务书——电子琴_第1页
第1页 / 共26页
优质实用文档精选——微机原理与汇编语言课程设计任务书——电子琴_第2页
第2页 / 共26页
优质实用文档精选——微机原理与汇编语言课程设计任务书——电子琴_第3页
第3页 / 共26页
优质实用文档精选——微机原理与汇编语言课程设计任务书——电子琴_第4页
第4页 / 共26页
优质实用文档精选——微机原理与汇编语言课程设计任务书——电子琴_第5页
第5页 / 共26页
点击查看更多>>
资源描述

《优质实用文档精选——微机原理与汇编语言课程设计任务书——电子琴》由会员分享,可在线阅读,更多相关《优质实用文档精选——微机原理与汇编语言课程设计任务书——电子琴(26页珍藏版)》请在金锄头文库上搜索。

1、 2010年 6 月 25 日微机原理与汇编语言课程设计任务书一、题目:电子琴二、设计的目的1. 掌握利用PC机扬声器发出不同频率声音的方法;2. 学习利用系统功能调用从键盘上读取字符的方法;3. 掌握定时器/计数器8253的工作原理;三、设计要求编写程序,程序运行时使PC 机成为一架可演奏的“钢琴”。当按下数字键1-8时,依次发出1,2,3,4,5,6,7,I八个音调,Ctrl-c 则退出演奏状态。独立完成课程设计。四、设计内容及步骤1PC 机扬声器电路电路图如图1所示:图1 PC 机扬声器控制电路通过给8253定时器装入不同的计数值,可以使其输出不同频率的波形。当与门打开后,经过放大器的放

2、大作用,便可驱动扬声器发出不同频率的音调。为使该音调的声音持续一段时间,要插入一段延时程序,之后再将扬声器关闭(关闭与门)。2建立音频表要使计算机成为可弹奏的简易电子琴,需要使用系统调用的01H 功能以接收键入字符,并且要建立一张音频表。五、课程设计工作计划2010年6月21日 指导教师布置任务,学生准备文献资料;2010年6月21日2010年6月24日 学生按照课程设计的内容与要求进行操作并写出课程设计报告。2010年6月25日 指导教师验收。指导教师签字: 教研室主任签章: 微机原理与汇编语言课程设计指导教师评语与成绩指导教师评语:课程设计表现成绩: 课程设计验收成绩: 课程设计报告成绩:

3、 课程设计 总成绩: 指导教师签字: 2010年 月 日目 录一、概述5二、总体方案设计5三、详细设计7四、调试与运行结果说明10五、课程设计总结11六、谢启12七、参考文献12八、附录13一、概述1功能说明: 利用计算机的扬声器发音来实现;定义8个键,对应低音区和中音的i,能随意演奏乐曲; 能选择多首乐曲中的一首演奏,乐曲自选;良好的交互界面用于乐曲的选择和音符的演奏;2设计思路:依据设计功能的要求建立几个可以选择操作的界面。根据字符的匹配在菜单上面选择要播放的音乐。首先建立一个音乐的频率跟节拍的代码,利用宏定义将地址传到音乐播放的模块中,之间用8253工作方式3、计数器0、先读低八位后读高

4、八位以及延时的程序。选择的是自行播放音乐的时候按照18进行音乐频率的匹配,指针指向音乐频率的地址,进行一个字符一个字符的匹配。最后加一个清屏代码使界面更加清晰。二、总体方案设计1设计原理:(1)要使扬声器发出不同的音调,就得输入不同频率的波形。通过给8253定时/计数器装入不同的计数值,可以使其输出不同频率的方波。经过放大器的放大作用,便可驱动扬声器发出不同的音调,只要插入一段延时程序之后,再将扬声器切断,音调的声音就可以持续一端时间。通过计算机的不同按键输出不同的音调,需要使用系统调用功能以接收键入字符,并且要建立一张表,使键入字符与频率构成一个对应关系:键入字符12345678音符1234

5、5678频率11381207135215211709180720292277乐曲是由不同的频率和节拍的音调组成的,因此控制驱动脉冲的频率和持续时间就是编写乐曲程序的关键。频率对应8253的计数初值,而乐曲中的节拍决定了各音频持续的时间。 (2) 利用8253计数/定时器和8255并行接口,定时器8253利用工作方式3产生一定频率信号,通过可编程的并行外围接口芯片8255控制频率信号的通断。8255的A口设置为输出,8255的A口的低两位用来控制扬声器驱动,当输出端口的PA0位为“1”或为“0”时,将使控制驱动器的与门电路接通或关闭,使8253所发出的音频信号能到达驱动器或被阻断。这样通过控制P

6、A0的变化,可使扬声器接通和断开,控制扬声器是否能发出声音。此外,通过控制PA0的通断时间,就能发出不同的音长。8255的PA1位为“1”时,控制8253定时器产生驱动扬声器发声的音频信号,该位为“0”则不发信号。8253有三个定时器,分为0号、1号和2号定时器,驱动扬声器的是0号定时器,该定时器工作在方式3,是一个频率发生器,它负责向扬声器发送指定频率的脉冲信号。当8255的PA0和PA1都为1时,8253发出指定频率的声音信号的前提下,声音信号通过与门到达驱动器驱动扬声器发声。硬件原理图如图1所示: (3) 系统实现2个功能,电子琴和音乐盒的功能。两者发声的方法一样,只是一个数据是从键盘读

7、取的,另一个是已经保存好的数据。首先我们可以用一个子程序实现单个音调的产生,对8253输入不同的计数初值生成不同频率的波形,然后延时一段时间。电子琴程序主要是读取键盘按键,根据键值产生不同的音调即可。而乐曲的播放先将乐曲的音符编码表和节拍编码表建立好的,然后在播放时读取数据。音乐盒的乐曲播放程序中需要有两组数据支持:一组是频率数据,一组是节拍时间数据。音符的频率可以通过简谱从频率表中查得。节拍时间就是音符的持续时间,取决于乐曲的速度和每个音符的节拍数据。如4/4(四四拍)中,每小节包括4拍,全音符持续4拍,二分音符持续2拍,四分音符持续一拍,八分音符持续半拍等。有了音调与频率和时间的关系后,就

8、可以按照乐曲的曲谱将每个音符的频率和持续的时间定义成两组数据表,然后编程依次取出表中的频率值和节拍值,调用单音调子程序就可依次产生各个音调,播放出乐曲。在程序中存储几个乐曲数据,根据音乐盒子菜单选择相应的乐曲演奏,读取对应的数据输出。2程序模块及流程图: (1).程序模块: 两个宏定义。一个是带显示的宏定义,还有一个是音乐地址跟节拍的地址宏定义。输入要操作的字符匹配模块.自行演奏的字符匹配模块.自行演奏模块.音乐播放模块.延时模块.8255、8253工作模块.清屏模块 (2).流程图: 是 Y N三、详细设计1.软件设计: 1. 单音调子程序SOUND:单音调子程序的调用前需要进行以下几个方面

9、工作:1)确定相应的音调所对应的频率,查表可以得到,再由频率得到对应的8253计数初值。2)确定音长,即一个音符所持续的时间。在单音调子程序中实现发出一个音符的声音,持续所需的时间,流程图如图3所示:2电子琴程序由于是用键盘的数字键1-8,要先读取键盘的输入,判断输入是否在1-8之间,不在就退到主菜单,若是就根据键值查表找出相应的频率,计算初值,调用发音子程序即可,此时的音长固定。初值的计算方法是用输入的clk频率除以音符的频率。2.编码实现:主程序中的清屏使用:MOV AH, 0 MOV AL,00 INT 10H宏定义中的字符串显示功能:MOV AH,9 INT 21H INPUT程序块中

10、带显示单字符的输入:MOV AH,01H INT 21HRETU1程序块完全推出程序:MOV AH,4CH INT 21HD1程序块从键盘接收字符不回显:MOV AH,0 INT 16H四、调试与运行结果说明1. 调试过程出现问题及解决: 最初对扬声器发声方面的知识很是迷茫,上网查了关于音符、节拍以及音符频率表方面的东西,再结合微机原理才弄懂了怎样控制扬声器发音的音调等问题 汇编程序设计的基础知识也是临时学的,随用随查。 调试的时候出现了很多的问题。宏定义出错,给音乐频率跟节拍定义的时候地址传递出现错误,查书了解到宏定义格式为: 宏指令名 MACRO 形参1,形参2 宏体 ENDM 修改后才可

11、以运行,很多DOS系统功能调用参数格式不是很确定,查了很多资料才得及解决。 2运行结果以及运行说明: 运行后进入的主界面就是如上图所示。按照上面的提示进行各种操作,如果其中要输入错误,就会不断的跳出该界面提示重新选择。A、B、C三个分别是对应播放的音乐。D操作就是进入下面所示的界面自行弹奏音乐。Q操作就是直接退出该程序。 进入该界面以后按U后按键1-8就可以进行自己演奏音乐,按Q就会进入第一个界面,进行重新选择五、课程设计总结刚听到题目的时候,要求用汇编语言以及微机原理接口技术的知识编写一个电子琴程序,头就懵了!之前学过汇编,但是丝毫没认真听课,后来也没自学,感觉硬件编程太慢了,何况拿来编程啊

12、,尽管这学期刚学了微机原理接口技术,还算听了几节课,可拿来实践还真是没想过,总之,难啊!最让人费解的是怎样控制电脑发音,发出1-7的音调了!去图书馆查了几本关于微机中电子琴的制作程序设计。懂得了代码的实现方法。其中宏定义使用就是结合课本跟资料学习应用。刚刚开始用有点陌生,但是经过这次设计我更进一步懂得了使用方法。关于计数器的初值是根据课本中的介绍,计算出来的。音乐节拍的设置参考网络的音乐得以争取播放同时又研究了8255、8253的工作方式,问了同学问题以后以前不清楚的内容得以清晰。清屏的代码完全为了使界面的整洁网络搜索的代码。汇编语言的运用全是随用随查,再听了同学讲解了一点,勉强会些基本东西!上网查了很多资料!由于时间紧凑此次的课程设计还没有完全达到老师要求的模块化,其中还有一点冗余的代码未能消除。代码未能实现音乐半路停止以及可以自动保存自行演奏歌曲。系统实现的功能还是比较僵硬,不是那么智能。设计中出现了很多错误,有的是自己经过查课本跟网络资料以后琢磨出来的!有的就是跟同学探讨,多次的修改成功的。经过这次的实验成功完成了一些基本的操作。六、谢启首先感谢老师给我们的这次机会吧,不是说机会难得,尽管有些“强制”,然而自己可是不会主动去编写的,编完了呢,通过这次实验总是学到了一些东西

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号