7个音阶的电子琴

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

电子琴的设计

学号031041229 学生姓名王灿专业(班级)0310412

摘要:电子琴是现代电子科技与音乐结合的产物,是一种新型的键盘乐器。它

在现代音乐扮演着重要的角色,单片机具有强大的控制功能和灵活的编程实现特性,它已经溶入现代人们的生活中,成为不可替代的一部分。本文的主要内容是用AT89C51单片机为核心控制元件,设计一个电子琴。以单片机作为主控核心,与键盘、扬声器等模块组成核心主控制模块,在主控模块上设有7个弹奏按键、1个播放键和扬声器。

关键词:单片机89C51、电子琴、重要性、应用性

2、总体设计方案

2.1设计思路

这次的电子琴是由7个低音键设计成7个音。然后再用一个音频放大模块来使音乐播出的声音变大。通过这7个键的随意组合可随意弹奏想要表达的音乐,用功能键转换成歌曲演奏,可播放预存的音乐,使用很简单。

详细过程:当系统扫描到键盘上有键子被按下,则快速检测出是那一个键子,对检测到得按键值进行判断,是琴键则跳转至琴键处理程序,是功能键则跳转至相应的功能程序,我们设计的功能程序有两种,即音色调节功能和自动播放乐曲功能,根据检测到得按键值,查询音律表,给计时器赋值,使发出相应频率的声音。然后单片机的定时器被启动,发出一定频率的脉冲,该频率的脉冲经喇叭驱动电路放大滤波后,就会发出相应的音调。假如在前一个按下的键发声的同时有另一个键被按下,则启用中断系统,前面键的发音停止,转到后按的键的发音程序,发出后按的键的音。检测到按键按下的是自动播放歌曲功能键后执行该程序,电子琴会自动播放事先已经存放好的歌曲,歌曲播放完毕之后自动返回至键盘扫描程序,继续等待是否有键按下。

2.1.1

方案:采用AT89C51单片机进行控制, AT89S51是一个低功耗,高性能CMOS 8位单片机,片内含4k Bytes ISP(In-system programmable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制

造,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISP Flash 存储单元,功能强大的微型计算机的AT89S51可为许多嵌入式控制应用系统提供高性价比的解决方案。

方案:

(1)键盘扫描程序:

检测是否有键按下,有键按下则记录按下键的键值,并跳转至功能转移程序;无键按下,则返回键盘扫描程序继续检测

(2)功能转移程序:

对检测到得按键值进行判断,是琴键则跳转至琴键处理程序,是功能键则跳转至相应的功能程序,我们设计的功能程序有两种,即音色调节功能和自动播放乐曲功能

(3)琴键处理程序:

根据检测到得按键值,查询音律表,给计时器赋值,使发出相应频率的声音

(4)自动播放歌曲程序:

检测到按键按下的是自动播放歌曲功能键后执行该程序,电子琴会自动播放事先已经存放好的歌曲,歌曲播放完毕之后自动返回至键盘扫描程序,继续等待是否有键按下。

2.2设计总方框图

弹奏子程序流程图:

弹奏子程序 开中断并允许中断

设定定时器工作方式 取键值 根据键值查音律 给定时器T0赋值 开始计时

进入中断 CPL P3.0 退出中断

延时 返回键盘扫描程序

3、设计原理分析

3.1时钟电路的设计

本系统的时钟电路设计是采用的内部方式,即利用芯片内部的振荡电路。 MCS-51内部有一个用于构成振荡器的高增益反相放大器。引脚XTAL1和XTAL2分别是此放大器的输入端和输出端。这个放大器与作为反馈元件的片外晶体谐振器一起构成一个自激振荡器。外接晶体谐振器以及电容CX1和CX2构成并联谐振电路,接在放大器的反馈回路中。对外接电容的值虽然没有严格的要求,但电容的大小会影响震荡器频率的高低、震荡器的稳定性、起振的快速性和温度的稳定性。因此,此系统电路的晶体振荡器的值为12MHz,电容应尽可能的选择陶瓷电容,电容值约为16PF。

3.2复位电路的设计

在复位电路方案挑选的时候有两种选择的,上电复位和按扭复位,上电复位是利用电容充电来实现的,而按扭复位是电源对外节电容的充电使RST为高电平,复位松开后,电容通过下拉电阻放电,使RST恢复低电平。为了制作软件的方便我们还是选择用按扭复位,因为它比较直观。

3.3键盘弹奏的设计

1 2 3 4

5 6 7 音乐播放

本系统利用P1为按键接入口,琴键输入是通过独立式键盘来完成的。由于89C51单片机的八位I/O 口足以能实现控制各音阶的输出,并且独立式键盘的编程容易易懂,结构简单,实现起来方便,而且每个按键单独占有一根I/O 接口线,每个I/O 口的工作状态互不影响,所以采用独立式键盘。利用静态扫描的方法,在P0口输出,当每次按下一个琴键,在共阳极数码管显示相对应的键码号,这样可以使弹奏者清楚知道自己弹奏的音谱。

关于键盘的抖动问题的分析和解决。当用手按下一个键时,如图3所示,往往按键在闭合位置和断开位置之间跳几下才稳定到闭合状态的情况;在释放一个键时,也回会出现类似的情况。这就是抖动。抖动的持续时间随键盘材料和操作员而异,不过通常总是不大于10ms 。很容易想到,抖动问题不解决就会引起对闭合键的识别。用软件方法可以很容易地解决抖动问题,这就是通过延迟10ms 来等待抖动消失,这之后,在读入键盘码。

3.4扬声器电路的设计

对应的键码

扬声器发生原理:只要让扬声器(speaker)通过会产生大小变化的电流,就能使扬声器发出声音。因此,若以程序不断地输出1->0->1->0->...就可令扬声器发出声音。对检测到得按键值进行判断后,是琴键则跳转至琴键处理程序,根据检测到得按键值,查询音律表,给计时器赋值,使发出相应频率的声音。检测到按键按下的是自动播放歌曲功能键后执行该程序,扬声器会自动播放事先已经存放好的歌曲,直到歌曲播放完毕。

3.5总电路图

本系统利用单片机的定时/计数器T0来产生这样方波频率信号,因此,我们只要把一首歌曲的音阶对应频率关系弄正确即可。若要产生音频脉冲,只要算出某一音频的周期(1/频率),再将此周期除以2,即为半周期的时间。利用定时器计时半周期时间,每当计时终止后就将P1.0反相,然后重复计时再反相。就可在

相关文档
最新文档