欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    基于单片机的电子琴设计_毕业设计(12页).doc

    • 资源ID:37054630       资源大小:199.50KB        全文页数:12页
    • 资源格式: DOC        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    基于单片机的电子琴设计_毕业设计(12页).doc

    -基于单片机的电子琴设计_毕业设计-第 - 6 - 页湄洲湾职业技术学院基于单片机的电子琴设计系 别: 自动化工程系年 级: 10级 专 业: 电气自动化 姓 名: 林家家 学 号: 1001010111导师姓名: 许振龙 职 称:讲师2013年5月29日目录1前言- 1 -2系统设计技术参数要求- 2 -2.1设计要求- 2 -3系统设计- 2 -3.1系统设计总框图- 2 -3.2各模块原理说明- 2 -3.3系统总原理图说明- 3 -3.4系统印刷电路板的制作图- 4 -3.5系统的操作说明- 4 -3.6系统操作注意事项- 4 -系统设计参考文献- 5 -致谢词- 6 -附 录- 7 -附录1.电路总原理图- 7 -附录2.电路元件清单- 7 -附录3.程序- 8 -1. 前言单片微型计算机是大规模集成电路技术发展的产物,属第四代电子计算机,它具有高性能、高速度、体积小、价格低廉、稳定可靠、应用广泛的特点。它的应用必定导致传统的控制技术从根本上发生变革。因此,单片机的开发应用已成为高科技和工程领域的一项重大课题。 电子琴是现代电子科技与音乐结合的产物,是一种新型的键盘乐器。它在现代音乐扮演着重要的角色,单片机具有强大的控制功能和灵活的编程实现特性,它已经溶入现代人们的生活中,成为不可替代的一部分。本文的主要内容是用STC89C52单片机为核心控制元件,设计一个电子琴。以单片机作为主控核心,与键盘、扬声器等模块组成核心主控制模块,在主控模块上设有16个按键和扬声器。 本文主要对使用单片机设计简易电子琴进行了分析,并介绍了基于单片机电子琴统硬件组成。利用单片机产生不同频率来获得我们要求的音阶,最终可随意弹奏想要表达的音乐。并且本文分别从原理图,主要芯片,各模块原理及各模块的程序的调试来详细阐述。本系统是简易电子琴的设计,按下键盘矩阵中的按键会使数码管显示当前按键,扬声器播放器对应的音符。通过设计本系统可了解单片机的基本功能。对单片机的了解有一个小的飞跃。2系统设计技术参数要求2.1设计要求(1)键盘矩阵识别。即矩阵扫描,显示当前按键。(2)不同频率音符播放。可以通过按键控制15种发音。(3)设有一个按键,按下后可以播放预设的歌曲。3系统设计3.1系统设计总体框图 3.2各模块原理说明主控模块:STC89C52单片机最初是由Intel 公司开发设计的,但后来Intel 公司把51 核的设计方案卖给了几家大的电子设计生产商,譬如 SST、Philip、Atmel 等大公司。如是市面上出现了各式各样的但均以51 为内核的单片机,倒是Intel 公司自己的单片机却显得逊色了。这些各大电子生产商推出的单片机都兼容51 指令、并在51 的基础上扩展一些功能而内部结构是与51 一致的。STC89C52有40个引脚,4个8位并行I/O口,1个全双工异步串行口,同时内含5个中断源,2个优先级,2个16位定时/计数器。STC89C52的存储器系统由4K的程序存储器(掩膜ROM),和128B的数据存储器(RAM)组成。键盘模块:矩阵式键盘模式以N个端口连接控制N*N个按键,实时在LED数码管上显示按键信息。显示按键信息,省下了很多的I/O端口为他用,相反,独立式按键虽编程简单,但占用I/O口资源较多,不适合在按键较多的场合应用。并且在实际应用中经常要用到输入数字、字母、符号等操作功能,如电子密码锁、电话机键盘、计算器按键等,至少都需要12到16个按键。矩阵式键盘简介:矩阵式键盘又称行列键盘,它是用N条I/O线作为行线,N条I/O线作为列线组成的键盘。在行线和列线的每个交叉点上设置一个按键。这样键盘上按键的个数就为N*N个。这种行列式键盘结构能有效地提高单片机系统中I/O口的利用率。最常见的键盘布局如图1所示。一般由16个按键组成,在单片机中正好可以用一个P口实现16个按键功能,这也是在单片机系统中最常用的形式,本设计就采用这个键盘模式。功率放大模块:功率放大模块我们选用了LM386作为功率放大模块的主要芯片,LM386是美国国家半导体公司生产的音频功率放大器,主要应用于低电压消费类产品。为使外围元件最少,电压增益内置为20。但在1脚和8脚之间增加一只外接电阻和电容,便可将电压增益调为任意值,直至 200。输入端以地位参考,同时输出端被自动偏置到电源电压的一半,在6V电源电压下,它的静态功耗仅为24mW,使得LM386特别适用于电池供电的场合。 3.3系统总原理图说明 主要对使用单片机设计简易电子琴进行了分析,并介绍了基于单片机电子琴统硬件组成。利用单片机产生不同频率来获得我们要求的音阶,最终可随意弹奏想要表达的音乐。并且本文分别从原理图,主要芯片,各模块原理及各模块的程序的调试来详细阐述。本系统是简易电子琴的设计,按下键盘矩阵中的按键会使数码管显示当前按键,扬声器播放器对应的音符。通过设计本系统可了解单片机的基本功能。3.4系统印刷电路板的制作图 3.5系统的操作说明(1)键盘矩阵识别。即矩阵扫描,显示当前按键。(2)不同频率音符播放。可以通过按键控制15种发音。(3)设有一个按键,按下后可以播放预设的歌曲。 3.6系统操作注意事项1.通电使用前先对照电路板与电路图是否有错焊、漏焊、短路、开路、元器件相碰等现象,有要处理好后再使用。2.通电使用前先检查好电路板是否与电源供电线、驱动电路开关与负载供电线、负载供电线之间相互接反,不得在接错的情况下通电,要处理好后再使用。3.通电使用时人体不得与电路板线路任何一个部位相碰,防止触电,注意安全。4.应把电极片与电路板隔离,避免电极片与电路板上元器件相碰触发生短路现象。 5.通电时应把电路板放在绝缘物体上,避开其他导电物体避免发生短路现象。 6.使用时闻到烧焦味、发现元器件或集成块冒烟烧毁应立即断开电源,待电路板查明原因处理好后才可以继续通电使用。系统设计参考文献 1 彭伟. 单片机C语言程序设计实训100例M. 北京:电子工业出版社, 2009 2 吴运昌模拟电子线路基础M广州:华南理工大学出版社,2004 3 阎石数字电子技术基础M北京:高等教育出版社,1997 4 罗亚非,凌阳单片机原理及毕业设计精选M. 北京:科学出版社,2006 5 华东,protel电路设计M. 北京:清华大学出版社,2007 6 黄健,单片机原理与应用M. 西安:西北工业大学出版社,2008 7 周明德,单片机原理与技术M. 北京:人民邮电出版社,2008 8 李建忠,单片机原理及应用M. 西安:电子科技大学出版社,2008 9 王正谋,Protel99se电路设计与仿真技术M. 福建:科学技术出版社,2004 10 郝万新,电路基础M. 大连:理工大学出版社,2005 致谢词谢谢各位老师,通过这次毕业设计,我学到了不少课本上没有的知识,也锻炼了自己的动手能力,将以前学过的零散的知识串到一起。经过我长时间的设计及调试,本系统基本能实现按下键盘矩阵中的按键会使数码管显示当前按键,扬声器播放对应的音符。但由于仿真系统原因,本设计音频效果不是很好。不足之处有:1.可弹奏的音符数较少,只能在一定范围内满足用户需要。可通过改进键盘识别模块和发生模块来增加其复杂度2.音量不可调。我的综合设计主要涉及硬件和软件两方面的内容,通过这些我的硬件和软件开发能力都获得了提高。首先硬件方面,基本了解了电子产品的开发流程和所要做的工作。基本掌握了Protel99SE原理图的方法,并设计了一个单片机最小系统。通过开发板的设计和硬件搭建的过程,使我对51系单片机的接口有了更深层次的理解,熟悉了一些单片机常用的外围电路引脚和连接方法,如LED数码管,键盘等。并且我学会了分析问题解决问题的能力,加深了对所学理论知识和大的提高,创新意识得到了锻炼 。附录附录1.电路总原理图 附录2.电路元件清单序号元件名称阻值数量位号1电容30PF22电阻10K3个3电阻1K14 电容10UF2个5排阻10K1个6电位器10K1个7插座DIP401个8轻触按键17个9LM386 1个10晶振12M1个11扬声器1个附录3.程序#include <intrins.h>/本程序是电子琴的程序,能够实现单独演奏和放一首歌曲的功能。其中,按键115是用 于单独演奏的,按键16是用于播放歌曲的/播放歌曲的时候需要按复位键才能够停止。/共阴极数码管段码表,最后一字节为黑屏unsigned char code DSY_CODE=0x28,0xee,0x34,0xa4,0xe2,0xa1,0x21,0xec,0x20,0xa0,0x60,0x23,0x39,0x26,0x31,0x71,0xbf;/各音符对应的延时表unsigned int code tone_delay_table=64021,64103,64260,64400,64524,64580,64684,64777,64820,64898,64968,65030,65058,65110,65157,65178;/蜂鸣器的位定义sbit beep=P30;#define SOUND_SPACE 4/5 /定义普通音符演奏的长度分率,/每4分音符间隔/同一首歌 的谱子unsigned char code Music= 0x0F,0x01, 0x15,0x02, 0x16,0x02, 0x17,0x66, 0x18,0x03, 0x17,0x02, 0x15,0x02, 0x16,0x01, 0x15,0x02, 0x10,0x02, 0x15,0x00, 0x0F,0x01, 0x15,0x02, 0x16,0x02, 0x17,0x02, 0x17,0x03, 0x18,0x03, 0x19,0x02, 0x15,0x02, 0x18,0x66, 0x17,0x03, 0x19,0x02, 0x16,0x03, 0x17,0x03, 0x16,0x00, 0x17,0x01, 0x19,0x02, 0x1B,0x02, 0x1B,0x70, 0x1A,0x03, 0x1A,0x01, 0x19,0x02, 0x19,0x03, 0x1A,0x03, 0x1B,0x02, 0x1A,0x0D, 0x19,0x03, 0x17,0x00, 0x18,0x66, 0x18,0x03, 0x19,0x02, 0x1A,0x02, 0x19,0x0C, 0x18,0x0D, 0x17,0x03, 0x16,0x01, 0x11,0x02, 0x11,0x03, 0x10,0x03, 0x0F,0x0C, 0x10,0x02, 0x15,0x00, 0x1F,0x01, 0x1A,0x01, 0x18,0x66, 0x19,0x03, 0x1A,0x01, 0x1B,0x02, 0x1B,0x03, 0x1B,0x03, 0x1B,0x0C, 0x1A,0x0D, 0x19,0x03, 0x17,0x00, 0x1F,0x01, 0x1A,0x01, 0x18,0x66, 0x19,0x03, 0x1A,0x01, 0x10,0x02, 0x10,0x03, 0x10,0x03, 0x1A,0x0C, 0x18,0x0D, 0x17,0x03, 0x16,0x00, 0x0F,0x01, 0x15,0x02, 0x16,0x02, 0x17,0x70, 0x18,0x03, 0x17,0x02, 0x15,0x03, 0x15,0x03, 0x16,0x66, 0x16,0x03, 0x16,0x02, 0x16,0x03, 0x15,0x03, 0x10,0x02, 0x10,0x01, 0x11,0x01, 0x11,0x66, 0x10,0x03, 0x0F,0x0C, 0x1A,0x02, 0x19,0x02, 0x16,0x03, 0x16,0x03, 0x18,0x66, 0x18,0x03, 0x18,0x02, 0x17,0x03, 0x16,0x03, 0x19,0x00, 0x00,0x00 ;unsigned int code FreTab12 = 262,277,294,311,330,349,369,392,415,440,466,494 ; /原始频率表unsigned char code SignTab7 = 0,2,4,5,7,9,11 ; /17在频率表中的位置unsigned char code LengthTab7= 1,2,4,8,16,32,64 ;unsigned char Sound_Temp_TH0,Sound_Temp_TL0;/音符定时器初值暂存 unsigned char Sound_Temp_TH1,Sound_Temp_TL1;/音长定时器初值暂存void delay_1ms(unsigned int ms) unsigned char i; while(ms-) for(i=0;i<120;i+); /延时1ms/播放音乐的子函数void Play(unsigned char *Sound,unsigned char Signature,unsigned Octachord,unsigned int Speed)unsigned int NewFreTab12;/新的频率表unsigned char i,j; /定义一些中间变量unsigned int Point,LDiv,LDiv0,LDiv1,LDiv2,LDiv4,CurrentFre,Temp_T,SoundLength;unsigned char Tone,Length,SL,SH,SM,SLen,XG,FD;for(i=0;i<12;i+) / 根据调号及升降八度来生成新的频率表 j = i + Signature;if(j > 11)j = j-12;NewFreTabi = FreTabj*2;/计算新的频率elseNewFreTabi = FreTabj;if(Octachord = 1)NewFreTabi>>=2;else if(Octachord = 3)NewFreTabi<<=2;SoundLength = 0;while(SoundSoundLength != 0x00)/计算歌曲长度SoundLength+=2;Point = 0;Tone = SoundPoint;Length = SoundPoint+1; / 读出第一个音符和它时时值LDiv0 = 12000/Speed;/ 算出1分音符的长度(几个10ms) LDiv4 = LDiv0/4; / 算出4分音符的长度 LDiv4 = LDiv4-LDiv4*SOUND_SPACE; / 普通音最长间隔标准 TR0 = 0;TR1 = 1;while(Point < SoundLength)SL=Tone%10; /计算出音符 SM=Tone/10%10; /计算出高低音 SH=Tone/100; /计算出是否升半 CurrentFre = NewFreTabSignTabSL-1+SH; /查出对应音符的频率 if(SL!=0)if (SM=1) CurrentFre >>= 2; /低音 if (SM=3) CurrentFre <<= 2; /高音Temp_T = 65536-(50000/CurrentFre)*10;/计算计数器初值Sound_Temp_TH0 = Temp_T/256; Sound_Temp_TL0 = Temp_T%256; TH0 = Sound_Temp_TH0; TL0 = Sound_Temp_TL0 + 12; /加12是对中断延时的补偿 SLen=LengthTabLength%10; /算出是几分音符XG=Length/10%10; /算出音符类型(0普通1连音2顿音) FD=Length/100;LDiv=LDiv0/SLen; /算出连音音符演奏的长度(多少个10ms)if (FD=1) LDiv=LDiv+LDiv/2;if(XG!=1)if(XG=0) /算出普通音符的演奏长度 if (SLen<=4)LDiv1=LDiv-LDiv4;elseLDiv1=LDiv*SOUND_SPACE;elseLDiv1=LDiv/2; /算出顿音的演奏长度 elseLDiv1=LDiv;if(SL=0) LDiv1=0;LDiv2=LDiv-LDiv1; /算出不发音的长度 if (SL!=0)TR0=1;for(i=LDiv1;i>0;i-) /发规定长度的音 while(TF1=0);TH1 = Sound_Temp_TH1;TL1 = Sound_Temp_TL1;TF1=0;if(LDiv2!=0)TR0=0; beep=1;for(i=LDiv2;i>0;i-) /音符间的间隔while(TF1=0);TH1 = Sound_Temp_TH1;TL1 = Sound_Temp_TL1;TF1=0;Point+=2; Tone=SoundPoint;Length=SoundPoint+1;beep = 0;TR0=0;/关闭定时器/键盘矩阵扫描/返回按下的键的值unsigned char keys_scan(void)unsigned char Tmp,k=16;P2=0x0F; delay_1ms(2);Tmp=P2 0x0F;switch(Tmp)/确定扫描的是哪一行case 1: k=0;break;case 2: k=1;break;case 4: k=2;break;case 8: k=3;break;default: return 16; /无键按下,返回P2=0xF0; delay_1ms(2);Tmp=(P2>>4)0x0F;switch(Tmp)/确定扫描的是那一列case 1: k+=0; break;case 2: k+=4; break;case 4: k+=8; break;case 8: k+=12;break;default: return 16; /无键按下,返回return k;void main() /主程序unsigned char key_NO=0;P1=0xFF; /数码管显示关闭/设置定时器工作方式1,以及相关开启寄存器TMOD |= 0x11;ET0 = 1;ET1 = 0;TR0 = 0;TR1 = 0;EA = 1;/设置定时器初值TH0=tone_delay_tablekey_NO/256;TL0=tone_delay_tablekey_NO%256;TH1 = (65535-50000)/256;/ 计算TL1应装入的初值 (10ms的初装值)TL1 = (65535-50000)%256;while(1)P2=0xF0;if(P2!=0xF0)/当有按键按下时,需要显示数码管及设置定时器的开启key_NO=keys_scan();/调用键盘扫描 P1=DSY_CODEkey_NO;/在数码管上显示按下的键 if(key_NO<15)/按下那个键,发出对应的音调Sound_Temp_TH0=tone_delay_tablekey_NO/256;Sound_Temp_TL0=tone_delay_tablekey_NO%256;else if(key_NO=15)/按下最后一个键时,要播放音乐Play(Music, 0, 3, 300);/TR1 = 0;/音长中断TR0=1;/开启定时器0,音符中断else/当没有键按下时,数码管不显示,也无声音发出;如果是播放音乐,则一直显示 TR0=0;/关闭定时器P1=0xFF;/数码管显示关闭delay_1ms(2);/稍做延时,可以避免误判断/音符发生的中断void play_tone() interrupt 1TH0=Sound_Temp_TH0;TL0=Sound_Temp_TL0;beep=beep;

    注意事项

    本文(基于单片机的电子琴设计_毕业设计(12页).doc)为本站会员(1595****071)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开