齐兴甫 106876 电子琴实验报告_第1页
齐兴甫 106876 电子琴实验报告_第2页
齐兴甫 106876 电子琴实验报告_第3页
齐兴甫 106876 电子琴实验报告_第4页
齐兴甫 106876 电子琴实验报告_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

2012年(秋)河北工业大学计算机硬件技术基础开放性实验报告PAGE第16页/共18页土木学院交运C101班级姓名齐兴甫学号106876成绩实验组号同组人:夏泽民马晓静刘玉飞敖瀚波电子琴实验设计报告一.基本功能1)具有一般演奏功能,利用所给键盘的1,2,3,4,5,6,7,8八个键,能够发出8个不同的音调,并且要求按下按键发声,松开延时一段时间停止,中间再按别的键则发另一个音调的声音2)具有自动播放已存曲目功能3)显示当前正在播放的歌曲的名称和歌词二.总体设计1、分析问题的功能2、系统总体结构设计1)硬件设计:根据问题确定单片机、I/O接口、定时器、I/O设备、中断等;2)软件设计:按问题功能分模块,简述各模块功能。三.详细设计:1、硬件详细设计:1)硬件设计:根据问题确定单片机、I/O接口、定时器、I/O设备、中断等;单片机:DP-51PROC模拟器 I/O接口:P1口定时器:定时器/计数器T/C0I/O设备:DP-51PROC的按键K1~K8、蜂鸣器中断:外部中断INT1画出电路图;LED显示模块LED显示模块如图2-2所示,利用AT89S52单片机的P0端口的P0.0-P0.7连接到一个七段数码管的a-h的笔段上,数码管的公共端接电源。矩阵扫描显示当前按键模块如下:扬声器模块矩阵扫描扬声器发出对应音符模块如下:共阳极电路图上位开关2)进行硬件资源分配。I/O口地址:P1.0、P1.1、P1.2、P1.3、P1.4、P1.5、P1.6、P1.7、P3.3所用存储单元:A:数据中转R0:记录p1.x对应值R5、R6:分别记录歌曲音节延时和频率30H、31H:存储要输出访波频率的高低位2软件详细设计:程序流程图:KKey8Y判断闭合键键值N开始发声工作开始有键闭合否?查表播放歌曲Key1-73、设计中的主要困难及解决方案在这部分论述设计中遇到的主要困难及解决方案。1)困难1:do、re、mi、fa、so、la、xi等七个音符的简谱代码及歌曲的简谱。解决方案:从任务书及相关资料中查得音符简码,并根据歌曲播放顺序设置编码次序,依次放入数据库,播放时依次从数据库中查值并赋予30h、31h依次发声播放。2)困难2:按键与音符的对应问题。解决方案:将p1.x八位全部置1,根据按键的不同应用cjne判断按键并在所在按键中对30h、31h赋值,实现对应按键与音符的发声。3)设计创新放音解决方案:参照学习网上建立音节数据库的方法,建立低中高音数据库可见任意输入歌曲,控制节奏四.程序清单 BUZZ EQU P3.3 ORG8000H LJMPMAIN ORG800BH LJMPINT_T0 ORG8100HMAIN: MOVSP,#60H ;初始化堆栈向量 MOV 30H,#00 ;定时器初值清零 MOV 31H,#00 MOV P1,#0FFH ;设置P1口为输入模式 MOVTMOD,#01H ;设置定时器0为工作模式1 SETBET0 ;开定时器0中断 SETB EA ;开总中断 CLR TR0 ;关闭定时器0START: MOV R0,P1 CJNE R0,#0FFH,KEY1 ;键盘扫描 CLR TR0 SJMP STARTKEY1: CJNE R0,#0FEH,KEY2 ;K1键按下 MOV 30H,#0FEH ;设置音阶高音do MOV 31H,#22H LJMP SET_TIMERKEY2: CJNE R0,#0FDH,KEY3 ;K2键按下 MOV 30H,#0FEH ;设置音阶高音re MOV 31H,#56H LJMP SET_TIMERKEY3: CJNE R0,#0FBH,KEY4 ;K3键按下 MOV 30H,#0FEH ;设置音阶高音mi MOV 31H,#85H LJMP SET_TIMERKEY4: CJNE R0,#0F7H,KEY5 ;K4键按下 MOV 30H,#0FEH ;设置音阶高音fa MOV 31H,#9AH LJMP SET_TIMERKEY5: CJNE R0,#0EFH,KEY6 ;K5键按下 MOV 30H,#0FEH ;设置音阶高音so MOV 31H,#0C1H LJMP SET_TIMERKEY6: CJNE R0,#0DFH,KEY7 ;K6键按下 MOV 30H,#0FEH ;设置音阶高音la MOV 31H,#0E4H LJMP SET_TIMERKEY7: CJNE R0,#0BFH,KEY8 ;K7键按下 MOV 30H,#0FFH ;设置音阶高音xi MOV 31H,#03H LJMP SET_TIMERKEY8: CJNE R0,#7FH,NOKEY ;K8键按下 LJMP START1 ;播放洋娃娃和小熊跳舞SET_TIMER: SETB TR0 ;发音WAIT1: MOVA,P1 CPLA JNZWAIT1NOKEY: CLR TR0 LJMP START ;无键按下START1:MOVDPTR,#MUSIC ;取生日歌发生顺序的表头CONT:CLR A;查表将歌曲播放次序代码输入给AMOVCA,@A+DPTRCJNEA,#00,CHK;判断是否为停止不是则跳转查音AJMPNOKEY;是停止则跳回CHK:PUSHACC;往后移动指针查表INCDPTRCLRAMOVCA,@A+DPTRMOVR4,APOPACCCHK1:CJNEA,#01,CHK2;根据A值选择发声音节ACALLDOLCHK2:CJNEA,#02,CHK3ACALLRELCHK3:CJNEA,#03,CHK4ACALLMILCHK4:CJNEA,#04,CHK5ACALLFALCHK5:CJNEA,#05,CHK6ACALLSOLCHK6:CJNEA,#06,CHK7ACALLLALCHK7:CJNEA,#07,CHK11ACALLSILCHK11:CJNEA,#11,CHK12ACALLDOCHK12:CJNEA,#12,CHK13ACALLRECHK13:CJNEA,#13,CHK14ACALLMICHK14:CJNEA,#14,CHK15ACALLFACHK15:CJNEA,#15,CHK16ACALLSOCHK16:CJNEA,#16,CHK17ACALLLACHK17:CJNEA,#17,CHK21ACALLSICHK21:CJNEA,#21,CHK22ACALLDOHCHK22:CJNEA,#22,CHK23ACALLREHCHK23:CJNEA,#23,CHK24ACALLMIHCHK24:CJNEA,#24,CHK25ACALLFAHCHK25:CJNEA,#25,CHK26ACALLSOHCHK26:CJNEA,#26,CHK27ACALLLAHCHK27:CJNEA,#27,CHK0ACALLSIH ;绝对调用子程序CHK0: CJNEA,#00,CONT2 ACALLNONCONT2:INCDPTR ;数据指针加1AJMPCONTDOL:MOVR6,#254;给每个音节定音频率和发声时长MOVR5,#16AJMPOUTPUTREL:MOVR6,#226MOVR5,#18AJMPOUTPUTMIL:MOVR6,#201MOVR5,#21AJMPOUTPUTFAL:MOVR6,#190MOVR5,#22AJMPOUTPUTSOL:MOVR6,#170MOVR5,#25AJMPOUTPUTLAL:MOVR6,#150MOVR5,#28AJMPOUTPUTSIL:MOVR6,#134MOVR5,#31AJMPOUTPUTDO:MOVR6,#126MOVR5,#33AJMPOUTPUTRE:MOVR6,#113MOVR5,#37AJMPOUTPUTMI:MOVR6,#100MOVR5,#41AJMPOUTPUTFA:MOVR6,#95MOVR5,#44AJMPOUTPUTSO:MOVR6,#85MOVR5,#49AJMPOUTPUTLA:MOVR6,#75MOVR5,#55AJMPOUTPUTSI:MOVR6,#67MOVR5,#62AJMPOUTPUTDOH:MOVR6,#63MOVR5,#65AJMPOUTPUTREH:MOVR6,#56MOVR5,#73AJMPOUTPUTMIH:MOVR6,#50MOVR5,#82AJMPOUTPUTFAH:MOVR6,#47MOVR5,#88AJMPOUTPUTSOH:MOVR6,#42MOVR5,#98AJMPOUTPUTLAH:MOVR6,#37MOVR5,#110AJMPOUTPUTSIH: MOVR6,#33MOVR5,#124AJMPOUTPUTNON:MOVR6,#33MOVR5,#124 AJMPOUTPUT;输出R4*R5周的方波OUTPUT:PUSH05LOOP:CJNEA,#00,SOUNDAJMPMUTESOUND:CLRP3.3MUTE:ACALLDELAYSETBP3.3ACALLDELAY DJNZR5,LOOP POP05DJNZR4,OUTPUTREST:MOVR6,#170MOVR5,#30WAIT:ACALLDELAYDJNZR5,WAITRETDELAY:MOVB,R6;延时半周期t=15us*R6+9usDL:MOVR7,#6 DJNZR7,$DJNZR6,DLMOVR6,BRETMUSIC:DB21,02,22,02,23,02,24,02,25,02,25,02,25,01,24,01,23,02DB24,01,24,01,24,02,23,02,22,02,21,02,23,02,25,04 DB26,02,26,02,26,01,25,01,24,01,25,02,25,02,25,01,DB24,01,23,01,24,02,24,02,24,01,23,01,22,01 DB21,02,23,02,21,02,00,04 INT_T0: ;T0中断服务程序MOVTH0,30H ;定时器附初值MOVTL0,31HCPL BUZZ ;输出方波RETI END五.调试程序的方法1)硬件调试方法编译一个程序(按一个健,相应指示灯变亮),确定按键功能完好;编辑另外一个发声程序确定蜂鸣器可以发出声音。2)软件调试方法连接好线,打开单片机电源,将自己的设计一个程序编译运行,确定keil软件完好。六.你所设计的程序最终完成的功能1)说明你编制的程序能完成的功能;用DP-51PROC的按键K1~K8作为电子琴的按键,控制蜂鸣器能够分别发出do、re、mi、fa、so、la、xi等七个音符和播放歌曲。2)准备的测试数据,并记录运行结果。do、re、mi、fa、so、la、xi等七个音符和播放洋娃娃和小熊跳舞。七音的初值为:65058、65110、65157、65178、65217、65252、65283。歌曲频率及发声时长顺序见源程序。七.对该设计题目有何更完善的方案1、对自己完成程序进行自我评价。此程序实现了设计任务书的基本要求,声音比较准,音调响亮。但是,此设计仅有八个按键可以应用,所以只是指完成了高音部分的发音。2、对课题提出更完善的方案。将双排键应用到设计中,以完成低、中、高所有音符的发音。八.收获及心得体会通过这次课程设计,我学到了不少课本上没有的知识,也锻炼了自己的动手能力,将以前学过的零散的知识串到一起。经过我长时间的设计及调试,本系统基本能实现按下键盘矩阵中的按键会使数码管显示当前按键,扬声器播放对应的音符。但由于仿真系统原因,本设计音频效果不是很好。不足之处有:1.可弹奏的音符数较少,只能在一定范围内满足用户需要。可通过改进键盘识别模块和发生模块来增加其复杂度2.音量不可调。我的综合设计主要涉及硬件和软件两方面的内容,通过这些我的硬件和软件

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论