单片机电子琴单片机课程设计.doc_第1页
单片机电子琴单片机课程设计.doc_第2页
单片机电子琴单片机课程设计.doc_第3页
单片机电子琴单片机课程设计.doc_第4页
单片机电子琴单片机课程设计.doc_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

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

文档简介

郑州科技学院单片机课程设计 题 目:基于51单片的声光电子琴设计学生姓名: 苏梦强 专业班级: 电子科学与技术 学 号: 201131074 院 系: 电气工程学院 指导教师: 饶美丽 完成时间: 2015年1月9日 目录一、设计任务与要求11.1 设计任务11.2 设计要求11.3 设计意义1二、方案总体设计22.1 方案对比22.2总体设计42.3 总体方案工作原理4三、软件设计63.1 系统流程63.2延时源代码63.3 发音源代码73.3单个按键源代码7 3.4所有程序代码8四、系统仿真与调试114.1 仿真软件简介114.2软件调试114.3 使用说明13五、设计总结14附录1:总体电路原理图17附录2:元器件清单18一、设计任务与要求1.1 设计任务 实现电子琴发声控制系统;要求电路实现如下功能: 利用蜂鸣器作为发声部件,两个数码管作为显示部件,设置10个按键,实现高音、中音、低音的1、2、3、4、5、6、7的发音。并在存储一首歌曲的内容,可以实现自动播放。 说明:单片机的工作时钟频率为11.0592MHz。1.2 设计要求设计一个带有复位电路,晶振时钟,能显示音调字符的8键电子琴。1.3 设计意义该设计具有以下优点:1) 可以方便得知播放的音符和音调;2) 比传统电子琴功能更完善;3) 制作简单,成本低17二、方案总体设计本次课程设计的课题是基于51单片机的电子琴的设计,所要达到的要求如下:1)利用蜂鸣器作为发声部件。2)一个数码管作为显示部件。3)设置8个按键,实现高音、中音、低音的1、2、3、4、5、6、7、8的发音。本次设计主要是要通过软硬件的配合实现电子琴的上述功能,操作人员可以通过按下键盘上任意一个键来发出相应的音符。2.1 方案对比AT89C51具有高速度、低电压、低功耗、且可靠性和成本都比较低的特点。因此本次课程设计采用AT89C51单片机作为整个电路核心控制器件。对于本控制系统使用一片AT89C51系列的单片机,不需要外扩展存储器,就能实现显示、预制状态、动态调节的功能,因而整体结构简单。设计电路时运用89C51系列单片机的接口来实现各种输入、输出功能。P2.7待定部分口用作输出口,向发声电路输出信号;P1口和P0口共同实现一个键盘的功能。方案一:采用单个的逻辑器件组合我们知道计数器8253可以产生任意频率的方波频率信号,因此,我们只要把一首歌曲的音阶对应频率与计数器的频率对应起来就可通过计数器产生音乐了。根据本实验要求,采用8279将键扫描得到的键值通过查表得到相应的8253的频率值,将从8253得到相对应的按键弹奏信号经过LM386进行放大,再用喇叭输出,就实现了简易电子琴的基本功能,也就完成了实验的要求方案二:用VHDL语言编程来实现利用我们实验室先进的数字电路实验设备,我们可以采用VHDL语言编程来实现。我们可以通过VDHL语言,对实验原理图的各个部分进行设计,通过编译,可以在计算机上下载此实验原理图,利用电路学习机上的芯片。我们很快就可以设计出一个简单的电子琴。并实现其功能。方案三:采用AT89C51单片机采用AT89C51单片机作为主控芯片,设置键盘、蜂鸣器等外围器件,另外还用到一些简单器件如:一位数码管,和PNP型三极管等。利用按键实现音符和音调的输入;一位的数码管进行被操作的按键显示:用PNP型三极管实现低音频功率放大;最后用蜂鸣器发音。方案比较:方案一采用单个的逻辑器件组合实现。这样虽然比较直观,逻辑器件分工鲜明,思路也比清晰,一目了然,但是由于元器件种类、个数繁多,而过于复杂的硬件电路也容易引起系统的精度不高、体积过大等不利因素。例如七个不同的音符是由七个不同的频率来控制发出的,所用仪器之多显而易见。方案二采用VHDL语言编程来实现电子琴的各项功能。系统主要由电子琴发声模块、选择控制模块和储存器模块组成。和方案一相比较,方案二就显得比较笼统,虽然我们可以看到用超高速硬件描述语言VHDL的优势,但本质上它只是把整个系统分为了若干个模块,而不牵涉到具体的硬件电路。方案三与前两种方案相比,主控芯片采用AT89C51单片机,它是大规模集成电路技术发展的产物,具有高性能、高速度、体积小、价格低廉、稳定可靠、应用广泛的特点。同时具有强大的控制功能和灵活的编程实现特性,由于本设计主要用于人们娱乐方面,因此在设计上尽量使其安全以及简单易操作。而第三种方案具有经济可行性、技术可行性、实物应用性。所以我们选择第三种方案。2.2总体设计设计总体框架图如图1所示 图1 单片机总体框架图2.3 总体方案工作原理由AT89C51的P1口8个按键控制DO,RE,MI,FA,SO,LA,XI,DO的各个音符,在由位于P0口的一位数码管显示出来,同时位于P37口的蜂鸣器发出声音。发音原理:若要产生音频脉冲,只要算出某一音频的周期,再将周期除以2,即为半周期的时间。利用定时器记时半周期时间,每当记时终止后就将P37反相,然后记时再反相。就可在P37上得到此频率的脉冲。利用AT89C51的内部定时器使其工作计数器模式下,改变计数值TH0及TL0以产生不同频率的方法产生不同音阶。三、软件设计3.1 系统流程在绘制传统流程图时注意几点:1) 熟练绘制传统流程图的基本元素,三种基本结构的流程图标准画法2) 将复合条件转为多个单一条件3) 循环注意初值、变化和终止4) 算法的重点实现一定体现出来程序流程如图12所示:图12 程序流程图3.2延时源代码void DelayMS(uint x)uchar t;while(x-) for(t=0;t120;t+);3.3 发音源代码void Play(uchar y)uchar i;for(i=0;i100;i+)BEEP=BEEP;/对蜂鸣器电平求反DelayMS(y);BEEP=1;/给蜂鸣器一个高电平3.3单个按键源代码:if(K1=0)DelayMS(10);/按键去抖动if(K1=0)num=1;P0=tablenum;Play(1);while(!K1);3.4所有程序代码#include /调用单片机头文件#define uchar unsigned char /无符号字符型 宏定义变量范围0255#define uint unsigned int /无符号整型 宏定义变量范围065535sbit beep = P25; /蜂鸣器定义sbit K1=P10;/给P10定义,控制DO的发音sbit K2=P11;/给P11定义,控制XI的发音sbit K3=P12;/给P12定义,控制LA的发音sbit K4=P13;/给P13定义,控制SO的发音sbit K5=P34;/给P34定义,控制FA的发音sbit K6=P35;/给P35定义,控制MI的发音sbit K7=P36;/给P36定义,控制RE的发音sbit K8=P37;/给P37定义,控制DO的发音sbit K9=P20;/音乐播放按键uchar flag_en = 0; /开始放歌uchar flag_i = 0;/数码管段选定义 0 1 2 3 4 56 7 8 9uchar code smg_du=0xde,0x90,0xcd,0xd9,0x93,0x5b,0x5f,0xd0,0xdf,0xdb/ AB C D E F不显示 ; /断码uchar m,n; uchar code T492=0,0,0xF8,0x8B,0xF8,0xF2,0xF9,0x5B,0xF9,0xB7,0xFA,0x14,0xFA,0x66,0xFA,0xB9,0xFB,0x03,0xFB,0x4A,0xFB,0x8F,0xFB,0xCF,0xFC,0x0B,0xFC,0x43,0xFC,0x78,0xFC,0xAB,0xFC,0xDB,0xFD,0x08,0xFD,0x33,0xFD,0x5B,0xFD,0x81,0xFD,0xA5,0xFD,0xC7,0xFD,0xE7,0xFE,0x05,0xFE,0x21,0xFE,0x3C,0xFE,0x55,0xFE,0x6D,0xFE,0x84,0xFE,0x99,0xFE,0xAD,0xFE,0xC0,0xFE,0x02,0xFE,0xE3,0xFE,0xF3,0xFF,0x02,0xFF,0x10,0xFF,0x1D,0xFF,0x2A,0xFF,0x36,0xFF,0x42,0xFF,0x4C,0xFF,0x56,0xFF,0x60,0xFF,0x69,0xFF,0x71,0xFF,0x79,0xFF,0x81;uchar code music12=0,4, /青花瓷0,4,24,4,24,4,21,4,19,4,21,4,14,8,19,4,21,4,24,4,21,4,19,16,0,4,24,4,24,4,21,4,19,4,21,4,12,8,19,4,21,4,24,4,19,4,17,16,0,4,17,4,19,4,21,4,24,4,26,4,24,4,22,4,24,4,21,4,21,4,19,4,19,16,0,4,17,4,19,4,17,4,17,4,19,4,17,4,19,4,19,4,21,8,24,4,21,4,21,12,0,4,24,4,24,4,21,4,19,4,21,4,14,8,19,4,21,4,24,4,21,4,19,16,0,4,24,4,24,4,21,4,19,4,21,4,12,8,19,4,21,4,24,4,19,4,17,16,0,4,17,4,19,4,21,4,24,4,26,4,24,4,22,4,24,4,21,4,21,4,19,4,19,12,12,4,21,8,19,4,19,8,17,16,0xFF,0xFF;四、系统仿真与调试4.1 仿真软件简介Proteus是由LabcenterElectronics开发的功能强大的单片机仿真软件,现在最新版本6.9 SP5。Proteus与其他的仿真软件相比较,在下面的优点:1)能仿真模拟电路、数字电路、数模混合电路;2)能绘制原理图、PCB图;3)几乎包括实际中所有使用的仪器4)其最大的亮点在于能够对单片机进行实物级的仿真。从程序的编写,编译到调试,目标版的仿真一应俱全。支持汇编语言和C语言的编程。还可配合Keil C实现程序的联合调试,将Proteus中绘制的原理图作为实际中的目标板,而用Keil C集成环境实现对目标板的控制,与实际中通过硬件仿真器对目标板的调试几乎完全相同,并且支持多显示器的调试,即Proteus运行在一台计算机上,而KeilC运行在另一台计算机上,通过网络连接实现远程的调试。4.2软件调试调试主要方法和技巧:通常一个调试程序应该具有至少四种性能:跟踪、断点、查看变量、更改数值。整个程序是一个主程序调用各个子程序实现功能的过程,要使主程序和整个程序都能平稳运行,各个模块的子程序的正确与平稳运行必不可少,所以在软件调试的最初阶段就是把各个子程序进行分别调试。仿真电路图图15所示:图15 仿真图另附实物图如图16图17所示:4.3 使用说明1)单片机分别接VCC和GND使单片机处于供电状态。2)接上TXD和RXD将程序导入单片机中。3)按下六角开关,可到指示灯亮后,即可通过按键控制发音了,数码管也会随按键变化显示出相应的数字。五、设计总结总体来说,此次单片机课程设计使我们收获良多,虽然课程设计的过程中遇到了很多困难与问题,但我们最终还是完成了设计的任务及要求。具体来说可以分为以下几点:第一,不够细心,不够严谨(如因为粗心大意而焊错线);第二,因对课本理论的掌握度不够导致编程出现错误;第三,硬件方面,刚开始有的程序模块不能实现预期的效果,对于有的硬件,在实物制作过程中焊了比较多的排线,同时对于整体各元器件的布局都有很高的要求。不过在向同学请教,各方面都有了不同程度的改善;第四,在做人方面,我认识到,无论做什么事情,只要你足够坚强,有足够的毅力和决心,有足够的挑战困难的勇气,就没有什么办不到的。这次课程设计中,经过我们的努力,在仿真软件和实物上都实现了7个音符的发声,使我们有了一定的成就感,也使我们进一步熟悉和掌握了单片机的内部结构和工作原理,了解了单片机应用系统设计的基本方法和步骤, 掌握了单片机仿真软件Proteus的使用方法和键盘、显示器在的单片机控制系统中的应用,同时也掌握了撰写课程设计报告的方法。总之,通过这次课程设计,我们都清楚明白了自己的能力有多深,想提高还得归于多锻炼,多动手,多向别人学习。尤其在做各种东西时应该要特别的仔细小心,比如我在进行电路焊接时就将数码管搞错了,本应使用的共阴数码管被拿成了共阳数码管,然后发光二极管的极性焊反了,焊接的铁丝没有完全焊牢等问题,给自己和老师造成了许多不必要的麻烦,大大的浪费掉了宝贵的时间,这都是不应该出现的。而对于一些软件来说,就必须了解软件各个方面的性质,不然,在一些小问题中也有可能造成不必要的错误。另外,自己在理解老师所说的很多东西方面还不是很成熟,经常会反复去问老师一些同样的问题,其原因都是自己不仔细去揣摩老师所说的话的意思,导致自己无法按老师所要求的方面去做,而要反复去问老师反复强调的问题。终

温馨提示

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

评论

0/150

提交评论