《51单片机简易电子琴设计》由会员分享,可在线阅读,更多相关《51单片机简易电子琴设计(26页珍藏版)》请在金锄头文库上搜索。
1、word毕 业 设 计 论 文课题名称:指导教师:系 别:专 业:班 级:姓 名:摘要音乐一直都是人类情感表达的一个重要媒介,随着社会的进步与开展,音乐在人类的生活与学习中的作用越发不可无视。电子琴也是实现播放音乐的一个途径。电子琴是现代电子科技与音乐结合的产物,是一种新型的键盘乐器,它在音乐演奏中已成为不可缺少的一局部。单片机是一个具有功能强大和编程灵活性的控制器,它已广泛应用于现代人们的生活中,扮演着重要的角色。本设计主要是使用AT89C51单片机与单片机C语言,用AT89S51单片机为核心控制元件,设计一个电子琴。以单片机作为主控核心,与键盘、扬声器等模块组成核心主控制模块,在主控模块上
2、设有16个按键和扬声器。在PROTEUS仿真平台上实现功能仿真,同时还增加了音乐播放功能。本文中给出了该系统设计的硬件电路,软件设计等。其次,详细阐述了程序的各个模块和实现过程。本设计具有硬件电路简单、功能完善、控制可靠、运行稳定等特点,具有一定的实用性。关键词: 单片机;电子琴;PROTEUS;KEIL;C语言1. 引言单片微型计算机是大规模集成电路技术开展的产物,属第四代电子计算机,它具有高性能、高速度、体积小、价格低廉、稳定可靠、应用广泛的特点。它的应用必定导致传统的控制技术从根本上发生变革。因此,单片机的开发应用已成为高科技和工程领域的一项重大课题。电子琴是现代电子科技与音乐结合的产物
3、,是一种新型的键盘乐器。它在现代音乐扮演着重要的角色。简易电子琴是电声乐队的中坚力量,常用于独奏主旋律并伴以丰富的和声。还常作为独奏乐器出现,具有鲜明时代特色。但电子琴的局限性也是十清楚显:旋律与和声缺乏音量变化,过于协和、单一;在模仿各类馆、弦乐器时,音色还不够逼真,模仿提琴类乐器的音色时,失真度更大,还需要不断改良。单片机具有强大的控制功能和灵活的编程实现特性,它已经溶入现代人们的生活中,成为不可替代的一局部。本文的主要容是用AT89S51单片机为核心控制元件,设计一个电子琴。以单片机作为主控核心,与键盘、扬声器等模块组成核心主控制模块,在主控模块上设有16个按键和扬声器。对使用单片机设计
4、简易电子琴进展了分析,并介绍了基于单片机电子琴统硬件组成。利用单片机产生不同频率来获得我们要求的音阶,最终可随意弹奏想要表达的音乐。并且本文分别从原理图,主要芯片,各模块原理与各模块的程序的调试来详细阐述。一首音乐是许多不同的音阶组成的,而每个音阶对应着不同的频率,这样我们就可以利用不同的频率的组合,即可构成我们所想要的音乐了,当然对于单片机来产生不同的频率非常方便,我们可以利用单片机的定时/计数器T0来产生这样方波频率信号,因此,我们只要把一首歌曲的音阶对应频率关系弄正确即可。这次的电子琴是由4*4组成16个按钮矩阵,设计成16个音。然后再用一个音频放大模块来使音乐播出的声音变大。通过这16
5、个键的随意组合可随意弹奏想要表达的音乐,使用很简单。该系统通过电子琴按键随意键入所要表达的音符,作为电平送给主体电路,中央处理器通过识别,解码输出音符,在扬声器中发出有效的声音。通过这样可以不断的弹奏音乐。嵌入式电路,按键电路,LED显示电路和两个功能键组成,通过功能键可以选择播放音乐。其主要模块由五个局部组成,具体关系如图2.1所示。本系统的电路根本模块:51单片机中心、矩阵键盘模块、显示模块、发音模块、功能选择模块。打开电子琴电源开关后,电子琴默认为弹奏状态,弹奏显示灯点亮,数码管显示为0。按下矩阵键盘中的任意键,扬声器发相应的音调,数码管显示对应的数字。按下播放按钮,电子琴处于自动播放状
6、态,播放显示灯点亮,此时,按下矩阵键盘中的任意键,扬声器发出存储在单片机部的对应的乐曲,数码管显示对应的按键数字。再按弹奏/停止键,音乐停止。弹奏显示灯点亮。此时系统又处于弹奏状态。3硬件分析将设计的电子琴硬件局部进展模块化设计,主要分以下模块:1矩阵键盘模块:系统采用4*4矩阵键盘。2显示模块:系统采用LED显示管显示。3功能显示模块:采用发光二极管显示弹奏、播放两种状态。4发音模块:采用扬声器发音。5控制中心模块:AT89C51单片机。图3.1 电子琴电路图3.2 AT89C51单片机3.2.1 AT89C51简介AT89S51是一个低功耗,高性能CMOS 8位单片机,片含4k Bytes
7、 ISP(In-system programmable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统与80C51引脚结构,芯片集成了通用8位中央处理器和ISP Flash存储单元,功能强大的微型计算机的AT89S51可为许多嵌入式控制应用系统提供高性价比的解决方案,。外形与引脚排列如如下图3.2所示。图3.2 AT89C51单片机引脚分配图3.22 AT89C51特征1有40个引脚24K字节可编程闪烁存储器3128 字节的随机存取数据存储器4两个16位定时器/计数器532个外部双向输入/输出I/O口65个中
8、断源7与MCS-51 兼容82个可编程串行通道9片振荡器和时钟电路此外,AT89S51设计和配置了振荡频率可为0Hz并可通过软件设置省电模式。空闲模式下,CPU暂停工作,而RAM定时计数器,串行口,外中断系统可继续工作,掉电模式冻结振荡器而保存RAM的数据,停止芯片其它功能直至外中断激活或硬件复位。同时该芯片还具有PDIP、TQFP和PLCC等三种封装形式,以适应不同产品的需求。3.2.3 AT89C51引脚说明VCC:供电电压。GND:接地。P0口3932:P0口为8位漏极开路双向I/O口,每引脚可吸收8个TTL门电流; P1口18:P1口是从部提供上拉电阻器的8位双向I/O口,P1口缓冲器
9、能接收和输出4个TTL门电流; P2口2128:P2口为部上拉电阻器的8位双向I/O口,P2口缓冲器可接收和输出4个TTL门电流; P3口1017:P3口是8个带部上拉电阻器的双向I/O口,可接收和输出4个TTL门电流,P3口也可作为AT89C51的特殊功能口; RST9:复位输入。当振荡器复位时,要保持RST引脚2个机器周期的高电平时间; ALE/PROG30:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的低位字节,在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6,它可用作对外部输出的脉冲或用于定时目的,要注意
10、的是,每当访问外部数据存储器时,将跳过1个ALE脉冲; PSEN29:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期2次PSEN有效,但在访问外部数据存储器时,这2次有效的PSEN信号将不出现; EA/VPP31:当EA保持低电平时,外部程序存储器地址为0000HFFFFH不管是否有部程序存储器。FLASH编程期间,此引脚也用于施加12V编程电源VPP; XTAL119:反向振荡器放大器的输入与部时钟工作电路的输入; XTAL218:来自反向振荡器的输出。3.3 LM386简介3.3.1 LM386LM386是美国国家半导体公司生产的音频功率放大器,主要应用于低电压消费类产
11、品。LM386特性: 1静态功耗低,约为4mA,可用于电池供电;2工作电压围宽,4V-12V或5V-18V;3外围元件少; 4电压增益可调,20-200;5低失真度; LM386是一种音频集成功放,具有自身功耗低、电压增益可调整、电源电压围大、外接元件少和总谐波失真小等优点,广泛应用于录音机和收音机之中。图3.3.1 LM386部电路原理图LM386部电路原理图如上图3.3.1所示。与通用型集成运放相类似,它是一个三级放大电路。第一级为差分放大电路,T1和T3、T2和T4分别构成复合管,作为差分放大电路的放大管;T5和T6组成镜像电流源作为T1和T2的有源负载;T3和T4信号从管的基极输入,从
12、T2管的集电极输出,为双端输入单端输出差分电路。使用镜像电流源作为差分放大电路有源负载,可使单端输出电路的增益近似等于双端输出电容的增益。 第二级为共射放大电路,T7为放大管,恒流源作有源负载,以增大放大倍数。 第三级中的T8和T9管复合成PNP型管,与NPN型管T10构成准互补输出级。二极管D1和D2为输出级提供适宜的偏置电压,可以消除交越失真。引脚2为反相输入端,引脚3为同相输入端。电路由单电源供电,故为OTL电路。输出端引脚5应外接输出电容后再接负载。 电阻R7从输出端连接到T2的发射极,形成反应通路,并与R5和R6构成反应网络,从而引入了深度电压串联负反应,使整个电路具有稳定的电压增益
13、。3.3.2 LM386的引脚图LM386引脚图引脚2为反相输入端,引脚3为同相输入端;引脚5为输出端;引脚6和4分别为电源和地;引脚1和8为电压增益设定端;使用时在引脚7和地之间接旁路电容,通常取10uF。此放大电路由键盘输出的音频信号控制,通过输出的上下电平信号来控制扬声器的声音大小。在键盘中按键数量较多时,为了减少I/O口的占用,通常将按键排列成矩阵形式。在矩阵式键盘中,每条水平线和垂直线在交叉处不直接连通,而是通过一个按键加以连接。这样,一个端口如P1口就可以构成4*4=16个按键,比之直接将端口线用于键盘多出了一倍,而且线数越多,区别越明显,比如再多加一条线就可以构成20键的键盘,而
14、直接用端口线如此只能多出一键9键。由此可见,在需要的键数比拟多时,采用矩阵法来做键盘是合理的。矩阵式结构的键盘显然比直接法要复杂一些,识别也要复杂一些,本系统中的矩阵键盘中,列线通过电阻接正电源,并将行线所接的单片机的I/O口作为输出端,而列线所接的I/O口如此作为输入。这样,当按键没有按下时,所有的输出端都是高电平,代表无键按下。行线输出是低电平,一旦有键按下,如此输入线就会被拉低,这样,通过读入输入线的状态就可得知是否有键按下了。键盘接口必须具有去抖动、防串键、按键识别和键码产生4个根本功能。1去抖动:每个按键在按下或松开时,都会产生短时间的抖动。抖动的持续时间与键的质量相关,一般为520
15、mm。所谓抖动是指在识别被按键是必须避开抖动状态,只有处在稳定接通或稳定断开状态才能保证识别正确无误。去抖问题可通过软件延时或硬件电路解决。2防串键:防串键是为了解决多个键同时按下或者前一按键没有释放又有新的按键按下时产生的问题。常用的方法有双键锁定和N键轮回两种方法。双键锁定,是当有两个或两个以上的按键按下时,只把最后释放的键当作有效键并产生相应的键码。N键轮回,是当检测到有多个键被按下时,能根据发现它们的顺序依次产生相应键的键码。 3被按键识别:如何识别被按键是接口解决的主要问题,一般可通过软硬结合的方法完成。常用的方法有行扫描法和线反转法两种。行扫描法的根本思想是,由程序对键盘逐行扫描,通过检测到的列输出状态来确定闭合键,为此,需要设置入口、输出口一