ImageVerifierCode 换一换
格式:DOCX , 页数:17 ,大小:334.82KB ,
资源ID:7634846      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

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

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

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(微机原理课程设计电子音乐播放器.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

微机原理课程设计电子音乐播放器.docx

1、微机原理课程设计电子音乐播放器一、课程设计任务及要求1.1课程设计题目: 电子音乐播放器1.2课程设计任务及要求: 设计一个音乐程序,演奏音乐按大写字母“A”,唱乐曲“玛丽有只小羔羊”; 按大写字母“B”,唱乐曲“太湖船” 按大写字母“C”,唱乐曲“祝福歌” 按Q鍵,退出二、课程设计相关知识 2.1 定时/计数器8253/58254 在微机及控制系统中,经常要用到定时信号。如系统的日历时钟,动态存储器刷新。对外部执行机构控制时也需要定时中断、定时检测、定时查询等。定时的方法主要是两种:软件定时:利用指令的执行时间设计循环程序,使CPU 执行延迟子程序的时间就是定时时间。缺点:执行延迟时,CPU

2、 一直被占用,降低了CPU 的效率。硬件定时:用计数器/定时器作为主要硬件,在软件简单指令的控制下产生精确的时间延迟。突出优点为计数时不占用CPU 时间,如利用定时器/计数器产生中断信号,可建立多作业环境,提高了CPU 效率。作为定时器可用8253或者8254,二者功能基本相同,知识工作的最高频率不一样。本实验就采用了8254,其主要功能为:(1)每片上有3 个独立的16 位的减计数器通道。(2)对于每个计数器,都可以单独作为定时器或计数器使用,并且都可以按照二进制或十进制来计数。(3)每个通道都有6 种工作方式,都可以通过程序设置或改变。(4)每个计数器的速率可高达10MHz。主要部分有:数

3、据总线缓冲器、读/写控制逻辑、控制字寄存器、计数通道0#、1#、2#:内部结构如下图: 8254内部结构 2.2 8254外部引脚8254芯片是具有24个引脚的双列直插式集成电路芯片,其引脚分布如图所示。8254芯片的24个引脚分为两组,一组面向CPU,另一组面向外部设备,各个引脚及其所传送信号的情况,介绍如下: 8254的引脚(1)D7D0:双向、三态数据线引脚,与系统的数据线连接,传送控制、数据及状态信息。(2)RD:来自于CPU的读控制信号输入引脚,低电平有效。(3)WR:来自于CPU的写控制信号输入引脚,低电平有效。(4)CS:芯片选择信号输入引脚,低电平有效。(5)A1、A0:地址信

4、号输入引脚,用以选择8254芯片的通道及控制字寄存器。(6)VCC及GND:+5V电源及接地引脚。(7)CLKi: i=0,1,2,第i个通道的计数脉冲输入引脚,8254规定,加在CLK引脚的输入时钟信号的频率不得高于2.6MHZ,即时钟周期不能小于380ns。(8)GATEi: i=0,1,2,第i个通道的门控信号输入引脚,门控信号的作用与通道的工作方式有关。(9)OUTi:i=0,1,2,第i个通道的定时/计数到信号输出引脚,输出信号的形式由通道的工作方式确定,此输出信号可用于触发其它电路工作,或作为向CPU发出的中断请求信号。2.3 8254端口地址 8254控制字说明 : (1) 82

5、54每个通道对输入CLK按二进制或二十进制从预置值开始减1计数,减到0时从OUT输出一个信号。 (2) 8254编程时先写控制字,再写时间常数。 2.4 8254工作方式(1) 方式0:计数结束产生中断方式当写入控制字后,OUT变为低电平,当写入初值后立即开始计数,当计数结束时,变成高电平。(2) 方式1:可编程单次脉冲方式当初值装入后且GATE由低变高时,OUT变为低电平,计数结束变为高电平。(3) 方式2:频率发生器方式当初值装入时,OUT变为高;计数结束,OUT变为低。该方式下如果计数未结束,但GATE为低时,立即停止计数,强制OUT变高,当GATE再变高时,便启动一次新的计数周期。(4

6、) 方式3:方波发生器当装入初值后,在GATE上升沿启动计数,OUT 输出高电平; 当计数完成一半时,OUT输出低电平。方式3与方式2的工作方式类似,也是在初始化完成后能重复循环计数,只是输出的波形不同。(5)方式4:软件出发选通方式进入工作方式4,OUTi输出高电平。 装入计数值n后, 如果GATE为高电平,则立即开始减“1”计数,直到计数值减到“0”为止,OUTi输出宽度为一个CLKi周期的负脉冲。由软件装入的计数值只有一次有效,如果要继续操作, 必须重新置入计数初值n。如果在操作的过程中,GATE变为无效,则停止减“1”计数, 到GATE再次有效时,重新从初值开始减“1”计数。(6)方式

7、5:硬件触发方式计数进入工作方式5, OUTi输出高电平, 硬件触发信号由GATE端引入。 因此,开始时GATE应输入为0, 装入计数初值n后,减“1”计数并不工作,一定要等到硬件触发信号由GATE端引入一个正阶跃信号,减“1”计数才会开始,待计数值计到“0”, OUTi将输出负脉冲,其宽度固定为一个CLKi周期,表示定时时间到或计数次数到。三、程序设计思路所有音乐都是由各个不同频率的音阶和其延续时间的长短来实现的。不同的音乐是由各个音阶按某种排列各自播放一定时间形成的,将各音乐音阶和其延续时间存在数据段中,然后根据不同按键值选择不同的音阶和时间表,再使用计数器产生该音阶频率。CPU通过对定时

8、器的通道2(端口地址为42)进行编程,使其I/O寄存器接收一个控制声音频率的16位计数值,端口61H的最低控制通道2门控的开断。以产生特殊的音响。当定时器接收的计数值为533H时,能产生896Hz的声音,因此产生其他频率的计数值就可算出来:533Hz896频率=1234DC频率在送出频率计数值之前,还要给方式寄存器送一个方式值,该数决定对哪一个通道编程,采用什么模式,送入通道的计数值是一字节还是两字节,是二进制码还是BCD码。其位组合的格式如下:当通道2用于发声时,采用的是模式3,在模式3下,输出线为“1”和为“0”的时间各占计数时间的一半,因而产生一系列间隔均匀的脉冲。 产生指定频率声音的程

9、序段如下: MOV AL,0B6H OUT 43H,AL ;43H为8254的控制字端口 MOV DX,12H MOV AX,34DCH DIV DI ;(DI)=频率 OUT 42H,AL ;42H为8254的通道2端口 MOV AL,AH MOV 42H,AL从定时器输出的方波信号,经功率放大和滤波后驱动扬声器。送到扬声器的信号还受到了从并行接口芯片8255(端口地址为61H)来的双重控制,端口61H的最低位控制通道2的门控开断,以产生特殊的音频信号,端口61H的PA1位和定时器的输出信号同时作为与门的输入,PA0和PA1位可由程序决定为0还是为1。显然只有PA0和PA1都是1时,才能使扬

10、声器发出声音。控制音长的时间可以简单地通过反复执行指令来得到。我们知道执行2801次LOOP指令约需要10MS的时间。因此用10MS的倍数值来控制扬声器开关的时间间隔,就可控制发声的音长了。实现程序如下: IN AL,61H MOV AH,AL OR AL,3 OUT 61H,AL ;开扬声器L: MOV CX,2801DY:LOOP DY DEC BX JNZ L MOV AL,AH OUT 61H,AL ;关扬声器四、功能流程图及子程序说明 4.1总流程图 MAIN程序:MAIN程序是总程序,输出说明,等待用户按键并读取键值。根据不同的按键选择调用播音子程序播放不同的歌曲。 4.2音乐播放

11、子程序流程图PLAY子程序:PLAY子程序是播音子程序,SI指向音节表中的频率,BP指向音节表中的时间。从SI的指向的音节表中取一个频率,只要不是-1,即有效就再读取时间,然后计算计数初值送入计数器,产生各种频率。开启扬声器,根据所取的时间调用若干次延时子程序。这段时间扬声器就发出该频率的声音,延时结束,就关闭扬声器,调用音节之间的小延时程序。最后修改SI和BP,指向下一个频率,重复上面的工作DELAY子程序和DELAY_OFF子程序:两个都是子程序,采用空操作循环多次的方法,只是第二个延时时间较短,大概为5ms。 4.3部分源程序代码五、调试结果截屏及结果分析5.1调试结果截屏初始界面:如果

12、按错了键,会出现如下界面:如果选择正确,将出现如下界面: 5.2结果分析 根据输出结果显示,此次试验设计结果与预想设计方案想要达到的结果相一致,没有出现任何偏差,此次设计较为成功。但在实验过程中对程序不断地进行了调试,将音频频率不断地进行了改变,由原来的低频通过同时扩大其倍数,最终使音频达到预期的效果。六、参考文献【1】李长青. 微机原理与接口技术. 徐州:中国矿业大学出版社,2006【2】沈美明. 汇编语言程序设计实验教程. 北京:清华大学出版社,2002年【3】周明德. 微机原理与接口技术. 北京:人民邮电出版社,2002年七、附录7.1源程序代码:DATA SEGMENTDATA1 DB

13、 0AH, 0DH, HELLEL!WELCOME YOU TO COME HERE!$ DB 0AH, 0DH, THIS IS A MUSIC PROGRAM!$ DB 0AH, 0DH, PLEASE SELECLT!$DATA4 DB 0AH, 0DH, input ERROR!$DATA5 DB 0AH, 0DH, input AGAIN!$MUSLIST DB 0AH, 0DH, PressA Ma li you zhi xiao yang gao DB 0AH, 0DH, PressB Tai hu chuan DB 0AH, 0DH, PressC zhu fu ge DB 0

14、AH, 0DH, $ MUSFRQA 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,-1MUSTIMA DW 6 dup(100),200 DW 2 dup(100,100,200) DW 12 dup(100),400MUSFRQB 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

15、,196,220,262,294,330,262 DW -1MUSTIMB DW 3 dup(200),100,100,200,100,100,400 DW 2 dup(200,200,100,100),400 DW 3 dup(200,100,100),400 MUSFRQC DW 392, 262, 294, 330, 350, 392, 262, 262 DW 440, 350, 392, 440, 494, 524, 262, 262 DW 350, 392, 350, 330, 294, 330 DW 350, 330, 294, 262, 294, 330, 294, 262, 2

16、47, 262,-1MUSTIMC DW 200, 4 DUP(100), 200, 200, 200 DW 200, 4 DUP(100), 200, 200, 200 DW 200, 4 DUP(100), 200 DW 4 DUP(100), 200, 4 DUP(100), 400 DATA ENDSSTACK SEGMENT PARA STACK STACK STA DB 200 DUP(STACK) STACK ENDS CODE SEGMENTASSUME DS: DATA, SS: STACK, CS: CODE, ES: DATASTART: MOV AX, DATA ;设置

17、段寄存器 MOV DS, AX MOV ES, AX MOV AX, STACK MOV SS, AX SHOW MACRO B ;显示以B开始的字符串宏定义 MOV DX, OFFSET B MOV AH, 09H INT 21H ;宏结束ENDM SHOW DATA1 ;提示信息 L0: SHOW MUSLIST MOV AH, 01H ;输入并选择 INT 21H CMP AL, 51H JZ RETURN CMP AL, 41H JNZ l1 CALL MUSICA JMP EXIT1l1: CMP AL, 42H JNZ l2 CALL MUSICB JMP EXIT1l2: CMP

18、 AL, 43H JNZ EXIT CALL MUSICC JMP EXIT1EXIT1: SHOW DATA5 JMP L0EXIT: SHOW DATA4 SHOW DATA5 JMP L0 RETURN: MOV AX, 4C00H ;返回DOS INT 21H ;* MUSICA PROC ;音乐A LEA SI, MUSFRQA LEA BP,DS: MUSTIMAFREQA: MOV DI, SI CMP DI,-1 JE ENDMUSA MOV BX, DS: BP CALL SOUND ADD SI,2 ADD BP,2 JMP FREQA ENDMUSA:RETMUSICA

19、ENDP ;*MUSICB PROC ;音乐B LEA SI, MUSFRQB LEA BP,DS: MUSTIMBFREQB: MOV DI, SI CMP DI,-1 JE ENDMUSB MOV BX, DS: BP CALL SOUND ADD SI,2 ADD BP,2 JMP FREQB ENDMUSB:RETMUSICB ENDP ;*MUSICC PROC ;音乐C LEA SI, MUSFRQC LEA BP,DS: MUSTIMCFREQC: MOV DI, SI CMP DI,-1 JE ENDMUSC MOV BX, DS: BP CALL SOUND ADD SI,2

20、 ADD BP,2 JMP FREQC ENDMUSC:RETMUSICC ENDP ;* SOUND PROC ;发音程序 PUSH AX ;保护寄存器 PUSH BX PUSH CX PUSH DX PUSH DI MOV AL, 0B6H ;写定时器模式 OUT 43H, AL MOV DX, 12H ;时间因子 MOV AX, 348CH DIV DI ;频率 OUT 42H, AL ;写计数器2低八位 MOV AL, AH OUT 42H, AL ;写计数器2高八位 IN AL, 61H ;获取当前端口设置 MOV AH, AL ;保存在AH中 OR AL, 3 ;打开扬声器 OUT

21、 61H, AL WAIT1: MOV CX, 2800 ;改变数值,用以设置播放速率 DELA1: LOOP DELA1 DEC BX JNZ WAIT1 MOV AL, AH ;恢复端口信号 OUT 61H, AL POP DI ;寄存器出栈 POP DX POP CX POP BX POP AX RET ;返回SOUND ENDP ;*CODE ENDSEND START7.2各个音符的对应频率表:音符 频率/HZ 半周期/us音符频率/HZ半周期/us低1DO2621908 #4FA#7400676#1DO#2771805中5SO7840638低2RE2941700#5SO#83106

22、02#2RE#3111608中6LA8800568低3M3301516#6LA#9320536低4FA3491433中7SI9880506#4FA#3701350高1DO10460478低5SO3921276#DO#11090451#5SO#4151205高2RE11750426低6LA4401136#2RE#12450402#6LA#4661072高3M13180372低7SI4941012高4FA13970358中1DO5230956#4FA#14800338#1DO#5540903高5SO15680319中2RE5780842#5S0#16610292#2RE#6220804高6LA17

23、600284中3M6590759#6LA#18650268中4FA6980716高7SI19760253八、总结在本次设计中,可以说是一次成功的经验。在我们学完了微型计算机原理与接口技术这门课的基础上来做这个设计,通过设计后,使我们对这门课的理论知识的理解有很大程度上的加强。微机原理这门课程本身是一门实验性和工程性很强的专业技术课,因此不仅要重视理论教学,更应注意实践技能的培养和训练。课程设计是这门课程的一个重要环节,通过课程设计,巩固、加深和拓宽了学习的理解,本课程设计的重点目标是使用汇编语言,而不过多涉及硬件方面的太多知识。在编程方面我通过本次课程设计学到了很多。一开始面对很长的程序往往有

24、畏难情绪,感觉无法下手,没办法只能硬着头皮啃下去,多看几个和音乐播放有关的汇编程序,然后我就能慢慢看懂了并理解了别的作者的设计思路。然后再根据自己的思路,对照本人在图书馆借的汇编语言指导书慢慢编写符合自己思路的程序。一次写出来的程序肯定不会是正确的,还需要进一步调试它。检查程序过程中,在充分思考的基础上多次实验是检查改正程序的良方。编写程序的过程中,体会最深的是子程序的调用和程序的条理问题,一个程序就算功能实现了,但是也要使主程序和子程序的条理分明,易读性高,才能算一个比较好的程序。调试程序中,学习了emu8086的使用,emu8086对检查程序的错误作用很大。同时,也要灵活使用各种调试方法,

25、来缩小寻找错误的范围。书到用时方恨少。在课程设计过程中,我才体会到这句话的深意。课堂上学的8254的知识和汇编语言都太少,还不足以完成本次课设,为此我经常跑图书馆借了各种各样的工具书。有的书用处较大,有的书仅能用到一小块知识,就是这样,一步步在知识的海洋里我寻觅着自己需要的东西,确实克服了不少困难,解决了不少问题。或许坎坷才能更好的使人成长。在这次的课程设计中,我的收获是不但做出了一个符合要求的音乐播放器,而且为自己积累了一些宝贵的经验。同时我也对音乐方面的频率知识有了一些认识,我想如果不是本次课程设计中用到这方面知识,我这辈子可能没有机会去接触这方面的知识了。这,或许也是我比别的同学多出的一点收获吧!

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1