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

    单片机设计矩阵键盘电子琴(共11页).doc

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

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

    单片机设计矩阵键盘电子琴(共11页).doc

    精选优质文档-倾情为你奉上课程设计任务书 课 程 名 称 单片机原理及应用课程设计 院(系、部、中心) 通 信 工 程 学 院 专 业 通 信 工 程 1 课程设计应达到的目的本课程是继单片机原理及应用B课程之后,训练学生综合运用上述课程知识,进行单片机软件、硬件系统设计与调试,使学生加深对单片机结构、工作原理的理解,提高学生综合应用知识的能力、分析解决问题的能力和单片机最小应用系统的设计技能。通过课程设计,达到理论与实际应用相结合,增强学生对综合电子系统设计的理解,掌握单片机原理就应用的设计方法以及C51编程的能力,并能够在这个基础上进行实际项目的程序设计及软硬件调试,增强学生的工程实践能力。2 课程设计题目及要求 带存储播放功能的简易电子琴设计要求:利用行列式键盘和数码管,来控制并显示和产生不同频率的声音。其他扩展功能学生可自己添加,功能不限定与此。3. 课程设计任务及工作量的要求包括课程设计计算说明书、图纸、实物样品等要求(1) 了解相关理论知识,掌握基本的原理,理解相关特殊功能寄存器的设置。(2) 完成电路板的组装(3) 完成硬件电路的测试、以及软件的编程(4) 最终完成具体的课设任务。4主要参考文献1 张洪润等单片机应用设计200例北京:北京航空航天大学出版社,20062. 胡汉才.单片机原理及其接口技术. 北京: 清华大学出版社,20103夏继强等单片机实验与实践教程北京:北京航空航天大学出版社,20064. 倪晓军等.单片机原理与接口技术教程.北京: 清华大学出版社,20075(1)硬件方面:单片机。4*4行列式键盘,蜂鸣器,独立数码管,独立建。硬件部分采用逐列扫描,16个键位对应16个音,不断检测16键位,当某个键位被按下,先检测哪一列再检测哪个按键被按下,同时设置四个功能键,p1.0,p1.1播放歌曲,p1.2暂停,p1.3复位,可控制歌曲的播放。插入图片(2)音乐频率一首音乐是许多不同的音阶组成的,而每个音阶对应着不同的频率,这样我们就可以利用不同的频率的组合,即可构成我们所想要的音乐了,当然对于单片机来产生不同的频率非常方便,我们可以利用单片机的定时/计数器T0来产生这样方波频率信号,因此,我们只要把一首歌曲的音阶对应频率关系弄正确即可。单片机12MHZ晶振,高中低音符与单片机计数T0相关的计数值如下表所示 : 音 符 频 率 简码值(T值)低3 M33064021低4 FA349 64103低5 SO392 64260低6 LA44064400低7 SI49464524中 1 DO52364580 中 2 RE58764684 中 3 M65964777中 4 FA69864820中 5 SO78464898中 6 LA88064968中 7 SI98865030高 1 DO106465058高 2 RE117565110高 3 M131865157高 4 FA1397651786 程序设计的流程图如下图,不断检测16个音阶键或功能键哪个被按下,当音阶键被按下时,发出对应的音;当功能键被按下时,执行相应的功能。然后再检测按键释放成不成功,也就是平时所说的松手检测,不成功就不断再检测,成功就停止工作。插入图片7心得体会: 通过这次课程设计,我学到了很多书本上学不到的知识与经验,同时也遇到了很多问题,并在这个过程中逐步尝试去解决他们,提高自己的实践能力,硬件设计上我发现通过不同的I/O口可以节省端口资源的利用,部分端口上的需求可以通过软件解决。从语法错误到程序功能的实现,前前后后也是改了又改,这次课程设计使我意识到很多存在的问题,必须在单片机方面读更多的书,更深入的去探究,去挖掘这些问题的答案。8源程序#include<reg51.h>#define uchar unsigned char#define uint unsigned intsbit buz=P23; /定义蜂鸣器uchar temp,key;sbit s1=P10; /定义功能键1 sbit s2=P11; /定义功能键2sbit s3=P12; /定义功能键3sbit s4=P13;uint code table=64021,64103,64260,64400,64524,64580,64684,64777,64820,64898,64968,65030,65058,65110,65157,65178; /频率uint code xable= 0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c, 0x39,0x5e,0x79,0x71 ;void delay(uint z) /延时程序 uint x,y; for(x=z;x>0;x-) for(y=110;y>0;y-);void initialize()P1=0xff;/起初数码管不显示任何数void main() TMOD=0x01; EA=1; /开总中断 ET0=1; /开定时器0中断 while(1) P3=0xfe; temp=P3; temp=temp&0xf0; if(temp!=0xf0) /检测第一行按键 delay(10); temp=P3; temp=temp&0xf0; if(temp!=0xf0) temp=P3; switch(temp) case 0xee: key=0,P0=xable0; break; case 0xde: key=1,P0=xable1; break; case 0xbe: key=2,P0=xable2; break; case 0x7e: key=3,P0=xable3; break; TH0=tablekey/256; TL0=tablekey%256; TR0=1; while(temp!=0xf0) /松手检测 temp=P3; temp=temp&0xf0; TR0=0; buz=1; P3=0xfd; /检测第二行按键 temp=P3; temp=temp&0xf0; if(temp!=0xf0) delay(10);temp=P3;temp=temp&0xf0;if(temp!=0xf0) temp=P3; switch(temp) case 0xed: key=4,P0=xable4; break; case 0xdd: key=5,P0=xable5; break; case 0xbd: key=6,P0=xable6; break; case 0x7d: key=7,P0=xable7; break; TH0=tablekey/256; TL0=tablekey%256; TR0=1; while(temp!=0xf0) temp=P3; temp=temp&0xf0; TR0=0; buz=1; P3=0xfb; /检测第三行按键 temp=P3; temp=temp&0xf0; if(temp!=0xf0) delay(10);temp=P3;temp=temp&0xf0;if(temp!=0xf0) temp=P3; switch(temp) case 0xeb: key=8,P0=xable8; break; case 0xdb: key=9,P0=xable9; break; case 0xbb: key=10,P0=xable10; break; case 0x7b: key=11,P0=xable11; break; TH0=tablekey/256; TL0=tablekey%256; TR0=1; while(temp!=0xf0) temp=P3; temp=temp&0xf0; TR0=0; buz=1; P3=0xf7; /检测第四行按键 temp=P3; temp=temp&0xf0; if(temp!=0xf0) delay(10); temp=P3; temp=temp&0xf0; if(temp!=0xf0) temp=P3; switch(temp) case 0xe7: key=12,P0=xable12; break; case 0xd7: key=13,P0=xable13; break; case 0xb7: key=14,P0=xable14; break; case 0x77: key=15,P0=xable15; break; TH0=tablekey/256; TL0=tablekey%256; TR0=1; while(temp!=0xf0) temp=P3;temp=temp&0xf0; TR0=0; buz=1; if(s1=0) /功能键1 delay(10); if(s1=0) TR0=1; while(1) if(s3=0) /功能键3 delay(1); if(s3=0) TR0=TR0; /设置启动暂停 while(!s3); key=4; /祝你生日快乐TH0=tablekey/256;TL0=tablekey%256;delay(150); key=4; TH0=tablekey/256; TL0=tablekey%256; delay(150); key=5; TH0=tablekey/256; TL0=tablekey%256; delay(300); key=4; TH0=tablekey/256; TL0=tablekey%256; delay(300); key=7; TH0=tablekey/256; TL0=tablekey%256; delay(300); key=6; TH0=tablekey/256; TL0=tablekey%256; delay(600); key=4; TH0=tablekey/256; TL0=tablekey%256; delay(150); key=4; TH0=tablekey/256; TL0=tablekey%256; delay(150); key=5; TH0=tablekey/256; TL0=tablekey%256; delay(300); key=4; TH0=tablekey/256; TL0=tablekey%256; delay(300); key=8; TH0=tablekey/256; TL0=tablekey%256; delay(300); key=6; TH0=tablekey/256; TL0=tablekey%256; delay(300); buz=1; while(!s1); /松手检测 if(s2=0) /功能键2 delay(10); if(s2=0) TR0=1; while(1) if(s3=0) /功能键3 delay(10); if(s3=0) TR0=TR0; key=4; /找朋友 TH0=tablekey/256; TL0=tablekey%256; delay(400); key=5; TH0=tablekey/256; TL0=tablekey%256; delay(400); key=4; TH0=tablekey/256; TL0=tablekey%256; delay(400); key=5; TH0=tablekey/256; TL0=tablekey%256; delay(400); key=4; TH0=tablekey/256; TL0=tablekey%256; delay(800); key=4; TH0=tablekey/256; TL0=tablekey%256; delay(400); key=7; TH0=tablekey/256; TL0=tablekey%256; delay(400); key=6; TH0=tablekey/256; TL0=tablekey%256; delay(400); key=5; TH0=tablekey/256; TL0=tablekey%256; delay(400); key=4; TH0=tablekey/256; TL0=tablekey%256; delay(800); key=2; TH0=tablekey/256; TL0=tablekey%256; delay(800); buz=1; while(!s2); /松手检测 void time() interrupt 1 /中断 TH0=tablekey/256;TL0=tablekey%256;buz=buz; 专心-专注-专业

    注意事项

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

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




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

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

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

    收起
    展开