可演奏的电子琴_第1页
可演奏的电子琴_第2页
可演奏的电子琴_第3页
可演奏的电子琴_第4页
可演奏的电子琴_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

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

文档简介

目录 绪论 1 第一章 总体方案设计 .2 1.1 总体设计要求 .2 1.2 系统框图 .2 第二章 系统硬件电路的设计 .3 第三章 系统软件电路的设计 .4 3.1 软件设计思想 .4 3.2 主程序设计 .4 3.3 子程序设计 .5 3.3.1 音乐播放设计 .5 3.3.2 键盘矩阵扫描子程序 .7 3.3.3 中断程序设计 .9 第四章 调试及性能分析 10 4.1 系统调试 10 4-2.实物制作 .12 4.3 性能分析总结 12 总结 .13 附录 .15 A. 电路原理图 15 B. 仿真图 15 C. 元件清单 16 D. 程序清单 16 E. 实物图 19 1 绪论 单片微型计算机是大规模集成电路技术发展的产物,属第四代电子计算机, 它具有高性能、高速度、体积小、价格低廉、稳定可靠、应用广泛的特点。它 的应用必定导致传统的控制技术从根本上发生变革。因此,单片机的开发应用 已成为高科技和工程领域的一项重大课题。 简易电子琴系统就是以单片机为主要元器件设计的一个简易电子琴,这只 是单片机应用的一个点,由点及面,希望可以更好的了解和应用单片机技术。 电子琴是现代电子科技与音乐结合的产物,是一种新型的键盘乐器。它在 现代音乐扮演着重要的角色,单片机具有强大的控制功能和灵活的编程实现特 性,它已经溶入现代人们的生活中,成为不可替代的一部分。主要内容是用 AT89C51单片机为核心控制元件,设计一个电子琴。以单片机作为主控核心,与 键盘、扬声器等模块组成核心主控制模块,在主控模块上设有16个按键和扬声 器。本系统运行稳定,其优点是硬件电路简单,软件功能完善,控制系统可靠, 性价比较高等,具有一定的实用和参考价值。 之所以以单片机电子琴为选题,目的在于从日常生活能接触到的细微处着 手,通过理论与实践的结合,更明确自己的所学所用,也在实践中发现理论的 不足,对目前日益广泛应用的单片机有了更加理性化和感性化的认识,使理论 和实践相得益彰。 通过单片机电子琴这个选题,更深层次的了解了单片机技术,以前只是有 理论,实践的机会不是很多,在作单片机电子琴这个选题的过程中,更加熟练 的掌握了一些单片机芯片的应用,也解决了很多以前理论和实践脱节的问题, 可谓对单片机的认识有了一个小的飞跃。 2 第一章 总体方案设计 1.1 总体设计要求 本系统采用单片机 AT89C51 为微处理器,制造可演奏的电子琴,能够在目 测条件下 LED 显示屏各点亮度均匀,充足,稳定,清晰无串扰。本系统具有硬 件少,结构简单,容易实现,性能稳定可靠,成本低等特点。 根据设计要求,初步确定设计方案如下: 1.采用 MCS-51 单片机作为微处理器。 2.应用 4*4 键盘矩阵识别。即矩阵扫描,显示当前按键。 3.依次按下 16 个开关 k0 到 kF,数码管分别显示 “0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F”;依次按下开关 k0-k9 蜂鸣器分别发 出“Do,ri,mi,fa,so,la,xi,do”声;依次按下开关 kA-kF 蜂鸣器分别发出 “Do, ri,mi,fa,so,la,xi,do”声。 1.2 系统框图 本系统主要以 51 单片机为主控核心,与矩阵键盘、扬声器、LED 显示 管模块一起组合而成。具体如下: 单 片 机 键盘矩阵 数码管 扬声器 最小系统 图 1.1 系统框图 3 第二章 系统硬件电路的设计 本系统的硬件电路是由单片机最小系统、按键电路、动态显示驱动电路三 部分组成。实现键盘矩阵的识别,数码管能显示对应的数字,蜂鸣器能发出相 应的音符等功能。这部分主要由张天恩同学完成制作。见附录 B。 4 第三章 系统软件电路的设计 3.1 软件设计思想 软件是该电子琴控制系统的重要组成部分,在系统的软件设计中我们也才 用了模块化设计,将系统的各部分功能编写成子模块的形式,这样增强了系统 软件的可读性和可移植性。 3.2 主程序设计 主程序首先设置模块初始化,然后发送扫描码,形成键盘矩阵,并显示按 键,然后启动定时器根据 KeyNo 发音。图 3.1 为主程序流程图。 模块初始化 有按键按下 开始 发送扫描码 启动定时器根 据 K e y N o 发音 扫描键盘矩阵 显示按键 延时 结束 是 停止播放 否 图 3.1 主程序流程图 5 主程序如下: void main() P0=0xBF; ;初始显示 TMOD=0x01; IE=0x82; while(1) P1=0xf0; ;发送扫描码 if(P1!=0xf0) ;如果有键按下 Keys_Scan(); ;扫描键盘矩阵 P0=DSY_TableKeyNo; ;显示按键 TR0=1; ;启动定时器,根据 KeyNo 发音 else TR0=0; ;停止播放 DelayMS(2); 3.3 子程序设计 子程序中包括音乐播放设计,键盘矩阵扫描子程序和中断程序三种,下面依次详细介 绍。 3.3.1 音乐播放设计 一首音乐是许多不同的音阶组成的,而每个音阶对应着不同的频率,这样 我 们就可以利用不同的频率的组合,即可构成我们所想要的音乐了,当然对于单 6 片机来产生不同的频率非常方便,我们可以利用单片机的定时/计数器 T0 来产 生这 样方波频率信号,因此,我们只要把一首歌曲的音阶对应频率关系弄正确即可。 利用 AT89C51 的内部定时器使其工作计数器模式(MODE1)下,改变计数值 TH0 及 TL0 以产生不同频率的方法产生不同音阶,例如,频率为 523Hz,其周期 T1/5231912s,因此只要令计数器计时 956s/1s956,每计数 956 次时将 I/O 反相,就可得到中音 DO(523Hz) 。 计数脉冲值与频率的关系式是: Nfi2fr 式中,N 是计数值;fi 是机器频率(晶体振荡器为 12MHz 时,其频率为 1MHz) ;fr 是想要产生的频率。其计数初值 T 的求法如下: T65536N65536fi2fr 例如:设 K65536,fi1MHz,求低音 DO(261Hz) 、中音 DO(523Hz) 、 高音 DO(1046Hz)的计数值。 T65536N65536fi2fr6553610000002fr 65536500000/fr 低音 DO 的 T65536500000/26263628 中音 DO 的 T65536500000/52364580 高音 DO 的 T65536500000/104665058 单片机 12MHZ 晶振,高中低音符与计数 T0 相关的计数值如表 3-2 所示。 表 3-2 音符频率表 音符 频率 (HZ) 简谱码(T 值) 音符 频率 (HZ) 简谱码(T 值) 休止 0 0 中 4 FA 698 64820 低 1 DO 262 63628 中 5 SO 784 64898 低 2 RE 294 63835 中 6 LA 880 64968 低 3 ME 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 ME 1318 65157 低 7 SI 494 64524 高 4 FA 1397 65178 我们要为这个音符建立一个表格,单片机通过查表的方式来获得相应的数 7 据 uint code Tone_Delay_Table= 64021,64103,64260,64400,64524,64580,64684,64777, 64820,64898,64968,65030,65058,65110,65157,65178, 音乐播放设计子程序如下: Uchar code DSY_Table= 0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80, 0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0xBF; uint code Tone_Delay_Table= 64021,64103,64260,64400,64524,64580,64684,64777, 64820,64898,64968,65030,65058,65110,65157,65178; 3.3.2 键盘矩阵扫描子程序 七段 LED 显示器内部由七个条形发光二极管和一个小圆点发光二极管组成, 根据各管的极管的接线形式,可分成共阴极型和共阳极型。 LED 数码管的 ga 七个发光二极管因加正电压而发亮,因加零电压而不以发亮,不同亮暗的组合 就能形成不同的字形,这种组合称之为字形码。 本系统键盘矩阵扫描子程序流程图如下: 8 有键按下 开始 模块初始化 键盘扫描 显示按键 结束 是 否 图 3.3 键盘矩阵扫描子程序流程图 键盘矩阵扫描子程序如下: void Keys_Scan() uchar Tmp,k; P1=0x0F; ;高四位置 0,放入四行 DelayMS(2); Tmp=P10x0F; switch(Tmp) ;判断按键发生于 0-3 列中的哪一列 case 1:k=0;break; case 2:k=1;break; case 4:k=2;break; case 8:k=3;break; 9 default:return; ;无键按下 P1=0xF0; ;低四位置 0,放入四列 DelayMS(2); Tmp=(P14)0x0F; ;对 0-3 行分别附加起始值 0,4,8,12 switch(Tmp) case 1:k+=0;break; case 2:k+=4;break; case 4:k+=8;break; case 8:k+=12;break; default:return; KeyNo=k; 3.3.3 中断程序设计 显示程序在进入中断后首先要对定时器 T0 重新赋初值,以保证显示屏刷新 率的稳定。音乐发声中断流程图如图所示: 存 T H 0 T L 0 初值 T 0 中断入口 中断返回 P 3 . 0 取反 10 图 3.4 中断流程图 中断程序设计如下: void Play_Tone() interrupt 1 ; 定时器 0 中断程序,不同频率的声音由该中断产生 TH0=Tone_Delay_TableKeyNo/256; TL0=Tone_Delay_TableKeyNo%256; BEEP=BEEP; 11 第四章 调试及性能分析 4.1系统调试 软件调试主要是利用计算机仿真针对程序中可能存在的错误进行检测,直 到得到正确的显示结果。按照程序流程图在 KEIL C51软件中编写好程序,在此 软件中检测编写好的程序是否有误语法错误。使用步骤: 1.打开 keil,建立工程,输入程序 2.编译和生成 hex 文件,如图 4-1 所示 图 4-1 软件调试 3.打开 Proteus,设计硬件电路图,见图 4-2 12 图 4-2 硬件仿真图 4.在 Program File 出,导入 hex 文件,见图 4-3 图 4-3 载入 Hex 文件 将鼠标置于电路图中 AT89C51 器件上,右击后再左击,弹出图 4-3 中的对 话框,导入 dzp.hex 文件。 5.点击面板左下角的 ,开始调试 13 4-2.实物制作 1.按照原理图布线,布线要规范,焊接; 2.利用单片机开发工具将程序烧入芯片中; 3.将芯片插入底座,确保每个引脚都与底座有良好的接触; 4.将电路的 VCC 端接到电源正极,将电路中接地端接到电源负极; 5.观察效果; 6.如果效果不对查错(查错方法:利用万用表,将指针打到电流挡,选择 合适的电流,此处本人选择了 20mA,负极接地,正极从电源端开始检测,以及 芯片各个引脚的电流,电源端万有表会显示 1,各引脚会显示 0.711.0 不等, 如显示 0,则说明断路,焊接有问题,接触不好) ; 7.实物未能出现预期效果。实物图见附录 E. 4.3 性能分析总结 此次系统设计结果较好,LED 显示屏能很好的显示信息同时播放相应的音符。 这个方案设计的可演奏的电子琴,电路简单,成本较低,且较容易扩展成更大 的显示屏;LED 显示屏各点亮度均匀、充足、稳定、清晰无串扰;硬件电路简 单,软件功能完善,控制系统可靠,性价比较高等,具有一定的实用和参考价 值。 14 总结 通过这次科研实践,我学到了不少课本上没有的知识,也锻炼了自己的动 手能力,将以前学过的零散的知识串到一起。经过我长时间的设计及调试,本 系统基本能实现按下键盘矩阵中的按键会使数码管显示当前按键,扬声器播放 对应的音符。但由于仿真系统原因,本设计音频效果不是很好。不足之处有:1.可 弹奏的音符数较少,只能在一定范围内满足用户需要。可通过改进键盘识别模 块和发生模块来增加其复杂度 2.音量不可调。 我的综合设计主要涉及硬件和软件两方面的内容,通过这些我的硬件和软 件开发能力都获得了提高。首先硬件方面,基本了解了电子产品的开发流程和 所要做的工作。基本掌握了 Proteus 原理图的方法,并设计了一个单片机最小系 统。通过开发板的设计和硬件搭建的过程,使我对 51 系单片机的接口有了更深 层次的理解,熟悉了一些单片机常用的外围电路引脚和连接方法,如 LED 数码 管,键盘等。并且我学会了分析问题解决问题的能力,加深了对所学理论知识 的理解 和运用。我的动手能力得到了很大的提高,创新意识得到了锻炼。 15 参考文献 1张靖武,周灵彬单片机系统的 PROTEUS 设计与仿真北京:电子工业 出版社 2夏继强. 单片机实验与实践教程. 北京:北京航空航天大学出版社, 2001 3何立民. 单片机高级教程.第 1 版北京:北京航空航天大学出版社,2001 4 AT89C51 DATA SHEEP Philips Semiconductors 1999.dec 5肖洪兵. 跟我学用单片机. 北京:北京航空航天大学出版社,2002.8 16 附录 A. 电路原理图 B. 仿真图 17 C. 元件清单 元件 规格 数量 电容 20pF 2 个 电容 10uF 1 个 电阻 10k 1 个 晶振 12MHZ 1 个 排阻 1*8(220 欧) 1 个 蜂鸣器 1 个 数码管 1 个 4*4 键盘 1 个 导线 1 米 焊锡丝 1 米 面包板 1 个 电池底盒 1 个 单片机 AT89C51 1 个 单片机底座 1 个 D. 程序清单 #include #define uchar unsigned char #define uint unsigned int Uchar code DSY_Table= ;共阳数码管编码 0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80, 0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0xBF; ui

温馨提示

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

评论

0/150

提交评论