燕山大学课程设计说明书第1页共25页燕山大学课程设计说明书题目:简易电子琴学院(系):电气工程学院年级专业:精仪一班学号:100103020115学生姓名:王苏杨指导教师:孟宗教师职称:副教授燕山大学课程设计说明书第2页共25页燕山大学课程设计(论文)任务书院(系):电气工程学院基层教学单位:仪器科学与工程系学号100103020115学生姓名王苏杨专业(班级)精仪一班设计题目简易电子琴设计技术参数设计一简易电子琴,按下不同按键,能够发出不同的声音。通过每个按键的控制使单片机系统输出不同频率的脉冲,经过扬声器发出不同频率音调。演奏一首歌曲。设计要求设计电子琴的键盘电路(包括硬件电路);编制相应的程序。工作量设计的内容满足课程设计的教学目的与要求,设计题目的难度和工作量适合学生的知识和能力状况,工作量饱满。工作计划查阅资料进行设计准备、设计硬件电路、编制程序,编制程序、验证设计、撰写任务书。参考资料单片微型计算机接口技术及其应用张淑清国防工业出版社单片机应用技术汇编指导教师签字基层教学单位主任签字说明:此表一式四份,学生、指导教师、基层教学单位、系部各一份。2013.7.6燕山大学课程设计说明书第3页共25页目录摘要………………………………………………………………31电子琴的发声原理…………………………………………………51.1发声原理……………………………………………………51.2单片机实现简易电子琴原理及代码值的计算…………………52程序的设计思想及执行流程……………………………………82.1主程序的流程………………………………………………82.2单发音子程序的执行流程……………………………………112.3播放歌曲子程序的执行流程………………………………113硬件系统连接…………………………………………………133.189c51芯片简介……………………………………………133.2蜂鸣器的电路连接及实现…………………………………143.34X4矩阵键盘……………………………………………154总结………………………………………………………………17参考文献……………………………………………………………24燕山大学课程设计说明书第4页共25页摘要:单片机是大规模集成电路技术发展的产物,具有高性能、高速度、体积小、价格低廉、稳定可靠等特点。单片机的应用相当广泛,从平常的家用电器到航天系统和国防军事、尖端武器都能找到它的身影。因此,单片机的开发应用已成为高科技和工程领域的一项重大课题。随着社会的发展进步,音乐逐渐成为我们生活中很重要的一部分。本论文设计一个基于单片机的简易电子琴。我们对于电子琴如何实现其功能,如音色选择、声音强弱控制、节拍器、自动放音功能等等也很好奇。电子琴是现代电子科技与音乐结合的产物,是一种新型的键盘乐器。它在现代音乐扮演着重要的角色,单片机具有强大的控制功能和灵活的编程实现特性,它已经溶入现代人们的生活中,成为不可替代的一部分。本文的主要内容是用AT89S51单片机为核心控制元件,设计一个电子琴。以单片机作为主控核心,与键盘、扬声器等模块组成核心主控制模块,在主控模块上设有16个按键和扬声器。本系统运行稳定,其优点是硬件电路简单,软件功能完善,控制系统可靠,性价比较高等,具有一定的实用和参考价值。关键词:单片机电子琴节拍器自动放音燕山大学课程设计说明书第5页共25页1、电子琴的发声原理1.1电子琴发声原理电子琴既可以演奏不同的曲调,又可以发出强弱不同的声音,还可以模仿二胡、笛子、钢琴、黑管以及锣鼓等不同乐器的声音。那么,电子琴的发音原理是怎样的?大家知道,当物体振动时,能够发出声音。振动的频率不同,声音的音调就不同。在电子琴里,虽然没有振动的弦、簧、管等物体,却有许多特殊的电装置,每个电装置一工作,就会使喇叭发出一定频率的声音。当按动某个琴键时,就会使与它对应的电装置工作,从而使喇叭发出某种音调的声音。电子琴的音量控制器,实质上是一个可调电阻器。当转动音量控制器旋扭时,可调电阻器的电阻就随着变化。电阻大小的变化,又会引起喇叭声音强弱的变化。所以转动音量控制旋扭时,电子琴发声的响度就随之变化。当乐器发声时,除了发出某一频率的声音──基音以外,还会发出响度较小、频率加倍的辅助音──谐音。我们听到的乐器的声音是它发出的基音和谐音混合而成的。不同的乐器发出同一基音时,不仅谐音的数目不同,而且各谐音的响度也不同。因而使不同的乐器具有不同的音品。在电子琴里,除了有与基音对应的电装置外,还有与许多谐音对应的电装置,适当地选择不同的谐音电装置,就可以模仿出不同乐器的声音来。1.2单片机实现简易电子琴原理及代码计算燕山大学课程设计说明书第6页共25页本课程设计的题目为简易电子琴的设计,通过编程控制蜂鸣器脉冲的频率和有效信号的长度,可实现如下的功能:一:4*4矩阵键盘的1~E按键分别对应着个不同的音符,分为高低不同的14个音符,当按下某一按键,会发出相应的音调。按下按键时,扬声器会发出一定时长的声音。扬声器发声的时长是无法改变的,由程序设定。如果连续按动一个乐谱的音符所对应的按键,可以实现乐曲的演奏。二:程序中预存了音乐《我的中国心》乐谱对应的编码,通过矩阵键盘中的“0”键触发,当在单片机处于该音乐播放模式时,可以通过按键“F”和“E”对该音乐的播放进行暂停、播放和停止操作等控制。代码值的计算不同的音符对应着不同的频率,我们可以利用不同的频率的组合,来实现不同的音符的组合,即可构成我们所想要的音乐了。假如发生装置为脉冲型的蜂鸣器,将其连接在P1.0上。按每个音符对应的频率和拍长对P1.0施以有效的脉冲信号,即可实现对应的音乐。而对于单片机来说产生不同的频率和一定长度的脉冲信号是非常方便,我们可以利用单片机的定时/计数器来产生这样方波频率信号,调用一个可编程的延时函数即可控制声音的长度。因此,只需将一首歌的音阶和频率即拍长相对应即可。利用定时器计时半周期时间,每当计时终止后就将P1.0反相,然后重复计时再反相。就可在P1.0引脚上得到此频率的脉冲。若要产生音频脉冲,只要算出某一音频的周期(1/频率),再将此周期除以2,即为半周期的时间。利用AT89S52的内部定时器使其工作计数器模式工作方式1下,改变计数初值以产生不同频率的方法产生不同音阶,下面将具体介绍音符频率的计算方法。燕山大学课程设计说明书第7页共25页计数脉冲值与频率的关系式(如式2-1所示)是:N=oscf÷12÷rf÷2(式1-1)式中,N是产生需要脉冲所需的计数值,oscf是单片机的晶振频率(本实验箱的晶体振荡器为5MHz),rf是想要产生的频率;相应的计数初值T的求法如下:T=65536-N(式1-2)以音符DO为例,详述得到对应的频率所需的计数初值:本次课程设计所使用的实验箱上的单片机晶振为6MHz,对应的每次计数时间间隔为2us,低音DO对应的频率为262Hz,其周期T=1/262=3817μs。低音DO(261Hz)、中音DO(523Hz)、高音DO(1046Hz)的计数值。T=65536-N=65536-oscf/12/rf/2=65536-6000000/12/2rf=65536-250000/rf低音DO的T=65536-250000/262=64582中音DO的T=65536-250000/523=65058高音DO的T=65536-250000/1046=65297我们要为这个音符建立一个表格,单片机通过查表的方式来获得相应的数据,单片机6MHZ晶振,高中低音符与计数T0相关的计数值如表1所示:音符频率(HZ)代码值(T)音符频率(HZ)代码值(T)低1DO26264582中5SO78465217低2RE29464686中6LA88065252燕山大学课程设计说明书第8页共25页音乐的音拍为基本的发声时长,一个节拍为单位(C调)相应的时长如表1-2所示:曲调值DELAY曲调值DELAY调4/4125ms调4/462ms调3/4187ms调3/494ms调2/4250ms调2/4125ms错误!未指定书签。对于不同的曲调,本课程设计采用的是调用延时子程序的,控制定时器的启动与关闭,进而时长的方法来实现的。2程序的设计思想及执行流程2.1主程序的流程主程序的执行流程如图2-1所示,其中包含的功能及其子程序有:低3M33064779中7SI98865283低4FA34964820高1DO104665297低5SO39264898高2RE117565323低6LA44064968高3M131865346低7SI49465030高4FA139765357中1DO52365058高5SO156865377中2RE58765110高6LA176065394中3M65965157高7SI196765409中4FA69865178表1-1音符频率表表2-1曲调值表燕山大学课程设计说明书第9页共25页一、键盘扫描:检测是否有键按下,有键按下则记录按下键的键值,并跳转至功能转移程序;无键按下,则返回键盘扫描程序继续检测;二、多功能的实现:对检测到得按键值进行判断,是单独发音按键则跳转至单发音子程序,是歌曲播放键“0”键则跳转连续发音子程序,即开始弹奏《我的中国心》;单发音子程序:根据检测到得按键值,查询音律表,给计时器T0赋值,同时调用固定时长的延时子程序,发出相应频率的及时长的声音,之后自动返回至键盘扫描程序,继续等待是否有键按下;播放歌曲程序:检测到按键按下的是歌曲播放键“0”键时执行该程序,单片机自动播放事先已经存放好的歌曲,同时每隔一定时间扫描一次键盘,检测是否有暂停键“F”或停止键“E”按下,有则处理相应的子功能。歌曲播放完毕之后自动返回至键盘扫描程序,继续等待是否有键按下。燕山大学课程设计说明书第10页共25页是是初始化:设置定时器工作方式,使能中断键盘扫描程序有键按下否识别按键功能根据按键值,调用单发音子程序,播放键入音符调用连续放心子程序,播放歌曲延时去抖动是否是歌曲播放键“0”否否返回键盘扫描程序开始燕山大学课程设计说明书第11页共25页2.2单发音子程序的执行流程根据检测到得按键值,查询音律表,给计时器T0赋值,同时调用固定时长的延时子程序,发出相应频率的及时长的声音,之后自动返回至键盘扫描程序,继续等待是否有键按下,执行流程如图3-2所示2.3播放歌曲子程序的执行流程检测到按键按下的是歌曲播放键“0”键时执行该程序,单片机自动播放事先已经存放好的歌曲,同时每隔一定时间扫描一次键盘,检测是否有暂停键“F”或停止键“E”按下,有则处理相应的子功能。歌曲播放完毕之后自动返回至键盘扫描程序,继续等待是否有键按下。执行流程如图3-3所示:图2-1主程序流程图单发音子程序根据键值查音律表将代码值转入定时器T0使能TR0,开始发声调用固定时长延时子程序返回键盘扫描程序图2-2单发音子程序流程图图燕山大学课程设计说明书第12页共25页否播放歌曲子程序延时返回键盘扫描赋值定时器T1;赋值延时子程序参数取对应音符的代码值和拍数歌曲计数器加一,准备取下一歌曲音符代码取歌谱地址是否为停止码0是是否暂停键“F”扫描键盘扫描键盘返回键盘扫描是否停止键“E”是否是否有键按下否是否是燕山大学课程设计说明书第13页共25页3硬件系统连接3.189C51芯片简介功能描述(1)AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROM—FalshProgrammableandErasableReadOnlyMemory)的低电压,高性能CMOS8位微处理器,俗称单片机。AT89C2051是一种带2K字节闪烁可编程可擦除只读存储器的单片机。单片机的可擦除只读存储器可以反复擦除100次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。AT89C单片机为很多嵌入式控制系统提供了一种