课程设计电子音乐播放器完整版.docx
- 文档编号:23245674
- 上传时间:2023-05-15
- 格式:DOCX
- 页数:16
- 大小:283.14KB
课程设计电子音乐播放器完整版.docx
《课程设计电子音乐播放器完整版.docx》由会员分享,可在线阅读,更多相关《课程设计电子音乐播放器完整版.docx(16页珍藏版)》请在冰豆网上搜索。
课程设计电子音乐播放器完整版
课程设计电子音乐播放器-完整版
1.课程设计题目………………………………………………………………………1
2.课程设计任务及要求………………………………………………………………1
3.总体方案与设计说明………………………………………………………………1
4.硬件电路设计及描述………………………………………………………………3
5.软件设计流程及描述………………………………………………………………7
6.源程序代码…………………………………………………………………………9
7.系统调试………………………………………………………………………………10
8.结论与说明……………………………………………………………………………11
9.课程设计体会…………………………………………………………………………11
10.参考文献………………………………………………………………………………11
一.课程设计题目
电子音乐播放器
二.课程设计任务及要求
设计要求:
利用8253作为音阶频率发生器,应先对一段音乐进行编码后存入音符表,并建立好音阶表(只建立一个8度即可,音阶表见附录),音符长度不能少于60个,连续播放3遍后停止。
三.总体方案与设计说明
3.1音阶频率表
音阶
频率(HZ)
1
247
2
277
3
311
4
330
5
370
6
415
7
466
1
494
表3.1音阶和频率对应关系
设计程序时,数据段设置两张“表”。
一张是频率表,将与音符对应的频率值依次写入表中,另一张是时间表,依次存放每个音符的单位时间。
当然,频率表和时间表的表项要一一对应,不能错位,频率表最后一个表项为0,作为重复演唱或停止演唱的标志。
在接通扬声器的情况下,依次取出频率表中的频率值,转换成计数初值写入计数器,依次取出时间表中的单位时间和调试参数N相乘,然后再调用延时子程序即可得到延时时间,也就是音符演奏时间。
3.2主机扬声器电路图
主机扬声器电路图3.2
从图中可以看出,PC机发声系统以8253为核心。
系统初始化时,8253工作在“方波发生器”方式,初值为二进制数,写入顺序为先低后高,经过简单滤波以后,送至扬声器。
改变计时器的初值就可以使扬声器发出不同频率的音响。
3.3设计总框图
设计总框图3.3
3.4电路连接
时钟信号
开关(置高电平)
音响
A0A1
电路连接图3.4
四.硬件电路设计及描述(含所需器件、硬件原理图)
4.1芯片介绍
8253可编程定时/计数器是Intel公司生产的通用外围芯片之一,有3个独立的十六位计数器,技术频率范围为0~2MHZ,它所有的技术方式和操作方式都通过编程控制。
8253的功能用途是:
(1)延时中断
(2)可编程频率发生器
(3)
事件计数器
(4)二进倍频器
(5)实时时钟
(6)数字单稳
(7)复杂的电机控制器
8253有六种工作方式:
(1)
方式0:
计数结束中断
(2)
方式1:
可编程频率发生器
(3)
方式2:
频率发生器
(4)
方式3:
方波频率发生器
(5)
方式4:
软件触发的选通信号
(6)方式5:
硬件触发的选通信号图4.1
8253引脚图如图4.1所示,各引脚功能如下。
D7~D0——八条双向数据线;
WR(低电平有效)——写输入信号;
RD(低电平有效)——读输入信号;
CS(低电平有效)——片选输入信号;
A0、A1——片内寄存器地址输入信号;
CLK——计数输入,用于输入定时基准脉冲或计数脉冲;
OUT——输出信号,以相应的电平指示计数的完成,或输出脉冲波形;
GATE——选通输入(门控输入),用于启动或禁止计数器的操作,以使计数器和计测对象同步。
4.2工作方式
(1)方式0:
计数结束产生中断方式
当写入控制字后,OUT变为低电平,当写入初值后立即开始计数,当计数结束时,变成高电平。
(2)方式1:
可编程单次脉冲方式
当初值装入后且GATE由低变高时,OUT变为低电平,计数结束变为高电平。
(3)方式2:
频率发生器方式
当初值装入时,OUT变为高;计数结束,OUT变为低。
该方式下如果计数未结束,但GATE为低时,立即停止计数,强制OUT变高,当GATE再变高时,便启动一次新的计数周期。
(4)方式3:
方波发生器
当装入初值后,在GATE上升沿启动计数,OUT输出高电平;当计数完成一半时,OUT输出低电平。
方式3与方式2的工作方式类似,也是在初始化完成后能重复循环计数,只是输出的波形不同。
<1>计数过程
当把方式3的控制字写入控制字寄存器后,输出端OUT变成高电平,作为初始电平。
再将计数初值写入计数初值寄存器CR中,再经过一个时钟周期,计数初值被移入计数执行单元CE中,从下一个时钟脉冲开始作减1计数,方式3的计数过程分为两种情况:
第一种情况:
计数初值为偶数,当作减1计数减到N/2时,输出端OUT端变成低电平,减到0时,输出端OUT变成高电平,并重新从初值开始新的计数过程。
若GATE为高电平,则一直重复同样的计数过程。
可见,输出端OUT输出连续的方波,故称方波发生器。
第二种情况:
计数初值为奇数,当作减1计数减到(N+1)/2以后,输出端OUT变成低电平,减到0时,输出端OUT又变成高电平。
并重新从初值开始新的计数过程。
这时输出端的波形为连续的近似方波。
<2>门控信号的影响
工作在方式3时,门控信号GATE的功能与工作方式2一样,即GATE为高电平时,允许计数;GATE为低电平时停止计数。
GATE引脚上的信号从低电平跳到高电平时,将会重新把计数初值寄存器CR中的内容移入计数执行单元CE中,并以新装入的值重新开始计数。
<3>新的计数初值对计数过程的影响
如果在计数过程中写入新的初值,而GATE信号一直维持高电平,则新的初值不会影响当前的计数过程,只有在计数结束后的下一个计数周期,才按新的初值计数。
若写入新的初值后,遇到门控信号的上升沿,则结束现行的计数过程,从下一个时钟脉冲下降沿开始按新的计数初值进行计数。
可见,工作在方式3时,当计数初值为偶数,OUT端输出连续的标准方波;当计数初值为奇数,在每个计数周期内,有(N+1)/2个周期输出高电平,(N-1)/2个时钟周期输出低电平,OUT端输出连续的近似的方波。
4.3控制字
控制字图4.3
4.4所需器件
1.定时/计数器8253A
2.扬声器和喇叭驱动模块
3.频率发生芯片74LS393
五.软件设计流程(模块流程图)及描述
通过给8253定时器装入不同的计数值,可以使其输出不同频率的波形。
当与门打开后,经过放大器放大的作用,便可驱动扬声器发出不同频率的音调,要使该音调的声音持续一段时间,只要插入一段延时程序,之后再将扬声器(关闭与门)即可。
music子程序是音乐子程序,SI指向曲中的频率,BP指向曲中的时间节拍。
从SI的指向的音节表中取一个频率,只要不是0,即有效就再读取时间,然后调用speaker子程序,计算计数初值送入计数器,产生各种频率信号,再送至扬声器,根据所取的时间调用若干次延时子程序。
这段时间扬声器就发出该频率的声音,延时结束,再修改SI和BP,指向下一个频率,重复上面的工作。
播放三次音乐后自动停止。
程序流程图5.1
六.源程序代码(要有注释)
CODESEGMENT
ASSUMECS:
CODE
ORG1000H;首地址
START:
JMPmusic;跳转进music
music:
leasi,freq;取freq的偏移地址
leabp,time;取time的偏移地址
Lop:
movdi,[si];把[si]的内容放到di
cmpdi,0;0用于判断是否结束歌曲
jefin;music结束后转到fin关闭扬声器
movbx,[bp];把[bp]的内容放到bx
callspeaker
addSI,2;取下一频率值
addBP,2;取下一时间节拍值
jmpLop;跳回lop循环
fin:
moval,ah;写回扬声器端口61H
out61h,al
;_________-音乐子程序-________________________________________
speakerproc
pushax;保存堆栈
pushbx
pushcx
pushdx
pushdi
;___________初始化部分__________
moval,10110110B;对计数器写控制字,选计数器2,先写低8位,后写高8位。
out43h,al;方式3(方波发生器)、双字节写和二进制计数方式写到控制口
movdx,00h;设置被除数
movax,5000
divdi;(DI)=频率,商→AL,余数→AH
out42h,al;先送LSB最低有效位,42H为8253的通道2端口
moval,ah
out42h,al;后送MSB最高有效位
wait1:
movcx,3;设循环次数3
delay1:
loopdelay1
decbx;循环持续bx次,即传进来的节拍时间
jnzwait1
;
popdi;恢复堆栈
popdx
popcx
popbx
popax
ret
speakerendp
;_______歌曲乐谱________________
;歌曲1:
《两只老虎》
freqdw2dup(262,294,330,262)
dw2dup(330,349,392)
dw2dup(392,440,392,349,330,262)
dw2dup(294,196,262),10dup(-1),0;歌曲频率
timedw8dup(10000)
dw2dup(10000,10000,20000)
dw12dup(9000)
dw6dup(18000);歌曲时间节拍值
dw10dup(10000)
CODEENDS
ENDSTART
七.系统调试(含软、硬件调试时所出现的问题、解决方法)
把程序输入PC机后,保存为.asm文件。
启用HK88系统:
1建立汇编源程序.
2建立连接。
3编译为目标文件
4调试。
5不通过,重新修改(语句错误、音调频率不准、音调节拍不符合)
6重新修改、调试。
7正确运行。
八.结论与说明(使用或操作说明)
硬件连接:
1定时/计数器8253A芯片模块的CLK2接时钟频率选择模块74LS393的T7端口,分频器的频率源为5000HZ。
2定时/计数器8253A芯片模块的GATE2接+5V,提供高电平。
3定时/计数器8253A芯片模块的OUT2接喇叭驱动驱动模块的SIN端口。
4喇叭驱动驱动模块的J5插座接扬声器的J5插座。
8253A的CLK2接分频器74LS393(右上方)的T7插孔,分频器的频率源为5000。
九.课程设计体会
经过一个星期的课程设计,完成任务的效果和预想中有很大的出入,虽然中间遇到了一些问题,但经过我们的努力,还是把问题给解决了。
这次课程设计对我综合运用所学知识的能力的提高有不小的帮助,之前做的实验都是很简单的编程,跟硬件结合也没有这么复杂,实现的功能都比较简单,可是这次要实现的功能相对来说比较复杂,要求掌握的知识比较全面。
经过这次的课程设计,再一次的印证了理论来源于实践,而实践又能升华理论这一个观点。
首先,要实现题目要求的功能并有所创新,我们必须全心地投入其中,养成一种敢于钻研敢于创新的习惯。
在把课程要求实现到实际中来的过程中,首先必须清楚明白地了解几个参考程序的每一行的意思,这就需要敢于静心钻研。
为了把使得程序更加完整,就必须进行创新,这就需要敢于创新。
其次,通过课程设计,让我在课本的基础上,更深入的了解了各种芯片的用法和程序的完成过程,调试方法及技巧。
总之,这次的课程设计在很大程度上提升了我的动手能力了加深了我对理论知识的理解。
十.参考文献
[1]戴梅萼,史嘉权.微型计算机技术及应用(第4版).清华大学出版社,2008
[2]阎石.数字电子技术基础高等教育出版社2006.5
[3]杨斌.微机原理与接口技术实验及课程设计.西南交通大学出版社.2005
[4]谢川,申毅.微型计算机原理与接口技术.科学出版社,2004
[5]宋杰等.微机原理与接口技术课程设计.机械工业出版社,2005
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 课程设计 电子音乐 播放 完整版