单片机电子琴16键.docx
- 文档编号:12456680
- 上传时间:2023-04-19
- 格式:DOCX
- 页数:33
- 大小:490.97KB
单片机电子琴16键.docx
《单片机电子琴16键.docx》由会员分享,可在线阅读,更多相关《单片机电子琴16键.docx(33页珍藏版)》请在冰豆网上搜索。
单片机电子琴16键
上海电机学院
课程设计报告
课题爱心电子琴
学院(系)电气学院
专业电气工程及其自动化
年级
学号
姓名
导师
定稿日期:
2011-7-7
摘要
电子琴是现代电子科技与音乐结合的产物,是一种新型的键盘乐器。
它在现代音乐扮演着重要的角色,单片机具有强大的控制功能和灵活的编程实现特性,它已经溶入现代人们的生活中,成为不可替代的一部分。
本文的主要内容是用AT89c51单片机为核心控制元件,设计一个电子琴。
以单片机作为主控核心,与键盘、扬声器等模块组成核心主控制模块,在主控模块上设有16个按键和扬声器。
本系统运行稳定,其优点是硬件电路简单,软件功能完善,控制系统可靠,性价比较高等,具有一定的实用和参考价值。
关键字:
单片机89C51LM386
Abstract
Electronicorganisamodernelectronicmusictechnologyandtheproductisanewtypeofkeyboardinstruments.Itplayedanimportantroleinmodernmusic.MCUhaspowerfulcontrolfunctionsandflexibleprogrammingcharacteristics.Ithasconvergedwithmodernpeople'slives,becomeanirreplaceablepart.ThemaincontentisAT89C51controlofthecorecomponents,designofaelectronicorgan.MCUasahosttothecore,withthekeyboard,speakerandothercoremodules.Inthemaincontrolmodulehas16keysandaspeaker.Thesystemissteady,itssimplehardwarecircuits,softwarefunctions,reliabilityofcontrolsystemandhighcostperformanceisitsadvantages.Italsohascertainpracticalandreferencevalue.
Keywords:
MCU89C51LM386
绪论
随着大规模集成电路的出现和发展,芯片生产厂家把中央处理器CPU,随机存取内存RAM,只读存储器ROM,定时器/计数器以及I/O接口电路等主要计算机部件,集成在一块集成电路芯片(硅片)上,形成芯片级计算机,称为单片微型计算机,直译为单片机。
单片机虽只是一个芯片,但从组成和功能上看,它已具有了微机系统的含义,又称微型处理部件MCU(MicroControllerUnit),单片机商品名称为微控制器单元。
虽然单片机出现的历史并不长,但发展十分迅猛,在集成度、功能、速度、可靠性、应用领域等全方位向更高水平发展。
目前单片机已用于工业控制、机电一体化设备、仪器仪表、信号处理、现代兵器、交通能源、商用设备、医疗设备及家用电器等各个领域,随着单片机性能的不断提高,它的应用将会更加广泛。
单片机技术发展非常快,所以目前的产品都致力于在功能全面、技术先进、操作简便、安全可靠、价格合理等方面进行仔细研究,精心设计;及时掌握最新的单片机技术,在条件允许的情况下,尽可能地利用最新的单片机技术来研制其应用系统,再利用单片机体积小、价格低、功能强等特点,以保证所设计的产品在未来的一段时间内仍具生命力。
在生活和生产的各个领域中,凡是有自动控制要求的地方都会有单片机的身影出现;从简单到复杂,从空中、地面到地下,凡是能想象到的地方几乎都有使用单片机的需求。
现在,尽管单片机的应用已经很普遍了,但仍有许多可以用单片机控制而尚未实现的项目,因此,单片机的应用大有可以想象和拓展的空间。
单片机的应用有利于产品的小型化、多功能化和智能化,有助于提高劳动效率,减轻劳动强度,提高产品质量,改善劳动环境,减少能源和材料消耗,保证安全等。
但是,单片机应用的意义绝不仅限于它的广阔范围以及所带来的经济效益上,更重要的意义还在于:
单片机的应用正从根本上改变着传统的控制系统设计思想和设计方法。
从前必须由模拟电路或数字电路实现的大部分控制功能,现在已能使用单片机通过软件(编程序)方法实现了。
这种以软件取代硬件并能提高系统性能的控制系统“软化”技术,称之为微控制技术。
微控制技术是一种全新的概念,是对传统控制技术的一次革命。
随单片机应用的推广普及,微控制技术必将不断发展、日益完善和更加充实。
简易电子琴系统就是以单片机为主要元器件设计的一个简易电子琴,这只是单片机应用的一个点,由点及面,希望可以更好的了解和应用单片机技术。
之所以以单片机电子琴为选题,目的在于从日常生活能接触到的细微处着手,通过理论与实践的结合,更明确自己的所学所用,也在实践中发现理论的不足,对目前日益广泛应用的单片机有了更加理性化和感性化的认识,使理论和实践相得益彰。
通过单片机电子琴这个选题,更深层次的了解了单片机技术,以前只是有理论,实践的机会不是很多,在作单片机电子琴这个选题的过程中,更加熟练的掌握了一些单片机芯片的应用,也解决了很多以前理论和实践脱节的问题,可谓对单片机的认识有了一个小的飞跃。
第一章总体方案
1.1系统设计要求
本系统分为两个部分,一个是键盘弹入,另一个就是电子琴演奏。
关于声音的处理,使用单片机C语言,利用定时器来控制频率,而每个音符的符号只是存在我自己定义的表中。
具体要求如下:
1.要求达到电子琴的基本功能,可以用弹奏出简单的乐曲。
2.用键盘作出电子琴的按键,每键代表一个音符。
3.各音符按一定的顺序排列,必须符合电子琴的按键排列顺序。
5.弹奏电子琴时能播放出准确的声音
1.2电子琴系统的组成
单片机因体积小、功能强、价格低廉而得到广泛应用。
AT89C51单片机设计微型电子琴的方法,仅需AT89C51最小系统,扩展一组矩阵键盘,再接一个音频放大电路。
声音输出部分:
声音实际上是有固定周期的信号。
本文介绍用AT89C51的两个定时器(如T0,T1)控制,在P2.0脚上输出方波周期信号,产生乐音,通过矩阵键盘按键产生不同的音符,由此操作人员可以随心所欲的弹奏自己所喜爱的乐曲,这样就做出了一台微型电子琴。
由于一首音乐是许多不同的音阶组成的,而每个音阶对应着不同的频率,这样我们就可以利用不同的频率的组合,即可弹奏出我们所想要的音乐了,当然对于单片机来产生不同的频率非常方便,我们可以利用单片机的定时/计数器T0来产生这样方波频率信号,因此,我们只要把一首歌曲的音阶对应频率关系弄正确即可。
演奏中,每一音符对应着确定的频率,我们将每一音符的时间常数和其相应的节拍常数作为一组,按顺序将乐曲中的所有常数排列成一个表,然后由查表程序依次取出,产生音符并控制节奏,就可以实现演奏效果。
电子琴弹奏部分:
实际上就是把每个按键所对应的值经过处理后发给单片机,再在单片机内把数字当作指针指向所对应的音符。
1.3系统框图
该系统通过电子琴按键随意键入所要表达的音符,作为电平送给主体电路,中央处理器通过识别,解码输出音符,在扬声器中发出有效的声音。
通过这样可以不断的弹奏音乐。
嵌入式电路,按键电路,音频放大电路。
其主要模块由三个部分组成,具体关系如图2-1所示:
图1-1电子琴框图
上图即为此次设计中的电子琴的硬件结构图,我们运用单片机的最小系统,用P0口的高四位和P0口的低四位作4X4矩阵式按键的接口,用P2.0作信号输出口。
第二章硬件简介
图2-1AT89C51
2.1AT89C51
2.1.1AT89C51简介
AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROM—FlashProgrammableandErasableReadOnlyMemory)的低电压,高性能CMOS8位微处理器,俗称单片机。
AT89C51是一种带2K字节闪烁可编程可擦除只读存储器的单片机。
单片机的可擦除只读存储器可以反复擦除100次。
该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。
由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。
AT89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。
外形及引脚排列如图3-1所示。
2.1.2主要的功能特性
·与MCS-51兼容
·4K字节可编程闪烁存储器
·寿命:
1000写/擦循环
·数据保留时间:
10年
·全静态工作:
0Hz-24MHz
·三级程序存储器锁定
·128×8位内部RAM
·32可编程I/O线
·两个16位定时器/计数器
·5个中断源
·可编程串行通道
·低功耗的闲置和掉电模式
·片内振荡器和时钟电路
2.1.3管脚功能
VCC:
供电电压。
GND:
接地。
P0口:
P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。
当P1口的管脚第一次写1时,被定义为高阻输入。
P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。
在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。
P1口:
P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。
P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。
在FLASH编程和校验时,P1口作为第八位地址接收。
P2口:
P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。
并因此作为输入时,P2口的管脚被外部拉低,将输出电流。
这是由于内部上拉的缘故。
P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。
在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。
P2口在FLASH编程和校验时接收高八位地址信号和控制信号。
P3口:
P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。
当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。
作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。
P3口也可作为AT89C51的一些特殊功能口,如下表所示:
口管脚备选功能
P3.0RXD(串行输入口)
P3.1TXD(串行输出口)
P3.2/INT0(外部中断0)
P3.3/INT1(外部中断1)
P3.4T0(记时器0外部输入)
P3.5T1(记时器1外部输入)
P3.6/WR(外部数据存储器写选通)
P3.7/RD(外部数据存储器读选通)
P3口同时为闪烁编程和编程校验接收一些控制信号。
RST:
复位输入。
当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。
ALE/PROG:
当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。
在FLASH编程期间,此引脚用于输入编程脉冲。
在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。
因此它可用作对外部输出的脉冲或用于定时目的。
然而要注意的是:
每当用作外部数据存储器时,将跳过一个ALE脉冲。
如想禁止ALE的输出可在SFR8EH地址上置0。
此时,ALE只有在执行MOVX,MOVC指令是ALE才起作用。
另外,该引脚被略微拉高。
如果微处理器在外部执行状态ALE禁止,置位无效。
/PSEN:
外部程序存储器的选通信号。
在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。
但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。
/EA/VPP:
当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。
注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。
在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。
XTAL1:
反向振荡放大器的输入及内部时钟工作电路的输入。
XTAL2:
来自反向振荡器的输出。
振荡器特性:
XTAL1和XTAL2分别为反向放大器的输入和输出。
该反向放大器可以配置为片内振荡器。
石晶振荡和陶瓷振荡均可采用。
如采用外部时钟源驱动器件,XTAL2应不接。
有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。
2.1.4芯片擦除
整个PEROM阵列和三个锁定位的电擦除可通过正确的控制信号组合,并保持ALE管脚处于低电平10ms来完成。
在芯片擦操作中,代码阵列全被写“1”且在任何非空存储字节被重复编程以前,该操作必须被执行。
此外,AT89C51设有稳态逻辑,可以在低到零频率的条件下静态逻辑,支持两种软件可选的掉电模式。
在闲置模式下,CPU停止工作。
但RAM,定时器,计数器,串口和中断系统仍在工作。
在掉电模式下,保存RAM的内容并且冻结振荡器,禁止所用其他芯片功能,直到下一个硬件复位为止。
图2-2AT89c51单片机最小系统
2.2矩阵式键盘的识别
2.2.1.矩阵式键盘的结构与工作原理
在键盘中按键数量较多时,为了减少I/O口的占用,通常将按键排列成矩阵形式。
在矩阵式键盘中,每条水平线和垂直线在交叉处不直接连通,而是通过一个按键加以连接。
这样,一个端口(如P1口)就可以构成4*4=16个按键,比之直接将端口线用于键盘多出了一倍,而且线数越多,区别越明显,比如再多加一条线就可以构成20键的键盘,而直接用端口线则只能多出一键(9键)。
由此可见,在需要的键数比较多时,采用矩阵法来做键盘是合理的。
矩阵式结构的键盘显然比直接法要复杂一些,识别也要复杂一些,上图中,列线通过电阻接正电源,并将行线所接的单片机的I/O口作为输出端,而列线所接的I/O口则作为输入。
这样,当按键没有按下时,所有的输出端都是高电平,代表无键按下。
行线输出是低电平,一旦有键按下,则输入线就会被拉低,这样,通过读入输入线的状态就可得知是否有键按下了。
具体的识别及编程方法如下所述。
2.2.2.矩阵式键盘的按键识别方法
确定矩阵式键盘上何键被按下介绍一种“行扫描法”。
行扫描法行扫描法又称为逐行(或列)扫描查询法,是一种最常用的按键识别方法,如上图所示键盘,介绍过程如下。
1、判断键盘中有无键按下将全部行线Y0-Y3置低电平,然后检测列线的状态。
只要有一列的电平为低,则表示键盘中有键被按下,而且闭合的键位于低电平线与4根行线相交叉的4个按键之中。
若所有列线均为高电平,则键盘中无键按下。
2、判断闭合键所在的位置在确认有键按下后,即可进入确定具体闭合键的过程。
其方法是:
依次将行线置为低电平,即在置某根行线为低电平时,其它线为高电平。
在确定某根行线位置为低电平后,再逐行检测各列线的电平状态。
若某列为低,则该列线与置为低电平的行线交叉处的按键就是闭合的按键。
2.2.3.键盘接口必须具有的4个基本功能。
(1)去抖动:
每个按键在按下或松开时,都会产生短时间的抖动。
抖动的持续时间与键的质量相关,一般为5—20mm。
所谓抖动是指在识别被按键是必须避开抖动状态,只有处在稳定接通或稳定断开状态才能保证识别正确无误。
去抖问题可通过软件延时或硬件电路解决。
(2)防串键:
防串键是为了解决多个键同时按下或者前一按键没有释放又有新的按键按下时产生的问题。
常用的方法有双键锁定和N键轮回两种方法。
双键锁定,是当有两个或两个以上的按键按下时,只把最后释放的键当作有效键并产生相应的键码。
N键轮回,是当检测到有多个键被按下时,能根据发现它们的顺序依次产生相应键的键码。
(3)被按键识别:
如何识别被按键是接口解决的主要问题,一般可通过软硬结合的方法完成。
常用的方法有行扫描法和线反转法两种。
行扫描法的基本思想是,由程序对键盘逐行扫描,通过检测到的列输出状态来确定闭合键,为此,需要设置入口、输出口一个,该方法在微机系统中被广泛使用。
线反转法的基本思想是通过行列颠倒两次扫描来识别闭合键,为此需要提供两个可编程的双向输入/输出端口。
(4)键码产生:
为了从键的行列坐标编码得到反映键功能的键码,一般在内存区中建立一个键盘编码表,通过查表获得被按键的键码。
用AT89C51的并行口P0接4×4矩阵键盘,以P0.0-P0.3作输入线,以P0.4-P0.7作输出线;在数码管上显示每个按键的“0-F”序号。
图2-34×4键盘电路图
2.3LM386音频放大电路
2.3.1LM386音频放大电路原理
LM386是一种音频集成功放,具有自身功耗低、电压增益可调整、电源电压范围大、外接元件少和总谐波失真小等优点,广泛应用于录音机和收音机之中。
LM386内部电路原理图如下图所示。
与通用型集成运放相类似,它是一个三级放大电路。
第一级为差分放大电路,T1和T3、T2和T4分别构成复合管,作为差分放大电路的放大管;T5和T6组成镜像电流源作为T1和T2的有源负载;T3和T4信号从管的基极输入,从T2管的集电极输出,为双端输入单端输出差分电路。
使用镜像电流源作为差分放大电路有源负载,可使单端输出电路的增益近似等于双端输出电容的增益。
第二级为共射放大电路,T7为放大管,恒流源作有源负载,以增大放大倍数。
第三级中的T8和T9管复合成PNP型管,与NPN型管T10构成准互补输出级。
二极管D1和D2为输出级提供合适的偏置电压,可以消除交越失真。
引脚2为反相输入端,引脚3为同相输入端。
电路由单电源供电,故为OTL(省去输出变压器的功率放大电路通常称为OTL电路。
其中,OTL为OutputTransformerLess的缩写)电路。
输出端(引脚5)应外接输出电容后再接负载。
电阻R7从输出端连接到T2的发射极,形成反馈通路,并与R5和R6构成反馈网络,从而引入了深度电压串联负反馈,使整个电路具有稳定的电压增益。
2.3.2LM386引脚图
LM386的外形和引脚的排列如下图所示。
引脚2为反相输入端,3为同相输入端;引脚5为输出端;引脚6和4分别为电源和地;引脚1和8为电压增益设定端;使用时在引脚7和地之间接旁路电容,通常取10μF。
查LM386的datasheet,电源电压4-12V或5-18V(LM386N-4);静态消耗电流为4mA;电压增益为20-200dB;在1、8脚开路时,带宽为300KHz;输入阻抗为50K;音频功率0.5W。
尽管LM386的应用非常简单,但稍不注意,特别是器件上电、断电瞬间,甚至工作稳定后,一些操作(如插拔音频插头、旋音量调节钮)都会带来的瞬态冲击,在输出喇叭上会产生非常讨厌的噪声。
1、通过接在1脚、8脚间的电容(1脚接电容+极)来改变增益,断开时增益为20dB。
因此用不到大的增益,电容就不要接了,不光省了成本,还会带来好处--噪音减少,何乐而不为?
2、PCB设计时,所有外围元件尽可能靠近LM386;地线尽可能粗一些;输入音频信号通路尽可能平行走线,输出亦如此。
这是死理,不用多说了吧。
3、选好调节音量的电位器。
质量太差的不要,否则受害的是耳朵;阻值不要太大,10K最合适,太大也会影响音质,转那么多圈圈,不烦那!
4、尽可能采用双音频输入/输出。
好处是:
“+”、“-”输出端可以很好地抵消共模信号,故能有效抑制共模噪声。
5、第7脚(BYPASS)的旁路电容不可少!
实际应用时,BYPASS端必须外接一个电解电容到地,起滤除噪声的作用。
工作稳定后,该管脚电压值约等于电源电压的一半。
增大这个电容的容值,减缓直流基准电压的上升、下降速度,有效抑制噪声。
在器件上电、掉电时的噪声就是由该偏置电压的瞬间跳变所致,这个电容可千万别省啊!
6、减少输出耦合电容。
此电容的作用有二:
隔直+耦合。
隔断直流电压,直流电压过大有可能会损坏喇叭线圈;耦合音频的交流信号。
它与扬声器负载构成了一阶高通滤波器。
减小该电容值,可使噪声能量冲击的幅度变小、宽度变窄;太低还会使截止频率(fc=1/(2π*RL*Cout))提高。
分别测试,发现10uF/4.7uF最为合适,这是我的经验值。
7、电源的处理,也很关键。
如果系统中有多组电源,太好了!
由于电压不同、负载不同以及并联的去耦电容不同,每组电源的上升、下降时间必有差异。
非常可行的方法:
将上电、掉电时间短的电源放到+12V处,选择上升相对较慢的电源作为LM386的Vs,但不要低于4V,效果确实不错!
2.3.3LM386应用电路
1、电压增益为20的放大电路
2、电压增益为50的放大电路
3、电压增益为200的放大电路
4、在85Hz具有6db增益的放大电路
5、收音机中的LM386:
2.3.5用LM386设计的音频放大电路
图2-4LM386设计的音频放大电路
第三章软件设计
3.1音乐弹奏设计
一首音乐是许多不同的音阶组成的,而每个音阶对应着不同的频率,这样我们就可以利用不同的频率的组合,即可构成我们所想要的音乐了,当然对于单片机来产生不同的频率非常方便,我们可以利用单片机的定时/计数器T0来产生这样方波频率信号,因此,我们只要把一首歌曲的音阶对应频率关系弄正确即可。
现在以单片机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
中2R
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 电子琴 16