ImageVerifierCode 换一换
格式:DOC , 页数:17 ,大小:76.54KB ,
资源ID:3940501      下载积分:8 金币
验证码下载
登录下载
邮箱/手机:
验证码: 获取验证码
温馨提示:
支付成功后,系统会自动生成账号(用户名为邮箱或者手机号,密码是验证码),方便下次登录下载和查询订单;
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/3940501.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  
声明  |  会员权益     获赠5币     写作写作

1、填表:    下载求助     留言反馈    退款申请
2、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
3、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
4、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
5、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【快乐****生活】。
6、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
7、本文档遇到问题,请及时私信或留言给本站上传会员【快乐****生活】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。

注意事项

本文(基于51单片机的16键电子琴课程设计报告.doc)为本站上传会员【快乐****生活】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4008-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

基于51单片机的16键电子琴课程设计报告.doc

1、单片机原理及系统课程设计报告单片机原理及系统课程设计评语:考勤10分守纪10分过程30分设计报告30分答辩20分总成绩(100)专业:自动化班级:姓名: 学号:指导教师:兰州交通大学自动化与电气工程学院2015 年 12 月 30 日1基于单片机的16键电子琴一、电子琴设计的目的、要求与设计方法1.1设计目的现代乐器中,电子琴是高新科技在音乐领域的一个代表,体现了人类电子技术和艺术的完美结合。电子琴自动伴奏的稳定性、准确性,以及鲜明的强弱规律、随人设置的速度要求,都更便于人们由易到难、深入浅出的准确掌握歌曲节奏和乐曲风格,对其节奏的稳定性和准确性训练能起到非常大的作用。1.2设计要求本设计主要

2、是用AT89C52单片机为核心控制元件,设计一个微缩版的电子琴.单片机与按键构成主控制模块,在主控制模块上设置有9个按键,分别达成不同目标。本系统主要为了完成电子琴的三大功能:电子琴弹奏和音乐播放及录音.1。3电子琴设计方法1。3。1设计工具表1软件简介软件名称设计作用Keil uVision4编写程序与编译PROTEUS绘制硬件电路图、数字仿真Microsoft Visio绘制程序流图与框图1.3。2设计思路(1)功能按键触发外部中断,以完成不同曲目的的切换。 (2)设置定时器产生不同频率的方波,I/O口输出,经功放后扬声器发声。 (3)采用44矩阵键盘弹奏16个音(低XI到高DO)。二、

3、电子琴的设计方案及原理2。1设计总体方案本系统采用AT89C52为主控芯片。输入电路有16个琴键按键,通过按键随意按下所要表达的音符,作为电平送给主体电路,中央处理器通过识别,解码输出音符,在扬声器中发出有效的声音。1个音乐按键用于播放音乐和切换歌曲,通过按键触发中断,重置定时器初值,于另一个扬声器中发出有效音响。总设计框图如下图1所示。单片机时钟复位电路数码管显示电路琴键控制电路音频播放电路音乐切换电路图1基于单片机的电子琴电路原理框图2。2发声原理利用AT89C52的内部定时器使其工作计数器模式(MODE1)下,改变计数值TH0及TL0以产生不同频率的方法产生不同音阶,例如,频率为523H

4、z,其周期T1/5231912s,因此只要令计数器计时956s/1s956,每计数956次时将I/O反相,就可得到中音DO(523Hz).计数脉冲值与频率的关系式是:Nfi2fr。式中,N是计数值;fi是机器频率(晶体振荡器为12MHz时,其频率为1MHz);fr是想要产生的频率。三、 电子琴的硬件设计基于单片机AT89C51的电子琴电路由琴键控制电路、数码管显示电路、音频播放电路、时钟-复位电路、音乐切换电路和电源电路六部分所构成。3。1琴键控制电路琴键控制电路作为人机联系的输入部分,也是间接控制数码显示和音频功放的重要组成部分.键盘按照连接方式可以分为独立式和矩阵式键盘两类。3。1。1矩阵

5、式键盘如图2所示为4X4矩阵式键盘电路,由一个4X4的行、列结构可以构成一个16个按键键盘。矩阵中无按键按下时,行线为高电平;当有按键按下时,行线电平状态将由与此行线相连的列线的电平决定。列线的电平如果为低,则行线电平为低;列线的电平如果为高,则行线的电平也为高,这是识别按键是否按下的关键所在。图2矩阵式键盘3。1。2独立式键盘独立式键盘的特点是一键一线,各键相互独立,每个键各接一条I/O口线,通过检测I/O输入线的电平状态,可判断出被按下的按键。3。1.3方案比较表2键盘类型比较键盘类型优点缺点独立式电路简单,编程简单占用I/O口线多矩阵式占用I/O口线较少编程比较复杂由于此次设计的琴键控制

6、电路需要16个按键,故单纯从I/O口线的占用的角度比较,独立式需要占用16条I/O口线,而矩阵式却只需8条。故选择矩阵式键盘电路比较合理。3.2数码管显示电路LED(LightEmittingDiode)发光二极管缩写。LED数码管是由发光二极管构成的.常见的LED数码管为“8”字型的,共计8段。一般来说分共阳极和共阴极两种接法.3。2.1LED数码管静态显示静态显示方式即无论多少位LED数码管,同时处于显示状态。如果送往各个LED数码管所显示字符的段码一经确定,则相应I/O口锁存器锁存的段码输出将维持不变,直到送入另一个字符的段码为止。3。2。2LED数码管动态显示静态显示方式就是无论在任何

7、时刻只有一个LED数码管处于显示状态,即单片机采用“扫描方式控制各个数码管轮流显示。3.3。3方案比较对于以上两种数码管驱动电路的的优缺点比较如表3所示。由于静态驱动方式的显示无闪烁,亮度较高,编程简单,加上本次设计的数码管显示电路只需要2个数码管,且分别接两部分管脚,故选择静态驱动方式来显示数码管更为合理。如图3所示为数码管显示电路,采用静态驱动方式和共阳极接法。表3数码管显示方式比较驱动方式优点缺点静态显示显示无闪烁,亮度较高,编程简单数码管越多,所需的电流越大,电源的要求越高动态显示电路简单,数码管越多,优势越明显不如静态显示的亮度高,可能出现闪烁现象图3数码管静态显示电路3.3音乐切换

8、电路通过按键拉低电平,触发中断0。3.4音频播放电路使用两个扬声器,一个作为琴键输出,一个作为乐曲输出。3.5时钟复位电路3.5.1时钟电路时钟频率直接影响单片机的速度,时钟电路的质量也直接影响单片机系统的稳定性。常用的时钟电路有两种方式,一种是内部时钟方式,另一种是外部时钟方式.本设计采用内部时钟方式做时钟电路。3.5。2复位电路在单片机的实用系统中,一般有两种复位操作形式:上电复位和手动复位。上电复位在单片机系统每次通电时执行。手动复位在系统出现操作错误或程序运行出错时使用。由于本设计的需要,同时采用这两种复位方式.整体电路图如下图4所示。图4整体硬件设计四、 电子琴的软件设计系统功能的实

9、现一般包括硬件部分和软件部分,一旦硬件确定下来,软件要实现的功能也随之确定。而为使编程思路清晰,应先绘制程序流程图。4.1系统硬件接口定义表4系统硬件接口定义引脚名接口说明备注P0。0P0。7琴键数码管与单片机通信数码管显示电路P2.0P2。7曲目数码管与单片机通信数码管显示电路P3。2(INT0)外部中断源输入端音乐切换电路P1.0P1。7矩阵键盘接口琴键控制电路P3。0,P3。7控制扬声器音频播放电路4.2主函数主函数流程图如图5所示。利用模块化的思想,主函数只执行初始化函数、键盘扫码函数、音频处理函数和数码管显示函数。图5主函数流程图4.3初始化函数初始化的流程框图如图6所示。该函数对所

10、需的I/O口、外部中断0、定时器0、定时器T1以及数码管进行初始化配置。TMOD=0x11; /T0方式1,T1方式1IP=0x01; /INT0中断优先级最高EA=1;ET0=1;ET1=1;EX0=1; /允许中断TR0=0; /关定时器0P1=0xbf; /键盘初始化flag=0; /标志位置0图6初始化流程图4。4数码管显示及音频处理函数根据键值扫描函数读取的键码,扬声器发声并结合数码管显示出来。图7数码管显示流程图4。5中断函数中断函数用到了外部中断和定时器中断.外部中断的流程框图如图8所示,当按键按下时,外部信号触发外部中断,执行键值扫描函数,读取对应的键值.定时中断的流程框图如图

11、9所示,定时器溢出中断后,进行重装载初值,同时执行相应的音频控制操作。4。6键值扫描函数将输入端置为高电平,输出端置为低电平。这样,当按键没有按下时,所有的输入端无变化,代表无键按下。一旦有键按下,则输入线就受输出线的影响被拉低,这样,通过读入输入线的状态就可得知是否有键按下了.流程图如图10所示。图8外部键盘中断流程图 图9定时器中断流程图图10键值扫描流程图五、 电子琴的系统仿真5。1部分仿真结果表5仿真结果按键编号发声音调数码管显示备注0低XI0,-1中DO1,2中RI2,无播放曲目及停止1,2,或重复按切换音乐图11音乐显示为“”或不显示的时候,琴键按下DO有效图12按音乐键,播放音乐

12、1,琴键弹奏无效5。2调试中出现的问题及解决电子琴的设计并非一帆风顺,在这期间遇到了很多问题,下面谈几个关键的问题。首先是数码管显示乱码的问题,原本以为是数码管字形码表的代码有错,检查几遍发现代码基没错,后来结合硬件图一看,才知道硬件图中数码管是共阳极接法,软件中的数码管字形码表是共阴极的。其二是按键引入中断检测时遇到的问题,按音乐键后琴键无法发声和显示,浪费了很多时间,最终发现是程序的判断条件有问题。其三是扬声器发出的音调不对,甚至没有声音,这个问题后来还是不能解决,最后放弃了LM386的功放电路,直接接扬声器,但是导致了部分琴键发声带杂音.六、 总结在本次设计八路多功能抢答器的课设过程中,

13、我利用AT89C52单片机及外围接口实现电子琴,利用单片机的定时器/计数器定时和计数的原理实现对弹奏和播放的功能,利用Proteus和Keil软件设计出实验电路,完成了课设的任务。在本次课设中,我意识到将理论知识与实践相结合的重要性,对于单片机这样的课程,仅仅通过了解课本上的知识是远远不够的,我通过查资料和搜集有关文献,培养了自学能力,通过利用软件仿真和焊接电路,在很大程度上提高了我的动手能力。我们在课设的过程中,遇到了很多问题,比如我在仿真的过程中错把共阴极数码管字模当作共阳极使用,使得数码管无法正常显示,通过查资料我明白了共阴极数码管是高电平驱动,公共端是负极,共阳极数码管是低电平驱动,公

14、共端是正极,类似的问题出现了很多,我们通过一一排查,终于完成了课设任务,结果表明,有付出必有收获,把握重点、攻克难关,活学活用对于牢固的掌握知识,是非常有用的。在此次课设中,我学到了很多,也通过不断纠正自己的错误,意识到自身的不足,我对知识的掌握还没有实现深层次的理解记忆,我相信这些教训都为我以后的学习奠定了良好的基础,时刻牢记团队合作、坚持与努力的重要性。参考文献1 王思明,张金敏,苟军年.单片机原理及应用系统设计M。北京:人民邮电出版社,2008.2 冯育长,邹小兵。单片机系统设计与实例指导M. 西安:西安电子科技大学出社,2004.3 彭伟.单片机C语言程序设计实训100例M。北京:电子

15、工业出版社,2009。4单丹,马淑云。基于AT89C51单片机电子琴的设计J.中国高新技术企业,2002.附录#includereg52。h#define uchar unsigned char#define uint unsigned int/共阳极数码管Ucharcode LED=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0xbf;sbit beep=P30;uchar key; /键号sbit buzzer=P37;uchar dis_buf;uchar flag;/音符

16、延时表uint code Tone_Delay_Table=64524,64580,64684,64777,64820,64896,64966,65030,65058,65110,65157,65178,65217,65252,65283,65316;/音调与节拍uchar code Song1_Tone=0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0,0xff;uchar code Time1_Tone=1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1

17、,1,1,1,1,1,1,1,1,1,1,0xff;uchar code Song2_Tone=3,5,5,3,2,1,2,3,5,3,2,3,5,5,3,2,1,2,3,2,1,1,0xff;uchar code Time2_Tone=2,1,1,2,1,1,1,2,1,1,1,2,1,1,2,1,1,1,2,1,1,1,0xff;uchar code Song3_Tone=1,1,5,5,6,6,5,4,4,3,3,2,2,1,0xff;uchar code Time3_Tone=1,1,1,1,1,1,1,1,1,1,1,1,1,1,0xff;/定义按键序号uchar keyno;/音乐

18、片段索引,音符索引uchar song_index=0;uchar tone_index=0;/音符指针,延时指针uchar tone_pointer,delay_pointer;/从当前数组中取出音符的位置uchar i =0;/毫秒延时void delayms(uint ms)uchar t;while(ms-) for(t=0;t120;t+);/按键产生外部中断void Key_Press() interrupt 0TR0=0;/切换歌曲song_index=(song_index+1)3;switch(song_index)case 2:tone_pointer=Song1_Tone

19、; delay_pointer=Time1_Tone; break;case 1:tone_pointer=Song2_Tone; delay_pointer=Time2_Tone; break;case 0:tone_pointer=0; delay_pointer=0; break;/重新开始i=0;TR0=1;flag=1;/T0中断播放void play_music() interrupt 1if(song_index!=0)TH0=Tone_Delay_Tabletone_index/256;TL0=Tone_Delay_Tabletone_index%256;buzzer=buzz

20、er;elsebuzzer=0; /void key_scan()uchar temp,k;/高四位置0,放入四行P1=0x0f;delayms(2);/按键后00001111变成0000xxxx,x中1个为0,3个仍为1/以下亦或操作把3个1变成0,唯一0变成1temp=P10x0f;/判断按键发生于03列的哪一列switch(temp)case 1:k=0;break;case 2:k=1;break;case 4:k=2;break;case 8:k=3;break;default:return;/底四位置0,放入四列P1=0xf0;delayms(2);/按键后11110000变成xx

21、xx0000,x为1个0,三个仍为1/高四位移动至底四位,唯一0变1,其余为0temp=(P14)0x0f;/对03行分别赋起始值0,4,8,12switch(temp)case 1:k+=0;break;case 2:k+=4;break;case 4:k+=8;break;case 8:k+=12;break;default:return;keyno=k; /矩阵键盘扫描子程序void key_scan(void) uchar temp; P1=0x0F; /低四位输入 delayms(2); /稍稍延时 temp=P1; /读P1口 temp=temp0x0F; /取低四位 temp=(

22、temp0xF0); if(temp=1) /检测按下的键所在的列号,在第一列 key=0; else if(temp=2) /在第二列 key=1; else if(temp=4) /在第三列 key=2; else if(temp=8) /在第四列 key=3; else key=16; /否则显示- P1=0xF0; /高四位输入 delayms(2); temp=P1; /读P1口 temp=temp0xF0; temp=((temp4)0xF0); if(temp=1) /检测按下的键所在的行号,在第一行 key=key+0; else if(temp=2) /在第二行 key=ke

23、y+4; else if(temp=4) /在第三行 key=key+8; else if(temp=8) /在第四行 key=key+12; else key=16; /否则显示- / 根据行号和列号得到按下的键号 */ dis_buf=LEDkey; /查表得键值/T1中断,发声DO RI MI .。.。void play() interrupt 3TH1=Tone_Delay_Tablekey/256;TL1=Tone_Delay_Tablekey256;beep=beep; /主程序void main()TMOD=0x11; /T0方式1,T1方式1IP=0x01; /INT0中断优先

24、级最高EA=1;ET0=1;ET1=1;EX0=1; /允许中断TR0=0;P1=0xbf;flag=0;while(1) /if(flag=0)P1=0xf0;/发送扫描码if(P1!=0xf0)/有键按下 if(song_index!=2song_index!=1)key_scan();P0 = dis_buf; /键值赋给P0口,显示TR1=1;elseTR1=0;/停止播放 /if(flag=1song_index!=0)delayms(2);tone_index=tone_pointeri;if(tone_index=0xff)i=0;delayms(2000);continue;TR0=1;delayms(delay_pointertone_index240);TR0=0;i+;switch(song_index)case 2:P2=LED2;break;case 1:P2=LED1;break;case 0:P2=0xbf;break;16

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服