电子琴设计报告.docx_第1页
电子琴设计报告.docx_第2页
电子琴设计报告.docx_第3页
电子琴设计报告.docx_第4页
电子琴设计报告.docx_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

工程设计报告电子琴设计信息工程学院二系一队王飞五 3242008001李晓辰 3242008003李笑添 3242008011 2011年3月6日摘要:本文介绍了简易电子琴的设计,它通过软硬件结合实现.硬件系统是以51系列单片机AT89C51为主控制器,并附有矩阵键盘、扬声器等.软件设计则采用C语言编写程序实现. 它能播放系统设置的相应音符,并能完成一首军歌的播放,还具有示音的功能. 设计得简易电子琴有在硬件软件都有其优点,在硬件方面电路简单,竟以单片机为核心并附加简单的外围电路,在实现时有很大的可信性,而在软件方面C语言编写的程序功能完善,控制系统可靠. 本系统在运行方面稳定,我们为电路设计的电源用变压器将220V交流电转化为9V的直流电再通过7805得到5V的直流为整个电路提供稳定的电源.Abstract: This article introduced the simple electric pianos design, it realizes through the software and hardware union. The hardware system is by 51 series monolithic integrated circuit AT89C51 primarily controller, and attaches the matrix keyboard, the speaker and so on. The software design uses the C language write program to realize. It can broadcast the system establishment the corresponding note, and can complete a military song the broadcast, but also has shows the sound the function. Designs the simple electric piano to have in the hardware software has its merit, is simple in the hardware aspect electric circuit, unexpectedly and attaches the simple peripheral circuit take the monolithic integrated circuit as the core, when realization has the very big credibility, but is perfect in the software aspect C language compilations program function, the control system is reliable. This system is stable in the movement aspect, we change into for circuit designs power source with the transformer the 220V exchange phonograph 9V the direct current through 7805 to obtain the 5V cocurrent to provide again for the entire electric circuit the stable power source. 关键词: 电子琴;单片机;C语言.一 功能与性能指标单片微型计算机是大规模集成电路技术发展的产物,属第四代电子计算机,它具有高性能、高速度、体积小、价格低廉、稳定可靠、应用广泛的特点,并具有强大的控制功能和灵活的编程实现特性。它的应用必定导致传统的控制技术从根本上发生变革.电子琴是现代电子科技与音乐结合的产物,是一种新型的键盘乐器。它在现代音乐扮演着重要的角色,已经溶入现代人们的生活中,成为不可替代的一部分。本文的主要内容是用AT89S51单片机为核心控制元件,设计一个电子琴,它是以单片机作为主控核心,与键盘、扬声器等模块组成核心主控制模块. 采用单片机电路设计,基于51系列单片机AT89C52设计一款简易的电子琴,采用八音键盘,鉴于传统电子琴可以用键盘上的“1”到“8”键演奏从So到DO等8个音,从而可以用来弹奏喜欢的乐曲。主要功能(1)这是一个简易的八音符电子琴,它可通用键盘上的“1”到“8”键演奏从So到DO等8个音。(2)具有自动播放功能,可以播放祝你生日快乐纯音乐和低So到高DO等16个音串曲。(3)预留功能拓展接入点,例如,接入电位器可实现调整音量大小的功能。二 设计方案及比较结论1.主要工作原理电子琴的系统流程图 模块初始化 结束是否有复位键扫描键盘 延时军歌播放音调播放开始电子琴的工作原理音乐产生原理及硬件设计由于一首音乐是许多不同的音阶组成的,而每个音阶对应着不同的频率,这样我们就可以利用不同的频率的组合,即可构成我们所想要的音乐了,当然对于单片机来产生不同的频率非常方便,我们可以利用单片机的定时/计数器来产生这样方波频率信号。本次设计中单片机晶振为12MHZ,那么定时器的计数周期为1MHZ,假如选择工作方式1,那T值便为T= 216-5105/相应的频率 ,那么根据不同的频率计算出应该赋给定时器的计数值.系统总框图AT89C521单片机 复位电路模块电源模块蜂鸣器模块键盘模块数码管模块本电子琴系统以AT89C51 单片机单片机为系统核心,配合24矩阵键盘模块和蜂鸣器模块4部分组成,很好地实现了电子琴的弹奏,乐曲的播放功能。2.各结构部分方案比较与结论控制模块方案选择方案一:用可控硅制作电子琴。将220V交流电经变压器降压,再经过整流、滤波,获得+13.5V直流电压。将单向可控硅SCR和电阻、电容组成驰张振荡器电路。但该设计方案制作成本高且复杂。方案二: 采用AT89C51单片机进行控制,在我校实验室有存货且是日常实验常用单片机,组员对其工作原理已经有了较全面的理解,比较容易上手。方案三:采用AT89S52单片机进行控制,满足了本作品智能化的要求,它的内部程序存储空间达到8K,使软件设计有足够的内部使用空间并且方便日后系统升级,使用方便,抗干扰性能提高。 选择方案:鉴于上述对比与分析,结合本小组成员基础能力,本设计采用方案二 .定时/计数延时方法选择声音的频谱范围约在几十到几千赫兹,若能利用程序来控制单片机某个口线不断的输出“高”“低”电平,则在该口线上就能产生一定频率的方波,将该方波接上喇叭就能发出一定频率的声音,若再利用程序控制“高”“低”电平的持续时间,就能改变输出波形的频率,从而改变音调。高中低音符与单片机计数T0相关的计数值如下表所示 音符 频率(HZ)简谱码(T值) 音符 频率(HZ)简谱码(T值) 低1 DO 262 63628 # 4 FA# 740 64860 #1 DO# 277 63731 中 5 SO 784 64898 低2 RE 294 63835 # 5 SO# 831 64934 #2 RE# 311 63928 中 6 LA 880 64968 低 3 M 330 64021 # 6 932 64994 低 4 FA 349 64103 中 7 SI 988 65030 # 4 FA# 370 64185 高 1 DO 1046 65058 低 5 SO 392 64260 # 1 DO# 1109 65085 # 5 SO# 415 64331 高 2 RE 1175 65110 低 6 LA 440 64400 # 2 RE# 1245 65134 # 6 466 64463 高 3 M 1318 65157 低 7 SI 494 64524 高 4 FA 1397 65178 中 1 DO 523 64580 # 4 FA# 1480 65198 # 1 DO# 554 64633 高 5 SO 1568 65217 中 2 RE 587 64684 # 5 SO# 1661 65235 # 2 RE# 622 64732 高 6 LA 1760 65252 中 3 M 659 64777 # 6 1865 65268 中 4 FA 698 64820 高 7 SI 1967 65283 乐曲中,每一音符对应着确定的频率,表1给出C调时各音符频率。如果单片机某个口线输出“高”“低”电平的频率和某个音符的频率一样,那么将此口线接上喇叭就可以发出此音符的声音。本系统就是根据此原理设计,对于AT89C2051单片机来说要产生一定频率的方波大致是先将某口线输出高电平然后延时一段时间再输出低电平,如此循环的输出就会产生一定频率的方波,通过改变延时的时间就可以改变输出方波的频率,而单片机延时主要有两种方法:第一种方法是使用循环语句来实现延时,让单片机循环的执行某条指令然后根据单片机每条指令运行的时间以及循环的次数来计算延时时间。如下所示: 在上面的延时程序中可以看出:DJNZ指令执行时间为2个机器周期,MOV指令执行时间为1个机器周期,对于单片机的晶振频率为12MHz时机器周期为1s。因此可以根据这些指令的执行时间和每条指令的循环次数计算出以上的延时程序延时时间大约为50ms。但这种方法的计算的延时时间不是很准确并且为达到一定的延时时间先必须进行很复杂的运算。所以在延时时间要求不严格的时候才采用这种方法。但对于电子琴电路由于每个音符的频率值要求比较严格,变化范围不能太大,因此产生方波的频率也要求比较严格,不能采用延时程序来产生此方波。第二种方法是使用单片机的定时计数器延时。AT89C2051单片机内部有两个16位的定时计数器T0和T1,单片机的定时计数器实际上是个计数装置它既可以对单片机的内部晶振驱动时钟计数也可以对外部输入的脉冲计数,对内部晶振计数时称为定时器,对外部时钟计数时称为计数器。当对单片机的内部晶振驱动时钟计数时,每个机器周期定时计数器的计数值就加1,当计数值达到计数最大值时计数完毕并通知单片机的CPU;对外部输入的时钟信号计数时,外部时钟的每个时钟上升沿定时计数器的计数值就加1,当计数值达到计数最大值时计数完毕并通知单片机的CPU。因此,如果知道单片机的机器周期或者外部输入时钟信号的周期,单片机就可以根据定时器的计数值计算出定时的时间。用此方法定时十分准确,想得到多大的延时时间就可以给定时器赋一定的计数初值,定时器从预先设置的计数初值开始不断增1当增加到计数最大值时计数完毕,调整计数初值的大小就可以调整定时器定时的时间,从而达到准确的延时。结论:本系统中就采用第二种方法通过定时/计数器延时。电源模块方案选择方案一:用变压器将220V交流电转化为9V的交流电再通过电桥和7805到5V的直流为整个电路提供稳定的电源.方案二:采用干电池供电。方案三:采用实验室配备直流稳压电源进行供电。方案比较: 方案二采用电池供电,电池槽会占用空间进而影响电子琴体积,而且电池还会存在续航能力的问题。方案一繁琐,况且实验室所能提供器件以及组员能力有限,结合本次电子设计目的,采用更为简捷方案三。按键选择方案传统电子琴可以用键盘上的“1”到“7”键演奏从SO到高O等8音。外加调音键和自动播放键,可自动播音乐蜂鸣器选择方案方案一:0.25W / 8欧喇叭发声方案二:2.5W / 8欧喇叭发声方案比较:使用0.25W / 8欧喇叭可以直接使用单片机驱动元件,使用2.5W / 欧喇叭则需要外加三极管驱动电路,但大功率喇叭的音质效果比前者更佳,故为了电子琴整体性考虑,我们选用了0.5W功率喇叭三.系统结构设计与各部分功能技术指标单片机芯片介绍(一).芯片引脚图 (二) 主要功能特性AT89C51是51系列单片机的一个型号,它是ATMEL公司生产的一个低电压,高性能CMOS 8位单片机,片内含8k bytes的可反复擦写的Flash只读程序存储器和256 bytes的随机存取数据存储器(RAM),具体有:兼容MCS51指令系统 8k可反复擦写(1000次)Flash ROM 32个双向I/O口 256x8bit内部RAM 3个16位可编程定时/计数器中断 时钟频率0-24MHz 2个串行中断 可编程UART串行通道 2个外部中断源 共8个中断源 2个读写中断口线 3级加密位 低功耗空闲和掉电模式 软件设置睡眠和唤醒功能(三) 各引脚功能 XTAL1(19 脚)和XTAL2(18 脚)为振荡器输入输出端口,外接12MHz 晶振。RST/Vpd(9 脚)为复位输入端口,外接电阻电容组成的复位电路。VCC(40 脚)和VSS(20 脚)为供电端口,分别接+5V电源的正负端。P0P3 为可编程通用I/O 脚,其功能用途由软件定义, P0 口是一组8 位漏极开路型双向I/O 口, 也即地址/数据总线复用口。作为输出口用时,每位能吸收电流的 方式驱动8 个TTL逻辑门电路,对端口P0 写“1”时,可作为高阻抗输入端用。P1 是一个带内部上拉电阻的8 位双向I/O 口, P1 的输出缓冲级可驱动. P2 是一个带有内部上拉电阻的8 位双向I/O 口,P2 的输出缓冲级可驱动(吸收或输出电流)4 个TTL 逻辑门电路。P3 口除了作为一般的I/O 口线外,更重要的用途是它的第二功能 P3 口还接收一些用于Flash 闪速存储器编程和程序校验的控制信号。硬件电路设计: 总体系统设计:晶振12MHZ,利用的键盘输入为八个键,整体系统图如下:复位电路 AT89SC51电源电路晶振12MHZ音频放大电路扬声器键盘输入1. 电源电路:(初步设计,后因器件及个人能力问题未采用,用实验室直流稳压5v电源代替)输出5V电源 7805 变压器 电桥其中,经变压器过后的交流电利用四个二极管组成的电桥变为直流再利用7805将其转化为电路要求的5V直流电,2键盘电路:按键加上两颗功能键,按键需接上拉电阻使输入单片机的电压为高电平. 如图: 上拉电阻(接高电平) 按键 3音频输出放大电路和数码显示管电路:利用两个三极管将信号放大后输入到喇叭。具体的硬件电路原理图如下:注:最终获得的产品去掉了电源电路部分和八段显示码部分四.软件设计参照总的系统流程图: 模块初始化 结束是否有复位键扫描键盘 延时军歌播放音调播放开始 是 否源程序: #includesbit P1_0=P10;sbit P1_1=P11;#define SPK P1_0 #define LED P1_1#define shumaguan P0 unsigned int tone1,tone2;unsigned char code yinfu=0xfb,0xe9, /*Do*/ 0xfc,0x5c, /*Re*/ 0xfc,0xc1, /*Mi*/ 0xfc,0xef, /*Fa*/ 0xfd,0x45, /*So*/ 0xfd,0x92, /*La*/ 0xfd,0xd0, /*Si*/ 0xfd,0xee, /*Do*/ 0x00,0x00 ;/*军歌音调表*/ unsigned char code shengri_tone= 8,8,8,8,8,8,0, 1,1,3,5,5,6,8,6,5,0, 1,3,6,5,3,2,2,0, 1,3,5,5,6,8,6,5,0, 1,1,3,5,5,6,6,5,3,2,2,1,0, 2,2,3,5,5,8,6,2,5,0, 2,2,3,5,5,8,6,5,3,2 ;/*生日快乐歌节拍表*/unsigned char code shengri_beat= 3,3,3,3,3,20,54, 10,36,36,36,9,25,36,15,54,25, 46,36,30,15,30,36,6,25, 46,36,18,18,24,30,15,46,25, 30,30,36,24,18,18,24,24,18,18,18,54,25, 20,20,24,20,20,36,36,36,54,25, 20,20,24,20,20,36,36,15,15,54,;/*自动演示音调表*/unsigned char code yanshi_tone= 1,0,2,0,3,0,4,0,5,0,6,0,7,0,8,0, 8,0,7,0,6,0,5,0,4,0,3,0,2,0,1,0;/*自动演示节拍表*/unsigned char code yanshi_beat= 48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,2, 48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,2;/*15ms延时子程序,用于节拍*/void delay(void) unsigned char n=15; while(n-) unsigned char i; for(i=0;i=68) return; /*演奏子程序2*/void play2(void) unsigned char m=0; unsigned char s; unsigned char a=1; while(1) EA=0; LED=0; a=yanshi_tonem; s=yanshi_beatm; tone1=yinfu2*a-2; tone2=yinfu2*a-1; EA=1; while(s-) delay(); LED=1; m+; if(m=32) return; /*按键检测*/void check_key(void) P2=0xff; P3=0xff; /设置为输入状态switch(P2) case 0xfe:shumaguan=0xF9;tone1=0xfb;tone2=0xe9;EA=1;break;case 0xfd:shumaguan=0xA4;tone1=0xfc;tone2=0x5c;EA=1;break;case 0xfb:shumaguan=0xB0;tone1=0xfc;tone2=0xc1;EA=1;break;case 0xf7:shumaguan=0x99;tone1=0xfc;tone2=0xef;EA=1;break;case 0xef:shumaguan=0x92;tone1=0xfd;tone2=0x45;EA=1;break;case 0xdf:shumaguan=0x82;tone1=0xfd;tone2=0x92;EA=1;break;case 0xbf:shumaguan=0xF8;tone1=0xfd;tone2=0xd0;EA=1;break; case 0x7f:shumaguan=0x79;tone1=0xfd;tone2=0xee;EA=1;break; default: EA=0;SPK=0;shumaguan=0xff; switch(P3) case 0xfb:play1();break; case 0xf7:play2();break; /*主程序*/void main(void) initTimer();shumaguan=0xff; TR0=1;ET0=1;SPK=0;while(1) check_key();四材料与费用明细表元器件清单生产厂家型号数量价格(元/个)ATMELAT89C521612M晶振10.5按键开关110.2扬声器15.0发光二极管10.18050三极管20.2220V转9V变压器18.010K电阻80.11K电阻10.1330电阻10.120F极性电容20.11000F极性电容10.10.1F电容20.1感谢教员积极认真贯彻科学发展观和以人为本方针路线,提供实验室和几乎所有器件,本小组几乎没花一分钱。五调试方案设计电路调试是整个系统功能否实现的关键步骤,我们将整个调试过程分为三大部分:硬件调试、软件调试和综合调试。1软件仿真调试软件仿真调试主要是针对单片机部分进行调试。在软件运行前,先确保电路中连线正确,这一工作是整个调试工作的第一步,也是非常重要的一个步骤。在这部分调试中主要通过目测,用来完成检测电路中是否存在断路或者短路情况等。在确保软件仿真电路正常,无异常情况(断路或短路)方可进行软件运行,在本次设计中,软件运行主要是测试单片机键盘控制部分、数码管点亮部分、和音频功放电路调试。1、数码管LED电路调试:软件运行,随机按下按钮可以看到数码管显示数字;2、单片机键盘控制部分调试:软件运行,随机按动键盘可以发现各个按键对应的音正确。.2 软件调试调试主要方法和技巧:通常一个调试程序应该具备至少四种性能:跟踪、断点、查看变量、更改数值。整个程序是一个主程序调用各个子程序实现功能的过程,要使主程序和整个程序都能平稳运行,各个模块的子程序的正确与平稳运行必不可少,所以在软件调试的最初阶段就是把各个子程序模块进行分别调试。具体调试过程1调试(按实际做的步奏):调试k1k8音

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论