毕业设计(论文)基于汇编语言与接口技术的音乐盒设计.doc
《毕业设计(论文)基于汇编语言与接口技术的音乐盒设计.doc》由会员分享,可在线阅读,更多相关《毕业设计(论文)基于汇编语言与接口技术的音乐盒设计.doc(29页珍藏版)》请在三一办公上搜索。
1、摘要用计算机来解决实际问题,需要编写程序。程序是由指令组成的,一条条指令规定了计算机究竟要执行什么样的操作,计算机只要按编写的顺序执行完程序中的指令,问题也就解决了。汇编语言是一种功能很强的程序设计语言,也是利用计算机所有硬件特性并能直接控制硬件的语言。本设计是基于汇编语言与接口技术的音乐盒设计。依据PC机系统发声的基本原理,制作成多功能音乐盒。该音乐盒主要实现的功能有:1、程运行后首先在屏幕上显示出乐曲菜单,制作者姓名。2、用键盘键A、B、C选择相应的乐曲。3、输入错误时要有适当提示,并允许重新输入。4、选择Q键后可以正常退出程序。5、允许中断。可以在没有听完整首歌曲时人为中断听下一首歌曲,
2、或退出。本设计利用8255A、8253的工作原理发声。用masm、link软件对音乐盒源程序进行调试。关键词:汇编语言 计算机接口技术 音乐盒 8253 8255A目录 摘要1绪论21 设计思路32 乐理知识42.1 乐理知识简述42.2 音符与频率的关系43 设计原理53.1 8255A的功能53.2 8253 的功能73.3 发声原理93.4 DOS功能调用123.4.1 1号功能调用123.4.2 2号功能调用123.4.3 9号功能调用123.4.4 10号功能调用123.4.5 16号功能调用133.5 子程序调用144 程序154.1 程序流程图154.2 程序代码164.3 程序
3、的运行22结束语25致谢26参考文献27绪论编写程序的语言有三种:高级语言,汇编语言和机器语言。机器语言是一种面向机器的程序设计语言。指令系统是机器语言的基础,其指令是由0和1构成的二进制代码串,其编写的程序可以被计算机直接识别,直接执行。一般说来,机器言程序的执行速度快,占用的内存空间小。汇编又称为符号语言,实际上是一种符号化的机器语言。汇编语言比机器语言直观,容易记忆和理解,用汇编语言编写的程序也比机器语言程序易读、易检查、易修改。汇编语言程序设计在微机应用中占有重要地位.一般来说,凡是在微机中涉及与硬件电路有关的应用系统,如微机控制系统中的检测和控制部分,仪器仪表中的计算机控制和数据处理
4、部分,家用电器的计算机控制部分等,其应用程序部分都是用汇编语言来编写的。在计算机系统中除了CPU以及基本硬件之外,还有各种外部设备,比如显示器、键盘、打印机、磁盘驱动器、光盘驱动器等。这些外部设备需要与CPU进行大量的信息交换,根据CPU的要求进行各种操作。进行信息交换时,由于各种原因(比如电平、时序等的不同),这些外部设备不能与CPU直接相连,它们之间的信息交换必须经过一个中间电路,也就是接口电路才能实现。本设计是基于汇编基础上,利用接口电路中的8253,8255功能使电脑发声而设计的音乐盒。音乐盒的主要功能是,根据按键不同,而选择播放不同的歌曲,和退出等操作。1 设计思路PC的扬声器驱动系
5、统如图1-1所示。 图1-1 PC的扬声驱动系统 扬声器的发声是由输出寄存器(即8255A的PB口)的两位进行控制的。输出寄存器的端口地址为61H。扬声器发声最简单的方式:直接对端口61H的D1位交替输出0或1(同时61H的D0位清0),使扬声器交替地通与断,推动扬声器发声。 由于扬声器总是随时可用的,因此CPU可用直接I/O方式对其进行操作。8253定时计数器的计数通道2用于提供系统的扬声器音频信号,但8253计数器通道2输出的方波受8255A PB0输出高电平时才允许计数通道2的方波输出。该方波又与PB1相与后送扬声器的驱动电路,去驱动扬声器发声。一般情况下,可让PB0输出高电平,通过对8
6、253编程设置方波输出频率以控制发声频率。通过控制8255A PB1输出以控制发声时间。8253计数值的计算方法为:计数值时钟频率音符频率(时钟频率1.19318 MHz1234DCH)所以利用8255和8253来制作音乐盒,详细步骤见下面设计原理部分.2乐理知识2.1 乐理知识简述1 2 3 4 5 6 7do remifa solla si七个音不都一样高,而是从左到右一个比一个高上去的,一这七个音为基础,在它们的上方或下方加圆点来表明更高或更低的音,上方的圆点叫“高音点”下方加的圆点叫“低音点” 。长短音:音乐中的音不光有高低,还要有长短,一个音可以唱得时间很长,也可以唱得很短促。长短音
7、的标记方法,主要用“增时线”和“减时线” ,加写在音的右边或下边,如在5的右边加写一条横线(5),就使5延长了一倍,要是在5的下边写一条横线( 5 ),就使5减短了一半,也即减短1/2。附点在音符右方加一个圆点,这个音叫“附点音符” ,附点的作用是把音符的时值延长1/2。2.2 音符与频率的关系不包括钢琴键盘的黑键,用简譜表示的C大调音符与频率近似值的对应关系如下: . 音符 1 2 3 4 5 6 7 1 2 3 4 5 6 7 1 . . . . . . . 频率131 147 165 175 196 220 247 262 294 330 349 392 440 494 5233 设计原
8、理3.1 8259A的功能8255A是一种功能很强的可编程并行接口芯片,采用NMOS工艺制造,它有三个8位并行输入/输出端口;可工作于三种工作方式,分别为方式0、方式1、方式2;能按无条件传送、查询传送和中断传送方式进行数据传送。 8255A的内部结构如图3-1所示。 图3-1 8255A的内部结构8255A的功能如表31所示表3-1 8255A的端口寻址和操作功能表3.2 8253的功能8253的内部结构8253的内部结构如图3-2a所示 图3-2a 8253的内部结构8253读/写逻辑信号组合的功能以及各计数器通道、控制字寄存器在PC机中的地址分配如表3-2a所示表3-2a 8253读/写
9、逻辑信号组合功能及地址分配8253的控制字 8253的控制字用于选择哪个计数器通道工作,三个通道可同时工作,但是要分别进行初始化;用于规定读/写操作格式或类型,8253可以有8位的计数值或16位的计数值,可以按二进制计数或按二十进制计数;用于选择工作方式,8253共有六种工作方式。 8253是由主机编程设定的,通过把一个8位的控制字写入8253的控制字寄存器,使8253按照某种给定的方式工作。控制字的定义如图3-2b所示。 图3-2b 8253的控制字3.3 发声原理8253在PC机中的应用 IBM PC/XT机系统板上使用了一片8253,其连接如图3-3所示。计数器通道2用于驱动扬声器发声。
10、8253的端口地址范围是40H43H,片选 图3-3 PC/XT中的8253 单拍脉冲的宽度n1输入时钟CLK的周期n1Tclkn1(1/Fclk) n1单拍脉冲的宽度/输入时钟CLK的周期计数器2的发声程序 计数器2的输出送往扬声器发声电路。门控信号GATE2接8255并行接口电路的PB0,因此计数器2的计数过程将受到PB0的控制,而PB0又受I/O端口61H的D0位的控制, 当PB0=1时,OUT2才能输出方波。OUT2和PB1经过一个与门接至扬声器驱动电路。因此OUT2也将受到PB1的控制,而PB1又受I/O端口61H的D1位的控制。ROM-BIOS中的发声子程序BEEP使计数器2工作于
11、方式3,产生约为1 kHz的方波,程序如下:BEEP PROC MOVAL, 10110110B ;计数器2,方式3,16位计数,二进制计数 OUT 43H, AL;写入控制字 MOV AX, 0533H ;计数初值为0533H1331(1.193 18 MHz/1331896 Hz) OUT 42H, AL;写入计数初值低8位 MOV AL, AH OUT 42H, AL ;写入计数初值高8位 IN AL, 61H ;读8255端口B的原值MOV AH, AL ;暂存AH OR AL, 03H ;使PB01、PB11 OUT 61H, AL ;输出,使扬声器发声 SUB CX, CX LOP
12、: LOOP LOP;延时 DEC BL ;BL值由入口参数提供,决定发声长短 JNZ LOP ;BL6发长声,BL1发短声MOV AL, AH OUT 61H, AL ;恢复8255端口B的原值,停止发声 RET ;返回 BEEP ENDP 利用PC机中的定时器/计数器电路8253可以使扬声器发声并且还可以用来演奏简单的乐曲。 声音的产生 在PC机中产生声音可以通过使用8253的计数器2,工作于方式3来实现。设置控制字的指令为 MOV AL,0B6H ;计数器2,方式3,16位计数,二进制计数 OUT 43H,AL设置好控制字后要根据声音的频率对计数器2(也就是42H端口),设定对应的计数初
13、值。指令如下: MOV AL,计数初值低8位 OUT 42H,AL MOV AL,计数初值高8位 OUT 42H,AL然后通过设定PC机中的并行接口电路8255的PB0、PB1,打开扬声器的门电路,就可以发出该频率的声音了。实现该功能的指令如下: IN AL, 61H;读取8255端口B的值 MOV AH, AL;暂存AH OR AL, 03H;使PB01、PB11 OUT 61H, AL;输出,使扬声器发声如果提供给8253计数器2的CLK的时钟频率为1 193 180 Hz,即1234DCH,并把要求发出的声音的频率值放入DI中,使AX获得对应的计数初值的指令为 MOV DX,12H MO
14、V AX,34DCH DIV DI 上述指令执行后计数初值在AX中,然后可以分别按低字节和高字节输出至42H端口,使计数器产生所需频率的声音(音符)。在实际应用中,计数初值要根据实际系统中的时钟频率来计算。延时程序及其作用 当时钟为1 193 180 Hz时,延时10 ms可用如下延时程序实现: DELAY:MOV CX,2801 LOP10:LOOP LOP10如果实际应用环境中的时钟频率较高,则应重新计算并设置延时时间。编写演奏乐曲需要把与音符所对应的频率放在FREQ表中,把与音符所对应的节拍(延时次数值)放在TIME表中。然后由主程序控制,逐一按音符的频率和节拍值,使扬声器发出声音。当与
15、音符对应的频率值为0时,停止演奏。子程序PLAY的功能是使扬声器发出声音,演奏乐曲。由DI指定音符的频率,BX指定与音符对应的节拍。SI指向频率表FREQ,BP指向节拍表TIME。频率表以0结尾,用于作为程序结束的条件:如果取来的频率值为0,则程序结束。3.4 DOS功能调用3.4.1 1号功能调用从键盘输入一个字符(1号调用)调用格式: MOV AH,1 INT 21H扫描键盘将从键盘输入的一个字符的ASCII码送入AL中(回显 )。3.4.2 2号功能调用屏幕显示一个字符(2功能号调用)调用格式: MOV AH,2 MOV DL,字符的ASCII码 INT 21H3.4.3 9号功能调用屏
16、幕显示一个字符串(9功能号调用)调用格式: MOV AH,9 MOV DX,字符串的首地址(偏移地址) INT 21H3.4.4 10号功能调用从键盘输入字符串 (10功能号调用)功能:从键盘接收字符串送入内存的输入缓冲区,同时送显示器显示。调用前要求: 先定义一个输入缓冲区 MAXLENDB100;第1个字节指出缓冲区能容纳的字符个数,即缓冲区长度,不能为0 ACLENDB?;第2个字节保留,以存放实际输入的字符个数 STRING DB 100 DUP(?);第3个字节开始存放从键盘输入的字符串。调用格式:LEADX,MAXLEN(缓冲区首偏移地址) MOVAH,10 INT21H 注意:调
17、用时,要求DS:DX指向输入缓冲区 3.4.5 16号功能调用键盘驱动程序(16号功能调用)1、当某个BIOS程序中具有多种不同功能时,用不同的编号功能号加以区分,并约定功能号存放在寄存器AH中。其调用方法与DOS功能调用类似:(1)功能号AH (2)入口参数指定寄存器(3)指令“INTn”实现对BIOS子程序的调用 下面以键盘I/O中断调用为例介绍BIOS中断调用的方法。 2、键盘I/O中断调用示例键盘I/O中断调用(INT16H)有三个功能,功能号为02。(1) AH=0 功能:从键盘读入字符送AL。出口参数:(AL)键入字符的ASCII码 ;(AH)键入字符的扫描码 MOVAH,0 IN
18、T16H 调用结果:将键盘输入字符的ASCII码送AL,扫描码送AH。 (2)AH=1 功能:从键盘读入字符送AL,并设置ZF标志,若按过任一健,则置ZF=0,否则ZF=1。 出口参数:ZF=0,键盘有输入,(AL)键入字符的ASCII码 ZF=1,键盘无输入 (3)AH=2 功能:读取特殊功能建的状态。 出口参数:AL中是各特殊功能键的状态 AL中某位为1,表示对应键按下;为0则表示未按下3.5 子程序调用子程序的概念 在程序设计中,我们会发现一些多次无规律重复的程序段或语句序列。解决此类问题一个行之有效的方法就是将它们设计成可供反复调用的独立的子程序结构,以便在需要时调用。在汇编语言中,子
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 毕业设计 论文 基于 汇编语言 接口 技术 音乐盒 设计

链接地址:https://www.31ppt.com/p-2882093.html