ImageVerifierCode 换一换
格式:DOC , 页数:28 ,大小:346.54KB ,
资源ID:2686521      下载积分:10 金币
快捷注册下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

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

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

开通VIP折扣优惠下载文档

            查看会员权益                  [ 下载后找不到文档?]

填表反馈(24小时):  下载求助     关注领币    退款申请

开具发票请登录PC端进行申请

   平台协调中心        【在线客服】        免费申请共赢上传

权利声明

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

注意事项

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

基于单片机的键电子琴专业课程设计方案报告.doc

1、 单片机原理及系统课程设计 评语: 考勤10分 守纪10分 过程30分 设计报告30分 答辩20分 总成绩(100) 专 业: 自动化 班 级: 姓 名: 学 号: 指引教师: 兰州交通大学自动化与电气工程学院 年 12 月 30 日 基于单片机16键电子琴 一、电子琴设计目、规定与设计办法 1.1设计目 当代乐器中

2、电子琴是高新科技在音乐领域一种代表,体现了人类电子技术和艺术完美结合。电子琴自动伴奏稳定性、精确性,以及鲜明强弱规律、随人设立速度规定,都更便于人们由易到难、进一步浅出精确掌握歌曲节奏和乐曲风格,对其节奏稳定性和精确性训练能起到非常大作用。 1.2设计规定 本设计重要是用AT89C52单片机为核心控制元件,设计一种微缩版电子琴。单片机与按键构成主控制模块,在主控制模块上设立有9个按键,分别达到不同目的。本系统重要为了完毕电子琴三大功能:电子琴弹奏和音乐播放及录音。 1.3电子琴设计办法 1.3.1设计工具 表1软件简介 软件名称 设计作用 Keil uVision4 编写程

3、序与编译 PROTEUS 绘制硬件电路图、数字仿真 Microsoft Visio 绘制程序流图与框图 1.3.2设计思路 (1)功能按键触发外部中断,以完毕不同曲目切换。 (2)设立定期器产生不同频率方波,I/O口输出,经功放后扬声器发声。 (3)采用4×4矩阵键盘弹奏16个音(低XI到高DO)。 二、 电子琴设计方案及原理 2.1设计总体方案 本系统采用AT89C52为主控芯片。输入电路有16个琴键按键,通过按键随意按下所要表达音符,作为电平送给主体电路,中央解决器通过辨认,解码输出音符,在扬声器中发出有效声音。1个音乐按键用于播放音乐和切换歌曲,通

4、过按键触发中断,重置定期器初值,于另一种扬声器中发出有效音响。 总设计框图如下图1所示。 单 片 机 时钟复位电路 数码管显示电路 琴键控制电路 音频播放电路 音乐切换电路 图1基于单片机电子琴电路原理框图 2.2发声原理 运用AT89C52内部定期器使其工作计数器模式(MODE1)下,变化计数值TH0及TL0以产生不同频率办法产生不同音阶,例如,频率为523Hz,其周期T=1/523=1912μs,因而只要令计数器计时956μs/1μs=956,每计数956次时将I/O反相,就可得到中音DO(523Hz)。 

5、计数脉冲值与频率关系式是:    N=fi÷2÷fr。 式中,N是计数值;fi是机器频率(晶体振荡器为12MHz时,其频率为1MHz);fr是想要产生频率。  三、 电子琴硬件设计 基于单片机AT89C51电子琴电路由琴键控制电路、数码管显示电路、音频播放电路、时钟-复位电路、音乐切换电路和电源电路六某些所构成。 3.1琴键控制电路 琴键控制电路作为人机联系输入某些,也是间接控制数码显示和音频功放重要构成某些。键盘按照连接方式可以分为独立式和矩阵式键盘两类。 3.1.1矩阵式键盘 如图2所示为4X4矩阵式键盘电路,由一种4X4行、列构造可以构成一种16个按键键盘。  矩阵中无

6、按键按下时,行线为高电平;当有按键按下时,行线电平状态将由与此行线相连列线电平决定。列线电平如果为低,则行线电平为低;列线电平如果为高,则行线电平也为高,这是辨认按键与否按下核心所在。 图2矩阵式键盘 3.1.2独立式键盘  独立式键盘特点是一键一线,各键互相独立,每个键各接一条I/O口线,通过检测I/O输入线电平状态,可判断出被按下按键。  3.1.3 方案比较  表2键盘类型比较 键盘类型 长处 缺陷 独立式 电路简朴,编程简朴 占用I/O口线多 矩阵式 占用I/O口线较少 编程比较复杂 由于本次设计琴键控制电路需要16个按键,故单纯从I/O口线占用角度比

7、较,独立式需要占用16条I/O口线,而矩阵式却只需8条。故选取矩阵式键盘电路比较合理。 3.2数码管显示电路 LED(Light Emitting Diode)发光二极管缩写。LED数码管是由发光二极管构成。常用LED数码管为“8”字型,共计8段。普通来说分共阳极和共阴极两种接法。 3.2.1LED数码管静态显示  静态显示方式即无论多少位LED数码管,同步处在显示状态。如果送往各个LED数码管所显示字符段码一经拟定,则相应I/O口锁存器锁存段码输出将维持不变,直到送入另一种字符段码为止。 3.2.2LED数码管动态显示   静态显示方式就是无论在任何时刻只有一种LED数码管处在显

8、示状态,即单片机采用“扫描”方式控制各个数码管轮流显示。  3.3.3方案比较  对于以上两种数码管驱动电路优缺陷比较如表3所示。由于静态驱动方式显示无闪烁,亮度较高,编程简朴,加上本次设计数码管显示电路只需要2个数码管,且分别接两某些管脚,故选取静态驱动方式来显示数码管更为合理。如图3所示为数码管显示电路,采用静态驱动方式和共阳极接法。 表3数码管显示方式比较 驱动方式 长处 缺陷 静态显示 显示无闪烁,亮度较高, 编程简朴 数码管越多,所需电流越大,电源规定越高 动态显示 电路简朴,数码管越多, 优势越明显 不如静态显示亮度高, 也许浮现闪烁现象 图3

9、数码管静态显示电路 3.3音乐切换电路 通过按键拉低电平,触发中断0。 3.4音频播放电路 使用两个扬声器,一种作为琴键输出,一种作为乐曲输出。 3.5时钟复位电路 3.5.1时钟电路  时钟频率直接影响单片机速度,时钟电路质量也直接影响单片机系统稳定性。惯用时钟电路有两种方式,一种是内部时钟方式,另一种是外部时钟方式。 本设计采用内部时钟方式做时钟电路。 3.5.2复位电路  在单片机实用系统中,普通有两种复位操作形式:上电复位和手动复位。 上电复位在单片机系统每次通电时执行。手动复位在系统浮现操作错误或程序运营出错时使用。 由于本设计需要,同步采用这两种复位方式。 整体

10、电路图如下图4所示。 图4整体硬件设计 四、 电子琴软件设计 系统功能实现普通涉及硬件某些和软件某些,一旦硬件拟定下来,软件要实现功能也随之拟定。而为使编程思路清晰,应先绘制程序流程图。  4.1 系统硬件接口定义  表4系统硬件接口定义 引脚名 接口阐明 备注 P0.0~P0.7 琴键数码管与单片机通信 数码管显示电路 P2.0~P2.7 曲目数码管与单片机通信 数码管显示电路 P3.2(INT0) 外部中断源输入端 音乐切换电路 P1.0~P1.7 矩阵键盘接口 琴键控制电路 P3.0,P3.7 控制扬声器 音频播放电路 4.2主函数

11、  主函数流程图如图5所示。运用模块化思想,主函数只执行初始化函数、键盘扫码函数、音频解决函数和数码管显示函数。 图5主函数流程图 4.3初始化函数 初始化流程框图如图6所示。该函数对所需I/O口、外部中断0、定期器0、定期器T1以及数码管进行初始化配备。 TMOD=0x11;//T0方式1,T1方式1 IP=0x01; //INT0中断优先级最高 EA=1;ET0=1;ET1=1;EX0=1; //容许中断 TR0=0; //关定期器0 P1=0xbf; //键盘初始化 flag=0; //标志位置0

12、 图6初始化流程图 4.4数码管显示及音频解决函数 依照键值扫描函数读取键码,扬声器发声并结合数码管显示出来。 图7数码管显示流程图 4.5中断函数 中断函数用到了外部中断和定期器中断。外部中断流程框图如图8所示,当按键按下时,外部信号触发外部中断,执行键值扫描函数,读取相应键值。定期中断流程框图如图9所示,定期器溢出中断后,进行重装载初值,同步执行相应音频控制操作。  4.6键值扫描函数 将输入端置为高电平,输出端置为低电平。这样,当按键没有按下时,所有输入端无变化,代表无键按下。一旦有键按下,则输入线就受输出线影

13、响被拉低,这样,通过读入输入线状态就可得知与否有键按下了。流程图如图10所示。 图8外部键盘中断流程图 图9定期器中断流程图 图10键值扫描流程图 五、 电子琴系统仿真 5.1某些仿真成果 表5仿真成果 按键编号 发声音调 数码管显示 备注 0 低XI 0,- 1 中DO 1,- 2 中RI 2,- 无 播放曲目及停止 1,2

14、或- 重复按切换音乐 图11音乐显示为“-”或不显示时候,琴键按下DO有效 图12按音乐键,播放音乐1,琴键弹奏无效 5.2调试中浮现问题及解决 电子琴设计并非一帆风顺,在这期间遇到了诸多问题,下面谈几种核心问题。一方面是数码管显示乱码问题,原本觉得是数码管字形码表代码有错,检查几遍发当代码基没错,日后结合硬件图一看,才懂得硬件图中数码管是共阳极接法,软件中数码管字形码表是共阴极。其二是按键引入中断检测时遇到问题,按音乐键后琴键无法发声和显示,挥霍了诸多时间,最后发现是程序判断条件有问题。其三是扬声器发出音调不对,甚至没有声音,这个问题日后还是不能解决,最

15、后放弃了LM386功放电路,直接接扬声器,但是导致了某些琴键发声带杂音。 六、 总结 在本次设计八路多功能抢答器课设过程中,我运用AT89C52单片机及外围接口实现电子琴,运用单片机定期器/计数器定期和计数原理实现对弹奏和播放功能,运用Proteus和Keil软件设计出实验电路,完毕了课设任务。 在本次课设中,我意识到将理论知识与实践相结合重要性,对于单片机这样课程,仅仅通过理解课本上知识是远远不够,我通过查资料和收集关于文献,培养了自学能力,通过运用软件仿真和焊接电路,在很大限度上提高了我动手能力。咱们在课设过程中,遇到了诸多问题,例如我在仿真过程中错把共阴极数码管字模当作共阳极使用,

16、使得数码管无法正常显示,通过查资料我明白了共阴极数码管是高电平驱动,公共端是负极,共阳极数码管是低电平驱动,公共端是正极,类似问题浮现了诸多,咱们通过一一排查,终于完毕了课设任务,成果表白,有付出必有收获,把握重点、攻克难关,活学活用对于牢固掌握知识,是非常有用。 在本次课设中,我学到了诸多,也通过不断纠正自己错误,意识到自身局限性,我对知识掌握还没有实现深层次理解记忆,我相信这些教训都为我后来学习奠定了良好基本,时刻紧记团队合伙、坚持与努力重要性。 参照文献 [1] 王思明,张金敏,苟军年.单片机原理及应用系统设计[M].北京:人民邮电出版社,. [2] 冯育长,邹小兵.单片

17、机系统设计与实例指引[M]. 西安:西安电子科技大学出社,. [3] 彭伟.单片机C语言程序设计实训100例[M].北京:电子工业出版社,. [4] 单丹,马淑云.基于AT89C51单片机电子琴设计[J].中华人民共和国高新技术公司,. 附录 #include #define uchar unsigned char #define uint unsigned int //共阳极数码管 Uchar code LED[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc

18、6,0xa1,0x86,0x8e,0xbf}; sbit beep=P3^0; uchar key; //键号 sbit buzzer=P3^7; uchar dis_buf; uchar flag; //音符延时表 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,

19、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,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

20、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; //音乐片段索引,音符索引 uchar song_index=0; uchar tone_index=0; //音符指针,延时指针 uchar *tone_pointer,*delay_pointer; //从当前数组中取出

21、音符位置 uchar i =0; //毫秒延时 void delayms(uint ms) { uchar t; while(ms--) for(t=0;t<120;t++); } //按键产生外部中断 void Key_Press() interrupt 0 { TR0=0; //切换歌曲 song_index=(song_index+1)%3; switch(song_index) { case 2:tone_pointer=Song1_Tone; delay_pointer=Time1_Tone; bre

22、ak; 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 1 { if(song_index!=0){ TH0=Tone_Delay_Table[tone_index]/

23、256; TL0=Tone_Delay_Table[tone_index]%256; buzzer=~buzzer;} else{buzzer=0;} } /*void key_scan() { uchar temp,k; //高四位置0,放入四行 P1=0x0f; delayms(2); //按键后00001111变成0000xxxx,x中1个为0,3个仍为1 //如下亦或操作把3个1变成0,唯一0变成1 temp=P1^0x0f; //判断按键发生于0-3列哪一列 switch(temp) { case 1:k=0;brea

24、k; case 2:k=1;break; case 4:k=2;break; case 8:k=3;break; default:return; } //底四位置0,放入四列 P1=0xf0; delayms(2); //按键后11110000变成xxxx0000,x为1个0,三个仍为1 //高四位移动至底四位,唯一0变1,别的为0 temp=(P1>>4)^0x0f; //对0~3行分别赋起始值0,4,8,12 switch(temp) { case 1:k+=0;break; case 2:k+=4;break;

25、 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=temp&0x0F; //取低四位 temp=~(temp|0xF0); if(temp==1) //检测按下

26、键所在列号,在第一列 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口

27、temp=temp&0xF0; temp=~((temp>>4)|0xF0); if(temp==1) //检测按下键所在行号,在第一行 key=key+0; else if(temp==2) //在第二行 key=key+4; else if(temp==4) //在第三行 key=key+8; else if(temp==8) //在第四行 key=key+12; else key=16; //否则显示-

28、/* 依照行号和列号得到按下键号 */ dis_buf=LED[key];//查表得键值 } //T1中断,发声DO RI MI 。。。。 void play() interrupt 3 { TH1=Tone_Delay_Table[key]/256; TL1=Tone_Delay_Table[key]%256; beep=~beep; } //主程序 void main() { TMOD=0x11;//T0方式1,T1方式1 IP=0x01; //INT0中断优先级最高 EA=1; ET0=1; ET1=1; EX

29、0=1; //容许中断 TR0=0; P1=0xbf; flag=0; while(1) { //if(flag==0){ P1=0xf0;//发送扫描码 if(P1!=0xf0)//有键按下 { if(song_index!=2&&song_index!=1) { key_scan(); P0 = dis_buf; //键值赋给P0口,显示 TR1=1; } } else { TR1=0;//停止播放 } //} if(fla

30、g==1&&song_index!=0) { delayms(2); tone_index=tone_pointer[i]; if(tone_index==0xff) { i=0; delayms(); continue; } TR0=1; delayms(delay_pointer[tone_index]*240); TR0=0; i++; switch(song_index) { case 2:P2=LED[2]; break; case 1:P2=LED[1]; break; case 0:P2=0xbf; break; } } } }

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

关于我们      便捷服务       自信AI       AI导航        抽奖活动

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

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

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

关注我们 :微信公众号    抖音    微博    LOFTER 

客服