电子琴设计(微机原理课程设计)
电子琴的微机原理设计方案

电子琴的微机原理设计方案第一章方案论证1.1 设计规模和总体框架1.1.1系统的基本功能弹奏:用键盘输入对应的七个音阶,用户每按一个键盘琴键就弹奏相应的音符,通过实验箱的喇叭发出声音,并通过七段数码管显示输入音阶;扩展功能:演奏:电子琴设有8个按键,其中7个作为音符输入,另外一个作为模式转换按键,实现用户存放的自动播放歌曲。
按下键盘上某一个指定的建后自动弹奏预存琴谱功能;要求按键按下时发声,松开延时一小段时间,中间再按别的键则发另外一音调的声音,当系统扫描到键盘按下,则快速检测出是哪一个按键被按下,然后单片机的定时器启动,发出一定频率的脉冲,该频率的脉冲经喇叭驱动电路放大滤波后,就会发出相应的音调。
如果在前一个按下的键发声的同时有另一个按键被按下,则启动中断系统。
前面的发音停止,转到后按的键的发音程序。
发出后按的键的音调。
1.1.2系统的主要功能模块控制模块:选择AT89S52单片机来控制整个系统,其中P2口作为输入口,P1口为信号输出口,P1.0连接音响驱动电路。
用户编程模块:由键盘矩阵、LED显示管、扬声器这几个部分组成存储器模块:8088有1MB存储空间,系统提供用户使用的空间为00000H-0FFFFH,用于存放、调试实验程序。
键盘输入模块:用来操作者对机器的控制操作,在P2口连接有8个按键开关加8个拉电阻,它们一端接5伏电源,一端接地。
只要有一个按键被按下,并被单片机扫描到,则会播放发出音符。
(LED显示管显示当前按键,扬声器发出对应音符。
)输出驱动模块:利用AT89S52单片机的P0端口的P0.0-P0.7连接到一个七段数码管的a-h的笔段上,数码管的公共端接电源;声音的播放模块,它接到P1.0口上,当有按键按下时,它通过AT89S52中心控制芯片的识别后发出相应的音符。
1.1.3系统的组成框图根据系统的功能要求,我们可以得到系统的组成框图:图1系统框图1.2操作流程 1.2.1如何使用系统安装及配置说明 系统运行环境WINDOWS XP PROTEUS 7.1 SP2 Keil uv3 2.12系统安装及配置安装Protues 和keil uVsision3。
微机课程设计电子琴PC电子琴

微机课程设计电子琴PC电子琴一.设计的目的与意义 (2)二.设计的内容与要求 (2)三.系统的硬件设计 (3)3.1所用芯片的功能介绍 (3)3.2系统原理与硬件电路 (5)四.系统的软件设计 (6)4.1软件操纵流程 (6)4.2程序清单 (7)五.系统调试与运行 (16)六.设计收成 (16)七.要紧参考文献 (17)一.设计的目的与意义本课程设计要紧是通过汇编语言用软件编程的方法实现简单的PC仿真电子琴。
通过在«微机原理与接口技术»课程上所学的汇编知识和相关芯片知识,来完成本课程设计。
学习和把握运算机中常用接口电路的应用和设计技术,充分认识理论知识对应用技术的指导性作用,进一步加强理论知识与应用相结合的实践和锤炼。
通过这次设计实践能够进一步加深对专业知识和理论知识学习的认识和明白得,使自己的设计水平和对所学的知识的应用能力以及分析问题解决问题的能力得到全面提高。
二. 设计内容与要求设计一个利用DAC0832的输出数字声音的接口电路〔可参考实验台原理图〕,DAC0832的输出接至有源音箱,编程实现如下功能:1、按键发声:〔1〕当从键盘上敲击Q ~ U键时,音箱发出1 ~ 7的高音阶;〔2〕当从键盘上敲击A ~ J键时,音箱发出1 ~ 7的中音阶;〔3〕当从键盘上敲击Z ~ M键时,音箱发出1 ~ 7的低音阶;〔4〕按ESC键,程序终止。
2、屏幕上方显示课程设计题目、使用方法、作者姓名、单位及版权等信息3、屏幕下方显示钢琴键盘形状,当按动不同音阶的键时,相应的乐键要出现被按下的形状。
三. 系统的硬件设计3.1所用芯片的功能介绍1.DAC0832芯片介绍DAC0832是由8位输入锁存器、8位DAC寄存器、8位D/A转换电路组成,采纳二次缓冲方式,如此能够在输出的同时,输入下一个数据,以提高转换速度。
更重要的是能够在多个转换器同时工作时,有可能同时输出模拟量。
其内部逻辑结构如下图。
微机简易电子琴课程设计

微机简易电子琴课程设计一、课程目标知识目标:1. 学生能理解电子琴的基本原理,掌握其结构与功能;2. 学生能掌握微机与电子琴连接的简易方法;3. 学生能了解并运用基本的音乐理论知识,如音符、音阶、和弦等。
技能目标:1. 学生能通过编程软件控制电子琴演奏简单曲目;2. 学生能运用所学的电子琴知识,创作出自己的音乐作品;3. 学生能提高动手实践能力,通过组装、调试电子琴,培养解决问题的能力。
情感态度价值观目标:1. 学生培养对音乐和电子制作的兴趣,提高创新意识和动手能力;2. 学生通过团队协作,培养沟通、分享、合作的良好品质;3. 学生在学习过程中,体会科技与艺术的结合,提升对美的鉴赏能力。
课程性质:本课程为实践性较强的综合课程,结合信息技术和音乐艺术,让学生在动手实践中学习电子琴知识。
学生特点:六年级学生具有一定的信息技术基础,好奇心强,喜欢动手操作,同时具备一定的音乐素养。
教学要求:教师应关注学生的个体差异,以学生为主体,引导他们主动探究、合作学习,注重培养学生的动手能力、创新意识和审美情趣。
通过课程目标的实现,使学生达到预期的学习成果,为后续学习打下坚实基础。
二、教学内容1. 电子琴基础知识:介绍电子琴的原理、结构与功能,包括键盘、音源、音色、音量控制等组成部分。
- 教材章节:第二章“电子琴的原理与结构”- 内容列举:电子琴的原理、键盘布局、音色种类、音量控制方法等。
2. 微机与电子琴连接:讲解如何使用编程软件(如Scratch)与电子琴进行连接,实现简易控制。
- 教材章节:第三章“微机与电子琴的连接方法”- 内容列举:编程软件的安装与使用、电子琴与计算机的连接方式、基本指令编写。
3. 音乐理论知识:学习基本的音乐理论知识,如音符、音阶、和弦等,为创作和演奏打下基础。
- 教材章节:第四章“音乐理论基础”- 内容列举:音符、音名、音阶、和弦的识别与运用。
4. 电子琴演奏与创作:通过实践,学会演奏简单曲目,并尝试创作自己的音乐作品。
微机原理课程设计 电子琴

微机原理课程设计报告院系:襄樊学院物理与电子工程学院班级:电子信息科学与技术0611班指导老师: 张静姓名:杜勇 06111028邓丰 06111025雷雄06111026目录一、课题名称及设计组成员 (3)二、课题内容及要求 (3)三、方案、系统组成框图和工作原理说明 (3)1、方案 (4)2、系统组成框图 (4)3、工作原理 (5)四、程序功能描述及程序流程 (5)2、程序功能描述 (5)3、程序流程图 (5)五、程序源代码及注释 (6)六、DOS/BIOS功能调用,文件列表清单 (16)七、电路的连接及调试 (17)1、电路连接 (17)2、调试步骤 (17)八、调试中出现的问题、原因及排除方法 (18)九、收获和体会 (20)十、参考文献 (20)一、课题名称及设计组成员二、课题内容及要求1、计算机钢琴基本功能:I、利用键盘按键“q、w、e、r、t、y、u”实现音调的重低音输入,利用键盘按键“a、s、d、f、g、h、j”实现音调的低音输入,利用键盘按键“z、x、c、v、b、n、m”实现音调的中音输入,利用键盘按键“1、2、3、4、5、6、7”实现音调的重低音输入。
II、实现菜单选择以及处理各种功能键的多种中级功能。
2、音乐播放系统控制实现功能:①制作一个菜单,使用菜单条选择功能,让用户选择演奏的乐曲。
②用定时器方式演奏画皮之主题曲《画心》实现音乐演奏。
③提示使用ESC键或者ENTER键可以退出当前过程或返回DOS。
④实现控制变量可以控制不同的效果以及要求,如播放速度,间隔等。
⑤界面美观,程序结构化程度高,模块结构合理。
⑥设计出相应的音乐取码软件。
3、实验环境16位的汇编语言程序设计有几种工作环境,本实验以及所有程序都是通过MASM5.0编译的,MASM5.0一个汇编语言的编译、连接、调试及运行的集成环境。
支持标号的快速定位,编译速度快。
三、方案、系统组成框图和工作原理说明1、方案基于PC计算机的时钟晶振为1.1931816MHz,利用电脑里面的蜂鸣器发出声音。
微机原理课设 电子琴8253 8255

一、内容摘要设计一个电子琴。
利用数字键1、2、3、4、5、6、7作为电子琴键,按下数字键发出相应的音调。
二、课程设计的目的和意义1、进一步掌握定时器编程和应用。
2、了解微机利用定时器产生音乐的基本方法。
三、课程设计的要点和内容1、根据音阶频率表,利用定时器可以产生相应频率的脉冲信号,不同频率的脉冲信号经驱动电路放大后,就会发生不同的音调。
2、对于每个按键的音调发音时间由软件延时控制,如键一直按下,就会连续发音各音阶标称频率值:本次课设要求设计一个电子琴,作为一个乐器,其最基本的功能就是能够发出一个音阶的所有声音,即:do,re,mi,fa,so,la,xi,dou,8个音符,不同的声音的本质就是不同频率的波,每个音符都对应着固定的频率;而声音的长短即是波的个数。
所以得出的一条思路是:用汇编语言来产生一系列频率不同的方波信号,找到各个音符的频率,然后用汇编语言产生同频信号,并将该信号输入到扬声器,如果驱动功率不够则可以加放大电路。
四、硬件电路设计1、单元电路设计:硬件结构应结合软件方案一并考虑,做到软件、硬件功能相匹配。
在DJ-598K 三合一单片机微机试验仪平台上,硬件设计参考方案如下:2、电路工作原理:2.1可编程8253计数器(1)在计算机的引用中,常常要对外设的某些信号进行计数,希望计算机既能控制技术的过程,还有能读取计数的结果,进而作为控制或管理的决策依据。
如果被计数的信号有了准确的固定的周期,就形成了定时器。
(2)图为8253的内部组成和引脚。
如图所示,与外部的连接线主要分布在右侧的三个部分,即:三个计数器。
其中CLK为计数通道的输入脉冲信号,对于8253来说的频率范围是0—2MHz。
GATE为门控信号,用来启动或禁止计数工作,高电平有效,不同的工作方式,作用也不同。
Out为输出信号,用来输出波形,不同的工作方式,不同的工作方式,输出的波形也不同;而与CPU的的内部接线主要分布在左侧的三个部分。
微机原理及应用电子琴课程设计

微机原理及应用电子琴课程设计第一篇:微机原理及应用电子琴课程设计科技学院微机原理及应用课程设计设计名称:设计模拟电子琴模拟指导老师:指导老师:-----设计者姓名:-----专业班级:自动化学号:----------设计时间:2012.6摘要:本文通过 8255 和 8253 来实现电子琴模拟,主要可以分成两部分,分别为输入部分和发音部分。
输入部分:主要是由8255 和 8 个常开型开关来完成。
发音部分:CUP 通过对定时器 8253 的通道 2 进行编程,使其 I/O 寄存器接收一个控制声音频率的 16 位计数值,端口 61H 的最低位控制通道 2 门控的开断,以产生特殊的音响。
本文用到的是8253 的方式3——方波发生器。
关键词:关键词:8253 定时器;8255;电子琴1.引言引言:8253 芯片是常用的可编程计数器,在微机中有着极其重要的作用。
常用于事件计数器,单稳态触发器,分频器,方波发生器,硬件触发的单脉冲发生器等。
计数器/定时器8253 包括3 个独立的16 位计数器通道,而每个计数器都有 6 种工作方式,可以按二进制或十进制(BCD 码)进行计数。
本文用到的是 8253 的方式 3——方波发生器来实现了简易电子琴的设计。
2.1 8253 简介8253 为可编程定时/计数器,一片 8253 上有 3 个独立的 16 位计数器通道,可以作为定时器或计数器使用,每个计数器都可设定为按照二进制或BCD 码进行计数,计数速率可达2MHZ,每个计数器有6 种工作方式,可编程设置和改变。
如下图为 8253 的内部结构图。
在图中可以清楚地看到,8253 主要是由数据总线缓冲存储器,读写控制电路,控制字寄存器和 3 个通道 4 部分所组成。
8253 内部结构【1】(如图1 所示)及外部引脚【1】(如图2所示)图 1:8253 内部结构图图 2:8253 引脚图8253 的控制字和编程【1】如图 3 所示图 3:8253 控制字 2.8253 的工作方式 3——方波发生器【1】方式 3 的波形如图 4 所示,它的特点是:(1)输出为周期性的方波。
微机原理课程设计电子琴

一、教学内容ቤተ መጻሕፍቲ ባይዱ
本节课为微机原理课程的实践环节,选取《微机原理与应用》教材第七章“微机接口技术”及第十章“微机在仪器仪表中的应用”为理论依据,设计了一堂以“电子琴”制作为主体的课程。教学内容主要包括:1.微机与电子琴硬件接口原理,特别是I/O接口地址译码及编程;2.利用基本微机接口实现电子琴音调的控制,包括键盘扫描、音调发生器的使用;3.电子琴软件编程,通过编写简单的BIOS调用或DOS中断实现音色的播放与控制;4.熟悉并掌握电子琴的制作流程,包括电路设计、程序编写、调试与优化等。通过本节课的学习,学生将能理论与实践相结合,深入理解微机接口技术,增强动手能力与创新能力。
5、教学内容
本节课将是对电子琴项目的一个总结和应用拓展,教学内容如下:1.电子琴功能的创新设计,鼓励学生思考如何添加新的功能,如录音、播放、节奏伴奏等;2.介绍微机与其他外设的通信接口,如USB、蓝牙等,为电子琴的远程控制或数据传输打下基础;3.电子琴的电源管理设计,讲解如何为电子琴设计稳定的电源供应系统;4.实践电子琴的组装和外壳设计,提升学生的工业设计和实际动手能力;5.组织学生进行课堂展示和答辩,培养他们的表达能力和公众演讲技巧。通过本节内容的实践,学生将能够综合运用所学知识,发挥创造力,完成一个具有实用性和创新性的电子琴项目,并在此过程中提升自身的工程实践能力和团队合作精神。
2、教学内容
本节课进一步深化微机原理的应用,以“电子琴”项目为载体,教学内容具体包括:1.电子琴键盘布局设计与实现,让学生了解如何通过微机接口读取键盘输入;2.音阶生成算法介绍,探讨如何通过编程产生不同音调;3.利用微机定时器/计数器产生稳定的时钟信号,保证音色的准确性与连贯性;4.简单的乐曲编程与演奏,指导学生如何将音符组合成乐曲并进行演奏;5.电子琴功能的扩展,如增加音量控制、音色选择等,提高电子琴的交互性和趣味性。
电子琴微机课程设计

电子琴微机课程设计一、课程目标知识目标:1. 学生能理解电子琴的基本结构和演奏原理;2. 学生能掌握电子琴常用的微机操作技巧,如音色选择、节奏设定等;3. 学生能熟悉并运用电子琴演奏中的基本音乐理论知识,如音阶、和弦等。
技能目标:1. 学生能熟练操作电子琴,进行简单的独奏和伴奏;2. 学生能运用微机功能创作简单的音乐作品;3. 学生能在团队协作中,与他人共同完成一首电子琴演奏作品。
情感态度价值观目标:1. 培养学生对电子琴音乐的兴趣和爱好,激发他们的学习热情;2. 培养学生具有合作精神,尊重他人,共同进步的团队意识;3. 培养学生具有创新意识,敢于尝试,勇于表现的音乐素养。
课程性质:本课程以实践操作为主,注重培养学生的动手能力和创新能力,结合音乐理论知识,提高学生的音乐素养。
学生特点:本课程面向具有一定音乐基础的小学高年级学生,他们对新鲜事物充满好奇,善于模仿,具有较好的学习积极性。
教学要求:教师应注重个体差异,因材施教,鼓励学生积极参与实践,注重课程内容的实用性和趣味性,提高学生的学习兴趣。
通过课程学习,使学生在掌握电子琴演奏技巧的同时,培养良好的情感态度和价值观。
在教学过程中,将课程目标分解为具体的学习成果,便于教学设计和评估。
二、教学内容1. 电子琴基础知识:介绍电子琴的结构、演奏原理、音色种类和功能操作。
- 教材章节:第一章 电子琴概述- 内容:电子琴的起源、发展;电子琴各部分功能及操作方法。
2. 基本音乐理论知识:学习音阶、和弦、节奏等基本音乐概念。
- 教材章节:第二章 音乐理论基础- 内容:大、小调音阶;三和弦、七和弦;常见节奏型及拍号。
3. 电子琴演奏技巧:学习电子琴演奏中的基本指法和演奏技巧。
- 教材章节:第三章 电子琴演奏技巧- 内容:指法练习;音色、节奏选择与切换;简单独奏曲练习。
4. 实践与创作:运用所学知识进行实际操作,创作简单的音乐作品。
- 教材章节:第四章 实践与创作- 内容:编配简单的伴奏;创作短小的音乐作品;团队协作完成演奏作品。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
微机原理课程设计电子琴设计一、设计内容编写一实现电子琴的程序,并实现若干扩展功能。
基本功能:用键盘输入对应的七个音阶,通过实验箱的喇叭发出声音,并通过七段数码管显示输入音阶;扩展功能:1、在程序中可预设多首曲目,按一键可以进入预设子菜单,对要播放的曲目进行选择,并实现播放该曲目。
2、程序运行时有友好的用户介面。
3. 当弹奏不同音阶时,双色点阵LED显示器显示不同的图案二、元件与仪器1.计时器82532.并行控制器8255A3.实验台三、设计原理、思路及流程图1、设计原理(1)对于一个特定的D/A转换接口电路,CPU执行一条输出指令将数据送入D/A,即可在其输出端得到一定的电压输出。
给D/A转换器输入按正弦规律变化的数据,在其输出端即可产生正弦波。
对于音乐,每个音阶都有确定的频率。
各音阶标称频率值:(2)产生一个正弦波的数据可取32个(小于亦可),不同频率的区别,可通过调节向D/A转换器输出数据的时间间隔,例如:发"1"频率为261。
1HZ,周期为1/261.1=3.83ms,输出数据的时间间隔为3.83ms/32=0.12ms. 定时时间可以由8253配合8255来实现。
按下某键后发音时间的长短可以由发出的正弦波的个数多少来控制。
本程序中设置默认长度为60个正弦波。
(3)实验台上的七段数码管为共阴型,段码采用同相驱动,输入端加高电平,选中的数码管亮,位码加反相驱动器,位码输入端高电平选中。
(4) 点阵LED显示器是将许多LED类似矩阵一样排列在一起组成的显示器件,双色点阵LED是在每一个点阵的位置上有红绿或红黄或红白两种不同颜色的发光二极管。
当微机输出的控制信号使得点阵中有些LED发光,有些不发光,即可显示出特定的信息,包括汉字、图形等。
车站广场由微机控制的点阵LED大屏幕广告宣传牌随处可见。
(5)实验仪上设有一个共阳极8×8点阵的红黄两色LED显示器,其点阵结构如图所示。
该点阵对外引出24条线,其中8条行线,8条红色列线,8条黄色列线。
若使某一种颜色、某一个LED发光,只要将与其相连的行线加高电平,列线加低电平即可。
例如欲显示汉字“年”,采用逐列循环发光。
首先由“年”的点阵轮廓,确定点阵代码(如图所示)根据“年”的点阵代码,确定逐列循环发光的顺序如下:①行代码输出 44H;红色列代码输 01H;第一列2个红色LED发光。
②行代码输出 54H;红色列代码输 02H;第二列3个红色LED发光。
③行代码输出 54H;红色列代码输 04H;第三列3个红色LED发光。
④行代码输出 7FH;红色列代码输 08H;第四列7个红色LED发光。
⑤行代码输出 54H;红色列代码输 10H;第五列3个红色LED发光。
⑥行代码输出 DCH;红色列代码输 20 H;第六列5个红色LED发光。
⑦行代码输出 44H;红色列代码输 40 H;第七列2个红色LED发光。
⑧行代码输出 24H;红色列代码输 80 H;第八列2个红色LED发光。
2、电路连接图如下:(1)8253和8255连接如下(2).实验仪上的点阵LED及驱动电路的行代码、红色列代码、黄色列代码各用一片74LS273锁存。
行代码输出的数据通过行驱动器7407加至点阵的8条行线上,红和黄列代码的输出数据通过驱动器DS75452反相后分别加至红和黄的列线上。
行锁存器片选信号为CS1,红色列锁存器片选信号为CS2,黄色列锁存器片选信号为CS3。
分别接上298h,2a0h,2a8h.3.设计思路在本次课程设计中,根据复杂程序设计思想——模块化程序设计,分析和确定程序总体设计目标:电子琴基本功能及部分扩展功能后,将总体目标划分为若干模块(子程序,具体可见下)。
程序设计的思路按以下顺序进行:1.分析与确定程序总体设计目标2.将总体目标划分为若干模块3.定义每个模块的具体任务,明确它与其他模块间的通信方式4.编写源程序,进行调试,包括:简单电子琴主程序结合实验指导书的两程序,将其分为若干个子程序,实现简单的播放和显示音阶的功能。
发音子程序本子程序实现放音功能。
首先从键盘读出键码,判断,如果键码不是1-8(9除外)即仍然处于音阶输入准备状态,如果是,即求出相应的时间常数的序号,取60次32个正弦波数据,播放32个数据,组成一个正弦波。
播放60次后,然后判断是否有按键,如果有就进入死循环,直到下次按键为止。
放歌子程序本子程序实现播放预置在程序中的歌曲,并加上一个选择子程序段,可通过选择进入不同曲目,进而实现播放不同的歌曲,播放时直接调用放音子程序Led显示子程序本程序实现从键盘输入一位十进制数字(0~9),在七段数码管上显示出来。
显示广告版子程序本子程序实现在广告板上在输入不同音阶时有我们自行设计的图案显示。
输入不同图案相关的代码,然后调用图案显示判断程序段。
对其进行判断,然后进入图案显示代码,最终显示不同的图案。
源程序整体程序开始,显示提示信息,接着调用发音子程序,实现发音和显示。
接着对9键进行判断、当9按下时,调用放音子程序。
然后iujinru选择,选择喜欢的歌曲并进行播放。
当检测到esc时,退出。
当每一个都检测不到时,退回到调用发音子程序,继续发音显示。
从而实现有扩展功能的电子琴。
5.模块连接,形成完整的程序6.编写程序文档4.流程图以下用主程序与子程序配合流程图其进行说明。
(1)主程序流程图(2)发音子程序流程图(3)led显示子程序(4)显示广告板子程序(5)放音子程序四、源程序STACK SEGMENT PARA STACK'STACK'DB 100 DUP(0)STACK ENDSDATA SEGMENTIOPORT EQU 0C400H-0280HIO8255A EQU IOPORT+288HIO8255C EQU IOPORT+28AHIO8255B EQU IOPORT+28BHIO8253A EQU IOPORT+280HIO8253B EQU IOPORT+283HIO0832A EQU IOPORT+290HPROT EQU 0C400H-280HPROTH EQU PROT+298HPROTLR EQU PROT+2A0HPROTLY EQU PROT+2A8HDATA1 DB 80H,96H,0AEH,0C5H,0D8H,0E9H,0F5H,0FDHDB 0FFH,0FDH,0F5H,0E9H,0D8H,0C5H,0AEH,96HDB 80H,66H,4EH,38H,25H,15H,09H,04HDB 00H,04H,09H,15H,25H,38H,4EH,66H ;正弦波数据LED DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FHMESG1 DB 0DH,0AH,'INPUT A NUM (1--8=PLAY PIANO,9=PLAYMUSIC,ESC=EXIT):',0DH,0AH,'$'MESG2 DB 0DH,0AH,'PLEASE CHOOSE THE MUSIC YOULIKE(1-AAA,2-BBB) :',0DH,0AH,'$'TIME DB 120,110,100,90,81,72,55,42 ;发不同音时8253的计数器初值NUM DB ? ;NUM为8253计数器初值的序号--MESS DB 'STRIKE ANY KEY,RETURN TO DOS!',0AH,0DH,'$'MIN1 DB 00H,01H,02H,03H,04H,05H,06H,07HCOUNT DB 0JNUM DB ? ;JNUM用来存储输入数字MUSIC DB30H,31H,31H,35H,35H,36H,36H,35H,30H,30H,34H,34H,33H,33H,32H,32H,31H,100DUP(30H);,35H,35H,34H,34H,33H,33H,32H,35H,35H,34H,34H,33H,33H,32H,31H,31H,35H,3 5H,36H,36H,35H,34H,34H,33H,33H,3;2H,32H,31H,QMUSIC DB ?DOWN DB 31H,32H,33H,34H,35H,36H,37H,38H,38H,37H,36H,35H,34H,33H,32H,31H,100 DUP(30H)PP DB ?TT DB ?LMUSIC EQU 45BUFF1 DB 00H,00H,18H,3CH,3CH,18H,00H,00HBUFF2 DB 00H,1EH,0AH,46H,62H,50H,78H,00HBUFF3 DB 00H,06H,06H,60H,60H,06H,06H,00H BUFF4 DB 24H,66H,0E7H,00H,00H,0E7H,66H,24H BUFF5 DB 42H,0E7H,42H,18H,18H,42H,0E7H,42H BUFF6 DB 66H,24H,81H,0C3H,0C3H,81H,24H,66H BUFF7 DB 24H,66H,00H,0DBH,0DBH,00H,66H,24H BUFF8 DB 0CBH,99H,10H,0C6H,63H,08H,99H,0D3HDATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART: MOV TT,1MOV AX,DATAMOV DS,AXMOV DX,IO8255B ;使8255的A口为输出方式MOV AX,92HOUT DX,ALMOV QMUSIC,0JMP SSSZERO: MOV QMUSIC,0SSS: CMP QMUSIC,LMUSICJE ZEROCMP QMUSIC,0JE SSS4JMP SSS3SSS4: MOV DX,OFFSET MESG1MOV AH,9INT 21H ;显示提示信息MOV AH,7INT 21H ;从键盘接收字符,不回显SSS3: CMP AL,39HJE PLAY0CMP QMUSIC,0JE OOJMP PLAYOO: CMP AL,1BHJE EXIT ;若为ESC键,则转EXITCMP AL,30HJE SOFTDLY;MOV DI ,OFFESET RECORD; MOV [DI] ,AL; INC DICMP AL,31HJL SSSCMP AL,38HJG SSS ;若不在'1'-'8'之间转SSSMOV JNUM,ALSUB AL,31HMOV NUM,AL ;求出相应的时间常数的序号MOV CX,60 ;取60次32个正弦波数据SSS2: MOV AL,JNUMSUB AL,30H ;将所得字符的ASCII码减30HMOV BX,OFFSET LED ;BX为数码表的起始地址XLAT ;求出相应的段码MOV DX,IO8255C ;从8255的C口输出OUT DX,ALDDD: MOV SI,0LLL: MOV AL,DATA1[SI] ;取正弦波数据MOV DX,IO0832AOUT DX,AL ;放音CALL DELAY ;调延时子程序INC SICMP SI,32 ;是否取完32个数据JL LLL ;若没有,则继续LOOP DDD ;总循环次数60是否完,没有,则继续 MOV CX,0002HCALL NIAN ;------------------------ CALL NIAN;CALL NIANJMP SSS ;转SSSEXIT: MOV AH,4CHINT 21HPLAY0: CMP TT,1JE TT1MOV DX,OFFSET MESG2MOV AH,9INT 21H ;显示子菜单MOV AH,7INT 21H ;输入子菜单命令MOV PP,ALPLAY: MOV AL,QMUSICCMP PP,32HJE PLAY2CMP PP,31HJNE PLAY0MOV BX,OFFSET MUSICPLAY3: XLATMOV CL,QMUSICADD CL,01HMOV QMUSIC,CLJMP OOTT1: MOV TT,0MOV PP,32HPLAY2: MOV BX,OFFSET DOWNJMP PLAY3SOFTDLY: MOV BL,10DELAY4: MOV CX ,0FFFFHWAIT3: LOOP WAIT3DEC BLJNZ DELAY4JMP SSSDELAY PROC NEAR ;延时子程序CCC1: MOV BX,OFFSET TIMEMOV DX,IO8253B ;置8253通道0为方式0工作MOV AL,10HOUT DX,ALMOV AL,NUM ;取相应的时间常数XLATMOV DX,IO8253AOUT DX,AL ;向8253通道0输出KKK: MOV DX,IO8255AIN AL,DX ;从8255A口读一字节TEST AL,01 ;判PA0口是否为1JZ KKK ;若不为1,则转KKKRET ;子程序返回DELAY ENDPNIAN PROC NEARSTART2: MOV AX,DATAMOV DS,AXMOV DX,OFFSET MESSAGN: MOV CX,80HD2: MOV SI,OFFSET MIN1MOV AH,01HPUSH CXMOV CX,0008HNEXT: MOV AL,JNUMCALL BUFFMOV DX,PROTHOUT DX,ALMOV AL,AHMOV DX,PROTLROUT DX,AL ;显示第一行红SHL AH,01INC SIPUSH CXMOV CX,0FFFFHDELAY2: LOOP DELAY2 ;延时POP CXLOOP NEXTPOP CXCALL DELAYLOOP D2MOV AL,00MOV DX,PROTLROUT DX,ALCMP QMUSIC,0JE C1RETC1: MOV AH,01INT 16HJNZ BACKAGN1: MOV CX,80H ;AGN1为显示黄色D1: MOV SI,OFFSET MIN1MOV AH,01PUSH CXMOV CX,0008HNEXT1: MOV AL,JNUMCALL BUFFMOV DX,PROTHOUT DX,ALMOV AL,AHMOV DX,PROTLYOUT DX,ALSHL AH,01INC SIPUSH CXMOV CX,0FFFFHDELAY1: LOOP DELAY1MOV CX,0FFFFHDELAY3: LOOP DELAY3POP CXLOOP NEXT1POP CXCALL DELAYLOOP D1MOV AL,00MOV DX,PROTLYOUT DX,ALCMP QMUSIC,0JE C2RETC2: MOV AH,01INT 16HJNZ BACKJMP AGNBACK: RET;---------------------------------------------------------------- DELAY0 PROC NEAR ;延迟子程序 PUSH CXMOV CX,0FFFFHCCC: LOOP CCCPOP CXRETDELAY0 ENDP;--------------------------------------------------------------------- ;-------------------------------------------------------------------- BUFF PROC NEAR ; 代码选择判断子程序JUDGE1: CMP AL,31HJE L1CMP AL,32HJE L2CMP AL,33HJE L3CMP AL,34HJE L4CMP AL,35HJE L5CMP AL,36HJE L6CMP AL,37HJE L7CMP AL,38HJE L8;JMP A2L1: MOV AL,[SI]MOV BX,OFFSET BUFF1XLATRET ;得到第一行码L2: MOV AL,[SI]MOV BX,OFFSET BUFF2XLATRETL3: MOV AL,[SI]MOV BX,OFFSET BUFF3XLATRETL4: MOV AL,[SI]MOV BX,OFFSET BUFF4XLATRETL5: MOV AL,[SI]MOV BX,OFFSET BUFF5XLATRETL6: MOV AL,[SI]MOV BX,OFFSET BUFF6XLATRETL7: MOV AL,[SI]MOV BX,OFFSET BUFF7XLATRETL8: MOV AL,[SI]MOV BX,OFFSET BUFF8XLATRETBUFF ENDPNIAN ENDPCODE ENDSEND START五、调试情况及其分析源程序完成后,进行子程序与程序的调试工作,程序调试过程、完成情况及其分析按以下顺序进行:1.主程序简单电子琴功能主程序要求完成的功能有:电子琴简单功能实现及将音阶用数码管显示,主程序由电子琴实验程序有机组成,两个程序简单拼凑在一齐是不能实现的。