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

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-8247760.html】到电脑端继续下载(重复下载不扣费)。

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

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(基于单片机的电子琴课程设计报告书Word格式文档下载.docx)为本站会员(b****4)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

基于单片机的电子琴课程设计报告书Word格式文档下载.docx

1、LASI音符高音1高音2高音3高音4高音5高音6高音7频率/HZ522587659700780880988延时参数63565047423733音长参数6573828898110124音阶代码21222324252627中音1中音2中音3中音4中音5中音6中音726229433034939244049412611310095857567414449556211121314151617低音1低音2低音3低音4低音5低音6低音713114716517519622024725422620119017015013418283101020304050607特殊功能休止符重复演奏停止演奏简谱0040255(

2、1) DO的频率为262HZ,所以周期T=1/f=1/262s=3816s半周期t=T/2=1908s(2) 若以程序:MOV R6,#DATA ;1周ACALL DELAY ;2周共需耗时3个机器周期,即耗时1s3=3sDELAY:MOV B,R6 ;需耗时2个机器周期,即耗时1s2=2sDL:MOV R7,#6 ;DJNZ R7,$ ;DJNZ R6,DL ;此循环部分,每执行一次共需耗时15个机器周期,即耗时1s15=15sMOV R6,B ;2周 RET ;共需耗时4机器周期,即耗时1s4=4s来达成延时t的目的,则因t=1908s,且MOV R6,#DATAACALL DELAYMO

3、V B,R6MOV R6,B RET 这5个指令共耗时9s,所以在DELAY子程序中,循环的部分只能是:1908s-9s=1899s(3) 循环的部分每执行一次耗时15s,故要延时1899s需要执行126次,即R6=126就可产生所需DO音调。其他音调所需的R6值,算法相同。(4)实际上,做电子琴时,程序必须不断地判断是哪一个键被按下,所以程序中还有其他的指令在消耗时间。因此实际采用的R6的值应该比上述计算值少一点点,音阶才会正确。但是要把R6的值计算很准确,实在很费时间,况且判断按键的状态所耗时间与周期T比起来实在微不足道,所以在设计程序时只采用上述计算方法计算R6的值即可,程序在判断是哪个

4、键被按下所耗费的时间可忽略不计。3.音乐产生的原理:由于一首音乐是许多不同的音阶组成的,而每个音阶对应着不同的频率,这样我们就可以利用不同的频率组合,即可构成我们所想要的音乐了,当然对于单片机来产生不同的频率非常方便,我们可以利用单片机的延时时间产生这样的方波频率信号。除了音符以外,节拍也是音乐的关键组成部分,节拍实际上就是音持续时间的长短,在单片机系统中可以用延时时间的长短来实现,如果1/4拍的延时时间是0.4秒,则1拍的延时时间就是1.6秒,只要知道1/4拍的延时时间,其余的节拍就是它的倍数。如果单片机要自己播放音乐,那么就必须在程序中考虑到节拍的设置。为了编写计算机乐谱的方便,所以我们自

5、己定义了音阶代码,例如用01代表低音DO,用11代表中音DO,用21代表高音DO,如表1所列。另外,我们用40代表重复演奏,用255代表停止演奏。在程序中编写计算机乐谱时,就是用这些音阶代码来代替各音阶。音阶代码可岁曲子的节奏快慢有自己决定,例如1拍定位04(就是音长的4倍),半拍就是02,2拍就是08,以此类推。各音拍的音拍代码如表2所列。表2 各音拍的音拍代码音拍1/4拍1/2拍3/4拍1拍1 1/4拍1 1/2拍1 3/4拍2拍音拍代码082 1/4拍2 1/2拍2 3/4拍3拍3 1/4拍3 1/2拍3 3/4拍4拍09104 1/4拍4 1/2拍4 3/4拍5拍5 1/4拍5 1/2

6、拍5 3/4拍6拍1920把乐谱改编为程序中的计算机乐谱时,必须按照“音阶代码在前,音拍代码在后”的规则排列,乐谱结束时,必须以40(表示重复演奏)或255(表示只演奏一遍就停止)作结尾。4程序流程图:5程序:ORG 0000HMOV P2,#11111111B MOV P3,#11111111BTEST:JNB P2.0,DO1 ;P2.0 = 0吗? JNB P2.1,RE1 ;P2.1 = 0吗? JNB P2.2,MI1 ;P2.2 = 0吗? JNB P2.3,FA1 ;P2.3 = 0吗? JNB P2.4,SO1 ;P2.4 = 0吗? JNB P2.5,LA1 ;P2.5 =

7、0吗? JNB P2.6,SI1 ;P2.6 = 0吗? JNB P2.7,DOH1 ;P2.7 = 0吗? JNB P3.0,START ;P3.0 = 0吗? AJMP TESTDO1:MOV R6,#126 AJMP OUTPUT1RE1:MOV R6,#113MI1:MOV R6,#100FA1:MOV R6,#95SO1:MOV R6,#85LA1:MOV R6,#75SI1:MOV R6,#67DOH1:MOV R6,#63AJMP OUTPUT1OUTPUT1:CLR P3.7 ;令扬声器通电 ACALL DELAY ;延时半周期t SETB P3.7 ;令扬声器断电 AJMP

8、TEST ;重新测试按键START:MOV DPTR,#MUSIC ;DPTR指向乐谱的开头CONT:CLR A ;读取乐谱的音阶代码 MOVC A,A+DPTR ;A=音阶代码 CJNE A,#40,CHK ;若音阶代码为40 AJMP START ;则从头开始演奏STOP:MOV A,#255 ;若音阶代码为255则停止演奏CHK:PUSH ACC ;保存A的容 INC DPTR CLR A ;读取乐谱的音拍代码 MOVC A,A+DPTR MOV R4,A ;R4=音拍代码POP ACC ;取回A的容CHK1:CJNE A,#01,CHK2 ;若音阶代码为01, ACALL DOL ;则

9、产生低音DO的声音 JNB P3.2,STOP ;若P3.2=0,则停止演奏CHK2:CJNE A,#02,CHK3 ;若音阶代码为02, ACALL REL ;则产生低音RE的声音CHK3:CJNE A,#03,CHK4 ;若音阶代码为03, ACALL MIL ;则产生低音MI的声音CHK4:CJNE A,#04,CHK5 ;若音阶代码为04, ACALL FAL ;则产生低音FA的声音CHK5:CJNE A,#05,CHK6 ;若音阶代码为05, ACALL SOL ;则产生低音SO的声音若P3.2=0,则停止演奏 CHK6:CJNE A,#06,CHK7 ;若音阶代码为06, ACAL

10、L LAL ;则产生低音LA的声音CHK7:CJNE A,#07,CHK11 ;若音阶代码为07, ACALL SIL ;则产生低音SI的声音CHK11:CJNE A,#11,CHK12 ;若音阶代码为11, ACALL DO ;则产生中音DO的声音CHK12:CJNE A,#12,CHK13 ;若音阶代码为12, ACALL RE ;则产生中音RE的声音CHK13:CJNE A,#13,CHK14 ;若音阶代码为13, ACALL MI ;则产生中音MI的声音CHK14:CJNE A,#14,CHK15 ;若音阶代码为14, ACALL FA ;则产生中音FA的声音CHK15:CJNE A,

11、#15,CHK16 ;若音阶代码为15, ACALL SO ;则产生中音SO的声音CHK16:CJNE A,#16,CHK17 ;若音阶代码为16, ACALL LA ;则产生中音LA的声音CHK17:CJNE A,#17,CHK21 ;若音阶代码为17, ACALL SI ;则产生中音SI的声音CHK21:CJNE A,#21,CHK22 ;若音阶代码为21, ACALL DOH ;则产生高音DO的声音CHK22:CJNE A,#22,CHK23 ;若音阶代码为22, ACALL REH ;则产生高音RE的声音CHK23:CJNE A,#23,CHK24 ;若音阶代码为23, ACALL M

12、IH ;则产生高音MI的声音CHK24:CJNE A,#24,CHK25 ;若音阶代码为24, ACALL FAH ;则产生高音FA的声音CHK25:CJNE A,#25,CHK26 ;若音阶代码为25, ACALL SOH ;则产生高音SO的声音CHK26:CJNE A,#26,CHK27 ;若音阶代码为26, ACALL LAH ;则产生高音LA的声音CHK27:CJNE A,#27,CHK0 ;若音阶代码为27, ACALL SIH ;则产生高音SI的声音CHK0:CJNE A,#00,CONT2 ;若音阶代码为00, ACALL NON ;则不发出声音CONT2:INC DPTR ;继

13、续读取乐谱 AJMP CONTDOL:MOV R6,#254 ;R6 = 延时参数 MOV R5,#16 ;R5 = 音长参数 AJMP OUTPUT ;设定低音DO 的相对参数REL:MOV R6,#226 ;设定低音RE的相应参数 MOV R5,#18 AJMP OUTPUTMIL:MOV R6,#201 ;设定低音MI的相应参数 MOV R5,#21FAL:MOV R6,#190 ;设定低音FA的相对参数 MOV R5,#22SOL:MOV R6,#170 ;设定低音SO的相应参数 MOV R5,#25LAL:MOV R6,#150 ;设定低音LA的相应参数 MOV R5,#28SIL:

14、MOV R6,#134 ;设定低音SI的相应参数 MOV R5,#31DO:MOV R6,#126 ;设定中音DO的相对参数 MOV R5,#33RE:MOV R6,#113 ;设定中音RE的相对参数 MOV R5,#37MI:MOV R6,#100 ;设定中音MI的相对参数 MOV R5,#41FA:MOV R6,#95 ;设定中音FA的相对参数 MOV R5,#44SO:MOV R6,#85 ;设定中音SO的相对参数 MOV R5,#49LA:MOV R6,#75 ;设定中音LA的相对参数 MOV R5,#55SI:MOV R6,#67 ;设定中音SI的相对参数 MOV R5,#62DOH

15、:MOV R6,#63 ;设定高音DO的相应参数 MOV R5,#65REH:MOV R6,#56 ;设定高音RE的相应参数 MOV R5,#73 MIH:MOV R6,#50 ;设定高音MI的相应参数 MOV R5,#82FAH:MOV R6,#47 ;设定高音FA的相应参数 MOV R5,#88 SOH:MOV R6,#42 ;设定高音SO的相应参数 MOV R5,#98LAH:MOV R6,#37 ;设定高音LA的相应参数 MOV R5,#110SIH:MOV R6,#33 ;设定高音SI的相应参数 MOV R5,#124 NON:设定休止符相应参数 MOV R5,#124AJMP OU

16、TPUTOUTPUT:MOV ACC,R5 ;保存R5的容LOOP:CJNE A,#00,SOUND ;若音阶代码为00,则不让扬声器通电 LJMP MUTESOUND:MUTE:ACALL DELAY ;延时半周期 DJNZ R5,LOOP ;输出一个音长,共R5周的方波 MOV R5,ACC ;取回R5的容 DJNZ R4,OUTPUT ;一共输出R4个音长REST:静音 MOV R5,#20WAIT: DJNZ R5,WAITMOV B,R6 ;延时半周期t=15sR6+9sMOV R7,#6 DJNZ R7,$ DJNZ R6,DL MOV R6,B RETMUSIC:DB 11,04

17、,11,04,11,04 DB 13,06,12,02,11,04 DB 13,04,13,04,13,04 DB 15,06,14,02,13,04 DB 15,04,14,04,13,04 DB 12,08,00,04 DB 12,08,11,02,07,02 DB 11,04,12,04,13,04 DB 14,08,13,02,12,02 DB 13,04,14,04,15,04 DB 15,02,14,02,13,04,12,04 DB 11,08,00,04 DB 40 ;END五、心得与体会这次设计从软件方面来讲不是很难,程序相对长一点,但都是书本上所学的知识,主要是中端及其服务

18、程序的编写。在protues上仿真,则起到很好的效果,因为元器件都是理想状态的,但做出实物来却没有那么简单啦。经过多次调试、修改才得以出结果。经过本次课程设计,我们比较好的把理论知识与实践相结合,而我们在也本次设计中收获不少。最重要的是在实践中理解了书本上的知识,明白了学以致用的真谛,明白做好一件事单靠自己是不够的,集体团队精神也非常重要。也明白老师为什么要求我们做好这个课程的原因。他是为了教会我们如何运用所学的知识去解决实际问题,提高我们的动手能力。设计过程中,首先,对于汇编语言多了一层了解,其次,还有硬件的接线,还有8051芯片的引脚方面,都让我们收获不少。加强了自身的动手能力。六、参考文献1.单片机原理与接口技术(第二版)晓林、牛昱光、闫高伟 主编,电子工业。

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2