版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、音乐发生器的设计1、 绪论音乐发生器是由8255A可编程并行接口和可编程定时计数器8253芯片组成。用8253芯片产生一定频率的方波,通过控制输出方波时间的长短,声音的长短就得到控制。8255A具有多种功能的可编程并行接口电路芯片。本次接口课程设计是音乐发生器的设计,用发生器能演奏一首完整的歌。主要是8253方式选择。以及如何使用MF2KP软件。首先我们利用定时器产生各种频率的声音,然后再对其进行修改,并编写以整首歌的代码,旋律及拍数可以按音乐简谱而定。需要编写对8253,8255进行初始化的程序及对8255芯片的PC0和PC6置0置1来选择歌曲,实现唱歌功能即实现歌曲的节拍通过调用延时子程序
2、控制发音的长短。8253用来实现将频率信号送到扬声器而发声。通过编程选择计数器和设置工作方式,用MF2KP集成开发环境进行音乐发生器控制程序设计,调试直到听到正常的乐曲。要完成本次课程设计必须先对微机接口原理与接口技术有一个全面的了解。设计的主要目的使我们学生更进一步掌握微机原理及应用课程的有关知识,提高应用微机解决问题的能力,加深对危机应用的理解。2、设计原理音乐乐曲的两个基本要素是音高和节拍。因此要产生一个歌曲的音乐就要对音高和节拍进行控制。音高指每个音符发声的高低,即音符的频率。节拍指每个音符发声的长短,也就是音符的持续时间(延时)。因此组成乐曲的每个音符的频率值和持续时间是编写歌曲音乐
3、所需要的两个数据。符号频率对照表1音符12345671(高音)频率262294330349390440494523音符延时对照表2音符全音符二分音符四分音符八分音符时间1760ms880ms440ms220ms倍数321684音符的持续时间根据乐曲的速度每个音符的节拍数确定。在4/4拍中,四分音符为1拍,每小节4拍,全音符持续4拍,二分音符持续2拍,四分音符持续1拍,八分音符持续半拍。如给全音符分配1秒的时间,则二分音符的持续时间为0.5秒,四分音符持续时间为0.25秒,八分音符持续时间为0.125秒。根据歌曲的简谱及征服的歌曲为4/4拍的得到征服歌曲的简谱为:5(低音) 5(低音) 1 1
4、2 2 1 2 3 5 3 3 5(低音) 6(低音) 6(低音)公式1:计数初值(n)=根据公式1所得征服歌曲的频率为:196,196,262,262,294,294,262,294,330,392,330,330,196,220,220; 本次课设主要用到的芯片有8255A,8253。8255的4个端口地址为300H303H。其中A口=300H,B口=301H,C口=302H,命令口=303H。8253的四个端口地址为304H307H。其中通道0为304H,通道1为305H,通道2为306H,命令口为307H。所得原理图如图1 图1原理设计图通过给8253定时器装入不同的计数值,可以使其输
5、出不同频率的波形。当与门打开后,经过放大器放大的作用,便可驱动扬声器发出不同频率的音调,要使该音调的声音持续一段时间,只要插入一段子程序,之后再将扬声器切断。8253的通道工作方式:8253中各通道可有6种可供选择的工作方式,以完成定时、计数或脉冲发生器等多种功能。方式3:方波发生器工作方式3被称作方波发生器。使用8255A的PB1控制通道2的输出对扬声器产生控制的时间。主要应用到DOS的21H号中断调用。DOS的21H号中断调用用于单字符输入以及多字符输出显示。音乐演奏实现的一个主要步骤是乐谱编程。通过相应的频率表将乐谱中对应的音符转化为计数器的计数初值,节奏通过延时程序转化为对发音时间的控
6、制,从而实现音符和节拍的数字化。功能说明:8253为可编程的硬件定时/计数器,具有3个独立的16位计数器通道,每个计数器均可按二进制或二十进制数,每个计数器的计数速率高达2MHZ,每个通道有六种工作方式,可由程序设计和改变,所有的输入和输出都与TTL兼容。在8253的初始化编程中,由CPU向8253的控制字寄存器写入一个控制字来规定8253的工作方式。D0=0时为表示二进制数,D0=1时为BCD码。 8255有3个8位并行I/O口。具有3个通道3种工作方式的可编程并行接口芯片(40引脚)。其各口功能可由软件选择,使用灵活,通用性强。8255可作为单片机与多种外设连接时的中间接口电路。8255作
7、为主机与外设的连接芯片,必须提供与主机相连的3个总线接口,即数据线、地址线、控制线接口。同时必须具有与外设连接的接口A、B、C口。由于8255可编程,所以必须具有逻辑控制部分,因而8255内部结构分为3个部分:与CPU连接部分、与外设连接部分、控制部分。3、设计程序开始初始化歌曲的频率及延时初始化8255和8253取歌曲的第一个音符的频率和时延是否遇到音符频率的结束 是 根据频率计算计数初值并送往8253不是 置8255的PC6、PC0为1,使扬声器发声置8255的PC6、PC0为0,使扬声器发声返回DOS调用延时子程序置8255的PC6、PC0为0,关闭扬声器结束取下一个音符的频率及延时图2
8、主程序获取并保存中断1CH的中断向量向中断1CH装入新的中断向量音符的延时次数已到? 不是 是恢复中断1CH原来的中断向量图3延时子程序流程图本次课程设计所编写的总程序如下sstack segment stack DW 200 dup(?)sstack endsdata segmentfreq DW 196,196,262,262,294,294,262,294,330,392,330,330,196,220,220 DW 330,330,349,330,294,294,262,262,220,220,262,330,294 DW 196,
9、196,262,262,294,294,330,330,392,392,196,220,262,523 DW 330,330,349,330,294,294,262,220,330,392,262,294,262DW 392,523,494,392,392,440,392,392DW 392,523,494,392,440,330,440,440DW 440,440,440,392,330,330,349DW 349,349,349,392,440,330,349,330,294,392,523,494,392,392,440,392,
10、392,DW 392,523,494,392,440,330,440,440DW 440,440,440,392,330,330,349DW 349,349,349,330,262,294,262DW 349,349,349,349,349,392,349,262,349,330,294,330DW 349,349,349,349,330,392,392,349,262,349,392,440,392,392,392,523,495,523time DW 8 DUP(5),3 DUP(10),5,10,25 DW
11、60;5,5,10,5,10,5,5,20,5,5,10,25 DW 7 DUP(5),10,5,15,5,10,20 DW 5,5,3 DUP(10),12,2,5,125,25,5,5,15,25 DW 5,10,5,5,10,5,25
12、160; DW 5,10,5,5,10,5,25 DW 5,5,10,5,10,5,25 DW 5,5,10,5,5,20,5,25 DW
13、0;5,10,5,5,10,5,25 DW 5,10,5,5,10,5,25 DW 5,5,10,5,10,5,30 DW 5,5,10,4 DUP(5),
14、20 OLD1 DW ?OLD2 DW?data endscode segment assume cs:code,ds:data,ss:sstackstart: mov ax,data mov ds,ax mov ax,sstack mov ss,ax mov al,10000000b ;8255初始化 mov dx,303h out dx,al mov al,0ch mov dx,303h out dx,al mov al,00h ;关闭喇叭(8255的PC0=0) mov dx,303h out dx,al mov al,10110110b ;8253初始化 mov dx,307
15、h out dx,al mov si,offset freq mov bp,offset time AA0: mov ah, 0bh ;检测是否有任意键按下 int 21h cmp al,00h jne end1 ;若有,则结束演凑 mov di,si cmp di,0 jz end1 mov dx,12h mov ax,34dch ;1.19318MHz div di mov dx,306h ;向8253装入计数初值 out dx,al mov al,ah out dx,al mov dx,303h ;打开喇叭 mov al,00000001b out dx,al mov al,000011
16、01b out dx,al mov bx, ds:bp ;取1个音符的延时次数bx call delay ;调用延时子程序 mov dx,303h mov al,00001100b out dx,al mov al,00000000b ;关闭喇叭 out dx,al add si,2 ;取下1 个音符的频率 add bp,2 ;取下1 个音符的延时次数 jmp AA0 end1: mov dx, 303h mov al, 00001100b out dx, al mov al, 00000000b ;关闭喇叭 out dx, al mov ah,4ch int 21hnew_intr proc
17、 ;新中断服务程序 dec bx ;该服务程序只将延时次数-1 iretnew_intr endpdelay proc near ;延时子程序 pushf push ds push es push bx mov ah,35h ;取原中断(INT1CH)的向量,并保存 mov al,1ch ;INT 1CH -用户时钟服务 int 21h mov old2, bx mov bx, es mov old1, bx pop bx pop es push ds mov ah, 25h ;设置新中断服务程序的向量 mov al, 1ch mov dx, seg new_intr mov ds,dx le
18、a dx, new_intr int 21h pop ds TD: cmp bx,0h ;延时次数已到? jnz TD ;未到,则继续 mov ah,25h ;已到,则恢复原中断向量 mov al,1ch mov dx,old1 push dx mov dx,old2 pop ds int 21h pop ds popf retdelay endp code ends end start 4、系统联调实验现象:在MF2KP平台上,通过编程实现8253A接口芯片来控制扬声器唱一首歌,当程序运行时,扬声器唱出征服,其中时钟脉冲频率为1.19318MHz。5、总结两周的微机原理及接口技术课程设计使人
19、受益匪浅。音乐程序设计从无到有,这个过程使我了解了,对微机原理硬件知道的太少,对其中有些具体的知识了解很是肤浅。通过查阅了很多资料,了解了许多汇编程序思想,扩展了自己的视野,不再仅仅局限于书本中短短的几个程序,而且更重要的明白了编写程序的态度:仔细谨慎,精益求精。掌握了什么是编译程序,编译程序工作的基本过程及各阶段的基本任务,熟悉了编译程序总流程图,了解了编译程序的生成过程,构造工具及其相关的技术。在播放歌曲时,发现低音过低,在调整低音频率后,效果并没有明显的改变。其中设备限制是原因之一,所以本实验不适合低音较多或低音过低的歌曲,应尽量选择节奏感强的歌曲。通过本次实验,让我8253以及其他几个芯片都有了更深的了解,特别是它们的控制方式和各部分的功能更加的熟悉了。 经过两个星期的课程设计,完成任务的效果和预想中有很大的出入,虽然中间遇到了一些问题,但经过我们的努力,还是把问题给解决了。这次课程设计对我综合运用所学知识的能力的提高有不小的帮助,之前做的实验都是很简单的编程,跟硬件结合也没有这么复杂,实现的功能都比较简单,可是这次要实现的功能相对来说比较复杂,要求掌握的知识比较全面。 经过这次的课程设计,再一次的印证了理论来源于
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 社会保险管理与法律规制
- 节能减排部管理之道
- 地下电缆沟挖机租赁合同协议书
- 2025公路陆运货物运输合同模板
- 教育机构行政人员聘用协议
- 川省水利事业单位聘用合同条款
- 收款销售操作规程
- 道路改造工程监督意见书
- 企业销售合同管理准则
- 建筑工程公司员工招聘合同样本
- 小学语文课堂提问有效性策略研究方案
- 物业上门维修收费标准
- ATS技术交流(新型发动机智能恒温节能冷却系统)100318
- 手术区皮肤的消毒和铺巾ppt课件
- 2022年度培训工作总结
- 应急照明装置安装施工方法
- DB34∕T 4057-2021 中小河流防汛特征水位分析规程
- E5015焊条成分设计及焊接性能分析
- 压力管道验收资料表格(共38页)
- 明天会更好歌词
- 年产500万平米电极箔及6.5万吨净水剂建设项目可行性研究报告模板-拿地申请立项
评论
0/150
提交评论