电子琴软件设计.doc
《电子琴软件设计.doc》由会员分享,可在线阅读,更多相关《电子琴软件设计.doc(40页珍藏版)》请在沃文网上搜索。
1、 武汉理工大学微机原理及接口技术课程设计 目录1 课程设计任务32 方案比较及论证42.1 方案的与比较42.2 方案的确定论证43 硬件设计及说明53.1 系统总体硬件连接图53.2 PC机接口电路工作原理63.3 使用芯片介绍73.3.1 8255的介绍73.3.2 8253的介绍84 软件设计及说明104.1 程序流程图104.2 DOS功能介绍及其调用104.3 程序代码及注释124.4 编程过程中所遇到的问题155 程序调试记录166 课程设计收获及心得体会19参考文献21附录程序22本科生课程设计成绩评定表40 课程设计任务书 题 目: 电子琴软件设计初始条件:用汇编语言设计一个电
2、子琴,在屏幕上显示出来,界面要美观,功能上模拟现实电子琴功能。要求完成的主要任务: (包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)1实现弹凑功或演凑。其中弹凑:用户每按一琴键弹凑相应音符;演凑:按下某键后自动弹凑预存琴谱功能;还可以附加变调、变速和记录创作等其它功能。3界面要美观。3撰写符合学校要求的课程设计说明书,内容包括:摘要、目录、正文、参考文献、附录(程序清单)。正文部分包括:设计任务及要求、方案比较及论证、软件设计说明(软件思想,流程,源程序设计及说明等)、程序调试说明和结果分析、课程设计收获及心得体会。时间安排:1. 12月26日-12月27日 查阅资料及方案设计2.
3、 12月27日-12月30日 编程3. 12月31日-1月1日 调试程序4. 1月2日 -1月3日 撰写课程设计报告5. 1月4日 上午准备答辩,下午正式答辩指导教师签名: 年 月 日系主任(或责任教师)签名: 年 月 日 电子琴软件设计摘要 本文主要介绍了现代微机原理与接口技术的应用电子琴系统的设计与实现过程的设计。电子琴是我们日常生活接触的比较多的电子器件,因此掌握他的基本原理对于我们专业技术的学习有很好的提升作用。系统主要采用可编程的8255A和8253A芯片为主设计的电子琴。设计重点在于产生特定频率的脉冲从而驱动蜂鸣器发出相应的声音。本次设计输入部分是由8255A和8个常开型开关完成,
4、发音部分由CUP 通过对定时器8253 的通道2 进行编程,使其I/O 寄存器接收一个控制声音频率的16 位计数值端口61H 的最低位控制通道2 门控的开断,以产生特殊的音响。本文用到的是8253 的方式3方波发生器。 在编写汇编程序时,应用了宏定义可以避免过于频繁的调用中断显示字符串,通过子程序调用,可以有效的解决了跳转和转移过多的问题,再加上合理的DOS 和BIOS 功能调用以及各种指令的综合,最终作出了漂亮的电子琴界面,并实现了电子琴演奏高、中、低音以及播放预存乐曲的功能。关键词:电子琴 8255 8253定时器 DOS功能调用 宏定义 1 课程设计任务使用汇编语言设计一个能够用键盘运行
5、的电子琴,(实现一个以上功能): (1)弹奏:用户每按一个键盘琴键就弹奏相应的音符; (2)演奏:按下键盘上某一个指定的建后自动弹奏预存琴谱功能; (3 附加变调的功能 (4)界面要美观2 方案比较及论证2.1 方案的与比较方案一、利用可编程定时/计数器接口芯片8253和可编程并行接口芯片8255A控制产生我们所需的频率。8253可编程定时/计数器是Inter公司生产的通用外围芯片之一。它有3个独立的十六位计数器,计数频率范围为0-8MHz。它所有的计数方式和操作方式都通过编程控制。系统中,8253的0通道输出线与8259的0中断请求线,作为实时钟中断信号。1通道入口接1.8432MHz的信号
6、源,输出接8251的收发时钟端,供串行通迅使用,这里的1计数器仅当作一个分频器使用。2通道以排针形式引出,开放给用户使用。因此我们可以使用8253的2计数器产生相应的频率脉冲信号,连接到蜂鸣器电路。8255芯片连接按键,编写相应的按键查询程序,当查询到不同按键按下时,进入相应的子程序,控制计数器8253发出不同频率段的脉冲信号输出给蜂鸣器,从而产生相应的音符。方案二、使用可编程并行接口芯片8255A为主体电路获得相应音频信号。通过实验计算得计算机系统的程序执行时间长度,编写一定时长的延时函数。便可在特定时长内改变8255某个输出口的电平状态,从而获得相应频率值的脉冲信号。将并行接口芯片8255
7、的B端口连接上按键,编写按键查询函数设定相应按键功能,当查询到按键时便可执行相应的发声程序,即弹奏相应音符。2.2 方案的确定论证方案一需要使用8253和8255两款主体芯片,而方案二只需要一个8255就可以实现所有的电子琴功能,电路连接简单。方案一由于使用计数器8253作为脉冲产生电路,其产生频率稳定,而且编写8253的程序也较为简单。使用8255产生一定频率脉冲,需要我们精确计数软件执行时间,并编写相应的延时程序,从而得到我们所需要的频率脉冲输出。编写程序较为复杂。考虑到我们本次课程设计目的就是让我们加深对微机原理技术理解,并以此提高我们的编写汇编语言的能力,故本次设计采用方案一,即利用8
8、255和8253两款主体芯片设计电子琴。3 硬件设计及说明3.1 系统总体硬件连接图根据8255A芯片和8253A定时器的功能,我们所得的硬件连接图如下所示: 图31 系统硬件连接图我们将使用8255A芯片的A口与B口。8255A芯片B端口定义为输出端口,产生我们所需要的音频脉冲输出。在试验箱上电但未运行程序的情况下,8255A为未定义的状态。实验得到若将PA0端口连接在扬声器电路输入端,扬声器连续发出声响。说明此时,8255A芯片的初始态被蜂鸣器电路认为为高电平定时器通道2工作在方式3,定时器输出一系列“1”和“0”间隔均匀的方波信号,经功率放大和滤波后驱动扬声器。送到扬声器的信号还受到了从
9、并行接口芯片8255B端口(端口地址为61H)B端口的最低位控制通道2 的门控开断以产生特殊的音频信号,它的口与定时器的输出信号同时作为与门的输入端,输出端通过驱动发送至扬声器,由原理图可知,只有8255的B端口最低的两位同时为1时,扬声器才能发出声音,指令的反复执行可以控制音乐的时间。8255A芯片A端口定义为输入端。该端口连接8个按键,按键的一端连接在地上,另一端通过5.1K电阻后连接在+5V电源上,并用插针引出,那么初始状态按键输出为高电平,当按键按下后变为低电平。3.2 PC机接口电路工作原理PC机扬声器电路以及相关接口电路如图2-1 图3-2 PC机扬声器电路以及相关接口电路 电子琴
10、的工作可以分为两部分输入部分:由8255芯片和8个常开型开关发音部分:定时器通道2工作在方式3,定时器输出一系列间隔均匀的方波信号,经功率放大和滤波后驱动扬声器。送到扬声器的信号还受到了从并行接口芯片8255B端口(端口地址为61H)B端口的最低位控制通道2 的门控开断以产生特殊的音频信号,它的口与定时器的输出信号同时作为与门的输入端,输出端通过驱动发送至扬声器,由原理图可知,只有8255的B端口最低的两位同时为1时,扬声器才能发出声音,指令的反复执行可以控制音乐的时间。3.3 使用芯片介绍 3.3.1 8255的介绍按功能可把8255 分为三个逻辑电路部分即口电路、总线接口电路和控制逻辑电路
11、。8255共有三个8位口.其中A口和B口是单纯的数据口.供数据I/O 使用。而C 口则既可以作数据口.又可以作控制口使用.用于实现A口和B口的控制功能。在使用8255A前,可用软件来定义端口的工作方式,选择所需要的功能。掌握8255A编程是正确使用该芯片的前提,为此须先了解8255A的控制命令。(1)8255A的方式控制字这是一个8位的控制字,代表的信息非常丰富,上面提到8255A内部的3个端口位A、B两组,因此方式控制字也就相应地分成两个部分,分别控制A组和B组,其格式如下: 图3-3 8255A方式控制字(2)系统中的8255芯片 8255的数据线片选信号线、地址线、读写控制线等分别与系统
12、总线相连,其A、B、C三个端口以排针形式引出,供8255实验使用,其线路如图2所示, 图3-4 系统中8255A连线图 本次课程设计实验室中使用的TDN 86-88微机实验箱系统中的8255A芯片各个端口地址如表7所示。表3-1 系统中8255端口地址信 号 线寄 存 器编 址I0Y3A口60HB口61HC口62H控制寄存器63H3.3.2 8253的介绍 8253内部有三个计数器,分别成为计数器0、计数器1和计数器2,他们的机构完全相同。每个计数器的输入和输出都决定于设置在控制寄存器中的控制字,互相之间工作完全独立。每个计数器通过三个引脚和外部联系,一个为时钟输入端CLK,一个为门控信号输入
13、端GATE,另一个为输出端OUT。每个计数器内部有一个8位的控制寄存器,还有一个16位的计数初值寄存器CR、一个计数执行部件CE和一个输出锁存器OL。 (1)8253控制字8253 芯片是常用的可编程计数器.在微机中有着极其重要的作用。常用于事件计数器、单稳态触发器、分频器、方波发生器、硬件触发的单脉冲发生器等。计数器/定时器8253包括3个独立的16位计数器通道,而每个计数器都有6种工作方式,可以按二进制或十进制(BCD 码)进行计数。本文用到的是8253 的方式3方波发生器来实现了简易电子琴的设计。 图35 8253A控制字(2)8253A工作方式3方波发生器 任一通道工作在方式3, 只在
14、计数值n为偶数,则可输出重复周期为n、占空比为1:1的方波。进入工作方式3,OUTi输出低电平, 装入计数值后,OUTi立即跳变为高电平。如果当GATE为高电平, 则立即开始减“1”计数,OUTi保持为高电平,若n为偶数,则当计数值减到n/2时,OUTi跳变为低电平,一直保持到计数值为“0”,系统才自动重新置入计数值n,实现循环计数。这时OUTi端输出的周期为nCLKi周期,占空比为1:1的方波序列; 若n为奇数, 则OUTi端输出周期为nCLKi周期,占空比为(n+1)/2)/(n-1)/2)的近似方波序列。如果在操作过程中, GATE变为无效,则暂停减“1”计数过程,直到GATE再次有效,
15、重新从初值n开始减“l”计数。如果要求改变输出方波的速率, 则CPU可在任何时候重新装入新的计数初值n,并从下一个计数操作周期开始改变输出方波的速率。 4 软件设计及说明4.1 程序流程图程序流程图如下图所示: 图4-1 程序流程图4.2 DOS功能介绍及其调用系统功能调用是MSDOS为程序员编写汇编语言源程序提供的一组子程序,包括设备管理、文件管理和目录管理等。DOS规定使用软中断指令INT 21H作为进入各功能子程序的总入口,再为每个功能调用规定一个功能号,引用功能号即可进入相应的子程序入口。DOS系统功能调用的使用方法归纳如下:(1) 传送入口参数到指定的寄存器中;(2) 把要调用功能的
16、功能号送入AH寄存器中;(3) 用INT 21H指令转入子程序入口;(4) 相应的子程序运行结束后,可以按照规定取得出口参数。下面介绍一些DOS功能调用:INT 16H(键盘I/O 中断)1. 功能号 00H功能:从键盘读入ASCII 字符,放在AL 中入口参数:AH=00H2. 功能号 01H功能:测试有无键被按下入口参数:AH=01HINT 10H(屏幕及显示器中断)1. 功能号 00H功能:设置显示模式入口参数:AH=00HAL=显示模式2. 功能号 02H功能:用文本坐标下设置光标位置入口参数:AH02HBH显示页码DH行(Y
17、 坐标)DL列(X 坐标)3. 功能号 09H功能:在当前光标处按指定属性显示字符入口参数:AH09HAL字符BH显示页码BL属性(文本模式)或颜色(图形模式)CX重复输出字符的次数4. 功能号 0BH功能:设置调色板、背景色或边框入口参数:AH0BH设置颜色:.BH00HBL颜色选择调色板:BH01HBL调色板(320200、4 种颜色
18、的图形模式) 。5. 功能号 0CH功能:写图形象素入口参数:AH0CHAL象素值BH页码(CX、DX)图形坐标列(X)、行(Y)INT 21H(DOS 系统功能调用)功能号 4CH功能:退出系统,返回DOS入口参数:AH=4CH4.3 程序代码及注释data segment;-进度条字符-st_load db 10 ;起始行db 4 ;起始列db 0bh ;字体颜色db *db 00;-字符定义-start_col db ? ;存储起始行text db 14 ;起始行db 2 ;起始列db 0fh ;字体颜色db AUTOMATIO
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
10 积分
下载 | 加入VIP,下载更划算! |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 电子琴 软件设计