微机原理课程设计电子琴的设计.docx

上传人:b****7 文档编号:16660752 上传时间:2023-07-16 格式:DOCX 页数:6 大小:20.22KB
下载 相关 举报
微机原理课程设计电子琴的设计.docx_第1页
第1页 / 共6页
微机原理课程设计电子琴的设计.docx_第2页
第2页 / 共6页
微机原理课程设计电子琴的设计.docx_第3页
第3页 / 共6页
微机原理课程设计电子琴的设计.docx_第4页
第4页 / 共6页
微机原理课程设计电子琴的设计.docx_第5页
第5页 / 共6页
微机原理课程设计电子琴的设计.docx_第6页
第6页 / 共6页
亲,该文档总共6页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

微机原理课程设计电子琴的设计.docx

《微机原理课程设计电子琴的设计.docx》由会员分享,可在线阅读,更多相关《微机原理课程设计电子琴的设计.docx(6页珍藏版)》请在冰点文库上搜索。

微机原理课程设计电子琴的设计.docx

微机原理课程设计电子琴的设计

微机原理课程设计—电子琴的设计

        课程设计任务书    学生姓名:

  刘沛  专业班级:

  电气0901  指导教师:

张锐  工作单位:

  自动化学院  题目:

  计算机电子琴软件软件设计初始条件:

  1.用于调试程序的IBM兼容PC机一台;  2.安装DOS/WIN98操作系统或运行于DOS/WIN98兼容方式;  3.EDIT等文本编辑器输入80x86汇编程序,MASM编译及链接程序。

要求完成的主要任务:

  1.使用汇编语言设计一个运行于计算机的电子琴软件,软件应实现弹奏功或演奏。

其中弹奏:

用户每按一琴键弹奏相应音符;演奏:

按下某键后自动弹奏预存琴谱功能;还可以附加变调、变速和记录创作等其它功能。

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  音乐播放功能实现········································95程序运行结果·····················································10结束语·····························································12

      武汉理工大学《微机原理与接口技术》课程设计说明书  线有3根:

CLK,GATE,OUT,CLK是脉冲输入端,GATE是门控信号,OUT是输出信号,计数器工作在减1状态。

其内部结构图和方式控制字格式如图4,图5所示。

  其中当计数器工作在方式3时,输出信号为方波信号。

CLK0D0-D数据总线缓内7冲器计数器0部GATE总0OUT0线CLK1RDR/W逻辑电WR路计数器1GATEA01A1OUT1CS  CLK2控制寄存器计数器2GATE2OUT2图48253内部结构图    D7D6D5D4D3D2D1D0计数器选择计数方式00计数器00二进制00计数器锁存工作方式选择01计数器11BCD计01读写低8位000方式010计数器2数10读写高8位001方式111不用11读写16位×10方式2×11方式3100方式4101方式5  图58253控制字格式    PC机内8253的通道0,通道1,通道2,控制口的端口地址分别为:

40H,41H,42,43H。

因为扬声器是通道2来控制的,故应选择通道2,工作方式选为方式3,输出的信号则为方波信号。

    3    武汉理工大学《微机原理与接口技术》课程设计说明书  3程序流程图  主程序流程图  主程序的流程图如下图所示:

开始显示输入提示信息  从键盘读入字符N为q?

YY为d?

结束NY选择低音为z?

NY选择中音为g?

N选择高音显示输入提示从键盘读入字符Y为q?

YN调用演奏子程序为p?

NY调用弹奏子程序为1~8?

N  图6主程序流程图    4    武汉理工大学《微机原理与接口技术》课程设计说明书  演奏子程序流程图  当按键为p为时,调用音乐播放子程序,音乐播放子程序的流程图如下图所示。

  NY显示输入提示从键盘读入字符为q?

NY返回为1?

NY调用音乐1播放子程序为2?

调用音乐2播放子程序显示输入提示从键盘读入字符Y为q?

N返回为c?

NY图7音乐播放子程序流程图    5    武汉理工大学《微机原理与接口技术》课程设计说明书  音乐播放子程序流程图  演奏时,通过判断按键为1或2来调用音乐播放子程序1或2,音乐播放子程序流程图如图8所示。

    计数器清零CL自增1CL>歌曲NY返回查表得相应频率计算计数初值调用发音子程图8音乐播放子程序流程图  弹奏子程序流程图  当按键为1-8时,调用演奏子程序,演奏子程序的流程图如下图所示:

      图9演奏子程序流程图  6    查表得相应频率计算计数初值调用发音子程序返回武汉理工大学《微机原理与接口技术》课程设计说明书  发音子程序流程图  在弹奏和演奏时都需调用发音子程序,发音子程序的作用是控制扬声器的  发音,其流程图如下:

      8253初始化开扬声器延时关扬声器返回图10发音子程序流程图  4各部分功能实现说明  发音部分功能实现  更件的连接形式可知,扬声器的开断是8255的PB0和PB1以及8253通道2同时控制的,PB0和PB1同时为高电平时,扬声器开,有一个为低电平时,扬声器关断,又知8255B口地址为61H,8253通道2地址为42H,控制口地址为43H。

具体程序编写如下。

  8253初始化程序段:

  moval,10110110b  ;选择8253的通道2,并设置为工作方式3out43h,al  movax,bx  out42h,al  ;将计数初值的低8位写入计数通道moval,ah  out42h,al  ;将计数初值的高8位写入计数通道  开扬声器程序段:

  inal,61h  ;读入B口数据  oral,03h  ;将PB0和PB1置1  out61h,al  ;将设置好的数据送回B口  关扬声器程序段:

  inal,61h  ;读入B口数据  andal,0fch  ;将PB0和PB1置0  out61h,a  ;将设置好的数据送回B口  7  

  

      武汉理工大学《微机原理与接口技术》课程设计说明书  变调功能的实现  扬声器发音的频率是8253产生方波的频率决定的,而方波频率又是通道的计数初值来决定的,因此可以通过改变通道的计数初值来实现变调功能。

计数初值N=时钟频率/音阶频率,时钟频率为=1234DCH,可以将相应音调对应的时钟频率存入内存单元,当选择相应的音调时,计算计数初值时,采用对应的时钟频率值,具体程序如下。

    cmpal,’d’  ;为d则选择低音  jnej1    movnum2,50  jmpchoice  j1:

cmpal,’z’  ;为z则选择中音    jnej2    movnum2,12h  jmpchoice    j2:

cmpal,’g’  ;为g则选择高音  jneloop0    movnum2,06h  其中,num1和num2中存放的是时钟频率值,num1中固定为34DCH,选择低音时,num2值设为50,中音时设为12H,高音时设为06H。

计算计数初值程序如下:

  movax,num1    movdx,num2    div音符频率  通过这样的设置,即可实现电子琴的变调功能。

    弹奏功能的实现  当按键为数字1-8时,选择弹奏功能,通过对按键的判断,求得其偏移地址,然后通过查表得其相应频率值,再上述计算计数初值的方法求得计数初值,然后将计数初值送人8253的通道2,最后调用发音子程序即实现弹奏功能。

具体程序段如下:

  subal,31h  ;求偏移量  shlal,1  movbl,al  ;保存偏移量  movbh,0  movax,num1  ;计算计数初值  movdx,num2  divwordptr[tab+bx]  movbx,ax  ;保存计数初值    8    武汉理工大学《微机原理与接口技术》课程设计说明书  演奏功能的实现  歌曲选择功能实现  当按键为p时,选择演奏功能,播放预存的音乐,于预存了两首歌曲,因  此需进行选择,按下p后,显示输入提示信息,按1或2选择对应的歌曲,然后调用相应的音乐播放子程序,播放完后显示输入提示信息,按q退出,按c继续。

具体程序实现如下:

  loop2:

movdx,offsetmesg1  ;显示输入提示信息  movah,09hint21h  movah,07h  ;从键盘读入一个字符int21h  cmpal,’q’  ;为q则退出jechoice  cmpal,’1’  ;为1则选择歌曲1jnenext1callmusic1jmploop3  next1:

cmpal,’2’  ;为2则选择歌曲2  jneloop2  ;不为q,1,2则重新选择callmusic2  loop3:

movdx,offsetmesg2  ;播放完后显示输入提示信息  movah,09hint21h  movah,7  ;从键盘读入一个字符int21h  cmpal,’q’  ;为q则返回jechoice  cmpal,’c’  ;为c则继续播放jeloop2jmploop3    音乐播放功能实现  选择歌曲后,调用对应的音乐播放子程序,音乐播放需用到循环结构,  首先将计数器清零,接着计数器自增1,求得偏移量,然后通过查表的到相应的频率,再计算计数初值,将计数初值送人8253计数通道,调用发音子程序,若计数器的值大于歌曲长度,则返回。

具体程序段如下。

  9    武汉理工大学《微机原理与接口技术》课程设计说明书  movcl,0    ;将计数器清零  ad:

inccl    ;计数器值自增1  cmpcl,31    ;计数器值若大于歌曲长度,则返回jereturn  moval,cl      subal,1    ;求偏移量shlal,1  movbl,al    ;保存偏移量movbh,0  movax,num1  ;计算计数初值movdx,num2  divwordptr[song2+bx]movbx,ax  callspeaker  ;调用发音子程序jmpad  5程序运行结果  运行程序后,显示如下界面,等待输入字符。

    图11程序运行结果图1  按提示输入字符,按q则退出,按d选择低音,按z选择中音,按g选择高音,选择音调后,显示如下界面:

    图12程序运行结果图2    等待输入字符,按q则退出,按p则演奏,按数字1-8则弹奏。

按下p后,程序运行如下:

  10    武汉理工大学《微机原理与接口技术》课程设计说明书  图13程序运行结果图3    按提示输入字符,按下q则返回,按下1或2进行歌曲选择,歌曲播放完后程序运行如下:

    图14程序运行结果图4    按提示按下键盘,若按下q,则推出,若按下c,则继续播放歌曲。

下面是按下c后的运行结果:

      图15程序运行结果图5    11    武汉理工大学《微机原理与接口技术》课程设计说明书  结束语  通过这次课程设计,我从中学到了许多从课本上学不到的东西,锻炼了自己编程的能力,最后程序运行时能够实现目标,我感到很有成就感,从中也获得了很多乐趣,当然,最重要的是加深了我对课本理论知识的理解。

当刚看到这个课设题目时,我感到无从下手,因为我都不知道PC机的内部具体结构,从理论课上只是了解了CPU的结构和工作原理,以及几个接口芯片的工作原理,还有汇编语言的一些基本指令。

但我没有被吓到,我冷静下来思考后,发现其本质就是控制PC机内扬声器的发音,通过查阅资料我了解了PC机内扬声器的电路连接形式,发现它是接口芯片8255和8253共同控制的,8255的PB0作为8253通道2的门信号,而8255的PB1和8253通道2的输出相与后的信号作为扬声器的驱动信号,了解了其内部接线方式后,思路也就有了,要想让扬声器发声,8255的PB0和PB1必须同时为高电平,其中之一为低电平时,扬声器就不能发声,而发声的音调则可通过改变8253的计数初值来实现,接下来的任务就是通过编程来控制8255和8253,从而间接地控制扬声器的发声规律,而8255和8253这两个接口芯片在理论课上都已介绍过,对其工作原理和编程方法都有一定的了解,看到这些熟悉的内容时,我淡定了很多。

有了思路之后,我并没有急着写程序,因为我怀疑是不是每台PC机的扬声器接线方式都是这样的,所以我开始只编了一段控制扬声器发音的程序,来看看程序运行时扬声器到底发不发音,结果发声了,这让我很惊喜,也很有动力,更加激发了我的兴趣,接下来我就开始编写实现指定功能的程序了,首先是最简单的弹奏功能,通过对按键的判断来发出相应频率的声音,因为要判断按键,所以很自然地就想到了CMP指令,在计算计数初值时,因为要用到相应音符的频率,所以需要将按键转换为音符的频率,我开始想用课本上常见的XLAT换码指令,但AL存放的数最大为128,很明显容量不够,于是我采用了基址+变址的寻址方法,在编程的过程中,于要程序实现多个功能,所以用子程序的结构会比较方便,需要完成某个功能时,只需调用相应子程序就可以了,这样会使得程序的结构清楚明了;在开扬声器和关扬声器之间需要一定的延时,当把计数器置为0ffffh时,延时还是显得太短,于是延时我采用了AX和CX相配合的方式,使得延时达到预期的目的;在完成基本功能后,我还试着加上一些附加功能,比如变调,录音,通过我的不断尝试,终于把变调功能实现了,但录音功能没能像预期的那样。

总之,这次课程设计让我学到了许多从课本上学不到的知识,加深了对理论知识的理解,激发了我对汇编语言的兴趣。

上理论课时,只是老师讲,我们听,那些指令让我感到很枯燥,因为不知道它到底有什么作用,而这次课程设计刚好把这些指令应用到了实际中来,加深了对各种指令功能的理解,最后功能实现时,感到很有成就感,觉得汇编语言很神奇,激发了我对它的兴趣。

    12  

  

      武汉理工大学《微机原理与接口技术》课程设计说明书  

      武汉理工大学《微机原理与接口技术》课程设计说明书  movax,12loop4:

movcx,0ffffhloop5:

looploop5  decax  jnzloop4  popcx  popax  retdelayendp  done:

movax,4c00h  int21hcodeendsendstart    本科生课程设计成绩评定表  18    武汉理工大学《微机原理与接口技术》课程设计说明书  姓  名专业、班级刘沛性  别男电气0901班课程设计题目:

  计算机电子琴软件设计课程设计答辩或质疑记录:

  成绩评定依据:

评定项目1.选题合理、目的明确(10分)2.设计方案正确、具有可行性、创新性3.设计结果4态度认真、学习刻苦、遵守纪律(10分)5.设计报告的规范化、

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2