基于51单片机的电子琴设计毕业设计 精品.docx
- 文档编号:7322823
- 上传时间:2023-01-22
- 格式:DOCX
- 页数:37
- 大小:524.45KB
基于51单片机的电子琴设计毕业设计 精品.docx
《基于51单片机的电子琴设计毕业设计 精品.docx》由会员分享,可在线阅读,更多相关《基于51单片机的电子琴设计毕业设计 精品.docx(37页珍藏版)》请在冰豆网上搜索。
基于51单片机的电子琴设计毕业设计精品
目录
一、设计电子琴的作用与目的1
二、电子琴设计要求1
三、电子琴设计所用设备及软件2
四、电子琴系统设计方案2
五、电子琴系统硬件设计3
5.1琴键控制电路3
5.1.1矩阵式键盘3
5.1.2独立式键盘4
5.1.3方案比较4
5.2数码管显示电路5
5.2.1LED数码管显示原理5
5.2.2LED数码管静态显示5
5.2.3LED数码管动态显示6
5.2.4方案比较7
5.3音频功放电路7
5.4时钟-复位电路8
5.4.1时钟电路8
5.4.2复位电路8
5.5电源电路9
5.6整体电路10
六、电子琴系统软件设计10
6.1系统硬件接口定义10
6.2主函数10
6.3初始化函数11
6.4数码管显示函数11
6.5中断函数11
6.6键值扫描函数12
6.7音频处理函数13
七、电子琴设计调试14
7.1调试工具14
7.2调试结果14
7.3电子琴设计中的问题及解决方法15
八、电子琴设计总结15
参考文献17
附录1:
电子琴系统原理图18
附录2:
源程序19
基于51单片机的电子琴设计
在电子音乐领域,电子音调作为现代电子科技与音乐结合的产物,它在现代音乐中扮演着重要的角色。
目前,由于电子音乐的普及,电子音调合成器(合成器实际上就是一台声音的频率合成仪,可以制作各种声音,改变各种音色)可以解决相当一部分的歌唱及舞厅的伴奏问题。
其中,电子琴就是一种新型的键盘电子乐器。
一、设计电子琴的作用与目的
音乐教育是学校美育的主要途径和最重要内容,它在陶冶情操、提高素养、开发智力,特别是在培养学生创新精神和实践能力方面发挥着独特的作用。
近年来,我国音乐教育在理论与实践上都取得了有目共睹的成绩,探索并形成了具有中国特色的、较为完整的音乐教育教学体系。
但我国音乐教育的改革力度离素质教育发展的要求还存在一定距离。
如今,电子琴作为电子时代的新产物以其独特的功能和巨大的兼容性被人们广泛的接受和推崇。
而在课堂教学方面,它拥有其它乐器无法比拟的两个瞬间:
瞬间多元素思维的特殊的弹奏方法;瞬间多声部(包括多音色)展示的乐队音响效果的特点。
结合电子琴自身强大的功能及独特的优点来进行音乐教育的实施,这样就应该大力推广电子琴进入音乐教室,让电子琴教学在音乐教育中发挥巨大的作用。
现代乐器中,电子琴是高新科技在音乐领域的一个代表,体现了人类电子技术和艺术的完美结合。
电子琴自动伴奏的稳定性、准确性,以及鲜明的强弱规律、随人设置的速度要求,都更便于人们由易到难、深入浅出的准确掌握歌曲节奏和乐曲风格,对其节奏的稳定性和准确性训练能起到非常大的作用。
电子琴所包含的巨量的音乐信息和强大的音乐表现力可以帮助音乐教学更好地贯彻和落实素质教育,更有效地提高人们的音乐素质和能力。
目前,市场上的电子琴可谓琳琅满目,功能也是越来越完备。
以单片机作为主控核心,设计并制作的电子琴系统运行稳定,其优点是硬件电路简单、软件功能完善、控制系统可靠、性价比较高等,具有一定的实用与参考价值。
这就为电子琴的普及提供了方便。
二、电子琴设计要求
本设计主要是用AT89C51单片机为核心控制元件,设计一台电子琴。
以单片机作为主控核心,与键盘、扬声器等模块组成核心主控制模块,在主控模块上设有8个按键和1个复位按键。
本系统主要是完成2大功能:
音乐自动播放、电子琴弹奏。
关于声音的处理,使用单片机C语言,利用定时器来控制频率,而每个音符的符号只是存在自定义的表中。
总之,本设计的电子琴有以下要求:
(1)用键盘作出电子琴的按键,共7个,每键代表1个音符。
各音符按照符合电子琴的按键顺序排列;
(2)达到电子琴的基本功能,可以用弹奏出简单的乐曲;
(3)不弹奏时,利用功能键可以播放内置音乐。
三、电子琴设计所用设备及软件
本设计除了需要计算机,还会用到三款软件:
作图软件Protel99SE、仿真软件Proteus、编程软件KeiluVision4。
关于这三种软件的简介如表1所示。
表1软件简介
软件名称
软件图标
主要特点
作用
备注
Protel99SE
Protel99SE是PC环境下以独特设计管理和协作技术为核心的印制电路板设计软件系统,是基于Windows95/98/2000/NT的全32位EDA设计系统。
它主要采用了SmartDoc技术、SmartTool技术、SmartTeam技术。
绘制电路图和PCB板
Proteus
Proteus软件具有其它EDA工具软件的功能,诸如:
原理布图、PCB自动或人工布线、SPICE电路仿真。
除此之外还有一些革命性的特点:
互动的电路仿真、仿真处理器及其外围电路。
数字电路仿真
KeiluVision4
uVision4在uVision3IDE的基础上,增加了更多大众化的功能:
多显示器和灵活的窗口管理系统;系统浏览器窗口的显示设备外设寄存器信息;调试还原视图创建并保存多个调试窗口布局;多项目工作区简化与众多的项目。
编写程序
四、电子琴系统设计方案
本系统采用AT89C51为主控芯片,因其精度较高,操作比较灵活,输入电路和输出电路由芯片来进行处理,电路的系统的稳定性高,功耗小。
其中,输入电路有8个独立按键,通过按键随意按下所要表达的音符,作为电平送给主体电路,中央处理器通过识别,解码输出音符,在扬声器中发出有效的声音。
由于需要显示的信息不多,显示电路未采用液晶屏显示,而是使用数码管显示电路负责显示按下的琴键所对应的键值,这样既节省了成本了,又降低了编程难度。
如图1所示基于单片机AT89C51的电子琴电路,它主要由琴键控制电路、数码管显示电路、音频功放电路、时钟-复位电路和电源电路五部分所构成。
五、电子琴系统硬件设计
基于单片机AT89C51的电子琴电路由琴键控制电路、数码管显示电路、音频功放电路、时钟-复位电路和电源电路五部分所构成。
琴键控制电路采用了8输入与门芯片CD4068B,收集8个独立按键的开关状态信号,并触发单片机的外部中断来处理;而数码管显示电路负责显示按下的琴键所对应的键值;同时,音频功放电路也会播放琴键对应的音调;电源电路为整个电路提供能源。
5.1琴键控制电路
琴键控制电路作为人机联系的输入部分,也是间接控制数码显示和音频功放的重要组成部分。
键盘按照连接方式可以分为独立式和矩阵式键盘两类。
5.1.1矩阵式键盘
矩阵式(也称行列式)键盘由行线和列线组成,按键位于行、列的交叉点上。
由于矩阵式键盘中行、列线为多键共用,各按键彼此将相互发生影响,所以必须将行、列线信号配合,才能确定闭合键位置。
相对于独立式键盘而言,软件上编程会稍微复杂些。
如图2所示为4X4矩阵式键盘电路,由一个4X4的行、列结构可以构成一个16个按键键盘,再结合芯片74LS20来触发中断。
在按键数目较多的场合,要节省较多的I/O口线。
矩阵中无按键按下时,行线为高电平;当有按键按下时,行线电平状态将由与此行线相连的列线的电平决定。
列线的电平如果为低,则行线电平为低;列线的电平如果为高,则行线的电平也为高,这是识别按键是否按下的关键所在。
5.1.2独立式键盘
独立式键盘的特点是一键一线,各键相互独立,每个键各接一条I/O口线,通过检测I/O输入线的电平状态,可判断出被按下的按键。
显而易见,这样电路简单,各条检测线独立,识别按下按键的软件编写简单。
适用于键盘按键数目较少的场合,不适用于键盘按键数目较多的场合,因为将占用较多的I/O口线。
独立式键盘电路如图3所示,8个独立按键分别对应一个I/O口线,当某一按键按下时,对应的检测线就变成了低电平,与其它按键相连的检测线仍为高电平,只需读入I/O输入线的状态,判别哪一条I/O输入线为低电平,很容易识别哪个键被按下。
同时采用了8输入与门芯片CD4068B,收集8个独立按键的开关状态信号,并触发单片机的外部中断来处理,大大提高了单片机CPU的利用率。
5.1.3方案比较
对于以上两种电路的的优缺点比较如表2所示。
由于此次设计的琴键控制电路需要8个按键,故单纯从I/O口线的占用的角度比较,独立式需要占用8条I/O口线,而矩阵式却只需6条。
但是从程序编写的难易程度来看,若使用矩阵键盘电路来设计会比独立式键盘电路难一些,故选择独立式键盘电路比较合理。
表2独立式和矩阵式的的优缺点比较
键盘类型
优点
缺点
独立式
编程简单
一键一线,占用I/O口线多
矩阵式
占用I/O口线较少,尤其是在按键数目多的时候优势明显
编程比较复杂
5.2数码管显示电路
5.2.1LED数码管显示原理
LED(LightEmittingDiode)发光二极管缩写。
LED数码管是由发光二极管构成的。
常见的LED数码管为“8”字型的,共计8段。
它由七个条形发光二极管和一个小圆点发光二极管组成,每一段对应一个发光二极管。
一般来说分共阳极和共阴极两种接法,如图4所示为八段LED数码管结构及外形。
共阳极LED数码管的发光二极管的阳极连接在一起,公共阳极接正电压,当某个发光二极管的阴极接低电平时,发光二极管被点亮,相应的段被显示。
反之,共阴极发光二极管的阴极连在一起,通常公共阴极接地。
当阳极为高电平时,发光二极管点亮。
LED数码管的a至g七个发光二极管因接得电压不同而导致不同亮暗的组合就能形成不同的字形,这种组合称之为字形码,如表3所示为八段LED数码管的字形码表。
表3八段LED数码管的字形码表
显示字符
共阴极
共阳极
显示字符
共阴极
共阳极
0
3FH
C0H
b
7CH
83H
1
06H
F9H
C
39H
C6H
2
58H
A4H
d
5EH
A1H
3
4FH
B0H
E
79H
86H
4
66H
99H
F
71H
8EH
5
6DH
92H
H
76H
89H
6
7DH
82H
L
38H
C7H
7
07H
F8H
P
73H
8CH
8
7FH
80H
U
3EH
C1H
9
67H
90H
.
80H
7FH
A
77H
88H
5.2.2LED数码管静态显示
静态显示方式即无论多少位LED数码管,同时处于显示状态。
各位的共阴极(或共阳极)连接在一起并接地(或接+5V);每位的段码线(a~dp)分别与一个8位的I/O口锁存器输出相连。
如果送往各个LED数码管所显示字符的段码一经确定,则相应I/O口锁存器锁存的段码输出将维持不变,直到送入另一个字符的段码为止。
由此可知:
静态显示方式的显示无闪烁,亮度都较高,软件控制比较容易。
另外,在显示位数较多的情况下,所需的电流比较大,对电源的要求也就随之增高,这时一般都采用动态显示方式。
如图5所示为四位七段数码管静态显示电路。
5.2.3LED数码管动态显示
静态显示方式就是无论在任何时刻只有一个LED数码管处于显示状态,即单片机采用“扫描”方式控制各个数码管轮流显示。
在多位LED显示时,为简化硬件电路,通常将所有显示位的段码线的相应段并联在一起,由一个8位I/O口控制,而各位的共阳极或共阴极分别由相应的I/O线控制,形成各位的分时选通。
如图6所示为四位七段数码管动态显示电路。
动态显示的优点是硬件电路简单,显示器越多,优势越明显。
缺点是显示亮度不如静态显示的亮度高。
如果“扫描”速率较低,会出现闪烁现象。
5.2.4方案比较
对于以上两种数码管驱动电路的的优缺点比较如表4所示。
由于静态驱动方式的显示无闪烁,亮度较高,编程简单,加上本次设计的数码管显示电路只需要1个数码管,故选择静态驱动方式来显示数码管更为合理。
如图7所示为数码管显示电路,采用静态驱动方式和共阳极接法,满足本次设计要求。
表4两种数码管驱动电路的的优缺点比较
驱动方式
优点
缺点
静态显示
显示无闪烁,亮度较高,
编程简单
数码管越多,所需的电流越大,电源的要求越高
动态显示
电路简单,数码管越多,
优势越明显
不如静态显示的亮度高,
可能出现闪烁现象
5.3音频功放电路
如图8所示音频功放电路,它主要由音频集成功放芯片LM386和扬声器组成。
其中,LM386作为一种音频集成功放,具有自身功耗低、电压增益可调整、电源电压范围大、外接元件少和谐波失真小等优点,广泛应用于录音机和收音机之中。
电位器Rp是用来调节声音的大小。
5.4时钟-复位电路
5.4.1时钟电路
时钟频率直接影响单片机的速度,时钟电路的质量也直接影响单片机系统的稳定性。
常用的时钟电路有两种方式,一种是内部时钟方式,另一种是外部时钟方式。
AT89C51内部有一个用于构成振荡器的高增益反相放大器,输入端为芯片引脚XTAL1,输出端为引脚XTAL2。
这两个引脚跨接石英晶体振荡器和微调电容,构成一个稳定的自激振荡器,图9是AT89S51内部时钟方式的电路,C1和C2的典型值通常选择为30pF,石英晶体常选6MHz或12MHz的。
本设计采用内部时钟方式做时钟电路。
5.4.2复位电路
单片机的初始化操作,给复位脚RST加上大于2个机器周期(即24个时钟振荡周期)的高电平就使AT89C51复位。
这些操作都是由复位电路来实现。
在单片机的实用系统中,一般有两种复位操作形式:
上电复位和手动复位。
上电复位在单片机系统每次通电时执行。
上电时,电容C充电加给RST引脚一个短的高电平信号,此信号随着VCC对电容C的充电过程而逐渐回落,即RST引脚上的高电平持续时间取决于电容C充电时间。
为保证系统可靠复位,RST引脚上的高电平必须维持足够长的时间。
手动复位在系统出现操作错误或程序运行出错时使用。
在单片机系统运行过程中,按下复位键,高电平输入RST引脚,单片机被强制执行复位操作,系统可以退出错误运行状态,恢复正常工作。
由于本设计的需要,同时采用这两种复位方式,如图10所示复位电路。
5.5电源电路
当今社会大到超级计算机、小到袖珍计算器,所有的电子设备都必须在电源电路的支持下才能正常工作。
直流稳压电源在电源技术中占有十分重要的地位。
直流电源电路由降压变压器、全波整流、滤波、稳压电路构成,其组成结构如图11所示。
根据设计需要做+5V和+12V直流稳压电源电路,其电路图如图12和13所示。
交流电压
通过变压器T1降压得到
,然后由V7~V10四个整流二极管组成的电桥进行整流得到直流电压,再经由电解电容和非极性电容构成的滤波网络和三端稳压器LM7812和LM7805的稳压作用后,分别输出+12V和+5V的直流电压。
理论计算如下:
对A点有:
………(5-1)
的压降为
………(5-2)
………(5-3)
由式(5-1)、(5-2)、(5-3)可得:
………(5-4)
若要求将220V交流电压转换成直流电压
,由式(5-4)可知:
变压器T1的变比为
。
5.6整体电路
基于单片机AT89C51的电子琴电路由琴键控制电路、数码管显示电路、音频功放电路、时钟-复位电路和电源电路五部分所构成。
琴键控制电路采用了8输入与门芯片CD4068B,收集8个独立按键的开关状态信号,并触发单片机的外部中断来处理;而数码管显示电路负责显示按下的琴键所对应的键值;同时,音频功放电路也会播放琴键对应的音调;电源电路为整个电路提供能源。
整体电路图见附录1。
六、电子琴系统软件设计
系统功能的实现一般包括硬件部分和软件部分,一旦硬件确定下来,软件要实现的功能也随之确定。
而为使编程思路清晰,应先绘制程序流程图。
6.1系统硬件接口定义
系统硬件接口定义如表5所示。
表5系统硬件接口定义
引脚号
引脚名
接口说明
备注
39~32
P0.0~P0.7
数码管与单片机通信口
1~8
P1.0~P1.7
独立按键接口
12
INT0
外部中断源输入端
10
P3.0
控制蜂鸣器
6.2主函数
主函数流程图如图14所示。
利用模块化的思想,主函数只执行初始化函数、音频处理函数和数码管显示函数。
另外,键码的识别与刷新是通过中断函数来完成。
voidmain()
{
Init();
while
(1)
{
Sound_Player();//音频处理函数
LED_Display();//数码管显示键值
}
}
6.3初始化函数
初始化的流程框图如图15所示。
该函数对所需的I/O口、外部中断0、定时器0以及数码管进行初始化配置。
voidInit(void)
{
P0=0xff;//先将P0口置为1,即关闭数码管
Speaker=0;
IT0=1;//外部中断0边沿触发
EX0=1;//外部中断0允许
TMOD=0x01;//定时器方式1
ET0=1;//定时器0中断允许
TR0=0;//关定时器0
EA=1;//开总中断
}
6.4数码管显示函数
数码显示的流程框图如图16所示。
此函数根据键值扫描函数读取的键码,结合数码管显示出来。
若判断是音调键将会显示数字1~7其中之一;若判断是功能键将会显示字母A、b、C其中之一。
voidLED_Display(void)
{
if(Keycode>0&&Keycode<8)
P0=~table[Keycode];//Do~Si七个音调键分别显示1~7
else
if(Keycode==8)
P0=~table[Time+9];//特殊功能键分别显示A、b、C
TR0=0;//关定时器0
}
6.5中断函数
中断函数用到了外部中断和定时器中断。
键盘中断的流程框图如图17所示,当按键按下时,外部信号触发外部中断,执行键值扫描函数,读取对应的键值。
定时中断的流程框图如图18所示,定时器溢出中断后,进行重装载初值,同时执行相应的音频控制操作。
6.6键值扫描函数
由于本设计采用的是接触开关式按键,故不可避免存在机械抖动。
按键被按下是,其触点电压变化过程如图19所示。
这种抖动会使系统处于不稳定状态,故需要进行消抖处理。
抖动时间的长短和按键的机械特性有关,一般为5~10ms。
通常手动按下键然后立即释放,这个操作中稳定闭合的时间超过20ms,因此单片机在检测按键是否按下时都需要加上去抖动操作,有专门的去抖动电路或则芯片,但同用软件延时的方法也能轻易解决抖动问题,没必要添加多余的硬件。
本设计是用软件消抖方法编写一个消抖程序。
当按键按下去后,首先对其进行连续两次取样,如果两次都为低电平,则输出低电平;如果其中有一次高电平,则输出高电平。
键盘的每一行通过一个上拉电阻接高电平,当按键按下时,对应的I/O口线被拉低。
如表6所示按键编码关系表。
键值扫描函数的流程图如图20所示。
表6按键编码关系表
按键名称
键码(十六进制)
按键名称
键码(十六进制)
K1
0xfe
K5
0xef
K2
0xfd
K6
0xdf
K3
0xfb
K7
0xbf
K4
0xf7
K8
0x7f
voidKey_Scan(void)
{
uintkey;
key=P1;//读取P1口状态
switch(key)//键值
{
case0xfe:
//Do
{
Delayms(10);//消抖
if(key==0xfe)
{
Keycode=1;
while(P1!
=0xFF);//等待按键释放
}break;
}
…
}
}
6.7音频处理函数
乐曲由一些不同的音阶构成,而每个音阶对应着不同的频率,即利用单片机的定时器来产生所需要方波频率信号的组合,可构成所想要的乐曲。
本系统设计单片机配有12MHZ晶振,利用AT89C51的内部定时器使其工作定时器模式的工作方式1下,其对应的定时器初值计算公式为:
式中T为定时时间,是所需频率的倒数。
如表7所示为所需频率对应的定时器初值表(简称频率-初值表)。
如图21所示音频处理函数的流程图。
表7频率-初值表
音调
简谱(键值)
频率(Hz)
定时器初值(16进制)
备注
Do
1
523
0FBE9H
此处的定时器初值是在工作方式1和12MHZ晶振时算得的
Re
2
587
0FC5FH
Mi
3
659
0FCC1H
Fa
4
698
0FCEFH
So
5
754
0FD45H
La
6
880
0FD92H
Si
7
988
0FDD6H
voidSound_Player(void)
{
if(Flag==0)//Do~Si七个音调键
{
Flag=1;
switch(Keycode)
{
case1:
//Do
{
TH0code=0XFB;
TL0code=0XE9;
TH0=TH0code;//置初值
TL0=TL0code;
TR0=1;//开定时器0
Speaker=~Speaker;
break;
}
…
}
…
}}
七、电子琴系统调试
由于没有硬件设备,所以无法进行硬件调试,但这并不妨碍软件调试。
利用仿真软件Proteus和编程软件KeiluVision4进行调试程序。
7.1调试工具
Proteus软件是英国LabcenterElectronics公司研发的EDA工具软件。
它是一个集模拟电路、数字电路、模/数混合电路以及多种微控制器系统为一体的系统设计和仿真平台。
是目前同类软件中最先进、最完整的电子类仿真平台之一。
它真正实现了在计算机上完成从原理图、电路分析与仿真、单片机代码调试与仿真、系统测试与功能验证到PCB板生成的完整的电子产品研发过程。
最新的KeiluVision4IDE,旨在提高开发人员的生产力,实现更快,更有效的程序开发。
KeiluVision4引入了灵活的窗口管理系统,能够拖放到视图内的任何地方,包括支持多显示器窗口。
KeiluVision4在KeiluVision3IDE的基础上,增加了更多大众化的功能:
多显示器和灵活的窗口管理系统;系统浏览器窗口的显示设备外设寄存器信息;调试还原视图创建并保存多个调试窗口布局;多项目工作区简化与众多的项目。
7.2调试结果
利用Proteus对电路进行仿真分析,电子琴电路的仿真电路图如图22所示。
由于音频功放电路采用了LM386芯片,使得音频放大更加的稳定和没有杂音,进一步达到了实验效果。
但也一定瑕疵,按键按下后,延迟一会才有声音。
调试结果与设计的基本一致,如表8所示。
表8调试结果
按键编号
发声音调
数码显示内容
备注
S1
Do
1
S2
Re
2
S3
Mi
3
S4
Fa
4
S5
So
5
S6
La
6
S7
Si
7
S8
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于51单片机的电子琴设计毕业设计 精品 基于 51 单片机 电子琴 设计 毕业设计