微机原理课程设计—电子琴的设计_第1页
微机原理课程设计—电子琴的设计_第2页
微机原理课程设计—电子琴的设计_第3页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、课程设计任务书学生姓名:刘沛专业班级:电气 0901指导教师:张锐工作单位:自动化学院题 目 :计算机电子琴软件软件设计初始条件:1. 用于调试程序的 IBM 兼容 PC 机一台;2. 安装 DOS/WIN98 操作系统或运行于 DOS/ WIN98 兼容方式;3. EDIT 等文本编辑器输入 80x86 汇编程序, MASM 编译及链接程序。 要求完成的主要任务 : (包括课程设计工作量及其技术要求, 以及说明书撰写等具体要 求)1. 使用汇编语言设计一个运行于计算机的电子琴软件,软件应实现弹奏 功或演奏。其中弹奏:用户每按一琴键弹奏相应音符;演奏:按下某键后 自动弹奏预存琴谱功能;还可以附

2、加变调、变速和记录创作等其它功能。2. 说明书撰写格式应符合课程设计说明书统一书写格式 。 时间安排:1.程序框图设计, 3 天2.编程, 4 天3. 调试, 3 天年月日4. 编写设计报告, 4 天 指导教师签名: 年 月 日 系主任(或责任教师)签名:目录摘要I1 设计任务和思路1 设计任务1 设计思路12更件部分工作原理 28255工作原理28253工作原理23 程序流程图 4主程序流程图4演奏子程序流程5音乐播放子程序流程 6弹奏子程序流程图 6发音子程序流程图 74各部分功能实现说明 7发音部分功能实现7变调功能的实现8弹奏功能的实现8演奏功能的实现9歌曲选择功能实现9音乐播放功能实

3、现 95 程序运行结果10 结束语12 参考文献13 附录 程序清单14 成绩评定表19摘要汇编语言是一种功能很强的程序设计语言, 也是利用计算机所有硬件特 性并能直接控制硬件的语言。利用汇编语言能够直接访问与硬件相关的存 储器或 I/O 端口,从而最大限度地发挥硬件的功能。本文主要介绍了利用汇 编语言设计一个运行于计算机的电子琴软件,软件能够实现弹奏,演奏的功能 ,当按下弹奏键时 ,实现弹奏功能 ,发出音符对应频率的声音 ,按下演奏键时 ,实现演奏 功能 ,播放预存的音乐 ,按下指定的音调选择按键后 ,选择低音 ,中音或高音 ,则分别 用低音 ,中音或高音进行弹奏或演奏。 首先介绍了 PC

4、机内扬声器的控制电路, 接 着介绍了相关接口芯片 8255和 8253的内部结构和工作原理, 接着讲述了各部分 功能的具体实现方法。关键词:汇编语言, 8255,8253,扬声器计算机电子琴软件设计1 设计任务和思路设计任务使用汇编语言设计一个运行于计算机的电子琴软件, 软件应实现弹奏功能或 演奏功能。其中弹奏:用户每按一琴键弹奏相应音符;演奏:按下某键后自动弹 奏预存琴谱功能; 还可以附加变调、 变速和记录创作等其它功能。 软件预想功能 为:按数字 1-8为弹奏功能;按字母 p为演奏功能;按d选择低音,按 z选择中意, 按 g 选择高音。设计思路电子琴的设计实际上就是要设计一个程序, 能够通

5、过该程序控制 PC 机内扬声 器的发声规律,按下相应的按键后,扬声器能发出指定频率的声音。 PC 机内的 扬声器是通过并行接口芯片 8255和定时芯片 8253来控制发音的, 其电路连接方 式如下图所示。图 1 PC 机内扬声器控制电路由图可知,扬声器是由 8253通道 2产生的方波信号和 8255的 PB1 相与后 驱动发声的,且通道 2的门信号由 8255 的 PB0提供,要想让扬声器发声, PB0 和 PB1必须同时为高电平 ,因此,可以通过对 8255的 PB0和 PB1 的设置来控制扬 声器的开通和关断 ,而其发音频率可以通过对 8253通道 2 的计数初值的设置来控 制。所设计程序

6、的任务就是要通过对按键的判断来设置 8255的 PB0 和 PB1输出 电平的高低 ,以及 8253通道 2计数初值的设置。计数初值 N=时钟频率 /音阶频率. 各音阶的频率如下表所示。表1 各音符频率表音符1234567频率(低)131147165175196220247频率(中)262294330349392440494频率(高)5245886606987848809882硬件部分工作原理8255 工作原理8255的内部结构图如图 2所示,它有 3个数据端口 ,分为两组, A 组由 A 口 和 C 口高四位组成, B 组由 B 口和 C 口低四位组成。其方式控制字如图 3 所示。图 2 8

7、255 内部结构图图 3 8255 方式控制字PC 机内 8255 的 A 口,B 口, C 口和控制口的端口地址分别为:60H,61H,62H,63H。8253 工作原理8253芯片中有 3个计数通道, 称为通道 0,1,2,它们与外部电路相连的信号线有 3根: CLK,GATE,OUT ,CLK 是脉冲输入端, GATE是门控信号, OUT是输 出信号,计数器工作在减 1状态。其内部结构图和方式控制字格式如图 4,图 5所 示。CLK0CLK1CLK2GATE 0O UT0GATE1O UT1GATE2O UT2其中当计数器工作在方式 3 时,输出信号为方波信号。图 5 8253 控制字格

8、式PC 机内 8253 的通道 0, 通道 1,通道 2,控制口的端口地址分别为: 40H,41H,42,43H。因为扬声器是由通道 2 来控制的,故应选择通道 2,工作方式 选为方式 3,输出的信号则为方波信号。3程序流程图主程序流程图主程序的流程图如下图所示显示输入提示信息开始从键盘读入字符YY为d选择低音为Y为z选择中音Y选择高音为gN显示输入提示从键盘读入字符Y图6 主程序流程图演奏子程序流程图当按键为 p 为时,调用音乐播放子程序,音乐播放子程序的流程图如下图 所示。显示输入提示显示输入提示从键盘读入字符图7 音乐播放子程序流程图音乐播放子程序流程图演奏时,通过判断按键为 1或 2来

9、调用音乐播放子程序 1或2,音乐播放子程序图 8 音乐播放子程序流程图弹奏子程序流程图当按键为 1-8 时,调用演奏子程序,演奏子程序的流程图如下图所示:查表得相应频率计算计数初值调用发音子程序图 9 演奏子程序流程图发音子程序流程图在弹奏和演奏时都需调用发音子程序, 发音子程序的作用是控制扬声器的发 音,其流程图如下:8253 初始化开扬声器延时关扬声器图 10 发音子程序流程图4 各部分功能实现说明发音部分功能实现由更件的连接形式可知,扬声器的开断是由 8255的PB0和 PB1以及 8253 通道 2同时控制的,PB0和 PB1同时为高电平时,扬声器开,有一个为低电平时, 扬声器关断,又

10、知 8255 B 口地址为 61H,8253通道 2 地址为 42H,控制口地址为 43H。具体程序编写如下。8253初始化程序段:mov al,b;选择 8253 的通道 2,并设置为工作方式 3out 43h,almov ax,bxout 42h,al;将计数初值的低 8 位写入计数通道mov al,ahout 42h,al;将计数初值的高 8 位写入计数通道开扬声器程序段:in al,61h;读入 B口数据or al,03h;将 PB0 和 PB1置 1out 61h,al;将设置好的数据送回 B 口关扬声器程序段:in al,61h;读入 B口数据and al,0fch;将PB0 和

11、PB1置 0out 61h,a;将设置好的数据送回 B 口变调功能的实现扬声器发音的频率是由 8253 产生方波的频率决定的,而方波频率又是由通 道的计数初值来决定的, 因此可以通过改变通道的计数初值来实现变调功能。 计 数初值 N=时钟频率 /音阶频率,时钟频率为 =1234DCH,可以将相应音调对应的 时钟频率存入内存单元, 当选择相应的音调时, 计算计数初值时, 采用对应的时 钟频率值,具体程序如下。cmp al,d;为 d 则选择低音jne j1mov num2,50jmp choicej1:cmp al,z;为 z 则选择中音jne j2mov num2,12hjmp choicej

12、2:cmp al,g;为 g则选择高音jne loop0mov num2,06h其中, num1和 num2 中存放的是时钟频率值, num1中固定为 34DCH,选择低音时, 序如下:num2 值设为 50,中音时设为 12H,高音时设为 06H。计算计数初值程mov ax,num1mov dx,num2div 音符频率通过这样的设置,即可实现电子琴的变调功能。弹奏功能的实现当按键为数字 1-8 时,选择弹奏功能,通过对按键的判断,求得其偏移地 址,然后通过查表得其相应频率值, 再由上述计算计数初值的方法求得计数初值, 然后将计数初值送人 8253 的通道 2,最后调用发音子程序即实现弹奏功

13、能。具 体程序段如下:sub al,31h;求偏移量shl al,1mov bl,al;保存偏移量mov bh,0mov ax,num1;计算计数初值mov dx,num2div word ptrtab+bxmov bx,ax;保存计数初值演奏功能的实现歌曲选择功能实现当按键为 p 时,选择演奏功能,播放预存的音乐,由于预存了两首歌曲,因 此需进行选择,按下 p后,显示输入提示信息,按 1或 2选择对应的歌曲,然后 调用相应的音乐播放子程序, 具体程序实现如下: loop2播放完后显示输入提示信息, 按 q 退出,按 c 继续。: mov dx,offset mesg1;显示输入提示信息mov

14、 ah,09hint 21hmov ah,07h;从键盘读入一个字符int 21hcmp al,q;为 q 则退出je choicecmp al,1;为 1 则选择歌曲 1jne next1call music1jmp loop3next1:cmp al,2;为 2 则选择歌曲 2jne loop2;不为 q,1,2 则重新选call music2;播放完后显示输入提示信息loop3:mov dx,offset mesg2 mov ah,09h int 21h mov ah,7 int 21h cmp al,q je choice cmp al,c je loop2 jmp loop3;从键盘

15、读入一个字符;为 q 则返回;为 c 则继续播放音乐播放功能实现选择歌曲后,调用对应的音乐播放子程序,音乐播放需用到循环结构,首 先将计数器清零,接着计数器自增 1,求得偏移量,然后通过查表的到相应的频 率,再计算计数初值,将计数初值送人 8253 计数通道,调用发音子程序,若计 数器的值大于歌曲长度,则返回。具体程序段如下。mov cl,0 ad:inc cl cmp cl,31 je return mov al,cl sub al,1 shl al,1 mov bl,al mov bh,0 mov ax,num1 mov dx,num2 div word ptrsong2+bx mov b

16、x,ax call speaker jmp ad;将计数器清零;计数器值自增 1;计数器值若大于歌曲长度,则返回;求偏移量;保存偏移量;计算计数初值;调用发音子程序5 程序运行结果运行程序后,显示如下界面 ,等待输入字符。图 11 程序运行结果图 1按提示输入字符,按 q则退出,按d选择低音,按 z选择中音,按 g选择高音, 选择音调后,显示如下界面:图 12 程序运行结果图 2等待输入字符,按 q 则退出,按 p 则演奏,按数字 1-8 则弹奏。按下 p 后, 程序运行如下:图 13 程序运行结果图 3按提示输入字符,按下 q则返回,按下 1或 2进行歌曲选择,歌曲播放完后 程序运行如下:图

17、 14 程序运行结果图 4按提示按下键盘,若按下 q,则推出,若按下 c,则继续播放歌曲。下面是 按下 c 后的运行结果:图 15 程序运行结果图 5结束语通过这次课程设计 ,我从中学到了许多从课本上学不到的东西 ,锻炼了自己编 程的能力 ,最后程序运行时能够实现目标,我感到很有成就感,从中也获得了很 多乐趣,当然,最重要的是加深了我对课本理论知识的理解。当刚看到这个课设题目时,我感到无从下手,因为我都不知道 PC 机的内部 具体结构,从理论课上只是了解了 CPU 的结构和工作原理,以及几个接口芯片 的工作原理, 还有汇编语言的一些基本指令。 但我没有被吓到, 我冷静下来思考 后,发现其本质就

18、是控制 PC机内扬声器的发音,通过查阅资料我了解了 PC 机 内扬声器的电路连接形式, 发现它是由接口芯片 8255和 8253共同控制的, 8255 的 PB0作为 8253通道 2的门信号,而 8255的 PB1和 8253通道 2的输出相与后 的信号作为扬声器的驱动信号, 了解了其内部接线方式后, 思路也就有了, 要想 让扬声器发声, 8255的 PB0和 PB1必须同时为高电平,其中之一为低电平时, 扬声器就不能发声,而发声的音调则可通过改变 8253 的计数初值来实现,接下 来的任务就是通过编程来控制 8255 和 8253,从而间接地控制扬声器的发声规律, 而 8255和 8253

19、这两个接口芯片在理论课上都已介绍过, 对其工作原理和编程方 法都有一定的了解,看到这些熟悉的内容时,我淡定了很多。有了思路之后,我并没有急着写程序,因为我怀疑是不是每台 PC 机的扬声 器接线方式都是这样的, 所以我开始只编了一段控制扬声器发音的程序, 来看看 程序运行时扬声器到底发不发音,结果发声了,这让我很惊喜,也很有动力,更 加激发了我的兴趣, 接下来我就开始编写实现指定功能的程序了, 首先是最简单 的弹奏功能,通过对按键的判断来发出相应频率的声音, 因为要判断按键, 所以 很自然地就想到了 CMP指令,在计算计数初值时, 因为要用到相应音符的频率, 所以需要将按键转换为音符的频率,我开

20、始想用课本上常见的 XLAT 换码指令, 但 AL 存放的数最大为 128,很明显容量不够, 于是我采用了基址 + 变址的寻址方 法,在编程的过程中, 由于要程序实现多个功能, 所以用子程序的结构会比较方 便,需要完成某个功能时, 只需调用相应子程序就可以了, 这样会使得程序的结 构清楚明了;在开扬声器和关扬声器之间需要一定的延时, 当把计数器置为 0ffffh 时,延时还是显得太短,于是延时我采用了 AX 和 CX 相配合的方式,使得延时 达到预期的目的;在完成基本功能后,我还试着加上一些附加功能,比如变调, 录音,通过我的不断尝试, 终于把变调功能实现了, 但录音功能没能像预期的那 样。总

21、之,这次课程设计让我学到了许多从课本上学不到的知识,加深了对理论 知识的理解,激发了我对汇编语言的兴趣。上理论课时,只是老师讲,我们听, 那些指令让我感到很枯燥, 因为不知道它到底有什么作用, 而这次课程设计刚好 把这些指令应用到了实际中来, 加深了对各种指令功能的理解, 最后功能实现时, 感到很有成就感,觉得汇编语言很神奇,激发了我对它的兴趣。参考文献1 彭虎,周佩玲 .微机原理与接口技术(第二版) .电子工业出版社 ,20102 陈慧杰. 计算机扬声器发声的控制 . 内蒙古民族大学出版社, 20013 Peter Abel著,沈美明等译. IBM PC汇编语言设计程序 . 人民邮电出版社,

22、 20024 冯继超 .微机原理实验指导书 .武汉理工大学出版社, 2010附录 程序清单data segmentmesg db press q to quit,press d or z or h to chose yin diao,0ah,0dh,$ mesg1 db press q to return,press 1 or 2 to chose music,0ah,0dh,$ mesg2 db press q to return,press c to continue,0ah,0dh,$ mesg3 db press q to return,press p to play music,pr

23、ess 18 to hand play,0ah,0dh,$ num1 dw 34dch num2 dw 12htab dw 262,294,330,347,392,440,494,524 song1 dw 262,294,330,262,262,294,330,262 dw 330,347,392,330,347,392,392,440 dw 392,347,330,262,392,440,392,347 dw 330,262,392,262,392,392,262,392 两; 只老虎 song2 dw 330,330,347,392,392,347,330,294 dw 262,262,2

24、94,330,330,294,294,330 dw 330,347,392,392,347,330,294,262 dw 262,294,330,294,262,262;欢乐颂data endscode segmentassume cs:code,ds:data start:mov ax,datamov ds,axloop0:mov dx,offset mesg ;显示输入提示信息 mov ah,09hint 21loop1:mov ah,07h int 21h;读入字符cmp al,q je done;为 q 则退出cmp al,djne j1mov num2,50 jmp choice;为

25、 d,选择低j1:cmp al,z ;为 z 选择中音 jne j2mov num2,12h jmp choicej2:cmp al,g ;为 g 选择高音 jne loop0mov num2,06hchoice:mov dx,offset mesg3mov ah,09hint 21hput1:mov ah,07hint 21hcmp al,q je loop0cmp al,p jne next call play jmp put1next: cmp al,1 jl loop1 cmp al,8 jg put1 call hand jmp put1;为 q 则返回;为 p 选择演奏;为 1-8

26、,选择弹奏hand proc near ;弹奏子程序 sub al,31h shl al,1 mov bl,al mov bh,0 mov ax,num1 mov dx,num2 div word ptrtab+bx mov bx,axcall speaker rethand endpplay proc near ;演奏子程序 loop2: mov dx,offset mesg1mov ah,09h;读入字符;为 q 则返回;为 1,播放歌曲 1;为 2,播放歌曲 2int 21hmov ah,07h int 21h cmp al,q je choice cmp al,1 jne next1

27、call music1 jmp loop3 next1:cmp al,2 jne loop2 call music2loop3:mov dx,offset mesg2mov ah,09hint 21hmov ah,7;读入字符int 21hcmp al,q;为 q 则退出je choicecmp al,c;为 c 则继续je loop2jmp loop3retplay endpmusic1 proc near mov cl,0 ad:inc cl cmp cl,33 je returnmov al,cl sub al,1 shl al,1 mov bl,al mov bh,0 mov ax,num1 mov dx,num2 div word ptrsong1

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论