单片机 简易电子琴 设计.doc_第1页
单片机 简易电子琴 设计.doc_第2页
单片机 简易电子琴 设计.doc_第3页
单片机 简易电子琴 设计.doc_第4页
单片机 简易电子琴 设计.doc_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

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

文档简介

编号: 河北工业大学计算机硬件技术基础(MCS-51)2009年综合实验报告一、题目:简易电子琴的设计-B(10)二、问题的提出1 目的:(1)能够对电子电路、电子元器件、印制电路板等方面的知识有进一步的认识,独立对其进行测试与检查。(2)熟悉8051单片机的内部结构和功能,合理使用其内部寄存器,能够完成相关软件编程设计工作。(3)实现预期功能,能够对系统进行快速的调试,并能够对出现的功能故障进行分析,及时修改相关软硬件。(4)对软件编程、排错调试、焊接技术、相关仪器设备的使用技能等方面得到较全面的锻炼和提高。2 基本要求:(1)要按任务书的要求认真分析问题,并解决问题;(2)要求用MCS-51单片机知识完成程序的设计;(3)在实验室利用现有的设备,完成题目的设计与调试。三、总体设计1、分析问题的功能用DP-51PROC的按键K1K8作为电子琴的按键,控制蜂鸣器能够发出do、re、mi、fa、so、la、xi等七个音符和播放生日歌。2、系统总体结构设计1)硬件设计:根据问题确定单片机、I/O接口、定时器、I/O设备、中断等;单片机:DP-51PROC模拟器 I/O接口:P1口定时器:定时器/计数器T/C0I/O设备:DP-51PROC的按键K1K8、蜂鸣器中断:外部中断INT1 2)软件设计:按问题功能分模块,简述各模块功能。程序流程图:Key8Y判断闭合键键值N开始发声工作开始有键闭合否?查表播放歌曲Key1-7四、详细设计:1、硬件详细设计:1)画出电路图;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、设计中的主要困难及解决方案在这部分论述设计中遇到的主要困难及解决方案。1)困难1:do、re、mi、fa、so、la、xi等七个音符的简谱代码及歌曲的简谱。解决方案:从任务书及相关资料中查得音符简码,并根据歌曲播放顺序设置编码次序,依次放入数据库,播放时依次从数据库中查值并赋予30h、31h依次发声播放。2)困难2:按键与音符的对应问题。解决方案:将p1.x八位全部置1,根据按键的不同应用cjne判断按键并在所在按键中对30h、31h赋值,实现对应按键与音符的发声。3)设计创新放音解决方案:参照学习网上建立音节数据库的方法,建立低中高音数据库可见任意输入歌曲,控制节奏五、程序清单BUZZEQUP3.3ORG 8000HLJMP MAINORG 800BHLJMP INT_T0ORG 8100H MAIN: MOV SP,#60H;初始化堆栈向量MOV30H,#00;定时器初值清零MOV31H,#00MOV P1,#0FFH;设置P1口为输入模式MOV TMOD,#01H;设置定时器0为工作模式1SETB ET0;开定时器0中断SETBEA;开总中断CLRTR0;关闭定时器0START:MOVR0,P1CJNER0,#0FFH,KEY1;键盘扫描CLR TR0SJMPSTARTKEY1:CJNER0,#0FEH,KEY2;K1键按下MOV30H,#0FEH;设置音阶高音doMOV31H,#22HLJMPSET_TIMERKEY2:CJNER0,#0FDH,KEY3;K2键按下MOV30H,#0FEH;设置音阶高音reMOV31H,#56HLJMPSET_TIMERKEY3:CJNER0,#0FBH,KEY4;K3键按下MOV30H,#0FEH;设置音阶高音miMOV31H,#85HLJMPSET_TIMERKEY4:CJNER0,#0F7H,KEY5;K4键按下MOV30H,#0FEH;设置音阶高音faMOV31H,#9AHLJMPSET_TIMERKEY5:CJNER0,#0EFH,KEY6;K5键按下MOV30H,#0FEH;设置音阶高音soMOV31H,#0C1HLJMPSET_TIMERKEY6:CJNER0,#0DFH,KEY7;K6键按下MOV30H,#0FEH;设置音阶高音laMOV31H,#0E4HLJMPSET_TIMERKEY7:CJNER0,#0BFH,KEY8;K7键按下MOV30H,#0FFH;设置音阶高音xiMOV31H,#03HLJMPSET_TIMERKEY8:CJNER0,#7FH,NOKEY ;K8键按下LJMPSTART1 ;播放洋娃娃和小熊跳舞SET_TIMER:SETBTR0 ;发音WAIT1:MOV A,P1CPL AJNZ WAIT1NOKEY:CLRTR0LJMPSTART ;无键按下START1: MOV DPTR,#MUSIC ;取生日歌发生顺序的表头CONT: CLR A ;查表将歌曲播放次序代码输入给A MOVC A,A+DPTR CJNE A,#00,CHK ;判断是否为停止不是则跳转查音 AJMP NOKEY ;是停止则跳回CHK: PUSH ACC ;往后移动指针查表 INC DPTR CLR A MOVC A,A+DPTR MOV R4,A POP ACCCHK1: CJNE A,#01,CHK2 ;根据A值选择发声音节 ACALL DOLCHK2: CJNE A,#02,CHK3 ACALL RELCHK3: CJNE A,#03,CHK4 ACALL MILCHK4: CJNE A,#04,CHK5 ACALL FALCHK5: CJNE A,#05,CHK6 ACALL SOLCHK6: CJNE A,#06,CHK7 ACALL LALCHK7: CJNE A,#07,CHK11 ACALL SILCHK11: CJNE A,#11,CHK12 ACALL DOCHK12: CJNE A,#12,CHK13 ACALL RECHK13: CJNE A,#13,CHK14 ACALL MICHK14: CJNE A,#14,CHK15 ACALL FACHK15: CJNE A,#15,CHK16 ACALL SOCHK16: CJNE A,#16,CHK17 ACALL LACHK17: CJNE A,#17,CHK21 ACALL SICHK21: CJNE A,#21,CHK22 ACALL DOHCHK22: CJNE A,#22,CHK23 ACALL REHCHK23: CJNE A,#23,CHK24 ACALL MIHCHK24: CJNE A,#24,CHK25 ACALL FAHCHK25: CJNE A,#25,CHK26 ACALL SOHCHK26: CJNE A,#26,CHK27 ACALL LAHCHK27: CJNE A,#27,CHK0 ACALL SIHCHK0:CJNE A,#00,CONT2 ACALL NONCONT2: INC DPTR AJMP CONTDOL: MOV R6,#254 ;给每个音节定音频率和发声时长 MOV R5,#16 AJMP OUTPUTREL: MOV R6,#226 MOV R5,#18 AJMP OUTPUTMIL: MOV R6,#201 MOV R5,#21 AJMP OUTPUTFAL: MOV R6,#190 MOV R5,#22 AJMP OUTPUTSOL: MOV R6,#170 MOV R5,#25 AJMP OUTPUTLAL: MOV R6,#150 MOV R5,#28 AJMP OUTPUTSIL: MOV R6,#134 MOV R5,#31 AJMP OUTPUTDO: MOV R6,#126 MOV R5,#33 AJMP OUTPUTRE: MOV R6,#113 MOV R5,#37 AJMP OUTPUTMI: MOV R6,#100 MOV R5,#41 AJMP OUTPUTFA: MOV R6,#95 MOV R5,#44 AJMP OUTPUTSO: MOV R6,#85 MOV R5,#49 AJMP OUTPUTLA: MOV R6,#75 MOV R5,#55 AJMP OUTPUTSI: MOV R6,#67 MOV R5,#62 AJMP OUTPUTDOH: MOV R6,#63 MOV R5,#65 AJMP OUTPUTREH: MOV R6,#56 MOV R5,#73 AJMP OUTPUTMIH: MOV R6,#50 MOV R5,#82 AJMP OUTPUTFAH: MOV R6,#47 MOV R5,#88 AJMP OUTPUTSOH: MOV R6,#42 MOV R5,#98 AJMP OUTPUTLAH: MOV R6,#37 MOV R5,#110 AJMP OUTPUTSIH: MOV R6,#33 MOV R5,#124 AJMP OUTPUTNON: MOV R6,#33 MOV R5,#124 AJMP OUTPUT ;输出R4*R5周的方波OUTPUT: PUSH 05LOOP: CJNE A,#00,SOUND AJMP MUTESOUND: CLR P3.3MUTE: ACALL DELAY SETB P3.3 ACALL DELAY DJNZ R5,LOOP POP 05 DJNZ R4,OUTPUTREST: MOV R6, #170 MOV R5,#30WAIT: ACALL DELAY DJNZ R5,WAIT RETDELAY: MOV B,R6 ;延时半周期t=15us*R6+9usDL: MOV R7,#6 DJNZ R7,$ DJNZ R6,DL MOV R6,B RETMUSIC: DB 21,02,22,02,23,02,24,02,25,02,25,02,25,01,24,01,23,02 DB 24,01,24,01,24,02,23,02,22,02,21,02,23,02,25,04 DB 26,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 DB 21,02,23,02,21,02,00,04INT_T0: ;T0中断服务程序 MOV TH0,30H ;定时器附初值 MOV TL0,31H CPL BUZZ ;输出方波 RETI END 六、调试程序的方法1)硬件调试方法编译一个程序(按一个健,相应指示灯变亮),确定按键功能完好;编辑另外一个发声程序确定蜂鸣器可以发出声音。2)软件调试方法连接好线,打开单片机电源,将自己的设计一个程序编译运行,确定keil软件完好。七、你所设计的程序最终完成的功能1)说明你编制的程序能完成的功能;用DP-51PROC的按键K1K8作为电子琴的按键,控制蜂鸣器能够分别发出do、re、mi、fa、so、la、xi等七个音符和播放歌曲。2)准备的测试数据,并记录运行结果。do、re、mi、fa、so、la、xi等七

温馨提示

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

评论

0/150

提交评论