简易电子琴的设计
- 格式:doc
- 大小:277.00 KB
- 文档页数:16
简易电子琴电路设计一、设计要求:(1) 设计一个简易电子琴。
(2) 利用实验箱的脉冲源产生1,2,3,……共7 个或14 个音阶信号。
(3) 用指示灯显示节拍。
(4) 能产生颤音效果。
二、原理说明:简易电子琴实现自动播放和手动弹奏两种模式,由一个开头选择。
自动播放功能可以预置多首乐曲,可以通过手动选择,本设计预置了两首乐曲《梁祝》和《两只老虎》。
手动弹奏设置了7个按键做琴键,分别对应7个音阶。
系统由8个模块组成,图1是顶层设计文件,其内部有7个功能模块:Speakera.v(例2) 和ToneTaba.v (例3),NoteTabs.v (例4),div_27.v,div-50.v,Keyboard.v,Dir.v。
模块ToneTaba音阶发生器,当4位发声控制输入Index中某一位为高电平时,则对应某一音阶的数值将从端口Tone输出,作为获得该音阶的分频预置值;同时由Code输出对应该音阶简谱的LED显示,音阶越高,LED亮的数目越多。
模块Speakera中的主要电路是一个数控分频器,它由一个初值可预置的加法计数器构成,当模块Speakera由端口Tone获得一个2进制数后,将以此值为计数器的预置数,对端口Clk12MHZ输入的频率进行分频,之后由Spkout 向扬声器输出发声。
模块NoteTabs用于产生节拍控制(Index数据存留时间)和音阶选择信号,即在NoteTabs模块放置两个乐曲曲谱真值表,通过song来选择播放的音乐,00代表复位,01选乐曲《梁祝》,10选《两只老虎》,由一个计数器的计数值来控制此真值表的输出,而由此计数器的计数时钟信号作为乐曲节拍控制信号,从而可以设计出一个纯硬件的乐曲自动演奏电路。
模块div-27和div_50是分频模块,通过计数的方式进行分频。
div_27是由板上27M时钟分频产生4Hz的频率用于节拍控制,div_50是板上50M时钟产生12.5MHz用于Sperkera模块。
简易电子琴的设计[优秀范文五篇]第一篇:简易电子琴的设计毕-1毕业设计任务书专业:班级:学生签名:一、设计题目简易电子琴的设计二、设计内容要求和技术参数(1)要求能够发出1、2、3、4、5、6、7等七个音符。
(2)使用元件:AT89C51、LM324,喇叭,按键等三、设计应完成的技术资料(1)写出设计过程(包括原理、方案)(2)系统硬件图并描述各部分的功能(3)对软件编程、排错调试、焊接技术、相关仪器设备的使用技能等方面得到较全面的锻炼和提高(4)写出此次设计的心得体会四、设计考核的主要知识与技能本课题是电子技术与单片机混合的综合性课题,主要考核《电子技术》与《单片机》的基本知识和应用能力。
五、设计时间:六、指导教师签名:第二篇:简易电子琴电路的设计电子综合实训任务书学生姓名:专业班级:指导老师:易迎彦工作单位:武汉理工大学理学院题目:简易电子琴电路的设计初始条件:直流可调稳压电源一台、万用表一块、面包板一块、元器件若干、剪刀、镊子等必备工具要求完成的主要任务:(包括电子综合实训工作量及其技术要求以及说明书撰写等具体要求)1、技术要求:设计一个玩具电子琴,设8个琴键,分别代表1、2、3、4、5、6、7、į八个不同音符,每按下一个琴键,扬声器发出一个音符的声音。
演奏时的音量和节拍可以调节2、主要任务:(一)设计方案(1)按照技术要求,提出自己的设计方案(多种)并进行比较;(2)以CC7555时基集成电路为主,设计一个玩具电子琴电路(实现方案);(3)依据设计方案,进行预答辩;(二)实现方案(4)根据设计的实现方案,画出电路逻辑图和装配图;(5)查阅资料,确定所需各元器件型号和参数;(6)在面包板上组装电路;(7)自拟调整测试方法,并调试电路使其达到设计指标要求;(8)撰写设计说明书,进行答辩。
3、撰写电子综合实训说明书:封面:题目,学院,专业,班级,姓名,学号,指导教师,日期任务书目录(自动生成)正文:1、技术指标;2、设计方案及其比较;3、实现方案;4、调试过程及结论;5、心得体会;6、参考文献成绩评定表时间安排:电子综合实训时间:19周-20周19周:明确任务,查阅资料,提出不同的设计方案(包括实现方案)并答辩; 20周:按照实现方案进行电路布线并调试通过;撰写电子综合实训说明书。
简易电子琴的设计
一、设计题目:设计一简易电子琴,要求能够发出1、2、3、4、5、6、7 等七个音符。
使用元件:AT89C51、LM324,喇叭,按键等二、设计目的
(1)能够对电子电路、电子元器件、印制电路板等方面的知识有进一步的认识,独立对其进行测试与检查。
(2)熟悉8051 单片机的内部结构和功能,合
理使用其内部寄存器,能够完成相关软件编程设计工作。
(3)为实现预期功能,能够对系统进行快速的调试,并能够对出现的功能故障进行分析,及时修改相关软硬件。
(4)对软件编程、排错调试、焊接技术、相关仪器设备的使用技能等方面得到较全面的锻炼和提高。
三、系统硬件图流程图:原理:(一)音乐产生原理及硬件设计由于一首音乐是许多不同的音阶组成的,而每个音阶对应着不同的频率,这样我们就可以利用不同的频率的组合,即可构成我们所想要的音乐了,当然对于单片机来产生不同的频率非常方便,我们可以利用单片机的定时/计数器T0 来产生这样方波频率信号,因此,我们只要把一首歌曲的音
阶对应频率关系弄正确即可。
tips:感谢大家的阅读,本文由我司收集整编。
仅
供参阅!。
盛年不重来,一日难再晨。
及时宜自勉,岁月不待人。
1. 模电课设概述现在的电子琴一般使用PCM或AWM采样音源。
所谓采样就是录制乐器的声音,将其数字化后存入ROM里,然后按下键时CPU回放该音。
甚至有一些高级编曲键盘可以使用外置采样(比如Tyros 3的硬盘音色)。
现代电子琴并非“模仿”乐器音色。
它使用的就是真实乐器音色。
当然,现在力度触感在电子琴里是必备的。
而且现代电子琴还加上了老式电子琴的滤波器,振荡器,包络线控制来制造和编辑音色。
甚至也带上了老式电子琴的FM合成机构。
本次课程设计主要是通过对电子琴主体部分的电路进行模仿设计,按下不同琴键改变RC值,发出C调的八个基本音阶,采用运算放大器构成振荡电路,用集成功放电路输出音调,从而达到电子琴固有的基本功能。
2. Proteus软件简介Proteus软件是由英国LabCenter Electronics公司开发的EDA工具软件,由ISIS和ARES两个软件构成,其中ISIS是一款便捷的电子系统仿真平台软件,ARES是一款高级的布线编辑器,它集成了高级原理布线图、混合模式SPICE电路仿真、PCB设计以及自动布线来实现一个完整的电子设计。
它是目前最好的仿真单片机及外围器件的工具。
虽然目前国内推广刚起步,但已受到单片机爱好者、从事单片机教学的教师、致力于单片机开发应用的科技工作者的青睐。
Proteus软件的模拟仿真直接兼容厂商的SPICE模型,采用了扩充的SPICE3F5电路仿真模型,能够记录基于图表的频率特性、直流电的传输特性、参数的扫描、噪声的分析、傅里叶分析等,具有超过8000种的电路仿真模型。
Proteus软件支持许多通用的微控制器,如PIC、A VR、HC11以及8051;包含强大的调试工具,可对寄存器、存储器实时监测;具有断点调试功能及单步调试功能;具有对显示器、按钮、键盘等外设进行交互可视化仿真的功能。
此外,Proteus可对IAR C-SPY、KEIL等开发工具的源程序进行调试。
简易电子琴设计简易电子琴是一种小型的电子乐器,通常由键盘、振荡器和音频放大器等组成。
在这篇文档中,我将讨论如何设计一个简易电子琴,并提供一些有用的技巧和建议。
首先是电子琴的键盘设计。
一个常见的设计是使用数字编码器。
这种编码器可以将按键转换为电路信号,并将信号传输到微控制器。
然后,微控制器会读取信号并产生相应的音符。
这样,使用数字编码器可以大大简化电子琴的设计和构造。
另一个设计选择是使用弹簧开关。
这种开关通常用于电子琴和其他类型的音乐键盘上。
它们是非常可靠的,并且对于手指触感来说非常好。
但是,制作这种开关需要很高的技术水平和精巧的工艺。
接下来是电子琴的振荡器设计。
振荡器是电子琴最重要的部分之一,因为它决定了音符的音高。
一种常见的振荡器类型是RC振荡器。
RC振荡器由一个电容器和一个电阻器组成,可以产生一个稳定的频率。
您可以使用多个RC振荡器,每个振荡器控制一个特定的音高。
除了RC振荡器,还有其他类型的振荡器可以使用。
例如,DDS(直接数字合成)振荡器非常精确,但需要更多的硬件和软件支持。
最后是音频放大器设计。
音频放大器将振荡器产生的信号放大,以便您可以听到音乐。
一个常见的音频放大器类型是放大器电路(amplifier circuit)。
放大器电路由一个NPN型晶体管和一个耦合电容器组成。
这种电路提供了良好的音频放大性能,而且易于构造。
在电子琴设计和构造过程中,还需要考虑一些其他因素。
例如,将键盘和其他部件安装在一个盒子里,以便更好的保护电路。
此外,选择适当的电源也非常重要,以确保电子琴的正常运行。
总之,设计简易电子琴需要一些专业技术和经验,但这并不是让初学者感到无所适从。
只要你有耐心和学习心态,还有一些基本的电子制作工具,那么你也可以制作出你自己的简易电子琴。
希望这些技巧和建议能够为您的创作提供有用的帮助。
简易电子琴的设计课程设计一、课程目标知识目标:1. 学生能理解简易电子琴的基本工作原理,掌握相关的电子元件知识。
2. 学生能描述简易电子琴的电路结构,了解各部分功能及其相互关系。
3. 学生掌握基本的音乐理论知识,并能运用到电子琴的设计中。
技能目标:1. 学生能够独立完成简易电子琴的组装,提高动手实践能力。
2. 学生能够通过编程设计出独特的音乐作品,培养创新能力。
3. 学生能够运用所学知识解决简易电子琴制作过程中遇到的问题,提高问题解决能力。
情感态度价值观目标:1. 学生培养对电子技术和音乐的兴趣,激发学习热情。
2. 学生在合作完成任务的过程中,培养团队协作精神和沟通能力。
3. 学生通过创作音乐作品,体验成就感,增强自信心,培养积极向上的生活态度。
4. 学生认识到科技与艺术的结合,体会创新的意义,培养探索精神。
本课程针对中学生设计,结合课程性质、学生特点和教学要求,将目标分解为具体的学习成果。
通过本课程的学习,学生能够掌握简易电子琴的制作技能,培养音乐素养,提高实践和创新能力,同时培养良好的情感态度价值观。
二、教学内容1. 电子元件知识:介绍电阻、电容、二极管、三极管等基本电子元件的作用和特性,以及其在简易电子琴中的应用。
相关教材章节:第一章 电子元件基础知识2. 简易电子琴工作原理:讲解简易电子琴的基本工作原理,包括声音产生、放大、振荡等过程。
相关教材章节:第二章 电子琴工作原理3. 电路结构与功能:详细介绍简易电子琴的电路结构,包括键盘、音源、振荡器、放大器等部分的功能及其相互关系。
相关教材章节:第三章 简易电子琴电路结构4. 音乐理论基础:教授基本的音乐理论知识,如音名、音高、音值、节奏等,为电子琴设计提供理论支持。
相关教材章节:第四章 音乐理论基础5. 简易电子琴组装与调试:指导学生进行简易电子琴的组装、焊接和调试,培养动手实践能力。
相关教材章节:第五章 简易电子琴组装与调试6. 音乐作品创作与编程:教授如何通过编程创作音乐作品,运用所学知识对简易电子琴进行创新设计。
简易电子琴设计流程下载温馨提示:该文档是我店铺精心编制而成,希望大家下载以后,能够帮助大家解决实际的问题。
文档下载后可定制随意修改,请根据实际需要进行相应的调整和使用,谢谢!并且,本店铺为大家提供各种各样类型的实用资料,如教育随笔、日记赏析、句子摘抄、古诗大全、经典美文、话题作文、工作总结、词语解析、文案摘录、其他资料等等,如想了解不同资料格式和写法,敬请关注!Download tips: This document is carefully compiled by theeditor. I hope that after you download them,they can help yousolve practical problems. The document can be customized andmodified after downloading,please adjust and use it according toactual needs, thank you!In addition, our shop provides you with various types ofpractical materials,such as educational essays, diaryappreciation,sentence excerpts,ancient poems,classic articles,topic composition,work summary,word parsing,copy excerpts,other materials and so on,want to know different data formats andwriting methods,please pay attention!简易电子琴设计流程一、设计目标设计一个简易的电子琴,能够发出不同频率的声音,实现基本的音乐演奏功能。
1. 技术指标 (1)2. 设计方案及其比较 (1)2.1 方案一 (1)2.2 方案二 (3)2.3 方案比较 (6)3. 实现方案 (6)4. 调试过程及结论 (10)5. 心得体会 (16)6. 参考文献 (16)简易电子琴电路的设计1.技术指标设计一个玩具电子琴,设8个琴键,分别代表1、2、3、4、5、6、7、į八个不同音符,每按下一个琴键,扬声器发出一个音符的声音。
演奏时的音量和节拍可以调节。
2.设计方案及其比较2.1 方案一选用RC振荡电路和运算放大器构成简易电子琴电路。
RC振荡电路的具体电路为文氏桥正弦振荡电路。
电路原理图如下图1。
图1 简易电子琴电路原理图其中1C和按键电阻并联,2C和12R串联,两者共同构成RC串并联选频网络。
由于选频网络的相移为零,这样RC串并联选频网络送到运算放大器同相输入端的信号电压与输出电压同相,所以RC反馈网络形成正反馈,满足相位平衡条件,因而可以形成振荡。
由于振荡的能量是电源,激励信号源是电路中的噪声,它的频谱丰富,包含频率成分f;但由于噪声信号极其微弱,在振荡期间应使信号做增幅振荡,为此合理选择电阻使0ω信号就会通过正反馈而使得输出信号不断增大,使输出幅环路增益大于1,这样频率为0度越来越大,最后受电路中非线性元件的限制,使振荡幅度自动稳定下来,电路进入等幅振荡。
频率0f之外的信号由于不满足振荡平衡条件,将不会在输出信号中出现,RC选频网络实现了信号频率的选择功能。
按键电阻的选择:查阅资料得知八个音阶的频率如下表1:表1 八个音阶的频率由于1C的值确定为0.1uF,由公式:fπ2/1=(1)fRC0=并结合表一计算可得电阻阻值分别为(单位:欧姆):36kR3.1=(2)28R7.k2=(3)23R3.k3=(4)20kR4.4=(5)16kR2.5=(6)k13R1.6=(7)R3.10k7=(8)R1.9k8=(9)通过阻值选择电阻器件。
电路要求不仅能够振荡,而且能够稳幅。
课程单片机原理及应用课程设计题目基于51单片机简易电子琴设计专业主要内容、基本要求、主要参考资料等1、主要内容:根据单片机课程所学内容,结合其他相关课程知识,设计一个简易电子琴,以加深对单片机知识的理解,锻炼实践动手能力,为以后的毕业设计和工作打下坚实基础。
2、基本要求:本设计以MCS-51系列单片机为核心,采用常用电子器件设计。
要求最少8个按键,每个按键对应一种音调,按下按键发声,松开按键后声音延迟一段时间后停止,即带余音的电子琴,延时时间可以设置,要求最少8个不同音调,可以采用标准的音调设计。
3、主要参考资料:[1] 张毅坤,陈善久.单片微型计算机原理及应用.西安:西安电子科技大学出版社,2002.[2] 张友德,赵志英,徐时亮.单片微机原理应用与实验.上海:复旦大学出版社,2000.[3] 伟福Lab2000P系列单片机仿真实验系统说明书.完成期限2010.3.15-3.19指导教师专业负责人2010年3 月13日目录第1章概述 (1)1.1 设计的目的 (1)第2章系统设计 (2)2.1简易电子琴设计方案 (2)2.2系统总框图 (2)2.3系统工作原理 (3)第3章硬件电路的设计 (4)第4章软件的设计 (5)4.1 程序流程图 (5)4.2 程序设计说明 (6)4.2.1 对声音的控制 (6)4.2.2对演奏的控制 (6)第5章总结 (7)参考文献 (8)附录1 系统电路图 (9)附录2 源代码 ........................................................................... 错误!未定义书签。
第1章概述我们生活在一个信息时代,各种电子产品层出不穷,作为一个计算机专业的学生,了解这些电子产品的基本组成和设计原理是十分必要的,我们学习的是计算机组成的理论知识,而课程设计正是对我们学习的理论的实践与巩固。
本设计主要介绍的是一个用超高速硬件描述语言VHDL设计的一个具有若干功能的简易电子琴,其理论基础来源于计算机组成原理的时钟分频器。
1.1设计目的(1)能够对电子电路、电子元器件、印制电路板等方面的知识有进一步的认识,独立对其进行测试与检查。
(2)熟悉8051单片机的内部结构和功能,合理使用其内部寄存器,能够完成相关软件编程设计工作。
(3)为实现预期功能,能够对系统进行快速的调试,并能够对出现的功能故障进行分析,及时修改相关软硬件。
(4)对软件编程、排错调试、焊接技术、相关仪器设备的使用技能等方面得到较全面的锻炼和提高。
第2章系统设计2.1简易电子琴设计方案设计一简易电子琴,要求能够发出1、2、3、4、5、6、7等七个音符。
使用元件:AT89C51、LM324,喇叭,按键等1.能够实现基本的琴键功能即每按下一个琴键,单片机能够检测到键盘的按键,并根据按键的位置通过程序来控制,使蜂鸣器发著不同频率的声音,声音延迟延迟一段时间,等到按键放开后,声音停止。
然后再继续扫描,看是否有键按下,如此循环下去,即实现基本的琴键功能。
2.能够实现调节电子琴银色功能在键盘上设置功能键,通过按键选择不同的因素。
3.能够实现通过按键自动播放歌曲的功能在键盘上设置几个功能键,按下之后会根据功能键跳转到自动播放歌曲的程序,来播放相应的歌曲。
2.2系统的总框图2.3系统工作原理乐音实际上是有固定周期的信号。
我们可以用AT89C51的一个定时器(如T1)控制,在P3.4脚上输出方波周期信号,产生乐音。
根据不同的按键,调节T1的溢出时间,可输出不同频率的乐音,这样就做出了一台微型电子琴。
每个乐音的音高(频率)是固定的,表1列出了一个8度以及其上下共16个音的音名、频率及定时器T1初值对照(设晶体频率为6MHz)音乐产生原理及硬件设计由于一首音乐是许多不同的音阶组成的,而每个音阶对应着不同的频率,这样我们就可以利用不同的频率的组合,即可构成我们所想要的音乐了,当然对于单片机来产生不同的频率非常方便,我们可以利用单片机的定时/计数器来产生这样方波频率信号,因此,我们只要把一首歌曲的音阶对应频率关系弄正确即可。
本次设计中单片机晶振为12MHZ,那么定时器的计数周期为1MHZ,假如选择工作方式1,那T值便为T= 216--5﹡105/相应的频率,那么根据不同的频率计算出应该赋给定时器的计数值,电子琴的具体工作原理图如下图所示。
简易电子琴的工作原理图第3章硬件电路的设计由于一首音乐是许多不同的音阶组成的,而每个音阶对应着不同的频率,这样我们就可以利用不同的频率的组合,即可构成我们所想要的音乐了,当然对于单片机来产生不同的频率非常方便,我们可以利用单片机的定时/计数器T0来产生这样方波频率信号,因此,我们只要把一首歌曲的音阶对应频率关系弄正确即可。
本次设计中单片机晶振为12MHZ,那么定时器的计数周期为1MHZ,假如选择工作方式1,那T值便为T= 216--5﹡105/相应的频率,那么根据不同的频率计算出应该赋给定时器的计数值,列出不同音符与单片机计数T0相关的计数值如下表所示:采用查表程序进行查表时,可以为这个音符建立一个表格,有助于单片机通过查表的方式来获得相应的数据:TABLE DW 64580,64684,64777,64820,64898,64968,65030第4章软件设计4.1程序流程图图3.2 简易电子琴的工作流程图4.2程序设计说明4.2.1对声音的控制①对音调的控制:根据不同的按键,对定时器T1送入不同的初值,调节T1的溢出时间,这样就可以输出不同音调频率的方波。
不同音调下各个音阶的定时器②对音长的控制:先向定时器T0送入一个固定初值,控制中断循环的次数,从而得到成倍数关系的时间间隔。
按一拍0.64S计算,取1/16拍为最小间隔,即0.04S,为此设定T0的初值为63C0。
③乐谱的编码规则:对于每个音符,定义用8位二进制数表示。
其中,最高位为1的字符为结束符,当读到最高位为1时,停止播放;低3位存储音阶码,即音阶表的列数,可为000B~111B (1~7和休止符),休止符表示停顿,不发音,只有时间长短属性;第3位和第4位存储音高码,即音阶表的行数,可为00B~10B;第5位和第6位存储音长码,即中断次数,可为00B~10B。
4.2.2对演奏的控制在手动演奏时,规定先按音调键,后按音阶键。
每次音阶键按下时,调用键盘扫描子程序,获得键值,查询音阶表,获取定时器T1的计时初值,向喇叭输入相应频率的驱动脉冲,发出相应的声音,若按键没有松开,则一直发声;若按键松开,则停止发声。
在自动演奏时,通过选曲键来确定要播放的音乐,根据键值查询曲目表获取所点歌曲的首地址,依次读取歌曲的代码,获得音阶、音调和音长信息,播放相应的音乐。
当读到结束符时,停止播放音乐。
第5章总结通过一周的紧张工作,终于完成了简易电子琴的设计,这个课程设计使我受益匪浅,他使我了解了硬件设计的整个流程,并且加深了我对计算机组成原理这门的课内容的理解,通过这个课程设计,不仅使我了解了组成原理的脊髓,而且使我对单片机从陌生到初步理解,扩充的我的知识面。
这个课程设计也培养了我们的耐心和毅力,一个小小的错误就会导致结果的不正确,而对错误的检查要求我要有足够的耐心,由于这个课程设计也使我积累了一些经验,相信这些经验在我以后的学习工作中会有很大的作用。
此课程设计也使我了解了单片机设计的方便灵活性,这是我们跨入计算机硬件行业很好的一次锻炼。
参考文献【1】单片微型计算机接口技术及应用张淑清姜万录等著编(国防工业出版社 2003年1月)【2】8051单片机实践与应用吴金戌沈庆阳郭庭吉编著(清华大学出版社 2001年8月)【3】微型计算机原理与接口技术冯博琴主编(清华大学出版社 2004年4月)【4】新颖实用电子设计与制作张友汉主编(福建科学技术出版社 2000年1月)【5】C语言程序设计教程(第二版)谭浩强等著编(高等教育出版社)【6】数字电子技术基础简明教程(第二版)余孟尝主编附录(一)硬件电路图:附录(二)源代码1.方案一:产生按键音符ORG 0000HLJMP MAINORG 000BHLJMP BREAKMAIN: MOV TMOD,#01H ;设置定时器0的工作方式SETB EASETB ET0 ; 设置定时器0中断SETB TR0 ; 启动定时器0WAIT1: LCALL KEY ; 调用KEY子程序,判断有键按下否?第几个键?CLR EA ;屏蔽中断CJNE R3,#00H,WAIT1 ;如果R3=0,表示有键按下MOV A,22H ;将22H里存放的按键号送给ARL A ; 因为查表里都是字,所以得乘2查得数据MOV DPTR,#TABLE ;指向表头MOVC A,@A+DPTR ; 查表MOV TH0,A ;将数据高位送TH0MOV 21H,A ; 将高位备份MOV A,22H ;将22H里存放的按键号送给ARL A ;因为查表里都是字,所以得乘2查得数据INC A ;取低位数据MOVC A,@A+DPTRMOV TL0,AMOV 20H,AWAIT2: LCALL KEYSETB EACJNE R3,#00H,WAIT1JMP WAIT2KEY: MOV R3,#00H ; KEY子程序,判断有键按下否?第几个键?MOV R1,#0FFHMOV R0,#00HMOV A,R1MOV P2,AMOV A,P2CLR CCPL C ;利用标志位CY来判断是哪个键按下MOV R2,#08HWAIT3: RLC A ;移位判断JNC STOREINC R0DJNZ R2,WAIT3STORE: MOV 22H,R0 ; 将按键号存22H,R3=0有键按下MOV R3,#00HRETBREAK: PUSH ACC ; 中断产生方波,从P1.0口输出PUSH PSWMOV TH0,21HCPL P1.0POP PSWPOP ACCRETITABLE: DW 65030,64968,64898,64820,64777,64684,64580 ; 7,6,5,4,3,2,1 END方案二:产生按键音符ORG 0000HSJMP STARTORG 000BHAJMP INT_0ORG 0030HSTART: MOV P1,#00HSETB EASETB ET0 ;计数器0MOV TMOD,#02HMOV TH1,#09CHMOV TL1,#09CH ;定时器初植CLR TR0 ;定时器不允许SCAN: ;键盘扫描MOV A,P2 ;判断键盘按下,跳到SCAN_1,若未按,继续扫描CJNE A,#0FFH,SCAN_1NOPSJMP SCANSCAN_1:ACALL DELAY ;是不是真的要按下?如果是,则跳转SU_KEY查询是哪个按下?MOV A,P2CJNE A,#0FFH,SU_KEYNOPSU_KEY:JNB P2.1,MU_1 ;判断是哪个键按下?JNB P2.2,MU_2JNB P2.3,MU_3JNB P2.4,MU_4JNB P2.5,MU_5JNB P2.6,MU_6JNB P2.7,MU_7SJMP SCAN;R1信号周期MU_1: MOV R1,#19 ;如果第一个按键按下,则R1=19,同时程序转NEXT SJMP NEXTMU_2: MOV R1,#17SJMP NEXTMU_3: MOV R1,#15SJMP NEXTMU_4: MOV R1,#14SJMP NEXTMU_5: MOV R1,#13SJMP NEXTMU_6: MOV R1,#11SJMP NEXTMU_7: MOV R1,#10SJMP NEXTNEXT: MOV A,R1MOV R0,ASETB TR0 ;启动定时器0NEXT_1:MOV A,P2 ; 没键按下继续执行,有键按下,返回读引脚CJNE A,#0FFH,NEXT_1ACALL DELAYMOV A,P2 ;真的没键按下?CJNE A,#0FFH,NEXT_1CLR TR0 ;不响AJMP SCAN ;扫描键盘去INT_0: ;中断程序DJNZ R0,RE ;R0不等于0时,返回CPL P1.0MOV A,R1MOV R0,ARE: RETIDELAY:MOV R7,#100 ;延长时间等待,键盘消抖D1: MOV R6,#10D2: DJNZ R6,D2DJNZ R7,D1RETEND指导教师:年月日。