用单片机演奏电子乐曲专业课程设计方案报告林星星_第1页
用单片机演奏电子乐曲专业课程设计方案报告林星星_第2页
用单片机演奏电子乐曲专业课程设计方案报告林星星_第3页
用单片机演奏电子乐曲专业课程设计方案报告林星星_第4页
用单片机演奏电子乐曲专业课程设计方案报告林星星_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

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

文档简介

课程设计目标:我们学习了一个学期单片机,这次课程设计就是以现有基础和能力,利用此次设计加以利用,从而达成对所学知识巩固,更深一步了解,面对一个电子设计,应对出系统方案,分析出各个板块来,在对各个板块深入具体设计,优异行硬件电路设计,此时一定要考虑好要用什么元件、各个元件具体参数、是否能实现应有功效,从而得到一个完整硬件电路。在依据该电路设计出软件功效模块、从而完成程序步骤图,在跟据程序步骤图完成程序设计,并经过反复调试、运行、更正,直至完成既定功效为止,最终将软件,硬件结合进行调试、运行,对其功效进行最终测试,并反复思索其测试中碰到对应问题原因,并将其一一处理,从而完成此次设计试验要求,和此次课程设计最终目标。本课程设计教学依据课程教学纲领要求和单片机原理和接口试验室建设所提供条件,安排了单片机控制系统设计课题,从而使我们愈加好地掌握课堂学习理论知识,掌握基础实践技能,并能进行一定综合应用和探索。经过课程设计教学,使我们巩固和深化已学理论知识,加强综合应用能力,训练学生掌握分析问题、处理问题方法,培养较强动手能力和一定单片机应用系统设计和调试能力。课程设计要求:此次课程设计要求在一周时间内利用试验室现有条件或自己设备完成程序编写和调试,具体要求以下:1、设计题目全部需要进行硬件设计和软件设计,并调试成功;2、设计硬件电路要包含I/O设备,并使用I/O功效;3、尽可能使用单片机定时计数器和中止资源4、硬件可使用THDPJ-1/2型单片机开发综合试验箱,也可使用自己硬件电路5、可用C51或汇编语言编程3、设计题目分析3.1题目介绍用单片机演奏电子乐曲,相当于制作一个带有录音播放功效电子琴。电子琴是现代电子科技和音乐结合产物,是一个新型键盘乐器。它在现代音乐饰演着关键角色,单片机含有强大控制功效和灵活编程实现特征,它已经溶入现代大家生活中,成为不可替换一部分。此次课程设计关键内容是用AT89C51单片机为关键控制元件,设计一个电子琴。以单片机作为主控关键,和键盘、蜂鸣器等模块组成关键主控制模块,在主控模块上设有16个弹奏按键、1个播放键,1个暂停键和蜂鸣器。该课题则增强了我们对于4×4矩阵式键盘了解和使用能力,在扫键,取键值,赋值三个方面进行了加强和巩固。另外也对存放区域和空间进行了复习和使用,加深了我们对于单片机内部结构认知,为我们深入学习单片机提供了更深厚能力。另外,经过实践和结果展示,我们也能在学习中取得学习爱好,让我们学习充满了乐趣。3.2设计要求本设计是以AT89C51芯片电路为基础,利用蜂鸣器进行音乐播放,而且利用4×4键盘进行弹奏,并把弹奏音录入存放单元内,然后将弹奏音符播放出来。而且添加了LED指示灯来区分模式不一样。归纳总结为以下四个功效:1、能够播放若干首程序自带音乐库里歌曲;2、使用4×4矩阵式键盘设计出16个音符,随意弹奏;3、将演奏音符存放到单片机存放单元中,而且能够作为音乐库里音乐播放;4、用LED指示灯来区分播放和演奏两个功效。4、课程设计内容4.1总体设计4.1.1总体设计框架:该系统结构以AT89C51单片机位控制关键,4*4矩阵键盘,加上2个按键、时钟复位电路、蜂鸣器等模块组成。单片机负责接收按键输入,依据输入按键所对应音符蜂由鸣器发音。系统总体组成框图图所表示。AT89C51AT89C51单片机蜂鸣器4X4键盘蜂鸣器4X4键盘播放键播放键LED灯显示LED灯显示录音兼演奏键录音兼演奏键图一系统组成框图4.1.2系统功效模块:电子琴功效结构图2所表示。切歌键负责切换播放歌曲,播放歌曲共4首,分别是千年之恋和寂寞沙冷,七子之歌,感恩心,另外第一首播放为录音录入曲调,不想播放能够再次按播放键进行四首歌播放。暂定键负责暂停而且进入电子琴弹奏模式,4X4键盘,每个按键全部对应这不一样音调,而且弹奏同时也把所弹奏曲调录入了存放单元里。在区分不一样模式上用是LED灯明和灭来区分演奏模式和播放模式。切歌键切歌键演奏键播放已存入歌曲,可按切歌键进播放已存入歌曲,可按切歌键进行切歌。也能够把录入曲调完整播放出来利用4X4键盘进行演奏而且进行录音LED灯亮利用4X4键盘进行演奏而且进行录音LED灯亮LED灯灭图二系统功效模块图4.1.3程序总步骤:(1)键盘扫描程序:检测是否有键按下,有键按下则统计按下键键值,并跳转至功效转移程序;无键按下,则返回键盘扫描程序继续检测。(2)功效转换程序:对检测到得按键值进行判定,是琴键则跳转至琴键处理程序,是功效键则跳转至对应功效程序,我们设计功效程序有两种,即电子琴弹奏功效和自动播放乐曲功效。(3)琴键处理程序:依据检测到得按键值,查询音律表,给计时器赋值,使发出对应频率声音。而且把键值对应频率放入歌曲播放数组中,等候播放。(4)自动播放歌曲程序:检测到按键按下是自动播放歌曲功效键后实施该程序,电子琴会自动播放事先已经存放好歌曲,歌曲播放完成以后自动返回至键盘扫描程序,继续等候是否有键按下。开始开始键盘扫描程序T0初始化并开中止许可T0中止键盘扫描程序T0初始化并开中止许可T0中止有键按下否有键按下否否延时去抖动延时去抖动是识别按键功效识别按键功效是否演是否演奏键播放键播放键是取对应音符码装入T0依据按键功效装入对应音符值到T0取对应音符码装入T0依据按键功效装入对应音符值到T0,而且把对应音符放入存放单元中开启T0开启T0开启T0开启T0按键释放成功否按键释放成功否按键释放成功否按键释放成功否 T0停止工作T0停止工作T0停止T0停止工作图三程序总步骤图4.1.4系统整体电路在电路设计上,我们利用是试验室试验箱,用到关键硬件有AT89C51芯片,两个独立按键,一个LED灯,和4X4键盘。整体电路图以下:1.电路中用P3.2、P3.3控制按键。2.P1.0~P1.7控制4*4矩阵键盘3.P3.7控制蜂鸣器。4.P2.0控制LED灯明灭图四系统整体硬件图各个部分放大图片以下:A键盘B振荡电路C复位电路D功效键和蜂鸣器模块图五电路模块4.2具体设计:4.2.1弹奏录音模块:弹奏录音模块中我们用到了扫键程序keys_scan,键值赋值程序keybranch,另外设定了一个录音数组playmusic[16],可放入对应按键对应频率。再者在这个模块中我们用到了定时器0和其中止,用来是蜂鸣器鸣叫。补充说明在弹奏录音功效进行时是LED灯是灭。这个模块中包含到了多个函数参数,如选歌参数count2,4X4键盘接口P1,开启关闭定时器0参数TR0,录音可放入音调数量cnt。另外还调用了延迟子函数delay_ms。弹奏录音程序步骤:开始开始开中止并许可中止设定定时器工作方法开中止并许可中止设定定时器工作方法取键值取键值依据键值查音律,并把按键做对应频率和拍子放入录音数组中等候依据键值查音律,并把按键做对应频率和拍子放入录音数组中等候给定时器T0赋值给定时器T0赋值开始计时开始计时进入中止进入中止蜂鸣器发出对应音调蜂鸣器发出对应音调退出中止退出中止延时延时返回键盘扫描程序返回键盘扫描程序图六弹奏录音程序步骤图4.2.1歌曲播放模块歌曲播放模块中我们用到了歌曲播放子程序song,在这个模块中我们也用到了定时器0和其中止,用来是蜂鸣器鸣叫。补充说明在弹奏录音功效进行时是LED灯是亮。这个模块中包含到了多个函数参数,如选歌参数count2,简谱参数jp,另外还有定时器0初值数组cuzhi,开启关闭定时器0参数TR0,录音可放入音调数量cnt。四首歌简谱对应四个数组分别为ganen,qnzl,jmszl,qizige,和录音播放数组playmusic。还调用了延迟子函数delay_ms和节拍时间函数delay。自动播放歌曲程序步骤:开始开始开中止,设定定时器T0工作模式开中止,设定定时器T0工作模式取简谱码取简谱码取该音符节拍码取该音符节拍码返回键盘扫描C返回键盘扫描Count2=0YN查音律表,给定时器赋值查音律表,给定时器赋值开始计时开始计时进入中止进入中止蜂鸣器发出对应音调蜂鸣器发出对应音调退出中止退出中止延时延时图七自动播放歌曲程序步骤4.3调试和测试:程序调试过程:1.检验试验箱和硬件设备是否能够正常使用:我们用试验箱搭了一个简单电路,在软件上写了一段很简单程序,运行后,试验箱正常工作。证实了试验箱是完好,没有损坏,接下来试验排除了箱子故障问题。 2.调试各个子程序:我们先把硬件电路在试验箱上搭好,然后再把子程序一个一个套进去,一个一个调试。首先调试是基础电子琴弹奏功效子程序,包含键盘扫描程序,赋值程序,延迟程序,和每个按键对应按键音播放程序。以后,我们调试音乐播放模块程序,最终把录音模块加上去。最终将程序完整化,把整个程序完整运行,看看功效程序是否能够在整体中正常发挥作用。4.调整好程序结构,是结构可读性增强,添加合适备注。调试中出现问题和处理方法:问题一:在演奏功效实现时,每个按键音调有些跑偏了。处理方法:我们在目前频率值周围逐一取值试验,用最适宜频率值替换,最终使按键音能够基础符合标准。问题二:在播放功效中,我们放入歌曲简谱是从网上直接找出来,在有部分地方音调就跑了。处理方法:我们自己对应着歌曲简谱,把部分错误地方更正过来。问题三:这是最大一个问题,录音功效没措施实现,没措施把键盘对应音调存入数组中。处理方法:即使我们到最终也没能把这个问题处理,不过在这个问题上我们想尽了措施。刚开始我们原来计划放入ROM中,计划放入30h中,不过没有效果。我们也不知道问题出在哪里,以后老师提醒我们在memory窗口中能够看到内存中是否有东西存入,就能够判定到底有没有存入。很不幸,里面没有存入东西。以后我们放入录音数组中,计划弄成一个格式和四首已放入简谱歌曲一样数组,不过我们在内存中还是没有看到。最终一天时候,我发觉偶然有几次是能够写进去,不过写进去东西不是我们按键按下去所对应键值,仍然不能写入。究其原因,可能是硬件内部存放单元发生了问题,也可能是软件问题,也可能真是程序问题,因为我们水平有限,所以也真没措施处理问题,很遗憾啊。设计心得和总结:在这次课程设计中,我收获了很多,也更了解单片机在生活中部分利用,同时也让我们收获了学习乐趣。在设计和调试过程中我碰到了很多困难,也在这过程中明白了自己不足,也谢谢老师和同学帮助。刚开始第一天我是满怀信心,完成了选题,程序框图,实际电路设计,也在网络和书籍上寻求相关程序范例,部分全部进行得很顺利,不过往后,在程序上我碰到了很大问题。第二天时候,多个子程序和大致主程序已经写好,不过在录音功效程序编写上碰到了很大问题,录音程序在调试过程失败了,不过也有收获,基础功效已经能够实现,包含演奏和播放和指示灯全部基础能够实现。第三天我就一直在纠结程序录音功效为何会失败,我尝试了多种方法,找了其它同学,不过还是处理不了问题,就这么整整纠结了一天。第四天时候,我向老师求救,最终判定为单片机内部RAM里写不进去内容,至于为何这还是一个未知结论,可能是单片机硬件问题。不过我们还是没措施处理这个问题。第五天时候,就要进入收尾阶段了,我们仍然还在奋斗着,很可惜,最终我们也没能把录音功效成功调试出来。因为以前做试验经验,所以我们对大致过程比较熟悉,可是还是有部分小问题不停地出现,要不停地进行修改,我经验太少,能力不够,对于出现问题,没措施找到原因,也没措施处理,这一点我很惭愧,有待加强。经过一周课程设计,我对于单片机利用有了一个新认识,同时也愈加好掌握了KeiluVision该软件大致使用方法。在不停地学习和巩固中,提升了自学能力和处理问题能力,同时积累了经验。6、提议:从人员数量上来说,每一组人数过多了点,造成了人力资源浪费和部分同学无所事事。试验设备数量太少,而且全部有不一样程度损伤,应该及早进行维修。设备提供能够让每个同学全部能独立完成课程设计,让每个人全部能在课程设计上多多收获。如在设备上不能提供,能够让每个人动手自己去做一个简单单片机最小系统,这么也能够加强我们在硬件上了解。另外,课程设计时间也能够合适延长,让我们每个人能够独立把任务完成得愈加完善。同时,我们也需要有些人能够指导和解答,最好能够配置多个能力比较强学长学姐帮助我们处理这些困难。假如能够处理以上问题,我相信我们结果会愈加让人满意。7、评阅意见老师署名:年月日参考书目:杨居义,《单片机课程设计指导》,清华大学出版社,北京,-9-1徐懂理,王曼,赵艳,《单片机原理和接口技术试验和课程设计》,北京大学出版社,北京,-7-1陈明荧,《8051单片机课程设计实训教材》,清华大学出版社,北京,-4-1《单片机-电子琴演奏》,10月3日,《毕业设计:基于单片机音乐演奏系统设计或电子琴设计》,10月3日,附录一:简谱对应简谱码、T值、节拍数简谱发音简谱码T值节拍码节拍数5低音SO16426011/4拍6低音LA26440022/4拍7低音TI36452433/4拍1中音DO46458041拍2中音RE56468451又1/4拍3中音MI66477761又1/2拍4中音FA76482082拍5中音SO864898A2又1/2拍6中音LA964968C3拍7中音TIA65030F3又3/4拍1高音DOB650582高音REC651103高音MID651574高音FAE651785高音SOF65217附录二:程序#include<reg51.h>#include<absacc.h>#defineucharunsignedchar#defineuintunsignedintsbitkey1=P3^2;//暂停歌曲进入弹奏模式sbitkey2=P3^3;//切歌sbitbell=P3^7;//蜂鸣器sbitLED=P2^0;//灯亮即为歌曲播放模式,反之为电子琴演奏模式ucharcount2=0;//选歌uchartimeh,timel,keynumb,i,d=0,j;intcnt=0;voidsong();ucharplaymusic[16];Uintcodetone_delay_table[]={64021,64103,64260,64400,64524,64580,64684,64777,64820,64898,64968,65030,65058,65110,65157,65178};//十六音阶简谱码ucharcodeqnzl[]={//千年之恋简谱0x12,0x22,0x34,0x84,0x74,0x54,0x38,0x42,0x32,0x22,0x42,0x34,0x84,0x72,0x82,0x94,0xA8,0x08,0x32,0x31,0x21,0x32,0x52,0x32,0x31,0x21,0x32,0x62,0x32,0x31,0x21,0x32,0x82,0x71,0x81,0x71,0x51,0x32,0x22,0x32,0x31,0x21,0x32,0x52,0x32,0x31,0x21,0x32,0x62,0x32,0x31,0x21,0x32,0x83,0x82,0x71,0x72,0x02,0x63,0xA1,0xA2,0x62,0x92,0x82,0x52,0x31,0x51,0x63,0x51,0x63,0x51,0x63,0x51,0x62,0x82,0x7C,0x02,0x61,0x71,0x82,0x71,0x62,0xA2,0x71,0x76,0x61,0x71,0x82,0x71,0x62,0x52,0x31,0x36,0x61,0x71,0x82,0x71,0x62,0xA3,0x73,0x62,0x53,0x42,0x63,0x83,0x83,0x91,0x91,0x61,0x71,0x82,0x71,0x62,0x0A2,0x71,0x76,0x61,0x71,0x82,0x71,0x62,0x52,0x31,0x36,0x61,0x71,0x82,0x71,0x62,0xA3,0x73,0x62,0x53,0x42,0x82,0x88,0x02,0x74,0x93,0x89,0xff}; //高四位为音调,低四位为拍子ucharcodejmszl[]={//寂寞沙洲冷简谱0x12,0x12,0x22,0x32,0x31,0x22,0x21,0x22,0x21,0x31,0x51,0x52,0x31,0x52,0x61,0x15,0x14,0x51,0x52,0x31,0x52,0x62,0x13,0x11,0x13,0x32,0x28,0x08,0x28,0x31,0x32,0x31,0x32,0x11,0x21,0x51,0x52,0x51,0x52,0x51,0x51,0x31,0x32,0x31,0x32,0x81,0x72,0x63,0x62,0x71,0x81,0x72,0x61,0x61,0x52,0x31,0x21,0x32,0x51,0x54,0x22,0x12,0x11,0x12,0x11,0x12,0x12,0x14,0x26,0x32,0x26,0x32,0x61,0x51,0x51,0x31,0x31,0x21,0x31,0x51,0x61,0x51,0x31,0x51,0x02,0x32,0x81,0x81,0x81,0x81,0x62,0x52,0x34,0x31,0x81,0x81,0x81,0x61,0x91,0x82,0x51,0x51,0x51,0x51,0x31,0x61,0x53,0x21,0x11,0x21,0x11,0x22,0x11,0x21,0x26,0x32,0x61,0x51,0x51,0x31,0x31,0x21,0x31,0x51,0x61,0x51,0x31,0x51,0x52,0x31,0x31,0x81,0x81,0x81,0x61,0x91,0x81,0x61,0x31,0x56,0x32,0x32,0x81,0x81,0x81,0x81,0x91,0x81,0x61,0x81,0x61,0x51,0x31,0x51,0x34,0x21,0x31,0x51,0x31,0x21,0x11,0x61,0x21,0x16,0xff};ucharcodeqizige[]={ //七子之歌简谱0x54,0x32,0x52,0x32,0x54,0x62,0x52,0x32,0x62,0x54,0x14,0x12,0x22,0x34,0x52,0x32,0x02,0x32,0x58,0x52,0x52,0x62,0x52,0x32,0x54,0x52,0x62,0x52,0x82,0x62,0x58,0x14,0x52,0x32,0x22,0x12,0x24,0x32,0x54,0x2,0x22,0x34,0x1f,0x18,0x04,0x54,0xa4,0x92,0x81,0x62,0x52,0x54,0x62,0x64,0x52,0x62,0x81,0xa2,0x82,0x9c,0x02,0x52,0xa4,0x92,0x81,0x62,0x52,0x54,0x62,0x64,0x52,0x64,0xa2,0x92,0x9f,0xa4,0x92,0x81,0x62,0x52,0x54,0x84,0x62,0x52,0x32,0x22,0x14,0x04,0x22,0x32,0x58,0x58,0x04,0x52,0x62,0x8f,0xff};ucharcodeganen[]={//感恩心简谱0x12,0x14,0x22,0x32,0x54,0x32,0x84,0x72,0x62,0x54,0x02,0x62,0x62,0x52,0x54,0x12,0x22,0x32,0x28,0x12,0x14,0x22,0x32,0x54,0x32,0x84,0x92,0x82,0x54,0x32,0x24,0x21,0x61,0x54,0x22,0x32,0x12,0x18,0x22,0x24,0x12,0x24,0x11,0x21,0x34,0x32,0x21,0x31,0x34,0x12,0x22,0x22,0x22,0x11,0x21,0x22,0x64,0x52,0x52,0x32,0x38,0x31,0x52,0x51,0x52,0x31,0x51,0x58,0x31,0x82,0x81,0x82,0x31,0x61,0x68,0x62,0x62,0x62,0x51,0x61,0x64,0x61,0x82,0x61,0x9c,0x52,0xa4,0x92,0xa4,0x32,0x84,0x72,0x64,0x62,0x94,0x82,0x94,0x61,0x81,0x92,0x91,0x91,0x92,0x81,0xa1,0xa2,0x92,0x94,0x52,0xa4,0x92,0xa4,0x32,0x84,0x72,0x64,0x52,0x62,0x81,0x81,0x82,0x92,0xa2,0x94,0x82,0x72,0x82,0x88,0xff}; voiddelay_ms(ucharx) //延时子函数{uchari;while(x--)for(i=0;i<120;i++);}voiddelay(uintz) // 十六分之一拍时长{uintx,y;for(x=z;x>0;x--)for(y=19000;y>0;y--);}voidbeep() //蜂鸣器叫一声{uchari;for(i=0;i<50;i++){bell=~bell;delay_ms(1);}bell=1;}voidint0()interrupt0 //外部中止0中止程序{EA=0;delay_ms(1);if(key1==0){count2=0; TR0=0;}EA=1;}voidint1()interrupt2 //外部中止1中止程序{TR0=0;delay_ms(1);if(key2==0){i=0;count2++;TR0=~TR0;if(count2==6)count2=0;}}voidtimer0()interrupt1 //定时器0中止程序{if(count2==0){TH0=tone_delay_table[keynumb]/256;TL0=tone_delay_table[keynumb]%256;bell=~bell;}if(count2!=0){TH0=timeh;TL0=timel;bell=~bell; }}voidkeys_scan() //扫键程序{uchartmp,k; P1=0x0f; delay_ms(2);tmp=(~P1)&0x0f; //取反而且高四位置0switch(tmp) //扫描列{case0x01:k=0;break;case0x02:k=1;break;case0x04:k=2;break; case0x08:k=3;break;default:return;}P1=0xf0; delay_ms(2);tmp=(P1>>4)^0x0f;//低四位换为高四位而且把高四位置0switch(tmp) //扫描行{case0x01:k=k+0;break;case0x02:k=k+4;break;case0x04:k=k+8;break;case0x08:k=k+12;break;default:return;}keynumb=k;}voidkeybranch() //键值赋值,赋是十六音阶简谱{switch(keynumb){case0x00:d=0x14;break;case0x01:d=0x24;break;case0x02:d=0x34;break;case0x03:d=0x44;break;case0x04:d=0x54;break;case0x05:d=0x64;break;case0x06:d=0x74;break;case0x07:d=0x84;break;case0x08:d=0x94;break;case0x09:d=0xa4;break;case0x0a:d=0xb4;break;case0x0b:d=0xc4;break;case0x0c:d=0xd4;break;case0x0d:d=0xe4;break;case0x0e:d=0xf4;break;case0x0f:d=0xff;break;default:d=0xf4;break;}}ucharcod

温馨提示

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

评论

0/150

提交评论