基于单片机的简单电子琴设计论文.doc
《基于单片机的简单电子琴设计论文.doc》由会员分享,可在线阅读,更多相关《基于单片机的简单电子琴设计论文.doc(39页珍藏版)》请在咨信网上搜索。
基于单片机的简单电子琴设计 本科毕业论文 论文题目:基于单片机的简单电子琴设计 学 院: 电子工程学院 专 业: 电子信息工程 毕业届别: 姓 名: 指导教师: 职 称: 目录 1引言 1 2 总体设计 2 2.1 设计目的与要求 2 2.2 电子琴系统的组成 2 2.3 系统设计框图 3 3 详细设计 4 3.1 硬件设计 4 3.2 硬件简介 5 3.2.1 AT89C51简介 5 3.2.2 LED数码管 10 3.3整体程序处理流程图设计 11 3.4矩阵式键盘的识别和显示与设计 12 3.4.1矩阵式键盘的结构与工作原理 12 3.4.2矩阵式键盘的按键识别方法 13 3.4.3键盘接口必须具有的4个基本功能 15 3.5音乐播放设计 16 3.5.1音乐发声原理 16 3.5.2音乐播放流程图 18 3.5.3放歌子程序流程图 18 4实现联调 20 4.1 Proteus 简介 20 4.2 keil 简介 20 4.3利用keil与Proteus进行的调试 21 5 总结与展望 23 参考文献 25 Abstract:. 26 致谢 27 附录A:程序设计 28 附录B 印制电路板(PCB)设计 34 36 基于单片机的简单电子琴设计 摘要:电子琴是现代电子科技与音乐结合的产物,是一种新型的键盘乐器。它在现代音乐扮演着重要的角色,单片机具有强大的控制功能和灵活的编程实现特性,它已经溶入现代人们的生活中,成为不可替代的一部分。本文主要对使用单片机设计简易电子琴进行了分析与设计,并介绍了基于单片机电子琴的系统硬件组成。该文设计是一种基于AT89C51的简单音乐发生器,利用单片机技术、键盘和一组发光二极、SPEARK等实现原理图设计,并用C51语言进行键盘识别程序设计和音频脉冲输出程序的设计。经过软件和硬件的联调,并仿真出来。该音乐发生器不仅能通过键盘弹奏出来简单的乐曲,而且不弹奏时按播放键可以播放内置音乐,音调和节拍都由单片机控制实现。本系统运行稳定,其优点是硬件电路简单,软件功能完善,控制系统可靠,性价比较高等,具有一定的实用和参考价值。 关键词:单片机;键盘;扬声器;电子琴1引言 单片微型计算机是大规模集成电路技术发展的产物,属第四代电子计算机,它具有高性能、高速度、体积小、价格低廉、稳定可靠、应用广泛的特点。它的应用必定导致传统的控制技术从根本上发生变革。因此,单片机的开发应用已成为高科技和工程领域的一项重大课题。 虽然单片机出现的历史并不长,但发展十分迅猛,在集成度、功能、速度、可靠性、应用领域等全方位向更高水平发展。目前单片机已用于工业控制、机电一体化设备、仪器仪表、信号处理、现代兵器、交通能源、商用设备、医疗设备及家用电器等各个领域,随着单片机性能的不断提高,它的应用将会更加广泛。单片机技术发展非常快,及时掌握最新的单片机技术,在条件允许的情况下,尽可能地利用最新的单片机技术来研制其应用系统,再利用单片机体积小、价格低、功能强等特点,以保证所设计的产品在未来的一段时间内仍具生命力。在生活和生产的各个领域中,凡是有自动控制要求的地方都会有单片机的身影出现;从简单到复杂,从空中、地面到地下,凡是能想象到的地方几乎都有使用单片机的需求。现在,尽管单片机的应用已经很普遍了,但仍有许多可以用单片机控制而尚未实现的项目,因此,单片机的应用大有可以想象和拓展的空间。 单片机的应用有利于产品的小型化、多功能化和智能化,有助于提高劳动效率,减轻劳动强度,提高产品质量,改善劳动环境,减少能源和材料消耗,保证安全等。 但是,单片机应用的意义绝不仅限于它的广阔范围以及所带来的经济效益上,更重要的意义还在于:单片机的应用正从根本上改变着传统的控制系统设计思想和设计方法。从前必须由模拟电路或数字电路实现的大部分控制功能,现在已能使用单片机通过软件(编程序)方法实现了。这种以软件取代硬件并能提高系统性能的控制系统“软化”技术,称之为微控制技术。微控制技术是一种全新的概念,是对传统控制技术的一次革命。随单片机应用的推广普及,微控制技术必将不断发展、日益完善和更加充实。 电子琴是现代电子科技与音乐结合的产物,是一种新型的键盘乐器,它在现代音乐扮演着重要的角色,简易电子琴系统就是以单片机为主要元器件设计的一个简易电子琴。这只是单片机应用的一个点,由点及面,希望可以更好的了解和应用单片机技术。 之所以以单片机设计简易的电子琴为选题,目的在于从日常生活能接触到的细微处着手,通过理论与实践的结合,更明确自己的所学所用,也在实践中发现理论的不足,对目前日益广泛应用的单片机有了更加理性化和感性化的认识,使理论和实践跟家很好的结合。 通过单片机设计简易电子琴这个选题,更深层次的了解了单片机技术,以前只是有理论,实践的机会不是很多,在做单片机设计简易电子琴这个选题的过程中,更加熟练的掌握了一些单片机芯片的应用,也解决了很多以前理论和实践脱节的问题,可谓对单片机的认识有了一个小的飞跃。 本文的主要内容是用AT89C51单片机为核心控制元件,与键盘、扬声器等模块组成核心主控制模块,在主控模块上设有16个按键和扬声器。并且主要对使用单片机设计简易电子琴进行了分析,并介绍了基于单片机电子琴统硬件组成。利用单片机产生不同频率来获得我们要求的音阶,最终可随意弹奏想要表达的音乐。并且本文分别从原理图,主要芯片,各模块原理及各模块的程序的调试来详细阐述。 2 总体设计 2.1 设计目的与要求 本系统分为两个部分,一个是音乐播放,另一个就是电子琴弹奏。 关于声音的处理,使用单片机C语言,利用定时器来控制频率,而每个音符的符号只存在定义的表中。具体要求如下: 1.要求达到电子琴的基本功能,可以用弹奏出简单的乐曲。 2.用键盘作出电子琴的按键,每一个键代表一个音符。 3.各音符按一定的顺序排列,必须符合电子琴的按键排列顺序。 4.固定音乐播放由按键控制:“播放”按键,“弹奏/停止”按键。 5.弹奏电子琴时能播放出准确的声音,不弹奏时可以播放内置音乐。 2.2 电子琴系统的组成 单片机因体积小、功能强、价格低廉而得到广泛应用。AT89C51单片机设计微型电子琴的方法,仅需AT89C51最小系统,扩展一组矩阵键盘,再接一组发光二极管用来指示电子琴的工作状态。 本系统分为两个部分,一个是音乐的播放,另一个就是电子琴的弹奏。 音乐播放部分:音乐实际上是有固定周期的信号。本文介绍用AT89C51的两个定时器(如T0,T1)控制,在P3.7脚上输出方波周期信号,产生乐音,通过矩阵键盘按键产生不同的音符,由此操作人员可以随心所欲的弹奏自己所喜爱的乐曲,当不想弹奏时通过按播放键可以演奏事先存放在单片机中的几首简单的曲子。当歌曲演奏完时,通过按复位键便可回到初始状态,这样就做出了一台简易电子琴。 由于一首音乐是许多不同的音阶组成的,而每个音阶对应着不同的频率,这样我们就可以利用不同的频率的组合,即可构成我们所想要的音乐了,当然对于单片机来产生不同的频率非常方便,我们可以利用单片机的定时/计数器T0来产生这样方波频率信号,因此,我们只要把一首歌曲的音阶对应频率关系弄正确即可。乐曲中,每一音符对应着固定的频率,我们将每一音符的时间常数和其相应的节拍常数作为一组,按顺序将乐曲中的所有常数排列成一个表,然后由查表程序依次取出,产生音符并控制节奏,就可以实现演奏效果。 电子琴弹奏部分:实际上就是把每个按键所对应的值经过处理后发给单片机,再在单片机内把数字当作指针指向所对应的音符。 2.3 系统设计框图 该系统通过电子琴按键随意键入所要表达的音符,作为电平送给主体电路,中央处理器通过识别,解码输出音符,在扬声器中发出有效的声音。通过这样可以不断的弹奏音乐。该设计由嵌入式电路,按键电路,LED显示电路和两个功能键组成,通过功能键可以选择播放音乐。其主要模块由五个部分组成,具体关系如下图2-1所示。 51单片机 AT89C51 功能选择键 (弹奏/播放) 4X4矩阵式键盘 LED显示 音频 图2-1 电子琴的主模块 上图即为此次设计中的电子琴的硬件结构图,我们运用单片机的最小系统。 3 详细设计 3.1 硬件设计 本设计采用AT89C51作为主控部件,扩展一组4*4矩阵键盘,再接一组发光二极管,LED显示器和SPEARK,再接两个按键,一个用于播放内置音乐,一个用于用户弹奏与复位。电路原理图如下图3-1所示。 图3-1系统板硬件连线 3.2 硬件简介 3.2.1 AT89C51简介 AT89C51是一种带4K字节闪存可编程可擦除只读存储器(FPEROM—Flash Programmable and Erasable Read Only Memory)的低电压,高性能CMOS 8位微处理器,俗称单片机。单片机的可擦除只读存储器可以反复擦除100次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。AT89C51单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。外形及引脚排列如图3-2所示: 图3-2 AT89C51管脚图 (1)AT89C51的主要特性 ·与MCS-51 兼容 ·4K字节可编程闪烁存储器 ·寿命:1000写/擦循环 ·数据保留时间:10年 ·全静态工作:0Hz-24MHz ·三级程序存储器锁定 ·128×8位内部RAM ·32可编程I/O线 ·两个16位定时器/计数器 ·5个中断源 ·可编程串行通道 ·低功耗的闲置和掉电模式 ·片内振荡器和时钟电路 (2)8051单片机内部结构图 图3-3 8051单片机内部结构图 (3)主要管脚说明 VCC:供电电压。 GND:接地。 MCS-51单片机有4个双向的8位I/O口P0-P3。在无片外存储器的系统中,这4个I/O口的每一位都可以作为准双向通用I/O口使用。在有片外存储器的系统中,P2口作为地址的高8位,P0口作为地址的低8位和双向数据总线。 P0口: P0口的位内部结构如图3-4所示。它由一个输出锁存器、两个三态输入缓冲器和输出驱动及控制电路组成。它既可作为I/O口,又可作为地址/数据总线。本设计中它只作为I/O口使用。 作为输出口使用时,内部控制端发0电平使与门输出为0,场效应管T1截止,此时多路开关MUX与锁存器的端接通。内部数据加在锁存器D端,当CL端的写脉冲出现后,与内部总线相连的D端数据取反后出现在端,经场效应管T2反向出现在P0的引脚上。 当作输入口时,读脉冲将图中下方的三态输入缓冲器打开,这样端口上的数据经缓冲器送至内部总线。图中上方的缓冲器并不直接读端口引角上的数据,而是读锁存器Q端的数据,Q端与引角上的数据是一致的。 VCC P0.x 锁存器 读锁存器 地址/数据 控制 D 读引脚 写锁存器 内部总线 Q Q MUX T2 T1 CL 图3-4 P0口的位结构 P1口:P1口的位内部结构如图3-5所示。P1口是通用I/O准双向静态端口,输出的信息有锁存。P1端口与P0端口的主要区别在于,P1端口用内部上拉电阻代替了场效应管T1,且输出信息仅来自内部总线。若输出时D端的数据为1,T截止输出为1;若D端数据为0,则T导通,引脚输出为低电平。当作输入使用时,必须向锁存器写1,使场效应管截止,才可以作输入用。 P1端口是单片机中唯一仅有单功能的I/O端口,输出信号锁存在端口上,故又称为通用静态端口。 VCC P1.x 锁存器 读锁存器 D 读引脚 写锁存器 内部总线 Q Q T 内部上拉电阻 CL 图3-5 P1口的位结构 P2口:P2口的位内部结构如图3-6所示。和P1口比较,P2口多了转换控制部分。当P2口作通用I/O口使用时,多路开关MUX连接锁存器的Q端,构成一个准双向口。当系统扩展片外程序存储器时,P2端口就用来周期性地输出从外存中取指令的高8位地址(A8-A15),此时MUX在CPU的控制下切换到与内部地址总线相连。因地址信号是不间断的,此时P2口就不能用作I/O端口使用了。 VCC P2.x 锁存器 读锁存器 地址 控制 D 读引脚 写锁存器 内部总线 Q Q MUX T 内部上拉电阻 CL 图3-6 P2口的位结构 P3口:P3口的位内部结构如图3-7 所示。和P1口比较,P3口增加了一个与非门和一个缓冲器,使其各端口线有两种功能选择。当处于第一功能时,第二输出功能线为1,此时输出与P1口相同,内部总线信号经锁存器和场效应管输出。当作输入时,“读引角”信号有效,下面的三态缓冲器打开(增加的一个为常开),数据通过缓冲器送到CPU内部总线。 当处于第二功能时,锁存器由硬件自动置1,使与非门对第二功能信号畅通。此时,“读引脚”信号无效,左下的三态缓冲器不通,引脚上的第二输入功能信号经右下的的缓冲器送入“第二功能输入端”。 VCC P3.x 锁存器 读锁存器 第二输出功能 D 读引脚 写锁存器 内部总线 Q T 内部上拉电阻 第二输入功能 CL 图3-7 P3口的位结构 用AT89C51的并行口P0接4×4矩阵键盘,以P0.0-P0.3作输入线,以P0.4-P0.7作输出线;在数码管上显示每个按键的“0-F”序号。 RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。复位电路如下图3-8所示。 图3-8 复位电路 XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。 XTAL2:来自反向振荡器的输出。 XTAL1和XTAL2分别为反向放大器的输入和输出。该反向放大器可以配置为片内振荡器。构成的内部时钟电路如下图3-9所示。 图3-9 内部时钟电路 3.2.2 LED数码管 (1)数码管如图3-8 所示: 图3-8 数码管(如图3-8所示)使用条件: 1)、段及小数点上加限流电阻 2)、使用电压:段:根据发光颜色决定;小数点:根据发光颜色决定 3)、使用电流:静态:总电流 80mA(每段 10mA);动态:平均电流 4-5mA. 峰值电流 100mA 数码管使用注意事项说明: 1)、数码管表面不要用手触摸,不要用手去弄引角; 2)、焊接温度:260度;焊接时间:5S 3)、表面有保护膜的产品,可以在使用前撕下来。 (2)数码管的驱动方式:数码管要正常显示,就要用驱动电路来驱动数码管的各个段码,从而显示出我们要的数字,因此根据数码管的驱动方式的不同,可以分为静态式和动态式两类。主要用动态驱动。动态驱动是将所有数码管的8个显示笔划"a,b,c,d,e,f,g,dp"的同名端连在一起,另外为每个数码管的公共极COM增加位选通控制电路,位选通由各自独立的I/O线控制,所以只要将需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮。 3.3整体程序处理流程图设计 初始化 键盘扫描 延时 有无键按下 有无键按下 查表所得的数据送入P0,P3.7 根据键值查表 选择查表法 功能选择键键值 矩阵键盘键值 根据当前状态识别按键 Y Y N N 图3-10 3.4矩阵式键盘的识别和显示与设计 3.4.1矩阵式键盘的结构与工作原理 在键盘中按键数量较多时,为了减少I/O口的占用,通常将按键排列成矩阵形式。在矩阵式键盘中,每条水平线和垂直线在交叉处不直接连通,而是通过一个按键加以连接。这样,一个端口(如P1口)就可以构成4*4=16个按键,比之直接将端口线用于键盘多出了一倍,而且线数越多,区别越明显,比如再多加一条线就可以构成20键的键盘,而直接用端口线则只能多出一键(9键)。由此可见,在需要的键数比较多时,采用矩阵法来做键盘是合理的。 矩阵式结构的键盘显然比直接法要复杂一些,识别也要复杂一些,列线通过电阻接正电源,并将行线所接的单片机的I/O口作为输出端,而列线所接的I/O口则作为输入。这样,当按键没有按下时,所有的输出端都是高电平,代表无键按下。行线输出是低电平,一旦有键按下,则输入线就会被拉低,这样,通过读入输入线的状态就可得知是否有键按下了。具体的识别方法如下所述。 3.4.2矩阵式键盘的按键识别方法 3 7 B F 扫描信号输入 X0 X1 X2 X3 2 1 0 6 5 4 A 9 8 E D C 读 取 按 键 状 况 Y3 Y2 Y1 Y0 图3-11(4*4键盘) 确定矩阵式键盘上何键被按下介绍一种“行扫描法”。 行扫描法 行扫描法又称为逐行(或列)扫描查询法,是一种最常用的按键识别方法,如上图2-4所示键盘,介绍过程如下。 1、判断键盘中有无键按下 将全部行线Y0-Y3置高电平,然后检测列线的状态。只要有一列的电平为低,则表示键盘中有键被按下,而且闭合的键位于低电平线与4根行线相交叉的4个按键之中。若所有列线均为高电平,则键盘中无键按下。整个工作可分为4个阶段,说明如下: (1)在第一阶段,主要目的是判断3,2,1及0键有没有按下。首先将1110B信号送入X3,X2,X1,X0,也就是只有X0为低电平,其它各行均为高电平。接着读取Y3,Y2,Y1,Y0的状况。 ·若Y3,Y2,Y1,Y0为1110,表示0键被按下。 ·若Y3,Y2,Y1,Y0为1101,表示1键被按下。 ·若Y3,Y2,Y1,Y0为1011,表示2键被按下。 ·若Y3,Y2,Y1,Y0为0111,表示3键被按下。 ·若Y3,Y2,Y1,Y0为1111,表示0,1,2,3都没被按下,进入第二阶段。 (2)在第二阶段,主要目的是判断键7,6,5,4有没有按下,首先将1101B信号送入X3,X2,X1,X0,也就是只有X1为低电平,接着读取Y3,Y2,Y1,Y0的状态。 ·若Y3,Y2,Y1,Y0为1110,表示4键被按下。 ·若Y3,Y2,Y1,Y0为1101,表示5键被按下。 ·若Y3,Y2,Y1,Y0为1011,表示6键被按下。 ·若Y3,Y2,Y1,Y0为0111,表示7键被按下。 ·若Y3,Y2,Y1,Y0为1111,表示7,6,5,4都没按下,进入第三阶段。 (3)在第三阶段,主要目的是判断键B,A,9,8有没有按下,首先将1011B信号送入X3,X2,X1,X0,也就是只有X2为低电平,接着读取Y3,Y2,Y1,Y0的状态。 ·若Y3,Y2,Y1,Y0为1110,表示8键被按下。 ·若Y3,Y2,Y1,Y0为1101,表示9键被按下。 ·若Y3,Y2,Y1,Y0为1011,表示A键被按下。 ·若Y3,Y2,Y1,Y0为0111,表示B键被按下。 ·若Y3,Y2,Y1,Y0为1111,表示8,9,A,B都没按下,进入第四阶段。 (4)在第四阶段,主要目的是判断键F,E,D,C有没有按下,首先将0111B信号送入X3,X2,X1,X0,也就是只有X3为低电平,接着读取Y3,Y2,Y1,Y0的状态。 ·若Y3,Y2,Y1,Y0为1110,表示C键被按下。 ·若Y3,Y2,Y1,Y0为1101,表示D键被按下。 ·若Y3,Y2,Y1,Y0为1011,表示E键被按下。 ·若Y3,Y2,Y1,Y0为0111,表示F键被按下。 ·若Y3,Y2,Y1,Y0为1111,表示C,D,E,F都没按下,进入第一阶段,从新开始,继续扫描。 2、判断闭合键所在的位置,在确认有键按下后,即可进入确定具体闭合键的过程。其方法是:依次将行线置为低电平,即在置某根行线为低电平时,其它线为高电平。在确定某根行线位置为低电平后,再逐行检测各列线的电平状态。若某列为低,则该列线与置为低电平的行线交叉处的按键就是闭合的按键。 对应的程序设计为: /* 键扫描函数 */ uchar getkey(void) { uchar scancode,tmpcode; if ((P0&0xf0)==0xf0) return(0); scancode = 0xfe; while((scancode&0x10)!=0) // 逐行扫描 { P0 = scancode; // 输出行扫描码 if ((P0&0xf0)!=0xf0) // 本行有键按下 { tmpcode = (P0&0xf0)|0x0f; /* 返回特征字节码,为1的位即对应于行和列 */ return((~scancode)+(~tmpcode)); } else scancode = (scancode<<1)|0x01; // 行扫描码左移一位 } } 3.4.3键盘接口必须具有的4个基本功能 (1)去抖动:每个按键在按下或松开时,都会产生短时间的抖动。抖动的持续时间与键的质量相关,一般为5-20mm。所谓抖动是指在识别被按键是必须避开抖动状态,只有处在稳定接通或稳定断开状态才能保证识别正确无误。去抖问题可通过软件延时或硬件电路解决。对应的程序设计为: /* 键消抖延时函数 */ void delay(void) { uchar i; for (i=300;i>0;i--); } (2)防串键:防串键是为了解决多个键同时按下或者前一按键没有释放又有新的按键按下时产生的问题。常用的方法有双键锁定和N键轮回两种方法。双键锁定,是当有两个或两个以上的按键按下时,只把最后释放的键当作有效键并产生相应的键码。N键轮回,是当检测到有多个键被按下时,能根据发现它们的顺序依次产生相应键的键码。 (3)被按键识别:如何识别被按键是接口解决的主要问题,一般可通过软硬结合的方法完成。常用的方法有行扫描法和线反转法两种。行扫描法的基本思想是,由程序对键盘逐行扫描,通过检测到的列输出状态来确定闭合键,为此,需要设置入口、输出口一个,该方法在微机系统中被广泛使用。线反转法的基本思想是通过行列颠倒两次扫描来识别闭合键,为此需要提供两个可编程的双向输入/输出端口。对应的程序设计为: /* 外部中断0 ,这里是弹唱按键*/ void EX0_INT() interrupt 0 { FY=0; LED1=1; LED2=0; } /* 外部中断1 ,这里是播放按键*/ void EX1_INT() interrupt 2 { FY=1; LED1=0; LED2=1; } (4)键码产生:为了从键的行列坐标编码得到反映键功能的键码,一般在内存区中建立一个键盘编码表,通过查表获得被按键的键码。对应的程序设计为: /* 音符与计数值对应表 */ uint code tab[]= { 63628,63835,64021,64103,64260,64400,64524, 64580,64684,64777,64820,64898,64968,65030, 65058,65110,65157,65178,65217,65252,65283 ,65085 }; 3.5音乐播放设计 3.5.1音乐发声原理 音乐发声原理:一首音乐是许多不同的音阶组成的,而每个音阶对应着不同的频率,这样我们就可以利用不同的频率的组合,即可构成我们所想要的音乐了,当然对于单片机来产生不同的频率非常方便,我们可以利用单片机的定时/计数器T0来产生这样方波频率信号,因此,我们只要把一首歌曲的音阶对应频率关系弄正确即可。 若要产生音频脉冲,只要算出某一音频的周期(1/频率),再将此周期除以2,即为半周期的时间。利用定时器计时的半周期时间,每当计时终止后就将P3.7反相,然后重复计时再反相。就可在P3.7引脚上得到此频率的脉冲。 利用AT89C51的内部定时器使其工作计数器模式(MODE1)下,改变计数值TH0及TL0以产生不同频率的方法产生不同音阶,例如,频率为523Hz,其周期T=1/523=1912μs,因此只要令计数器计时956μs/1μs=956,每计数956次时将I/O反相,就可得到中音DO(523Hz)。 计数脉冲值与频率的关系式是: N=fi÷2÷fr 式中,N是计数值;fi是机器频率(晶体振荡器为12MHz时,其频率为1MHz);fr是想要产生的频率。 其计数初值T的求法如下: T=65536-N=65536-fi÷2÷fr 例如:设K=65536,fi=1MHz,求低音DO(262Hz)、中音DO(523Hz)、高音DO(1046Hz)的计数值。 T=65536-N=65536-fi÷2÷fr=65536-1000000÷2÷fr =65536-500000/fr 低音DO的T=65536-500000/262=63628 中音DO的T=65536-500000/523=64580 高音DO的T=65536-500000/1046=65058 [6] 我们要为这个音符建立一个表格,单片机通过查表的方式来获得相应的数据。 单片机12MHZ晶振,高中低音符与计数T0相关的计数值如表3-1所示: 表3-1 音符频率表 音符 频率(HZ) 简谱码(T值) 音符 频率(HZ) 简谱码(T值) 低 1 DO 262 63628 中 5 SO 784 64898 低 2 RE 294 63835 中 6 LA 880 64968 低 3 M 330 64021 中 7 SI 988 65030 低 4 FA 349 64103 高 1 DO 1046 65058 低 5 SO 392 64260 高 2 RE 1175 65110 低 6 LA 440 64400 高 3 M 1318 65157 低 7 SI 494 64524 高 4 FA 1397 65178 中 1 DO 523 64580 高 5 SO 1568 65217 中 2 RE 587 64684 高 6 LA 1760 65252 中 3 M 659 64777 高 7 SI 1967 65283 中 4 FA 698 64820 # 1 DO# 1109 65085 音乐的音拍,一个节拍为单位(C调),如下表3-2所示。 表3-2 曲调值表 曲调值 曲调值 DELAY 曲调值 DELAY 调4/4 125ms 调4/4 62ms 调3/4 187ms 调3/4 94ms 调2/4 250ms 调2/4 125ms 对于不同的曲调我们也可以用单片机的另外一个定时/计数器来完成。在这个程序中用到了两个定时/计数器来完成的。其中T0用来产生音符频率,T1用来产生音拍。[7] 3.5.2音乐播放流程图 T0中断入口 置TH0,TL0的初值 P3.7取反 中断返回 图3-12音乐播放流程图 3.5.3放歌子程序流程图 T0初始化 读取键值 根据键值查表按位取值 是否结束 恢复初始条件 延时再循环 Y 音符值送入T0 读取节拍数延时 启动T0计数 P3.7取反 T0停止计数位值加1 N 节拍时间到到 N 图3-12放歌子程序流程图 4实现联调 4.1 Proteus 简介 Proteus(海神)的ISIS是一款Labcenter出品的电路分析实物仿真系统,可仿真各种电路和IC,并支持单片机,元件库齐全,使用方便,是不可多得的专业的单片机软件仿真系统。 该软件的特点: ① 全部满足我们提出的单片机软件仿真系统的标准,并在同类产品中具有明显的优势。 ②具有模拟电路仿真、数字电路仿真、单片机及其外围电路组成的系统的仿真、RS-232动态仿真、C调试器、SPI调试器、键盘和LCD系统仿真的功能;有各种虚拟仪器,如示波器、逻辑分析仪、信号发生器等。 ③ 目前支持的单片机类型有:68000系列、8051系列、AVR系列、PIC12系列、PIC16系列、PIC18系列、Z80系列、HC11系列以及各种外围芯片。 ④ 支持大量的存储器和外围芯片。总之该软件是一款集单片机和SPICE分析于一身的仿真软件,功能极其强大 ,可仿真51、AVR、PIC。 4.2 keil 简介 单片机开发中除必要的硬件外,同样离不开软件,汇编语言源程序要变为CPU可以执行的机器码有两种方法,一种是手工汇编,另一种是机器汇编,目前已极少使用手工汇编的方法了。机器汇编是通过汇编软件将源程序变为机器码, Keil软件是目前最流行开发MCS-51系列单片机的软件,这从近年来各仿真机厂商纷纷宣布全面支持Keil即可看出。Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision)将这些部份组合在一起。 运行Keil软件需要16MB或更多RAM、20M以上空闲的硬盘空间、WIN98、NT、WIN2000、WINXP等操作系统。 应用Keil软件进行单片机软件调试有以下步骤: 1. 建立一个工程项目。选择芯片,确定选项。 2. 建立C源文件。 3. 用项目管理器生成各种应用文件。 4. 检查并修改原文件中的错误。 5. 编程操作。 4.3利用keil与Proteus进行的调试 使用步骤: 1. 打开keil,建立工程,输入程序 2. 编译和生成hex文件,如图4-1所示 图4-1 图4-2 利用keil进行编译 3. 打开Proteus,设计硬件电路图,见图4-3 图4-3 硬件电路图 4. 导入hex文件,见图4-4 图4-4 将鼠标置于电路图中AT89C51器件上,右击后再左击,弹出图4-4中的对话框,在红线框中导入dzq.hex文件。 5. 点击面板左下角的,开始调试 5 总结与展望 将程序导入AT89C51芯片,调试成功后,可任意弹奏自己想要的旋律。本课题通过用单片机设计简易电子琴,将几个模块很好的融合起来,对使用单片机设计简易电子琴进行了分析,并介绍了基于单片机电子琴统硬件组成。利用单片机产生不同频率来获得我们要求的音阶,最终可随意弹奏想要表达的音乐。说明一首音乐是许多不同的音阶组成的,而每个音阶对应着不同的频率,这样我们就可以利用不同的频率的组合,即可构成我们所想要的音乐了,于是我们可以利用单片机的定时/计数器T0来产生这样方波频率信号,因此,我们只要把一首歌曲的音阶对应频率关系弄正确即可,然后我们利用功放电路来将音乐声音放大,同时通过显示模块来确知自己所弹的音符。 通过这次课程设计,我感觉收获了很多: 首先,通过实践,加深对单片机系列知识及其系统的认识。这个设计题目并不是新的,但从中能体现到一个系统开发设计的过程,足于让我们受益。 第二,通过设计学习到了很多软件的使用。本次设计,软件部分用到了protues进行硬件设计,用keil进行程系编译。 同时感谢我们的聂老师教育了我们单片机相关知识。 本设计的不足之处在于设计时很好的实现复位电路的设计,未能焊制电路板实物,本设计还可以扩展其他功能,比如记忆功能,即可以存储弹奏者所弹奏的音乐且保存,待弹奏完后播放给弹奏者听。还可以做得更加娱乐一点,增加一些彩灯使彩灯随着音调变化而产生不同的样式。 参考文献 [1] 张靖武,周灵彬.单片机系统的PROTEUS设计与仿真[M].北京:电子工业出版社,2007.4,195~206. [2] 谢维成,杨加国. 单片机原理与应用及C51程序设计[M].北京:清华大学出版社,2006.8,12~24. [3] 张义和,王敏男,袁彩霞.例说51单片机(C语言版)[M].北京:人民邮电出版社,2008.4,268~302. [4] 周坚.单片机C语言轻松入门 [M].北京:北京航空航天大学出版社,2006.7, 153~161. [5] 朱清惠,张凤蕊.Protues教程——电子线路设计、制板与仿真[M].北京:清华大学出版社,2008.9,46~52,332~362. [6] 周琛晖.基于 AT89S51单片机的电子琴设计[J] .中国矿业大学计算机学院,江苏徐州(221008). [7] 韩改宁.基于AT89C52实现简单音乐发生器[J] .咸阳师范学院计算机科学系.陕西成阳(712000). [8] Chen Tianzhou,Zbao Yi,Hu We.Assigning program to cache-aware scratchpad concerning the influence of the whole embedded sys- tem [C].Networking,Architecture,and Storages.IEEE Conf of International Workshop on Aug.2006,5. [9] 4 M Verma,S Steinke,P Marwedel.Data for maximal scratchpad usage[C].Proeeedings of the 2003 conference on Asia South Pacific design automation,2003,77—83. The designs of A simple Electronic keyboard Based on SCM (Electronic and Information Engineering ,Grade 2006, College of Information Science and Technology ,Gansu Agricultural University,) Abstract:Electronic organ is a modern electronic music technology and the product is a new type of keyboard instruments. It played an important role in modern music. SCM has powerful con- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 单片机 简单 电子琴 设计 论文
咨信网温馨提示:
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【精****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【精****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【精****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【精****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
关于本文