欢迎来到天天文库
浏览记录
ID:46250604
大小:334.53 KB
页数:15页
时间:2019-11-22
《电子钢琴汇编专业课程报告》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、电脑钢琴系统《汇编语言程序设计》一、课题内容和要求题目描述:利用汇编语言设计一个模拟钢琴演奏程序。在显示器上显示出钢琴的键盘,以计算机键盘的相应键模拟钢琴键盘进行乐曲的演奏。在PC机键盘上按键,屏幕上对应的钢琴键出现跳动,并发出相应音符的声音,例如:按数字“1”,发C大调do按数字“2”,发C大调rc按数字“3”,发C大调me按空格(其它)鍵,退出。基本要求:(1)设计一个基本的只有7键的模拟钢琴键盘;(2)按键时,对应的钢琴键有反映,并发出相应频率的音符声;(3)松键时,对应的钢琴键恢复原状;(4)实物演示时要求讲出程序原理和设计思想;(5)程序运行良好、界面清晰。提高要求:(1
2、)绘制出三维立体钢琴键,随着按键,对应钢琴键有向下的动作;(2)钢琴声随着琴键按下时间的长短持续发出不同长短的声音;(3)扩展钢琴的咅域。二、需求和思路分析(1)钢琴的绘制。这部分主要实现画钢琴键盘键身的功能。它是rti一个个白色的长方块构成的,要在屏幕上画出有立体效果的长方形白色键盘,我们需要用BIOS调用编织线使程序。显示适配器都自带显示服务的BIOS,利用它所提供的BIOS调用来编写程序,对于我们编程应用者来说是透明的,我们只需要调用显示驱动程序INTlOIIo钢琴主要是由矩形、直线等规则几何形状构成,可以采用文木方式,也将屏幕设置成图形显示方式,通过画点、画线等基本程序完成
3、钢琴的绘制。对于绘制钢琴键盘,为使其有立体感,还需要先在稿纸上画出一个缩小版的钢琴键盘,准确计算其齐个边界的坐标,包括为使其有立体感而要画出斜线的方法,都需要事先准确推出运算公式。钢琴键盘的动态显示则是同步于键盘的按键有按下和弹起的动画。这部分功能需要也可以用绘制钢琴的方法來实现这个效果。(2)音符的演奏。在PC系列机上,8254的三个计数器各有其作用,计数器0用于维护系统时钟;计数器1用于周期性的向DMA发送数据请求信号,供存储器刷新使用;计数器2接到扬声器用来产生声音。各计数器的输入时钟脉冲频率均为1.19318MH/。通过设置计数值可以产生各种频率的声音。与此同吋,许多输入输
4、出操作都是由8255A可编程外设接口來控制的。利用CPU支持的外围电路8254与8255,通过汇编程序改变8255的PBO,PB1口,接通扬声器,使得计算机能够发出一定频率的声音,同时通过8254的与8255连接的2号计数器控制指定频率,从而达到控制扬声器的音调的效果。三、概要设计绘制钢琴键盘的流程图:在绘制键盘的程序屮,基本的就是调用INT10H,重要的是键盘坐标的设计,以及各个颜色的设定,以实现立体效果。由于要画斜着的键盘键身,而汇编程序木身只有画点的功能,所以我们就耍设计一个循环来实现键盘的绘制。对每个坐标点(CX,DX)进行画点,DX不变,CX每画完一个就口增,在规定界限内
5、实现一整行的绘制,而在DX自减1,CX不变则对上一行的点进行绘制。循环便能进行整个键盘竖直部分的绘制。斜线部分则需要一些巧妙的设计,I大I为设置DI为右边界,而每个点的横处标CX的起始位置始终是DT减去键盘键身宽度,如果耍I田i斜线则DI、CX在I田i第一个键盘的时候就应该比竖直部分少1,根据这样的特征,可以先设置一个拐点处的纵坐标值450,高于这个值时,画竖直部分;低于这个值时画斜线部分。发声部分的原理设计是利用可编程定时/计数器8254在扬声器屮的应用而完成的。扬声器驱动系统的硕件组成如下图所示。利用8254驱动扬声器发声是由系统插件±8255的外围电路来发出驱动信号的。如下图
6、中的spkdata和timgatespk就是接在8255的输出端口上。其中timgatespk控制8254定时器來驱动扬声器,spkdata来控制扬声器的门电路。直接由门电路驱动发出的声音比较难听,通过滤波器滤掉杂波Z后会更动听一些,所以最好如下图所示加-•个滤波器。SPKDATA8255A由一个控制寄存器,三个输入输出数据寄存器。输入输出寄存器乂称为输入/输出端口。这三个端口的名字分别称为A口、B口和C口。一般编址为60H,61H和62HO在系统初始化的时候已经将A口和C口设为输入方式,B口设为输出方式O可以通过对8254计数器编程使产生某一频率的方波,输岀经过驱动器驱动,推动扬
7、声器发出声咅。发声部分的流程图:发声部分NO键盘按下有声音且耍保持声音随按键的长短而不同,需耍监视8255状态端口,在没有丢开键时,扬声器不会关闭而会一宜发声。在键盘广7按下的同吋要屏幕键盘要有显示,则需要调用DOWN子程序,来实现琴键按下的动态效果。因为在扬声器没有关闭时,不会调用UPT程序,所以琴键也会随按键的长短而停留住,使按键的动态效果更加合理。DOWN、UP子程序原理和绘制钢琴键盘部分一样,在这里就不再累述。四、详细设计详细源代码及注释:DATASEGMEN
此文档下载收益归作者所有