电子琴.docx
- 文档编号:5435204
- 上传时间:2023-05-08
- 格式:DOCX
- 页数:30
- 大小:494.05KB
电子琴.docx
《电子琴.docx》由会员分享,可在线阅读,更多相关《电子琴.docx(30页珍藏版)》请在冰点文库上搜索。
电子琴
目录
绪论2
DXP功能介绍3
芯片介绍3
单片机功能介绍3
LM386介绍5
硬件设计6
晶振电路原理6
复位电路6
输入输出(I/O)引脚7
串行口设计8
硬件框图10
软件设计10
音乐产生的原理10
按键功能识别12
软件编程流程图13
系统调试14
调试环境14
调试步骤14
程序传输16
调试结果17
总结18
参考文献19
附录一20
附录二22
附录三23
绪论
单片微型计算机是大规模集成电路技术发展的产物,它具有高性能、高速度、体积小、价格低廉、稳定可靠、应用广泛的特点。
它的应用必定导致传统的控制技术从根本上发生变革。
因此,单片机的开发应用已成为高科技和工程领域的一项重大课题。
电子琴是现代电子科技与音乐结合的产物,是一种新型的键盘乐器。
它在现代音乐扮演着重要的角色,单片机具有强大的控制功能和灵活的编程实现特性,它已经溶入现代人们的生活中,成为不可替代的一部分。
本文的主要内容是用AT89S51单片机为核心控制元件,设计一个电子琴。
以单片机作为主控核心,与键盘、扬声器等模块组成核心主控制模块,在主控模块上设有16个按键和扬声器。
本文主要对使用单片机设计简易电子琴进行了分析,并介绍了基于单片机电子琴统硬件组成。
利用单片机产生不同频率来获得我们要求的音阶,最终可随意弹奏想要表达的音乐。
并且本文分别从原理图,主要芯片,各模块原理及各模块的程序的调试来详细阐述。
一首音乐是许多不同的音阶组成的,而每个音阶对应着不同的频率,这样我们就可以利用不同的频率的组合,即可构成我们所想要的音乐了,当然对于单片机来产生不同的频率非常方便,我们可以利用单片机的定时/计数器T0来产生这样方波频率信号,因此,我们只要把一首歌曲的音阶对应频率关系弄正确即可。
传统乐器的声音是通过机械的方法产生的,电子琴的声音是用“电”产生的。
振荡器是根据需要产生一定频率的振荡信号,振荡信号通过分频器分解成不同频率的信号输送到放大器,放大器将信号放大,推动扬声器发出声音。
键盘实际是一些开关,如果没有键盘,许多种频率的信号一齐进到放大器里,通过扬声器发出的声音就会乱七八糟,不成音乐。
按下键盘的一支键,就等于接通一只开关,只允许某一种频率的信号通过到放大器里去,扬声器就发出一个音来。
这样,按照一定的演奏规律来按键,就能奏出美妙的音乐来。
电源的任务是给各部分供电。
这次的电子琴是由7个按按钮,设计成7音符。
然后再用一个模拟音频放大模块来使音乐播出的声音变大。
DXP功能介绍
ProtelDXP在前版本的基础上增加了许多新的功能。
新的可定制设计环境功能包括双显示器支持,可固定、浮动以及弹出面板,强大的过滤和对象定位功能及增强的用户界面等。
ProtelDXP是第一个将所有设计工具集于一身的板级设计系统,电子设计者从最初的项目模块规划到最终形成生产数据都可以按照自己的设计方式实现。
ProtelDXP运行在优化的设计浏览器平台上,并且具备当今所有先进的设计特点,能够处理各种复杂的PCB设计过程。
通过设计输入仿真、PCB绘制编辑、拓扑自动布线、信号完整性分析和设计输出等技术融合,ProtelDXP提供了全面的设计解决方案。
整合式的元件与元件库在ProtelDXP2004中采用整合式的元件,在一个元件里连结了元件符号(Symbol)、元件包装(Footprint)、SPICE元件模型(电路仿真所使用的)、SI元件模型(电路板信号分析所使用的)。
版本控制可直接由Protel设计管理器转换到其他设计系统,这样设计者可方便地将ProtelDXP2004中的设计与其他软件共享。
如可以输入和输出DXP、DWG格式文件,实现和AutoCAD等软件的数据交换,也可以输出格式为Hyperlynx的文件,用于板级信号仿真。
多重组态的设计ProtelDXP2004支持单一设计多重组态。
对于同一个设计文件可指定要使用其中的某些元件或不使用其中的某些元件,然后产生网络表等文件。
重复式设计ProtelDXP2004提供重复式设计,类似重复层次式电路设计,只要设计其中一部分电路图,即可以多次使用该电路图,就象有很多相同电路图一样。
这项功能也支持电路板设计,包括由电路板反标注到电路图。
硬件设计
芯片介绍
单片机功能介绍
AT89S51是一个低功耗,高性能CMOS8位单片机,片内含4kBytesISP(In-systemprogrammable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISPFlash存储单元,功能强大的微型计算机的AT89S51可为许多嵌入式控制应用系统提供高性价比的解决方案。
AT89S51具有如下特点:
40个引脚(引脚图如图1-2所示),4kBytesFlash片内程序存储器,128bytes的随机存取数据存储器(RAM),32个外部双向输入/输出(I/O)口,5个中断优先级2层中断嵌套中断,2个16位可编程定时计数器,2个全双工串行通信口,看门狗(WDT)电路,片内时钟振荡器。
此外,AT89S51设计和配置了振荡频率可为0Hz并可通过软件设置省电模式。
空闲模式下,CPU暂停工作,而RAM定时计数器,串行口,外中断系统可继续工作,掉电模式冻结振荡器而保存RAM的数据,停止芯片其它功能直至外中断激活或硬件复位。
同时该芯片还具有PDIP、TQFP和PLCC等三种封装形式,以适应不同产品的需求。
图2-1管脚图
VCC(40):
+5V;GND(20):
接地;P0口(39-32):
P0口为8位漏极开路双向I/O口,每引脚可吸收8个TTL门电流;P1口(1-8):
P1口是从内部提供上拉电阻器的8位双向I/O口,P1口缓冲器能接收和输出4个TTL门电流;P2口(21-28):
P2口为内部上拉电阻器的8位双向I/O口,P2口缓冲器可接收和输出4个TTL门电流;P3口(10-17):
P3口是8个带内部上拉电阻器的双向I/O口,可接收和输出4个TTL门电流,P3口也可作为AT89C51的特殊功能口;RST(9):
复位输入。
当振荡器复位时,要保持RST引脚2个机器周期的高电平时间;ALE/PROG(30):
当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的低位字节,在FLASH编程期间,此引脚用于输入编程脉冲。
在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6,它可用作对外部输出的脉冲或用于定时目的,要注意的是,每当访问外部数据存储器时,将跳过1个ALE脉冲;PSEN(29):
外部程序存储器的选通信号。
在由外部程序存储器取指期间,每个机器周期2次PSEN有效,但在访问外部数据存储器时,这2次有效的PSEN信号将不出现;EA/VPP(31):
当EA保持低电平时,外部程序存储器地址为(0000H-FFFFH)不管是否有内部程序存储器。
FLASH编程期间,此引脚也用于施加12V编程电源(VPP);XTAL1(19):
反向振荡器放大器的输入及内部时钟工作电路的输入;XTAL2(18):
来自反向振荡器的输出。
LM386介绍
LM386是美国国家半导体公司生产的音频功率放大器,主要应用于低电压消费类产品。
LM386特性:
静态功耗低,约为4mA,可用于电池供电;工作电压范围宽,4V-12V或5V-18V;外围元件少;电压增益可调,20-200;低失真度。
LM386是一种音频集成功放,具有自身功耗低、电压增益可调整、电源电压范围大、外接元件少和总谐波失真小等优点,广泛应用于录音机和收音机之中。
图2-2LM386内部电路
LM386内部电路原理图如图2-2所示。
与通用型集成运放相类似,它是一个三级放大电路.第一级为差分放大电路,T1和T3、T2和T4分别构成复合管,作为差分放大电路的放大管;T5和T6组成镜像电流源作为T1和T2的有源负载;T3和T4信号从管的基极输入,从T2管的集电极输出,为双端输入单端输出差分电路。
使用镜像电流源作为差分放大电路有源负载,可使单端输出电路的增益近似等于双端输出电容的增益第二级为共射放大电路,T7为放大管,恒流源作有源负载,以增大放大倍数。
第三级中的T8和T9管复合成PNP型管,与NPN型管T10构成准互补输出级。
二极管D1和D2为输出级提供合适的偏置电压,可以消除交越失真。
引脚2为反相输入端,引脚3为同相输入端。
电路由单电源供电,故为OTL电路。
输出端(引脚5)应外接输出电容后再接负载。
电阻R7从输出端连接到T2的发射极,形成反馈通路,并与R5和R6构成反馈网络,从而引入了深度电压串联负反馈,使整个电路具有稳定的电压增益。
硬件设计
晶振电路原理
图3-1晶振电路图
P19:
时钟XTAL1脚,P18:
时钟XTAL2脚,XTAL1是片内振荡器的反相放大器输入端,XTAL2则是输出端,使用外部振荡器时,外部振荡信号应直接加到XTAL1,而XTAL2悬空。
内部方式时,时钟发生器对振荡脉冲二分频,如晶振为12MHz,时钟频率就为6MHz。
晶振的频率可以在1MHz-24MHz内选择。
电容取30PF左右。
型号同样为AT89C51的芯片,在其后面还有频率编号,有12,16,20,24MHz可选。
大家在购买和选用时要注意了。
如AT89C5124PC就是最高振荡频率为24MHz,40P6封装的普通商用芯片。
复位电路
在振荡器运行时,有两个机器周期(24个振荡周期)以上的高电平出现在此引脚时,将使单片机复位,只要这个脚保持高电平,51芯片便循环复位。
复位后P0-P3口均置1引脚表现为高电平,程序计数器和特殊功能寄存器SFR全部清零。
当复位脚由高电平变为低电平时,芯片为ROM的0000H处开始运行程序。
复位操作不会对内部RAM有所影响。
当8051通电,时钟电路开始工作,在RESET引脚上出现24个时钟周期以上的高电平,系统即初始复位。
什么叫复位?
复位是单片机重新执行程序代码的意思。
8051的复位方式可以是自动复位,也可以是手动复位,见下图。
此外,RESET还是一复用脚,Vcc掉电期间,此脚可接上备用电源,以保证单片机内部RAM的数据不丢失。
时钟与复位电路如下图所示。
图3-2时钟复位电路
输入输出(I/O)引脚
键盘可以分为两类:
非编码键盘和编码键盘。
非编码键盘是利用按键直接与单片机相连接而成,这种键盘通常使用在按键数量较少的场合。
使用这种键盘,系统功能通常比较简单,需要处理的任务较少,但是可以降低成本、简化电路设计。
常见的非编码键盘有两种结构:
独立式键盘和矩阵式键盘。
独立式键盘:
其特点是:
一键一线,各键相互独立。
每个按键各接一条I/O口线,通过检测I/O输入线的电平状态,可以很容易的判断哪个按键被按下。
这种键盘的优点是:
电路简单,各条检测线独立,识别按下按键的软件编写简单。
适用于键盘按键数目较少的场合,不适合用于键盘按键数目较多的场合,因为将占用较多的I/O口线。
矩阵式键盘:
这种键盘用于按键数目较多的场合。
本设计中的按键功能:
第一个按键发出do的音;第二个按键发出re的音;第三个按键发出m的音;第四个按键发出fa的音;第五个按键发出so的音;第六个按键发出la的音;第七个按键发出xi的音;第八个按键自动演奏歌曲《粉刷匠》。
P1.0-P1.7输入输出脚,称为P1口,是一个8位准双向I/O口。
内部不带上拉电阻,当外接上拉电阻时,P1口能以吸收电流的方式驱动四个LSTTL负载电路。
通常在使用时外接上拉电阻,用来驱动多个数码管。
P2.0-P2.7输入输出脚,称为P2口,是一个带内部上拉电阻的8位双向I/0口。
P2口能驱动4个LSTTL负载。
通常在使用时外不需要外接上拉电阻,就可以直接驱动发光二极管。
端口置1时,内部上拉电阻将端口拉到高电平,作输入用。
输入端口输出端口见下图。
图3-3键盘电路
图3-4显示电路
串行口设计
异步通信(asynchronouscommunication)
在异步通信中,数据通常以字符为单位组成字符帧传送。
字符帧由发送端一帧一帧的发送,通过传输线为接收设备一帧一帧的接收。
发送端和接收端可以有各自的时钟来控制数据的发送和接收,这两个时钟源彼此独立,互不同步。
在异步通信中,字符帧份额是和波特率是两个重要指标,由用户根据实际情况选定。
(1)字符帧(characterframe)
字符帧也叫数据帧,由起始位、数据位、奇偶校验位和停止位等四部分组成。
起始位:
位于字符帧开头,只占一位,始终为逻辑0低电平,用于向接收设备表示发送端开始发送一帧信息。
数据位:
紧跟起始位之后,用户根据情况可取5位、6位、7位或8位,低位在前高位在后。
若所传数据为ASCⅡ字符,则常取7位。
奇偶校验位:
位于数据位后,仅占一位,用于表征串行通信中采用奇校验还是偶校验,由用户根据需要决定。
停止位:
位于字符帧末尾,为逻辑“1”高电平,通常可取1位、1.5位或2位,用于向接收端表示一帧字符信息已发送完毕,也为发送下一帧字符做准备。
(2)波特率(baudrate)
波特率的定义为每秒钟传送二进制数码的位数,单位是bps,即位/秒。
波特率是串行通信的重要指标,用于表征数据传输的速度。
波特率越高,数据传输速度越快,但和字符的实际传输速率不同。
字符的实际传输速率是指每秒钟内所传字符帧的帧数,和字符帧格式有关。
同步通信(synchronouscommunication)
同步通信是一种连续串行传送数据的通信方式,一次通信只传送一帧信息。
它们均由同步字符、数据字符和校验字符CRC等三部分组成,其中,同步字符位于帧结构开头,用于确认数据字符的开始;数据字符在同步字符之后,个数不受限制,由所需传输的数据块长度决定;校验字符有1~2个,位于帧结构末尾,用于接收端对接收到的数据字符的正确性校验。
同步通信的数据传输速率较高,通常可达56Mbps或更高。
同步通信的缺点是要求发送时钟和接收时钟保持严格同步,故发送时钟除应和发送波特率保持一致外,还要求把它同时传送到接收端去。
在串行通信中,数据是在两个站之间传送的。
按照数据传送方向,串行通信可分为半双工和全双工两种制式。
MAX232芯片是美信公司专门为电脑的RS-232标准串口设计的接口电路,使用+5v单电源供电。
内部结构基本可分三个部分:
第一部分是电荷泵电路。
由1、2、3、4、5、6脚和4只电容构成。
功能是产生+12v和-12v两个电源,提供给RS-232串口电平的需要。
第二部分是数据转换通道。
由7、8、9、10、11、12、13、14脚构成两个数据通道。
其中13脚(R1IN)、12脚(R1OUT)、11脚(T1IN)、14脚(T1OUT)为第一数据通道。
8脚(R2IN)、9脚(R2OUT)、10脚(T2IN)、7脚(T2OUT)为第二数据通道。
TTL/CMOS数据从T1IN、T2IN输入转换成RS-232数据从T1OUT、T2OUT送到电脑DP9插头;DP9插头的RS-232数据从R1IN、R2IN输入转换成TTL/CMOS数据后从R1OUT、R2OUT输出。
第三部分是供电。
15脚DNG、16脚VCC(+5v)如下图所示。
图3-5串口电路
硬件框图
单片机电子琴电路由AT89C51芯片、复位电路、时钟电路、传送电路、键盘电路和发音电路六个部分组成,各部分有自己独立的功能,如下图所示。
图3-6硬件框图
软件设计
音乐产生的原理
一首音乐是许多不同的音阶组成的,而每个音阶对应着不同的频率,这样我们就可以利用不同的频率的组合,即可构成我们所想要的音乐了,当然对于单片机来产生不同的频率非常方便,我们可以利用单片机的定时/计数器T0来产生这样方波频率信号,因此,我们只要把一首歌曲的音阶对应频率关系正确即可。
若要产生音频脉冲,只要算出某一音频的周期(1/频率),再将此周期除以2,即为半周期的时间。
利用定时器计时半周期时间,每当计时终止后就将P1.0反相,然后重复计时再反相。
就可在P1.0引脚上得到此频率的脉冲。
利用AT89C51的内部定时器使其工作计数器模式(MODE1)下,改变计数值TH0及TL0以产生不同频率的方法产生不同音阶,例如,频率为523Hz,其周期T=1/523=1912μs,因此只要令计数器计时956μs/1μs=956,每计数956次时将I/O反相,就可得到中音DO(523Hz)。
计数脉冲值与频率的关系式是:
N=fi÷2÷f式中,N是计数值;fi是机器频率(晶体振荡器为12MHz时,其频率为1MHz);fr是想要产生的频率。
其计数初值T的求法如下:
T=65536-N=65536-fi÷2÷fr
例如:
设K=65536,fi=1MHz,求低音DO(261Hz)、中音DO(523Hz)、高音DO(1046Hz)的计数值。
T=65536-N=65536-fi÷2÷fr=65536-1000000÷2÷fr=65536-500000/fr
低音DO的T=65536-500000/262=63627
中音DO的T=65536-500000/523=64580
高音DO的T=65536-500000/1046=65059
单片机12MHZ晶振,高中低音符与计数T0相关的计数值如表下表所示
音符
频率(HZ)
简谱码(T值)
音符
频率(HZ)
简谱码(T值)
低1 DO
262
63628
#4FA#
740
64860
#1 DO#
277
63731
中5SO
784
64898
低2 RE
294
63835
#5SO#
831
64934
#2RE#
311
63928
中6LA
880
64968
低3M
330
64021
#6
932
64994
低4FA
349
64103
中7SI
988
65030
#4FA#
370
64185
高1DO
1046
65058
低5SO
392
64260
#1DO#
1109
65085
#5SO#
415
64331
高2RE
1175
65110
低6LA
440
64400
#2RE#
1245
65134
#6
466
64463
高3M
1318
65157
低7SI
494
64524
高4FA
1397
65178
中1DO
523
64580
#4FA#
1480
65198
#1DO#
554
64633
高5SO
1568
65217
中2RE
587
64684
#5SO#
1661
65235
#2RE#
622
64732
高6LA
1760
65252
中3M
659
64777
#6
1865
65268
中4FA
698
64820
高7SI
1967
65283
表4-1音符表
我们要为这个音符建立一个表格,单片机通过查表的方式来获得相应的数据低音0-19之间,中音在20-39之间,高音在40-59之间
TABLE:
61719,62435,62506,62679,62985,63263,63512,
63628,63835,64021,64103,64260,64400,64524,
64580,64684,64777,64820,64898,64968,65030、
音乐的音拍,一个节拍为单位(C调)
曲调值
DELAY
曲调值
DELAY
调4/4
125ms
调4/4
62ms
调3/4
187ms
调3/4
94ms
调2/4
250ms
调2/4
125ms
表4-1延时表
对于不同的曲调我们也可以用单片机的另外一个定时/计数器来完成。
琴键处理程序,根据检测到得按键值,查询音律表,给计时器赋值,发出相应频率的声音。
对音调的控制:
根据不同的按键,对定时器T1送入不同的初值,调节T1的溢出时间,这样就可以输出不同音调频率的方波。
不同音调下各个音阶的定时器。
在这个程序中用到了两个定时/计数器来完成的。
其中T0用来产生音符频率,T1用来产生音拍。
按键功能识别
DO:
MOVR6,#127
LJMPOUTPUT
RE:
MOVR6,#113
LJMPOUTPUT
MI:
MOVR6,#100
LJMPOUTPUT
FA:
MOVR6,#95
LJMPOUTPUT
SO:
MOVR6,#85
LJMPOUTPUT
LA:
MOVR6,#75
LJMPOUTPUT
SI:
MOVR6,#67
LJMPOUTPUT
DOH:
MOVR6,#63
LJMPOUTPUT
软件编程流程图
系统调试
调试环境
此次调试是在工训415,利用串口与电子琴相连,运用keil软件进行编程的,再通过计算机将编写好的程序通过串口输入到单片机里去执行。
调试步骤
打开keil软件,出现如图7-1所示界面
图5-1
单击Project打开NewProject出现如图7-2所示界面,取完名字后保存
图5-2
保存后弹出如图所示界面,在Atmel下选择AT89S52
图5-3
点击File打开New,并以.c为后缀进行保存
图5-4
右键单击SourceGroup1打开AddFileToGroup‘SourceGroup1’,将保存的文件打开,单击Add,将文件添加进去,如图所示
图5-5
程序传输
打开STC_ISP_V483,出现如图所示界面
图5-6
选择单片机的型号STC89C52RC,再打开程序文件,最后点击Download/下载,等待程序传送完毕即可。
调试结果
调试时自己犯了一个很低级的错误,当我编完程序且编译完后,本想打开文件进行传送程序,可是原来保存的文件没有生成text文件,我很是不理解,因为我每部都做了,后来让同学帮我看看问题的所在,原来是忘了添加文件。
其实当我们做一些事情时往往忽略细节,有时候一个细节或许能够决定成败。
总结
将程序传入芯片,调试成功后,可任意弹奏自己想要的旋律。
本研究通过制作电子琴,将几个模块很好的融合起来,对使用单片机设计简易电子琴进行了分析,并介绍了基于单片机电子琴统硬件组成。
利用单片机产生不同频率来获得我们要求的音阶,最终可随意弹奏想要表达的音乐。
说明一首音乐是许多不同的音阶组成的,而每个音阶对应着不同的频率,这样我们就可以利用不同的频率的组合,即可构成我们所想要的音乐了,于是我们可以利用单片机的定时/计数器T0来产生这样方波频率信号,因此,我们只要把一首歌曲的音阶对应频率关系弄正确即可,然后我们利用功放电路来将音乐声音放大,同时通过显示模块来确知自己所弹的音符。
不足之处有:
1.可弹奏的音符数较少,只能在一定范围内满足用户需要。
可通过改进键盘识别模块和发生模块来增加其复杂度。
2.音量不可调。
可通过改进功放电路,即在lm386的1脚和8脚间增加一直外界电阻和电容,将3脚与地之间的电阻换为10k的变阻,即可调节其放大增益。
参考文献
[1]陈明荧.8051单片机课程设计实训教材[M].北京:
清华大学出版社,2003年9月.
[2]徐新艳.单片机原理、应用与实践[M].北京:
高等教育出版社,2005年3
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 电子琴