微机原理课程设计——音乐播放器_微机原理课程设计集合

2020-02-28 其他范文 下载本文

微机原理课程设计——音乐播放器由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“微机原理课程设计集合”。

一. 课程设计目的1.通过D/A装换器产生模拟信号,使PC机作为简易音乐播放器。2.了解利用数模转换器产生音乐的基本方法。

二.课程设计任务

设计并实现一个键控音乐播放器。要求:

(1)自己选用合适的芯片,不少于两种。

(2)自行设计电路并使用汇编语言编写程序完成键控音乐播放器功能。

(3)该播放器有若干首歌曲可以选择,开始时输出说明,要用户选择要播放的歌曲,然后根据用户按键进行播放、退出或出错提示。

三、总体设计方案

1、总体设计方案一

所有音乐都是由各个不同频率的音阶和其延续时间的长短来实现的。不同的音乐是由各个音阶按某种排列各自播放一定时间形成的,将各音乐音阶和其延续时间存在数据段中,然后根据不同按键值选择不同的音阶和时间表,再使用计数器产生该音阶频率。而我们学过的有计数器可以产生各种频率,所以我们主要采用计数器8253产生各音符,用8255并行接口来控制扬声器的开关,达到播放音乐的功能。

2、总体设计方案二

可以使用0832(数模转换器)来产生频率,原理图:

更连续,效果更好点。

提出这个方案是因为我想产生模拟信号,来驱动扬声器,这样产生的声音更加圆润感觉我们想把一个周期的波形分成32份,然后每份给8253一个值让他转换成模拟信号,不同的频率可以用8253计数器控制,比如要产生261Hz的频率,使用1MHz的话,周期就为1/261=3.83ms,分成32份,每份间隔时间就是3.83ms/32=0.12ms,换句话说就是送计数器0的初值为1M/261/32=120次。

3、各个音符的对应频率表:

音符 频率/HZ 半周期/us 音符 频率/HZ 半周期/us 低1DO 262 1908 #4FA# 740 0676 #1DO# 277 1805 中5SO 784 0638 低2RE 294 1700 #5SO# 831 0602 #2RE# 311 1608 中6LA 880 0568 低3M 330 1516 #6LA# 932 0536 低4FA 349 1433 中7SI 988 0506 #4FA# 370 1350 高1DO 1046 0478 低5SO 392 1276 #DO# 1109 0451 #5SO# 415 1205 高2RE 1175 0426 低6LA 440 1136 #2RE# 1245 0402 #6LA# 466 1072 高3M 1318 0372 低7SI 494 1012 高4FA 1397 0358 中1DO 523 0956 #4FA# 1480 0338 #1DO# 554 0903 高5SO 1568 0319 中2RE 578 0842 #5S0# 1661 0292 #2RE# 622 0804 高6LA 1760 0284 中3M 659 0759 #6LA# 1865 0268 中4FA 698 0716 高7SI 1976 0253

四.部分电路设计及功能解说

1、频率发生电路

使用8253产生音符频率。8253采用方式3,产生方波信号,根据输入计数初值的不同产生不同频率的方波信号来驱动扬声器。

2、扬声器开关控制电路

使用8255并行接口芯片来控制扬声器的开和关,PC0始终接低电平,PA0和8253的OUT0接在与门上,这样只有PA0=1时扬声器才有可能开通,否则不发声。关闭的方法是,从PC口读入数据再从PA口输出;而开扬声器时只要在输出PA口数据前对数据进行一个取反操作就可以了。

设某音符频率为fHz,而CLK脉冲是1MHz,则计数初值N=1M/f。8253的控制端口为28BH,控制字为36H。五.硬件接线图

六.软件设计流程图

1、总流程图

开始输出说明读取按键是‘1’?N是‘2’?Y播放曲1Y播放曲2N是‘3’?Y播放曲3N是‘0’?Y结束Y选择无效程序总流程图

2、音乐播放子程序流程图

开始保护现场曲N各音符频率设置曲N各音符时间设置读取频率F频率是-1 ?Y恢复现场N读取时间T结束返回计算机计数次数送计数器,产生该频率F信号启动喇叭延时T关闭喇叭音符间延时播音流程图

七.程序段功能汇总

1、MAIN程序

MAIN程序是总程序,输出说明,等待用户按键并读取键值。根据不同的按键选择调用播音子程序播放不同的歌曲。

2、PLAY子程序

PLAY子程序是播音子程序,SI指向音节表中的频率,BP指向音节表中的时间。从SI的指向的音节表中取一个频率,只要不是-1,即有效就再读取时间,然后计算计数初值送入计数器,产生各种频率。开启扬声器,根据所取的时间调用若干次延时子程序。这段时间扬声器就发出该频率的声音,延时结束,就关闭扬声器,调用音节之间的小延时程序。最后修改SI和BP,指向下一个频率,重复上面的工作。

3、DELAY子程序和DELAY_OFF子程序

两个都是子程序,采用空操作循环多次的方法,只是第二个延时时间较短,大概为5ms。八.程序清单

SSEG SEGMENT PARA STACK 'stack'

dw 100h dup(0);Resize the stack by changing the number '100' SSEG ENDS

DSEG SEGMENT

;TO DO: Add your program's data here INFO1 DB 0DH,0AH,'--------------------------',0DH,0AH,'THERE ARE 3 SONGS:',0DH,0AH,0DH,0AH,'$' INFO2 DB '1.HAPPY BIRTHDAY',0DH,0AH,'$' INFO3 DB '2.SHEEP',0DH,0AH,'$' INFO4 DB '3.RIVER',0DH,0AH,'$' INFO5 DB '0.EXIT',0DH,0AH,'$' INFO6 DB 'YOU HAVE CHOSEN :$'

INFO7 DB 'THANK YOU FOR YOUR USE',0DH,0AH,'$' INFO8 DB '---------------------------',0DH,0AH,'PRESS THE KEY TO SELECT SONG!',0DH,0AH,'$' INFO9 DB 0DH,0AH,'-------------------',0DH,0AH,'|INVALID SELECTION|',0DH,0AH,'-------------------',0DH,0AH,'$' FREG1 DW 2 dup(262),294,262,349,262,262,294,262,392,249,262,262,523,440,349

;曲1的频率

DW 330,294,466,266,440,349,392,349,-1 TIME1 DW

1,1,2,2,2,4,1,1,2,2,2,4,1,1,2,2,2,2,4,1,1,2,2,2,4

;曲1的时间 FREG2 DW 330,294,262,294,3 DUP(330)

;曲2的频率

DW 3 DUP(294),330,392,392 DW 330,294,262,294,4 DUP(330)DW 294,294,330,294,262,-1 TIME2 DW 6 DUP(1),2

;曲2的时间

DW 2 DUP(1,1,2)DW 12 DUP(1),4 FREG3 DW 330,392,330,294,330,392,330,294,330,330,392,330,294,262,294,330,392,294 ;曲3的频率

DW 262,262,220,196,220,262,294,332,262,-1 TIME3 DW 3 DUP(2),1,1,2,1,1,4

;曲3的时间

DW 2 DUP(2,2,1,1),4 DW 3 DUP(2,1,1,1),4 DSEG ENDS

CSEG SEGMENT

aume cs:CSEG, ds:DSEG, es:DSEG, :SSEG

INIT PROC;Initialize procedure

mov ax, dseg mov ds, ax

mov es, ax;TO DO: Add your initialize code here(as your requirement)ret

;return to the MAIN procedure

INIT ENDP

MAIN PROC

;Here is your program entry point

call INIT;call the INIT procedure to initialize the program

;**TO DO: Add your main code here**

RE: MOV DX,28BH

;关闭扬声器

MOV AL,89H OUT DX,AL

MOV DX,28AH IN AL,DX MOV DX,288H OUT DX,AL

LEA DX,INFO1 MOV AH,09H INT 21H LEA DX,INFO2 INT 21H LEA DX,INFO3 INT 21H LEA DX,INFO4 INT 21H LEA DX,INFO5 INT 21H LEA DX,INFO8 INT 21H

MOV AH,01H

INT 21H CMP AL,'1'

JE MUSIC1 CMP AL,'2' JE MUSIC2 CMP AL,'3' JE MUSIC3 CMP AL,'0' JE EXIT

LEA DX,INFO9 MOV AH,09H INT 21H JMP RE

;输出说明信息

;读取按键

;根据不同的按键播放不同的曲子

;无效选择,输出错误提示

MUSIC1: MOV SI,OFFSET FREG1

;指向曲1的表

MOV BP,OFFSET TIME1 CALL PLAY JMP RE MUSIC2: MOV SI,OFFSET FREG2

;指向曲2的表

MOV BP,OFFSET TIME2 CALL PLAY JMP RE MUSIC3: MOV SI,OFFSET FREG3

;指向曲3的表

MOV BP,OFFSET TIME3 CALL PLAY JMP RE EXIT: MOV DX,28BH

;关闭扬声器

MOV DX,28AH IN AL,DX MOV DX,288H OUT DX,AL LEA DX,INFO7

;输出欢迎使用信息,增加界面友好度 MOV AH,09H INT 21H mov ax, 4c00h;The end of the program, return to the system MOV AL,89H OUT DX,AL

int 21h

MAIN ENDP

;TO DO: Add other procedures(PROC)here(as your requirement)

;THE PROGRAMME OF PLAYING THE MUSIC

PLAY PROC

;PLAY子程序,功能上面介绍过

L1: MOV BX,DS:[SI]

;取频率

CMP BX,-1

;看是否有效

JE L0

;无效就退出

MOV CX,DS:[BP]

;读取时间

MOV DL,CL

;保存时间

ADD DL,30H

MOV AH,02H

INT 21H

MOV DX,0FH

;计算计数初值,1M的十六进制为0F4240H

MOV AX,4240H

DIV BX

MOV BX,AX

MOV DX,283H

;设置计数器工作方式

MOV AL,36H

OUT DX,AL

MOV DX,280H

;输入计数初值

MOV AX,BX

OUT DX,AL

MOV AL,AH

OUT DX,AL

MOV DX,28BH

MOV AL,89H OUT DX,AL MOV DX,28AH IN AL,DX NOT AL MOV DX,288H OUT DX,AL

ROD:CALL DELAY

LOOP ROD

MOV DX,28BH

MOV AL,89H OUT DX,AL MOV DX,28AH IN AL,DX MOV DX,288H OUT DX,AL CALL DELAY_OFF

ADD SI,2

ADD BP,2

JMP L1

L0: RET

PLAY ENDP

DELAY PROC

PUSH AX

PUSH BX

PUSH CX

PUSH DX

MOV BX,09FH LL1:MOV CX,0FFFFH

;开扬声器 ;延时

;关扬声器

;延时子程序

;循环这么多次

;音节间延时

LOP: LOOP LOP DEC BX JNZ LL1 POP DX

POP CX

POP BX

POP AX

RET

DELAY ENDP

DELAY_OFF PROC

PUSH AX

PUSH BX

PUSH CX

PUSH DX

MOV BX,0FH LL2:MOV CX,0CFFFH LOP2: LOOP LOP2 DEC BX JNZ LL2 POP DX

POP CX

POP BX

POP AX

RET DELAY_OFF ENDP CSEG ENDS;TO DO: Add other segments here(as your requirement)

END MAIN

九.试验结果和分析

1、试验结果:

程序初始运行界面

如果按错了键,会出现如下界面

如果选择正确,将出现如下界面:

2、分析

这是按照方案一做的结果,按1~3分别播放“生日快乐”等歌,但由于本组人对音乐都是外行,各音阶频率的排序和延时时间搭配不好,导致音乐严重走调,但基本能听出不是噪音。

按照方案二做的电路和程序,无论怎么样都不出声,后来我们直接送数据到0832产生三角波信号(程序在我们的一次作业中写的)。还是无法让扬声器发出声音,因此按这个方案失败了。

十.课程设计总结和体会

1.实验过程中碰到了很多的难题和障碍,我认识到平时基础知识的重要性,只有能够熟练的掌握才能在实验过程中得心应手,否则一步错则整个试验都会陷入困境,因而,严谨的态度是试验成功的重要保障!

2.通过这次课程设计,我们对各个芯片有了进一步的了解,对各个芯片的功能有了更深刻的认识和体会,平时上课的理论知识只是停留在理论的层面,只有通过了这样的试验才能更好的体会到,做到了理论和实际的相结合,使理论知识真正运用到了实践中去。在课程设计过程中,同组人员之间相互合作,共同研究使我更加坚信了团体的力量。在团体的共同协作和努力下,任何的难题都可以被解决!

3.我们大家在实验的时候都团结合作,遇到问题时候一起探讨,增强了我们的合作精神。

十一.参考文献

1、《〈微机原理与接口技术〉学生实验指导书》 扬州大学 罗加奇

2、《微机原理及应用》 机械工业出版社 胡钢 主编

《微机原理课程设计——音乐播放器.docx》
将本文的Word文档下载,方便收藏和打印
推荐度:
微机原理课程设计——音乐播放器
点击下载文档
相关专题 微机原理课程设计集合 播放器 微机 课程设计 微机原理课程设计集合 播放器 微机 课程设计
[其他范文]相关推荐
    [其他范文]热门文章
      下载全文