ImageVerifierCode 换一换
格式:DOC , 页数:19 ,大小:138.50KB ,
资源ID:8890660      下载积分:10 金币
验证码下载
登录下载
邮箱/手机:
图形码:
验证码: 获取验证码
温馨提示:
支付成功后,系统会自动生成账号(用户名为邮箱或者手机号,密码是验证码),方便下次登录下载和查询订单;
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/8890660.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

开通VIP折扣优惠下载文档

            查看会员权益                  [ 下载后找不到文档?]

填表反馈(24小时):  下载求助     关注领币    退款申请

开具发票请登录PC端进行申请。


权利声明

1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4009-655-100;投诉/维权电话:18658249818。

注意事项

本文(音乐乐曲演奏程序课程设计报告.doc)为本站上传会员【仙人****88】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4009-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

音乐乐曲演奏程序课程设计报告.doc

1、 南通大学电气工程学院 微机原理课程设计 报 告 书 课 题 名 按键选择音乐播放和步进电机正反转控制 班 级 电084班 姓 名 陈彬 小组成员 陈彬 陈海冬 张晓天 指导教师 胡慧 日 期 2011.6.21 ~ 2011.6.30

2、 第一部分——软件设计 按键选择音乐播放 目 录 1、设计目的----------------------------------------------------------------------------------2 2、设计内容-------------------------------------------------------2 3、设计过程--------------------------------------------------------2 -------3.1流程图----------------------------------

3、2 -------3.2通用发声程序设计原理--------------------------------------3 --------3.3主要的宏和过程的实现-------------------------------------4 ------------------3.3.1DISPLAY显示宏 ----------------------4 ------------------3.3.2ADDRESS音乐地址宏-----------------5 ------------------3.3.3MUSIC宏--------------

4、5 ------------------3.3.4通用发生程序GENSOUND-------------6 ------------------3.3.5WAITF延时程序 ----------------------6 ------------------3.3.6CLEAR清屏程序----------------------7 ------------------3.3.7RETU退出 --------------------------7 --------3.4主程序实现----------------------------------------

5、8 ------------------3.4.1数据段定义 --------------------------8 ------------------3.4.2堆栈段定义 --------------------------8 ------------------3.4.3初始化 ------------------------------9 ------------------3.4.4程序执行过程------------------------9 4、系统调试---------------------------------------------------

6、9 5、附录(程序清单)---------------------------------------------------------------------11 6、收获体会---------------------------------------------------------------------------------17 7、参考文献------------------------------------------------------17 1、设计目的 1.能够较全面地巩固和应用课堂中所学的基本理论和程序设计方法,能够较熟练地完成汇编语言程序的设

7、计和调试。 2.培养综合运用所学知识独立完成汇编程序课题的能力。 2、设计内容 要求完成一个音乐程序,即通过按下键盘上某个按键就可以按预先设定的程序播放音乐或者终止程序。 3、设计过程 3.1流程图 图2-1 系统流程图 开始 显示提示信息 接收键盘输入 是“Q”? 是“A”? 是“B”? 退出程序 将音乐节拍频率地址导入ADDRESS 调用MUSIC,播放音乐 显示错误提示调用清屏程序 是 是 是 否 否 否 3.2通用发声程序设计原理 发声程序包括3个步骤: (1)在8253中的42端口送一个控制字0B6H(1011011

8、0B),该控制字对定时器2进行初始化,使定时器2准备接收计数初值。 (2)在8253中的42H端口(Timer2)装入一个16位的计数值(533H×895/频率),以建立将要产生的声音频率。 (3)把输出端口61H的PB0、PB1两位置1,发出声音。 对于发音部分。PC机上的大多数输入/输出(I/O)都是由主板上的8255(或8255A)可编程序外围接口芯片(PPI)管理的。PPI包括3个8位寄存器,两个用于输入功能,一个用于输出功能。输入寄存器分配的I/O端口号为60H和62H,输出寄存器分配的I/O端口号为61H。由PPI输出寄存器中的0、1两位来选择扬声器的驱动方式。 连接

9、到扬声器上的是定时器2,从上图可以看到,GATE2与端口61H的PB0相连,当PB0=1时,GATE2获得高电平,使定时器2可以在模式3(方波)下工作。定时器2的OUT2与端口61H的PB1通过一个与门与扬声器的驱动电路相连。当PB1=1时,允许OUT2的输出信号到达扬声器电路。因此,只有PB0和PB1同时为“1”时,才能驱动扬声器地声。通过以下指令实现: IN AL,61H OR AL,3 OUT 61H,AL 上面的指令用以打开扬声器,如要关闭扬声器时则为: AND AL,0FCH OUT 61H,AL 当从8255中采集到输入的数据时,需要确定相应的频率,所以

10、在软件编程时要建立一个数据表: TABLE DW 493,440,392,349,329,293,261 把相应的频率送到一个寄存器上,通过公式: 计数值=533H×896÷ f=1234DCH÷ f 算出计数值,再把算得的计数值送给8253,就可产生所要频率的方波。在把计数值送8253前,必须先把8253进行初始化: MOV AL,0B6H OUT 43H,AL 使其选用通道2,工作在方式3下。 就整个电路而言,接好电路后,通过软件编程不断地采集从8255口中输入的信号,而8个开关都接在8255的A口上,只要有开关按下,就会采集到一个数据,根据这个数据与事先编

11、好的表对应,得到一个计数值,把这个计数值送给8253的通道2,8253的通道2工作的方式3下,这样就可以产生满足频率要求的发声方波。这个方波经驱动放大就可以使扬声器发出相应的声音。 所以8255在这里完成两个任务,它不仅从A口中采集到数据,而且B口的PB1和PB0两个位要控制发声。8253的主要任务就是产生所要求发声的不同频率的方波。 3.3主要的宏和过程的实现 3.3.1 DISPLAY显示宏 为将事先定义的数据段字符串显示在屏幕上,定一个参数为b的宏。将b的地址传到DX。随后调用DOS09号功能调用。将字符串显示到屏幕。调用DISPLAY的实例为: DISPLA

12、Y INFO1 DISPLAY INFO2 DISPLAY INFO3 DISPLAY MUSLIST 在此段代码中,程序显示提示作用的字符串和歌曲列表。 DISPLAY宏具体实现如下: DISPLAY MACRO b LEA DX,b MOV AH,9 INT 21H ENDM 3.3.2 ADDRESS音乐地址宏 歌曲包含节拍和频率。此处定义的音乐地址宏包含两个参数,将歌曲频率地址导入SI将歌曲节拍导入B

13、P。当选择不同的歌曲时,主程序调用该宏,将用户要求的歌曲的频率和节拍导入,以便在MUSIC中实现发声。 音乐地址宏实现如下: ADDRESS MACRO A,B LEA SI,A LEA BP,DS:B ENDM 3.3.4 MUSIC宏 在ADDRESS中,程序已经将歌曲的首个频率地址和首个节拍地址分别导入SI、BP。为了检测歌曲是否结束,在MUSIC中,首先将SI传递到DI,DI与-1相减,如等于0,则得出该频率定义为-1 。在歌曲频率表定义中将-1定为该歌曲结束标志,此时MUSIC跳出结束。 若该频率不为-1。调用通用发生程序GENSOUND,将该音符按照频率和节拍

14、表发声。发声后SI、BP分别加2,跳转到下一个音符的频率和节拍,继续检测歌曲是否结束。如频率不为0,继续将该音符发声,并循环此过程。 具体实现方法如下: MUSIC PROC NEAR PUSH DS SUB AX,AX PUSH AX FREG: MOV DI,[SI] CMP DI,-1 JE END_MUS MOV BX,DS:[BP]

15、 CALL GENSOUND ADD SI,2 ADD BP,2 JMP FREG END_MUS: RET MUSIC ENDP 3.3.5通用发生程序GENSOUND 该发生程序是在修改BEEP发声程序的基础上,以实现为8088/86编写一个任意频率和任意持续时间的通用发声程序。该程序包括以下三个步骤: (1)在8253/54 中的43端口送一个控制字0B6H(10110110B),该控制字对定时器2进行初始化,使得定时器2准备接受计数初值。 (2)在8253/54中的4

16、2H端口装入一个16位计数值,已建立将要产生的声音频率。 (3)把输出端口61H的0、1两位置1,发出声音。 具体实现过程见程序清单。 该GENSOUND程序能产生19~65535Hz的声音,这个频率的下限是使除法不产生溢出的最小值。此外一般情况下,GENSOUND程序产生的声音不单单和频率有关,还和CPU有关。CPU工作频率越高,时延越短,产生的声音越急促。为了使程序产生一个与CPU工作频率无关的合适时延,在MUSCI中调用了一个时间延时程序WAITF。 3.3.6WAITF延时程序 80x86的各种处理器采取了6~66MHz的工作频率,loop指令的执行时间在这些处理器上也不相同

17、为了建立一个与处理器无关的延时,IBM采用了一种利用硬件产生时间延时的方法,即通过监控端口61H和PB4,使PB4每15.08微秒触发一次,一产生一个固定不变的时间基准 利用WAITF子程序能获得任意的时间延时,而不必在考虑CPU的型号和工作频率。 具体实现如下: waitf proc near push ax waitf1: in al,61h and al,10h cmp al,ah je waitf1 mov ah,al loop waitf1 po

18、p ax ret waitf endp 3.3.7 CLEAR清屏程序 当程序初始化或用户输入错误时,程序调用CLEAR清屏程序。 清屏程序将AX、BX、CX、DX先入栈,以保存现场,保证清屏后重新执行不会出现错误。随后启用BIOS功能调用,将屏幕初始化或上卷。 其中AL=0表示初始化窗口,AL=上卷行数, BH=卷入行属性,CH/CL=左上角行/列号,DH/DL=右上角行/列号。该程序段表示从左起0行0列到右起24行79列全部清屏。 将屏幕清空后重新将AX、BX、CX、DX出栈。 3.3.8 RETU退出 当程序要求退出时,主程序会调用RETU进行退出。R

19、ETU程序内容实际为一个BIOS功能调用。 RETU: MOV AH,4CH INT 21H 3.4主程序实现 3.4.1数据段定义 数据段分别定义了INFO1、INFO2、INFO3 、INFO4、INFO5各字符串分别显示程序运行之初对用户的提示。MUSLIST 中显示用户能选择的三首歌曲列表。 程序用MUS_FREG、MUS_TIME分别定义了音乐频率和节拍。使得发声程序可以按照理想的要求发出连续的乐曲。节拍和频率定义原理如下: 乐曲是按照一定的高低、长短和强弱关系组成的音调,在每一首乐曲中,每个音符的音高和音长与发声系统中的频率、节拍有关。可参考下表:

20、音名 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拍中,四分音符为一拍,每小节四拍,全音符持续四拍,二分音符持续二拍,四分音符持续

21、一拍,八分音符持续半拍。如果给全音符分配1秒(100*10ms)的时间,则二分音符持续时间为0.5秒,四分音符持续时间为0.25秒,八分音符持续时间为0.125秒。 知道了音调及频率、时间的关系后,可以按照乐曲的乐谱将每个音符的频率和持续时间定义为两个数据表,然后编写程序依次取出表中的频率值和时间值。 3.4.2堆栈段定义 程序定义了一个长度了200的堆栈段,如下: STACK SEGMENT DB 200 DUP ('STACK') STACK ENDS 3.4.3初始化 程序初始化使用了BIOS功能调用。使用0AH号功能设置显示方式。本程

22、序对显示要求较为简单,故使用40x25黑白文本、16级灰度方式显示。若要求改变显示方式,可以根据0AH功能设置表自行添加。 3.4.4程序执行过程 详细参见附录中INPUT部分,以及程序流程图。 4、系统调试 编译程序,如下图所示 编译连接正确 待装载成功后,运行程序,运行情况如图 程序初始界面,如下图所示 程序报错要求重新输入,如下图所示 播放后退出,如下图所示 5、附录(程序清单) 本程序的代码如下: DATA SEGMENT INFO1 DB 0DH,0AH,'welcome to thi

23、s programe!$' INFO2 DB 0DH,0AH,'there are some music!$' INFO3 DB 0DH,0AH,'please select which one to play!$' INFO4 DB 0DH,0AH,'please input again!$' MUSLIST DB 0DH,0AH,'A MUSIC:Mary has a little ship' DB 0DH,0AH,'B MUSIC:the boat on Taihu lake' DB 0DH,0A

24、H,'Q EXIT' db 0dh,0ah,'$' ;****************************************** 音乐一 玛丽有只小羊羔 MUS_FREG1 DW 330,294,262,294,3 DUP (330) DW 3 DUP (294),330,392,392 DW 330,294,262,294,4 DUP (330) DW 294,294,330,294,262,-1 MUS_TIME1 DW 6 DUP (25*8),50*8 DW

25、 2 DUP (25*8,25*8,50*8) DW 12 DUP (25*8),100*8 ;****************************************** *音乐二 太湖船 MUS_FREG2 DW 330,392,330,294,330,392,330,294,330 DW 330,392,330,294,262,294,330,392,294 DW 262,262,220,196,196,220,262,294,332,262,-1 MUS_TIME2 DW 3 DUP(50),25,25

26、50,25,25,100 DW 2 DUP(50,50,25,25),100 DW 3 DUP(50,25,25),100 DATA ENDS STACK SEGMENT DB 200 DUP ('STACK') STACK ENDS CODE SEGMENT ASSUME DS:DATA,SS:STACK,CS:CODE START: MOV AX,DATA ;**********************初始化

27、 MOV DS,AX MOV aH, 0 MOV AL,00 INT 10H ;********** 定义一个宏显示 DISPLAY MACRO b ;*****虚参 LEA DX,b ;****偏移地址传送到DX MOV AH,9 ;******************DOS 9号功能,多个字符输出到屏幕显示 INT 21H ENDM

28、 ADDRESS MACRO A,B ;**********************音乐地址宏 LEA SI,A ;***歌曲频率地址A导入SI将歌曲节拍导入BP LEA BP,DS:B ;***歌曲节拍地址B导入BP ENDM DISPLAY INFO1 ;*********************** 宏调用 DISPLAY INFO2 DISPLAY INFO3 DISPLAY MUSLIST INPUT

29、 MOV AH,01H ;*******DOS 1号功能,从键盘输入一个字符 INT 21H CMP AL,'Q' ;****AL和Q相减,影响标志位 JZ RETU CMP AL,'A' ;*****AL和A相减,影响标志位 JNZ B0 ;****ZF标志为0,则转移,转到B0(说明不是A) ADDRESS MUS_FREG1,MUS_TIME1 ;****宏调用(玛丽有只小羊羔)

30、 CALL MUSIC JMP EXIT1 B0: CMP AL,'B' JNZ exit ADDRESS MUS_FREG2,MUS_TIME2 ;****(太湖船) CALL MUSIC EXIT1: DISPLAY INFO4 JMP INPUT EXIT: call clear DISPLAY INFO4 DISPLAY INF

31、O1 DISPLAY INFO2 DISPLAY INFO3 DISPLAY MUSLIST jmp input RETU: MOV AH,4CH INT 21H GENSOUND PROC NEAR ;******************************************发声 PUSH AX PUSH BX PUSH CX PUSH DX

32、 PUSH DI MOV AL,0B6H ;*****8253初始化,10110110,通道1,读写16位,方式3 OUT 43H,AL MOV DX,12H MOV AX,348CH DIV DI OUT 42H,AL MOV AL,AH OUT 42H,AL IN AL,61H MOV AH,AL OR A

33、L,3 OUT 61H,AL ;*****打开扬声器 WAIT1: MOV CX,3314 call waitf DELAY1: DEC BX JNZ WAIT1 MOV AL,AH OUT 61H,AL POP DI POP DX POP CX POP BX POP AX RET GENSOUND

34、 ENDP waitf proc near ;******************************************** 延时程序 push ax waitf1: in al,61h and al,10h cmp al,ah je waitf1 mov ah,al loop waitf1 pop ax ret waitf endp MUSIC PROC NEAR ;**************************

35、 音乐播放 PUSH DS SUB AX,AX PUSH AX FREG: MOV DI,[SI] CMP DI,-1 ;******将-1定为该歌曲结束标 JE END_MUS MOV BX,DS:[BP] CALL GENSOUND ADD SI,2

36、 ADD BP,2 JMP FREG END_MUS: RET MUSIC ENDP clear proc near ;************************************ clear!!! 清屏程序 push ax push bx push cx push dx ;*****AX、BX、CX、DX先入栈,以保存现场 mov ah,6 mov al,0 ;*****AL=0初始化窗口 mov ch,

37、0 mov cl,0 mov dh,24 mov dl,79 ;******表示从左起0行0列到右起24行79列全部清屏。 mov bh,7 ;******BH=卷入行属性 int 10h pop dx pop cx pop bx pop ax ret clear endp CODE ENDS END START 6、心得体会 经过一周的磨炼和努力,在老师的耐心指导和同学的热情帮助下,无论

38、从学习上还是从自身角度,我认为自己有了意想不到的收获和进步。 这次汇编课程设计为我们提供了与众不同的学习方法和学习机会,让我们从传统的被动授学转变为主动求学;从死记硬背的模式中脱离出来,转变为在实践中学习,增强了领悟、创新和推断的能力。掌握自学的方法,形成工程理论整体模式,使工作、学习、生活都步入系统化流程。这些方法的提高是终身受益的,我认为这难得的一周,让我真正懂得了生活和学习的基本规律。 紧张忙碌的课程设计虽然在历经一个周的时间后结束了,完成了课程设计的任务,但是从中发现的问题也是值得去深思的。我想经过这一个周的课程设计所发现的问题对我们会有很大的启示,比如整个课程设计过程一定要亲力亲为,我们才能收获的更多,在以后的学习中也会大有帮助。在以后的学习中我会不断的改进学习方法,在实践中学习,不断提高自我,完美自我,全面提高自己。 7、参考文献 [1]彭虎,周佩玲,傅中谦编著.微机原理与接口技术[M].电子工业出版社,2008年3月 [2]王元珍,曹忠升,韩宗芬编著.80x86 汇编语言程序设计[M].湖北:华中科技大学出版社,2005年4月. [3]王成端,李晓波编著.汇编语言程序设计[M].北京:高等教育出版社,2003年8月. 18

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服