1、51单片机课程设计河北工业大学计算机硬件技术基础(MCS-51)2009年综合实验报告学院 能环 班级 热能073 姓名 周浩 学号 070670成绩 一、题目:简易电子琴的设计-B(10)二、问题的提出1 目的:(1)能够对电子电路、电子元器件、印制电路板等方面的知识有进一步的认识,独立对其进行测试与检查。(2)熟悉8051单片机的内部结构和功能,合理使用其内部寄存器,能够完成相关软件编程设计工作。(3)实现预期功能,能够对系统进行快速的调试,并能够对出现的功能故障进行分析,及时修改相关软硬件。(4)对软件编程、排错调试、焊接技术、相关仪器设备的使用技能等方面得到较全面的锻炼和提高。2 基本
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)软件设计:按问题功能分模
3、块,简述各模块功能。程序流程图:四、详细设计: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等七个音符的简谱代码及歌曲的简谱。 解决方案:从任务书及相关资料中查得音符简码,并根据歌曲播放顺序设置编码次序,依次放入数据库,播放时依次
4、从数据库中查值并赋予30h、31h依次发声播放。2)困难2:按键与音符的对应问题。 解决方案:将p1.x八位全部置1,根据按键的不同应用cjne判断按键并在所在按键中对30h、31h赋值,实现对应按键与音符的发声。3)设计创新放音解决方案:参照学习网上建立音节数据库的方法,建立低中高音数据库可见任意输入歌曲,控制节奏五、程序清单 BUZZ EQU P3.3 ORG 8000H LJMP MAIN ORG 800BH LJMP INT_T0 ORG 8100H MAIN: MOV SP,#60H ;初始化堆栈向量 MOV 30H,#00 ;定时器初值清零 MOV 31H,#00 MOV P1,#
5、0FFH ;设置P1口为输入模式 MOV TMOD,#01H ;设置定时器0为工作模式1 SETB ET0 ;开定时器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,#
6、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键按下
7、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: MOV A,P1 CPL A JNZ WAIT1NOKEY: CLR TR0 LJMP START ;无键按下START1: MOV DPTR,#MUSIC ;
8、取生日歌发生顺序的表头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 A
9、CALL 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:
10、 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 D
11、PTR 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 OUTP
12、UTDO: 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 OUTP
13、UTREH: 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 05L
14、OOP: 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,2
15、5,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,04 INT_T0: ;T0中断服务程序 MOV TH0,30H ;定时器附初值 MOV TL0,31H CPL BUZZ ;输出方波 RETI END 六、调试程序的方法1)硬件调试方法编译一个程序(
16、按一个健,相应指示灯变亮),确定按键功能完好;编辑另外一个发声程序确定蜂鸣器可以发出声音。2)软件调试方法连接好线,打开单片机电源,将自己的设计一个程序编译运行,确定keil软件完好。七、你所设计的程序最终完成的功能1)说明你编制的程序能完成的功能;用DP-51PROC的按键K1K8作为电子琴的按键,控制蜂鸣器能够分别发出do、re、mi、fa、so、la、xi等七个音符和播放歌曲。2)准备的测试数据,并记录运行结果。 do、re、mi、fa、so、la、xi等七个音符和播放洋娃娃和小熊跳舞。七音的初值为:65058、65110、65157、65178、65217、65252、65283。歌曲频率及发声时长顺序见源程序。八、对该设计题目有何更完善的方案1、对自己完成程序进行自我评价。此程序实现了设计任务书的基本要求,声音比较准,音调响亮。但是,此设计仅有八个按键可以应用,所以只是指完成了高音部分的发音。2、对课题提出更完善的方案。将双排键应用到设计中,以完成低、中、高所有音符的发音。日期: 2009年 1 月 1 日
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1