课程设计任务书学生姓名:刘沛专业班级:电气0901指导教师:张锐工作单位:自动化学院题目:计算机电子琴软件软件设计初始条件:1.用于调试程序的IBM兼容PC机一台;2.安装DOS/WIN98操作系统或运行于DOS/WIN98兼容方式;3.EDIT等文本编辑器输入80x86汇编程序,MASM5.0编译及链接程序。要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)1.使用汇编语言设计一个运行于计算机的电子琴软件,软件应实现弹奏功或演奏。其中弹奏:用户每按一琴键弹奏相应音符;演奏:按下某键后自动弹奏预存琴谱功能;还可以附加变调、变速和记录创作等其它功能。2.说明书撰写格式应符合《课程设计说明书统一书写格式》。时间安排:1.程序框图设计,3天2.编程,4天3.调试,3天4.编写设计报告,4天指导教师签名:年月日系主任(或责任教师)签名:年月日目录摘要································································I1设计任务和思路····················································11.1设计任务······················································11.2设计思路······················································12更件部分工作原理··················································22.18255工作原理·················································22.28253工作原理·················································23程序流程图························································43.1主程序流程图··················································43.2演奏子程序流程················································53.3音乐播放子程序流程············································63.4弹奏子程序流程图··············································63.5发音子程序流程图·············································74各部分功能实现说明················································74.1发音部分功能实现··············································74.2变调功能的实现················································84.3弹奏功能的实现················································84.4演奏功能的实现················································94.4.1歌曲选择功能实现········································94.4.2音乐播放功能实现········································95程序运行结果·····················································10结束语·····························································12参考文献···························································13附录程序清单······················································14成绩评定表·························································19武汉理工大学《微机原理与接口技术》课程设计说明书Ⅰ摘要汇编语言是一种功能很强的程序设计语言,也是利用计算机所有硬件特性并能直接控制硬件的语言。利用汇编语言能够直接访问与硬件相关的存储器或I/O端口,从而最大限度地发挥硬件的功能。本文主要介绍了利用汇编语言设计一个运行于计算机的电子琴软件,软件能够实现弹奏,演奏的功能,当按下弹奏键时,实现弹奏功能,发出音符对应频率的声音,按下演奏键时,实现演奏功能,播放预存的音乐,按下指定的音调选择按键后,选择低音,中音或高音,则分别用低音,中音或高音进行弹奏或演奏。首先介绍了PC机内扬声器的控制电路,接着介绍了相关接口芯片8255和8253的内部结构和工作原理,接着讲述了各部分功能的具体实现方法。关键词:汇编语言,8255,8253,扬声器武汉理工大学《微机原理与接口技术》课程设计说明书1计算机电子琴软件设计1设计任务和思路1.1设计任务使用汇编语言设计一个运行于计算机的电子琴软件,软件应实现弹奏功能或演奏功能。其中弹奏:用户每按一琴键弹奏相应音符;演奏:按下某键后自动弹奏预存琴谱功能;还可以附加变调、变速和记录创作等其它功能。软件预想功能为:按数字1-8为弹奏功能;按字母p为演奏功能;按d选择低音,按z选择中意,按g选择高音。1.2设计思路电子琴的设计实际上就是要设计一个程序,能够通过该程序控制PC机内扬声器的发声规律,按下相应的按键后,扬声器能发出指定频率的声音。PC机内的扬声器是通过并行接口芯片8255和定时芯片8253来控制发音的,其电路连接方式如下图所示。图1PC机内扬声器控制电路由图可知,扬声器是由8253通道2产生的方波信号和8255的PB1相与后驱动发声的,且通道2的门信号由8255的PB0提供,要想让扬声器发声,PB0和PB1必须同时为高电平,因此,可以通过对8255的PB0和PB1的设置来控制扬声器的开通和关断,而其发音频率可以通过对8253通道2的计数初值的设置来控制。所设计程序的任务就是要通过对按键的判断来设置8255的PB0和PB1输出电平的高低,以及8253通道2计数初值的设置。计数初值N=时钟频率/音阶频率.各音阶的频率如下表所示。表1各音符频率表音符1234567频率(低)131147165175196220247频率(中)262294330349392440494频率(高)5245886606987848809888255APB1PB0CLK28253GATE2OUT2&扬声器1.19318MHZ武汉理工大学《微机原理与接口技术》课程设计说明书22硬件部分工作原理2.18255工作原理8255的内部结构图如图2所示,它有3个数据端口,分为两组,A组由A口和C口高四位组成,B组由B口和C口低四位组成。其方式控制字如图3所示。图28255内部结构图PC机内8255的A口,B口,C口和控制口的端口地址分别为:60H,61H,62H,63H。2.28253工作原理8253芯片中有3个计数通道,称为通道0,1,2,它们与外部电路相连的信号图38255方式控制字方式控制字的特征位D0D7D6D5D4D3D2D11A组工作方式00——方式001——方式11——方式2B组工作方式0——方式01——方式1A口输入/输出1——输入0——输出PC7PC4输入/输出1——输入0——输出B口输入/输出1——输入0——输出PC3PC0输入/输出1——输入0——输出武汉理工大学《微机原理与接口技术》课程设计说明书3线有3根:CLK,GATE,OUT,CLK是脉冲输入端,GATE是门控信号,OUT是输出信号,计数器工作在减1状态。其内部结构图和方式控制字格式如图4,图5所示。其中当计数器工作在方式3时,输出信号为方波信号。图48253内部结构图图58253控制字格式PC机内8253的通道0,通道1,通道2,控制口的端口地址分别为:40H,41H,42,43H。因为扬声器是由通道2来控制的,故应选择通道2,工作方式选为方式3,输出的信号则为方波信号。D7D6D5D4D3D2D1D0计数器选择00计数器001计数器110计数器211不用00计数器锁存01读写低8位10读写高8位11读写16位工作方式选择000方式0001方式1×10方式2×11方式3100方式4101方式5计数方式0二进制1BCD计数内部总线RDA1GATE0CLK0OUT0GATE1CLK1OUT1GATE2CLK2OUT2D0-D7计数器0计数器2计数器1控制寄存器A0数据总线缓冲器R/W逻辑电路WRCS武汉理工大学《微机原理与接口技术》课程设计说明书43程序流程图3.1主程序流程图主程序的流程图如下图所示:图6主程序流程图为d?为z?为g?开始显示输入提示信息从键盘读入字符为q?结束选择低音选择中音选择高音显示输入提示从键盘读入字符为q?为p?为1~8?调用演奏子程序调用弹奏子程序YNYNYNYNNYYNYN武汉理工大学《微机原理与接口技术》课程设计说明书53.2演奏子程序流程图当按键为p为时,调用音乐播放子程序,音乐播放子程序的流程图如下图所示。图7音乐播放子程序流程图显示输入提示从键盘读入字符为q?为1?为2?返回调用音乐1播放子程序调用音乐2播放子程序显示输入提示从键盘读入字符为q?为c?返回NYNNYYYNNY武汉理工大学《微机原理与接口技术》课程设计说明书63.3音乐播放子程序流程图演奏时,通过判断按键为1或2来调用音乐播放子程序1或2,音乐播放子程序流程图如图8所示。图8音乐播放子程序流程图3.4弹奏子程序流程图当按键为1-8时,调用演奏子程序,演奏子程序的流程图如下图所示:图9演奏子程序流程图计数器清零CL自增1CL歌曲长度?返回查表得相应频率计算计数初值调用发音子程序NY查表得相应频率计算计数初值返回调用发音子程序武汉理工大学《微机原理与接口技术》课程设计说明书73.5发音子程序流程图在弹奏和演奏时都需调用发音子程序,发音子程序的作用是控制扬声器的发音,其流程图如下:图10发音子程序流程图4各部分功能实现说明4.1发音部分功能实现由更件的连接形式可知,扬声器的开断是由8255的PB0和PB1以及8253通道2同时控制的,PB0和PB1同时为高电平时,扬声器开,有一个为低电平时,扬声器关断,又知8255B口地址为61H,8253通道2地址为42H,控制口地址为43H。具体程序编写如下。8253初始化程序段:moval,10110110b;选择8253的通道2,并设置为工作方式3out43h,almovax,bxout42h,al;将计数初值的低8位写入计数通道moval,ahout42h,al;将计数初值的高8位写入计数通道开扬声器程序段:inal,61h;读入B口数据oral,03h;将PB0和PB1置1out61h,al;将设置好的数据送回B口关扬声器程序段:inal,61h;读入B口数据andal,0fch;将PB0和PB1置0out61h,a;将设置好的数据送回B口8253初始化开扬声器延时关扬声器返回武汉理工大学《微机原理与接口技术》课程设计说明书84.2变调功能的实现扬声器发音的频率是由8253产生方波的频率决定的,而方波频率又是由通道的计数初值来决定的,因此可以通过改变通道的计数初值来实现变调功能。计数初值N=时钟频率/音阶频率,时钟频率为1.19318MHZ=1234DCH,可以将相应音调对应的时钟频率存入内存单元,当选择相应的音调时,计算计数初