《简易电子琴课程设计_燕山大学.doc》由会员分享,可在线阅读,更多相关《简易电子琴课程设计_燕山大学.doc(24页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、燕山大学课 程 设 计 说 明 书题目: 简易电子琴 学院(系): 电气工程学院 年级专业: 10级精仪一班 学 号: 学生姓名: 指导教师: 教师职称: 副教授 燕山大学课程设计(论文)任务书院(系):电气工程学院 基层教学单位:仪器科学与工程系 学 号学生姓名专业(班级)精仪一班设计题目简易电子琴设计技术参数设计一简易电子琴,按下不同按键,能够发出不同的声音。通过每个按键的控制使单片机系统输出不同频率的脉冲,经过扬声器发出不同频率音调。演奏一首歌曲。设计要求设计电子琴的键盘电路(包括硬件电路);编制相应的程序。工作量设计的内容满足课程设计的教学目的与要求,设计题目的难度和工作量适合学生的知
2、识和能力状况,工作量饱满。工作计划查阅资料进行设计准备、设计硬件电路、编制程序,编制程序、验证设计、撰写任务书。参考资料单片微型计算机接口技术及其应用 张淑清 国防工业出版社单片机应用技术汇编指导教师签字基层教学单位主任签字说明:此表一式四份,学生、指导教师、基层教学单位、系部各一份。2012年6月29日 目 录第一章 摘要 第二章 引言 2.1 电子琴设计背景2.2电子琴设计意义2.3电子琴设计目标第三章音乐产生原理及代码值的计算第四章 硬件系统接线4.1蜂鸣器的电路连接及实现4.2 4X4矩阵键盘部分第五章 程序的设计思想及执行流程5.1设计流程5.2 程序流程图第六章 程序设计第七章 总
3、结参考文献附录第一章 摘要随着电子技术的发展,电子技术正在逐渐改善着人们的学习、生活、工作,因此开发本系统希望能够给人们多带来一点生活上的乐趣,电子技术与音乐的结合不断加深。由此而产生的电子琴在这种形势下,因其体积小,易于携带,经济适用,对初学者,尤其对识谱的人来说是很容易弹奏的,一首简单的曲子灵感好的人甚至不用很多的练习和教师的指导就能很快的弹奏出来。是一般家庭都能承受得了的经济投入,而且电子琴键盘操作直观易于掌握。这样就强烈地激发了学习者的学习兴趣,迅速地提高了电子琴的普及率。电子琴使用简单。深受广大音乐爱好者推崇。本次课程设计的主要内容是用WAVE6000试验箱上的资源,以80C51单片
4、机为核心控制元件,通过产生不同频率的脉冲信号产生出电子音调,设计一个简易的电子琴。以单片机作为主控核心,与键盘、蜂鸣器等模块组成控制模块。该系统运行稳定,其优点是硬件电路简单,软件功能完善,控制系统可靠,性价比较高等,具有一定的实用与参考价值。关键词:单片机;电子琴;脉冲信号第二章 引言2.1电子琴设计背景随着电子科技的飞速发展,电子技术正在逐渐改善着人们的学习、生活、工作,因此开发本系统希望能够给人们多带来一点生活上的乐趣。基于当前市场上的玩具市场需求量大,其中电子琴就是一个很好的应用方面。单片机技术使我们可以利用软硬件实现电子琴的功能,从而实现电子琴的微型化,可以用作玩具琴、音乐转盘以及音
5、乐童车等等。并且可以进行一定的功能扩展。鉴于传统电子琴可以用键盘上的“k0”到“k16”键演奏从低So到高DO等16个音,从而可以用来弹奏喜欢的乐曲。2.2电子琴设计意义该设计具有以下优点:(1)可以随意弹奏想要表达的音乐;(2)制作简单,成本低。 (3)比传统电子琴功能更完善。2.3电子琴设计目标由于本设计主要用于人们娱乐方面,因此在设计上尽量使其安全以及简单易操作。其次,在这次设计可行性上进行分析如下:1、经济可行性:所谓经济可行性,即在这次设计上需要投入资金的多少,由于课程设计是提高我们的动手能力以及资金有限。因此在经济上必须能够承受,比较理想化的对于我们课程设计来说是不可行的。通过分析
6、后,无论是在器件价格或是常见度上均是可行的。2、技术可行性:技术可行性主要是分析技术条件上是否能够顺利开展并完成课程设计的主要问题,硬件、软件能否满足设计者的需要等。通过分析各种软件环境,硬件仿真环境等均已经具备。综上所述,本系统设计目标已经明确,在经济与技术上均可行,因此本系统的开发是完全可行的。第三章 音乐产生原理及代码值的计算一首音乐是许多不同的音阶组成的,而每个音阶对应着不同的频率,这样我们就可以利用不同的频率的组合,即可构成我们所想要的音乐了,当然对于单片机来产生不同的频率非常方便,我们可以利用单片机的定时/计数器T0来产生这样的方波频率信号,因此,因此,我们只要把一首歌曲的音阶对应
7、频率关系正确即可。若要产生音频脉冲,只要算出某一音频的周期(1/频率),再将此周期除以2,即为半周期的时间。利用定时器计时半周期时间,每当计时终止后就将P1.0反相,然后重复计时再反相。就可在P1.0引脚上得到此频率的脉冲。利用80C51的内部定时器使其工作计数器模式(MODE1)下,改变计数值TH0及TL0以产生不同频率的方法产生不同音阶。计数脉冲值与频率的关系式(如式2-1所示)是: N12 2 (3-1) 式中,N是产生需要脉冲所需的计数值, 是单片机的晶振频率(本实验箱的晶体振荡器为5MHz), 是想要产生的频率;相应的计数初值T的求法如下: T65536N (3-2) 本次课程设计所
8、使用的实验箱上的单片机晶振为6MHz,对应的每次计数时间间隔为2us,则T65536N65536/12/ /265536/ (3-3)我们要为这个音符建立一个表格,单片机通过查表的方式来获得相应的数据,单片机6MHZ晶振,高中低音符与计数T0相关的计数值如表1所示:音符频率(HZ)代码值(T)音符频率(HZ)代码值(T)低1DO26264582中 5 SO78465217低2RE29464686中 6 LA88065252低 3 M33064779中 7 SI98865283低 4 FA34964820高 1 DO104665297低 5 SO39264898高 2 RE117565323低
9、6 LA44064968高 3 M131865346低 7 SI49465030高 4 FA139765357中 1 DO52365058高 5 SO156865377中 2 RE58765110高 6 LA176065394中 3 M65965157高 7 SI196765409中 4 FA69865178表3-1 音符频率表音乐的音拍为基本的发声时长,一个节拍为单位(C调)相应的时长如表1-2所示: 曲调值DELAY曲调值DELAY调4/4125ms调4/462ms调3/4187ms调3/494ms调2/4250ms调2/4125ms表3-2 曲调值表第四章 硬件系统接线4.1蜂鸣器的电路
10、连接及实现利用三极管作为门控信号,将三极管的基极连接在P1.0上,当给P1.0以一定频率的脉冲信号时,三极管的射级也会输出同等频率的脉冲信号。蜂鸣器为脉冲驱动型,其发声频率由P1.0的输出频率决定,发声长度由P1.0输出的脉冲信号的有效时长确定。其电路连接图2-2如图所示4.2 4X4矩阵键盘部分本次课程设计采用的WAVE6000试验箱,课程设计的功能均由键盘控制实现。44矩阵键盘的列扫描信号和行扫描信号分别由74HC374和74HC245控制送出和读入,其片选信号端Key_LED_CS连接在一起,可以与试验箱上的CS0CS7相连接, 采用80C51的并行口P0口作为数据信号线,输出列扫描信号
11、,读入行扫描信号。每个按键有它的行值和列值,行值和列值的组合就是识别这个按键的编码。每个按键的状态同样需变成数字量“0”和“1”,开关的一端(列线)通过电阻接VCC,而接地是通过程序输出数字“0”实现的。键盘处理程序的任务是:确定有无键按下,判断哪一个键按下,键的功能是什么;还要消除按键在闭合或断开时的抖动。两个并行口中,一个输出扫描码,使按键逐行动态接地,另一个并行口输入按键状态,由行扫描值和回馈信号共同形成键编码而识别按键,通过软件查表,查出该键的功能,在本程序中,当程序检测到有键按下时,将查表使按键值与预存数据表中数据对应,并调用发声程序。图4-3 简化的矩阵键盘连接图第五章 程序的设计
12、思想及执行流程5.1设计流程1)键盘扫描程序:检测是否有键按下,有键按下则记录按下键的键值,并跳转至功能转移程序;无键按下,则返回键盘扫描程序继续检测。2)功能转移程序:对检测到得按键值进行判断,是琴键则跳转至琴键处理程序,是功能键则跳转至相应的功能程序,我们设计的功能程序有两种,即音色调节功能和自动播放乐曲功能。3)琴键处理程序:根据检测到得按键值,查询音律表,给计时器赋值,使发出相应频率的声音。4)自动播放歌曲程序:检测到按键按下的是自动播放歌曲功能键后执行该程序,电子琴会自动播放事先已经存放好的歌曲,歌曲播放完毕之后自动返回至键盘扫描程序,继续等待是否有键按下。5.2 程序流程图开始初始
13、化:设置定时器工作方式,使能中断键盘扫描程序否有键按下否 是延时去抖动识别按键功能是否是歌曲播放键“0”否 根据按键值,调用单发音子程序,播放键入音符调用连续放心子程序,播放歌曲 是返回键盘扫描程序图5-1 主程序流程图 单发音子程序的执行流程:根据检测到得按键值,查询音律表,给计时器T0赋值,同时调用固定时长的延时子程序,发出相应频率的及时长的声音,之后自动返回至键盘扫描程序,继续等待是否有键按下,执行流程如图3-2所示单发音子程序根据键值查音律表将代码值转入定时器T0 使能TR0,开始发声调用固定时长延时子程序返回键盘扫描程序图5-2 单发音子程序流程图图播放歌曲子程序的执行流程:检测到按
14、键按下的是歌曲播放键“0”键时执行该程序,单片机自动播放事先已经存放好的歌曲,同时每隔一定时间扫描一次键盘,检测是否有暂停键“F”或停止键“E”按下,有则处理相应的子功能。歌曲播放完毕之后自动返回至键盘扫描程序,继续等待是否有键按下。执行流程如图3-3所示: 播放歌曲子程序取歌谱地址取对应音符的代码值和拍数 是否为停止码0是 返回键盘扫描否赋值定时器T1;赋值延时子程序参数 延时 扫描键盘 否歌曲计数器加一,准备取下一歌曲音符代码是否有键按下是扫描键盘是是否暂停键“F”否否是否停止键“E”是返回键盘扫描图5-3 自动播放歌曲程序流程图第六章 程序设计程序清单:OUT_ADDS EQU 0800
15、2HIN_ADDS EQU 08001HPai_NUM EQU 30HSing_NUM EQU 31HTone_High EQU 32HTone_Low EQU 33HToneBuf EQU 34HKeyBuf EQU 35H ORG 0000H LJMP START ORG 000BH LJMP INT_T0 ORG 001BH LJMP INT_T1 START: MOV SP, #70H MOV TMOD, #11H; MOV IE, #8AH ; MOV ToneBuf,#0MLOOP: CALL TestKey JZ MLOOP CALL Delay CALL TestKey JZ
16、MLOOP CALL Get_Char MOV b, A CJNE A,#0,utterMOV Sing_NUM,#00next: MOV A, Sing_NUM MOV DPTR,# Sing_Tab MOVC A,A+DPTR MOV R2,A JZ end_sing ANL A,#0FH MOV R5,A MOV A,R2 SWAP A ANL A,#0FH JNZ sing CLR TR1 JMP DM1sing: DEC A MOV 22H,A RL A MOV DPTR,#Sing_Tab0 MOVC A,A+DPTR MOV TH1,A MOV 21H,A MOV A,22H R
17、L A INC A MOVC A,A+DPTR MOV TL1,A MOV 20H,A SETB TR1DM1: CALL Delay1 INC Sing_NUM CALL TestKey JZ next CALL Delay CALL TestKey JZ next CALL Get_Char CJNE A,#0FH,next1next0: CLR TR1 CALL TestKey JZ next0 CALL Delay CALL TestKey JZ next0 CALL Get_Char CJNE A,#0FH,next AJMP next0 ; SETB TR1 ; JMP nextn
18、ext1: CJNE A,#0EH,next CLR TR1 LJMP MLOOP ;JMP nextend_sing: CLR TR1 LJMP MLOOP utter: DEC B MOV A, B RL A MOV B, A MOV DPTR, #Tone_Table MOVC A, A+DPTR MOV Tone_High, A MOV TH0, A MOV A, B INC A MOVC A, A+DPTR MOV Tone_Low, A MOV TL0, A SETB TR0 MOV Pai_NUM, #100next2: MOV A,Pai_NUM JNZ next2 CLR T
19、R0 LJMP MLOOPTone_Table: DW 64578, 64686, 64778, 64821, 64898, 64968, 65029 DW 65058,65110,65157,65178, 65217, 65252, 65283,65029Sing_Tab0: DW 65058,65110,65157,65178,65217,65252,65283DW 65296,65323,65346,64898,64968,65030Sing_Tab: DB 0C4H,0C2H,32H,22H,32H,12H,0D2HDB 0CCH,04HDB 32H,64H,52H,32H,22H,1
20、2H,22HDB 3CH,32H,52H,;DB 34H,34H,34H,32H,52H,DB 66H,72H,62H,52H,32H,22HDB 12H,14H,22H,38HDB 26H,32H,0D2H,0C2H,0B4H DB 0CCH, 02H,32HDB 54H,52H,32H,34H,02H,32HDB 84H,82H,62H,64H,62H,82HDB 64H,54H,12H,24HDB 3CH,02H,32H,DB 86H,62H,066H,062H;DB 86H,92H,0A4H,0A4H DB 86H,92H,0A6H,0A2H,92H, 76H,52HDB 6CH,04
21、H,DB 0C6H,32H,22H,32H,12H,0D2HDB 0CCH,04HDB 32H,64H,52H,32H,22H,12H,22HDB 34H,34H,34H,32H,52HDB 64H,62H,72H,62H,52H,32H,22HDB 12H,14H,22H,34H,34HDB 24H,22H,32H,72H,62H,54HDB 6CH,00HTestKey: MOV DPTR, #OUT_ADDS MOV A, #0 MOVX DPTR, A MOV DPTR, #IN_ADDS MOVX A, DPTR CPL A ANL A, #0FH RETGet_Char: MOV
22、R1, #20H MOV R2, #6L1: MOV DPTR, #OUT_ADDS MOV A, R1 CPL A MOVX DPTR, A CPL A RR A MOV R1, A MOV DPTR,#IN_ADDS MOVX A,DPTR CPL A ANL A, #0FH JNZ L2 DJNZ R2, L1 MOV R2, #0FFH SJMP L4L2: MOV R1, A MOV A, R2 DEC A RL A RL A MOV R2, A MOV A, R1 MOV R1, #4L3: RRC A JC L4 INC R2 DJNZ R1, L3L4: MOV DPTR, #
23、OUT_ADDS CLR A MOVX DPTR, A MOV A, R2 MOV DPTR, #Key_Table MOVC A, A+DPTR RETKey_Table: DB 16H, 15H, 14H, 0FFH DB 13H, 12H, 11H, 10H DB 0DH, 0CH, 0BH, 0AH DB 0EH, 03H, 06H, 09H DB 0FH, 02H, 05H, 08H DB 00H, 01H, 04H, 07HINT_T0: PUSH PSW CLR TR0 MOV TH0, Tone_High MOV TL0, Tone_Low SETB TR0 CPL P1.0
24、DEC Pai_NUM POP PSW RETIINT_T1: PUSH ACC PUSH PSW MOV tl1,20H MOV tH1,21H CPL p1.0 POP PSW POP ACC RETIDelay: MOV R7,#02DL1: MOV R6,#0FFHDL2: DJNZ R6,DL2 DJNZ R7,DL1 RET Delay1: MOV R4,#150DL3: MOV R3,#248 DJNZ R3,$ DJNZ R4,DL3 DJNZ R5,Delay1 RET END 第七章 总结通过这周的单片机课程设计,我学到了不少课本上没有的知识,也锻炼了自己的动手能力,将以前
25、学过的零散的知识串到一起。 首先在课程设计刚开始的调研阶段,我学会了怎么通过各种方式查询相关的资料。通过对这些资料的学习,我大致了解了单片机的发展现状以及未来的发展趋势,认识到目前单片机方面的各种各样的发展,和它们之间的竞争。了解了单片机方面的先进技术,这些都为我的未来的学习指明了方向。 我的课程设计主要涉及硬件和软件两方面的内容,通过这些我的硬件和软件开发能力都获得了提高。首先硬件方面,基本了解了电子产品的开发流程和所要做的工作。并设计了一个单片机最小系统。通过开发板的设计和硬件搭建的过程,使我对51系单片机的接口有了更深层次的理解,熟悉了一些单片机常用的外围电路引脚和连接方法,如LED数码管,键盘等。 在软件方面,通过串行口调试工具的开发,使我加深了对累封装的理解,熟 悉了51系列单片机内部的寄存器和编程规则,以及如何控制外围电路。 最后,感谢老师的精心指导,使我能够完成这次课程设计。参考文献:单片微型计算机接口技术及其应用 张淑清 国防工业出版社单片机原理及应用技术 张淑清 国防工业出版社附录:主要电路原理图燕山大学课程设计评审意见表指导教师评语:成绩: 指导教师: 2012 年 6月 30 日答辩小组评语: 成绩: 评阅人: 2012 年 6 月 30日课程设计总成绩:答辩小组成员签字: 2012年 6 月 30 日