1、 目录1 设计说明.22 设计简单原理介绍.33 软件总体方案及设计流程.5 3.1 键盘扫描程序.5 3.2 琴键处理程序.5 3.3 程序简易流程图.53.4 弹奏程序流程图.64 硬件总体方案及说明.7 4.1 芯片介绍.7 4.2 硬件接线.85 设计仪器、设备和材料清单.106 设计源程序.117 结论.178 参考文献.18 251、设计说明: 电子琴是高科技在音乐领域的一个代表,它是古典文化与现代文明的一个浓缩体。它不但可以帮助我们的音乐教师进行传统音乐文化的教育教学工作,而且由于它又具备现代音乐,特别是电子音乐、电脑音乐的基本结构、特征,因而使我们的教师在进行现代音乐、电子音乐
2、、电脑音乐的教学时,更直接、更简便。单片微型计算机是大规模集成电路技术发展的产物,属第四代电子计算机,它具有高性能、高速度、体积小、价格低廉、稳定可靠、应用广泛的特点。它的应用必定导致传统的控制技术从根本上发生变革。因此,单片机的开发应用已成为高科技和工程领域的一项重大课题。电子琴是现代电子科技与音乐结合的产物,是一种新型的键盘乐器。它在现代音乐扮演着重要的角色,单片机具有强大的控制功能和灵活的编程实现特性,它已经溶入现代人们的生活中,成为不可替代的一部分。本文的主要内容是用AT89C51单片机为核心控制元件,设计一个电子琴。以单片机作为主控核心,与键盘、扬声器等模块组成核心主控制模块,在主控
3、模块上设有16个弹奏按键、1个播放键和扬声器。2、设计简单原理介绍 一首音乐是许多不同的音阶组成的,而每个音阶对应着不同的频率,这样我们就可以利用不同的频率的组合,即可构成我们所想要的音乐了,当然对于单片机来产生不同的频率非常方便,我们可以利用单片机的定时/计数器T0来产生这样方波频率信号,因此,我们只要把一首歌曲的音阶对应频率关系弄正确即可。若要产生音频脉冲,只要算出某一音频的周期(1/频率),再将此周期除以2,即为半周期的时间。利用定时器计时半周期时间,每当计时终止后就将P1.0反相,然后重复计时再反相。就可在P1.0引脚上得到此频率的脉冲。 利用AT89C51的内部定时器使其工作计数器模
4、式(MODE1)下,改变计数值TH0及TL0以产生不同频率的方法产生不同音阶,例如,频率为523Hz,其周期T1/5231912s,因此只要令计数器计时956s/1s956,每计数956次时将I/O反相,就可得到中音DO(523Hz)。 计数脉冲值与频率的关系式(如式3-1所示)是: Nfi2fr 3-1式中,N是计数值;fi是机器频率(晶体振荡器为12MHz时,其频率为1MHz);fr是想要产生的频率。其计数初值T的求法如下: T65536N65536fi2fr 例如:设K65536,fi1MHz,DO(523Hz)的计数值。 T65536N65536fi2fr6553610000002fr
5、65536500000/f DO的T65536500000/52364580 单片机12MHZ晶振,高中低音符与计数T0相关的计数值如表1-1所示 表1-1 音符频率表低音音符频率HZ中音音符频率HZ高音音符频率HZ1261.631523.2511045.52293.672587.3321174.663329.633659.4631318.514349.234698.4641396.925391.995738.9951567.986440.006880.0061760.007493.887987.7671975.52 我们要为这个音符建立一个表格,单片机通过查表的方式来获得相应的数据 低音01
6、9之间,中音在2039之间,高音在4059之间 TABLE: DW 0,63628,63835,64021,64103,64260,64400,64524,0,0 DW 0,63731,63928,0,64185,64331,64463,0,0,0 DW 0,64580,64684,64777,64820,64898,64968,65030,0,0DW 0,64633,64732,0,64860,64934,64994,0,0,0 DW 0,65058,65110,65157,65178,65217,65252,65283,0,0 DW 0,65085,65134,0,65198,65235,
7、65268,0,0,0 DW 0 在这个程序中,弹奏音乐的程序是用定时/计数器T0来完成的,播放音乐程序则是用定时/计数器T1来完成的。3、软件总体方案及设计流程 3.1 键盘扫描程序: 检测是否有键按下,有键按下则记录按下键的键值,并跳转至功能转移程序;无键按下,则返回键盘扫描程序继续检测 3.2 琴键处理程序:根据检测到得按键值,查询音律表,给计时器赋值,使发出相应频率的声音 3.3 程序简易流程图开始键盘扫描程序T0初始化并开中断允许T0中断T1初始化并开中断允许T1中断有键按下否 否延时去抖动识别按键功能 是是否弹奏键播放键 否 是取相应的音符码装入T1根据按键功能装入相应音符值到T0
8、启动T1启动T0按键释放成功否按键释放成功否停止T0工作停止T1工作 图3-43.4弹奏程序流程图弹奏子程序开中断并允许中断设定定时器工作方式取键值根据键值查音律表给定时器T0赋值开始计时进入中断CPL P3.0 P3.0退出中断延时返回键盘扫描程序 图3-54、硬件总体方案及说明 51单片机P1口通过连接4*4的矩阵键盘,作为琴键键盘;P2.0接播放音乐键;P3.0口接喇叭,通过执行相应的功能程序使电子琴发出不同音色的声音。 4.1 芯片介绍: 在本次电子琴设计中,我们组成员单片机芯片选用了AT89C51芯片,而89C51系列的兼容性也比较好。 图2-1P3口也可作为AT89C51的一些特殊
9、功能口,如下表所示: 表3-1P3口引脚特殊功能P3.0RXD(串行输入口)P3.1TXD(串行输出口)P3.2(外部中断0)P3.3(外部中断1)P3.4T0(定时器0外部输入)P3.5T1(定时器1外部输入)P3.6WR(外部数据存储器写选通)P3.7RD(外部数据存储器读先通)P3口同时为闪烁编程和编程校验接收一些控制信号。 4.2 硬件接线:(1)利用P1口为按键接入口,形成44组成16个按键矩阵,设计成16个音,下图所示:0123456789ABCDEF所对应的键码为: 图4-1 按键矩阵(2)p3.0口音频输出,接一个喇叭。(3)复位电路我们本来在方案选择的时候有两种选择的,上电复
10、位和按扭复位,上电复位是利用电容充电来实现的,而按扭复位是电源对外节电容的充电使RST为高电平,复位松开后,电容通过下拉电阻放电,使RST恢复低电平。为了制作软件的方便我们还是选择用按扭复位,因为它比较直观。(4)电路设计图如下: 图5-1电路设计图5、设计仪器、设备和材料清单主要仪器设备:个人计算机和相关的软件主要元器件: 独立按键16个单片机芯片AT80C51一片12MHz晶振一个S8550三极管一个不同阻值电阻数个开关一个USB电源插口一个喇叭一个10uF、30pF电容数个电路板一块电烙铁一个等6、 设计源程序KEYBUF EQU 30H STH0 EQU 31H STL0 EQU 32
11、H TEMP EQU 33H ORG 00H LJMP START ORG 0BH LJMP INT_T0 START: MOV TMOD,#01H SETB ET0 SETB EA WAIT: MOV P3,#0FFH CLR P3.4 MOV A,P3 ANL A,#0FH XRL A,#0FH JZ NOKEY1 LCALL DELY10MS MOV A,P3 ANL A,#0FH XRL A,#0FH JZ NOKEY1 MOV A,P3 ANL A,#0FH CJNE A,#0EH,NK1 MOV KEYBUF,#3 LJMP DK1 NK1: CJNE A,#0DH,NK2 MOV
12、 KEYBUF,#2 LJMP DK1 NK2: CJNE A,#0BH,NK3 MOV KEYBUF,#1 LJMP DK1 NK3: CJNE A,#07H,NK4 MOV KEYBUF,#0 LJMP DK1 NK4: NOP DK1: MOV A,KEYBUF MOV DPTR,#TABLE MOVC A,A+DPTR MOV P0,A MOV A,KEYBUF MOV B,#2 MUL AB MOV TEMP,A MOV DPTR,#TABLE1 MOVC A,A+DPTR MOV STH0,A MOV TH0,A INC TEMP MOV A,TEMP MOVC A,A+DPTR
13、MOV STL0,A MOV TL0,A SETB TR0 DK1A: MOV A,P3 ANL A,#0FH XRL A,#0FH JNZ DK1A CLR TR0 NOKEY1: MOV P3,#0FFH CLR P3.5 MOV A,P3 ANL A,#0FH XRL A,#0FH JZ NOKEY2 LCALL DELY10MS MOV A,P3 ANL A,#0FH XRL A,#0FH JZ NOKEY2 MOV A,P3 ANL A,#0FH CJNE A,#0EH,NK5 MOV KEYBUF,#7 LJMP DK2 NK5: CJNE A,#0DH,NK6 MOV KEYBU
14、F,#6 LJMP DK2 NK6: CJNE A,#0BH,NK7 MOV KEYBUF,#5 LJMP DK2 NK7: CJNE A,#07H,NK8 MOV KEYBUF,#4 LJMP DK2 NK8: NOP DK2: MOV A,KEYBUF MOV DPTR,#TABLE MOVC A,A+DPTR MOV P0,A MOV A,KEYBUF MOV B,#2 MUL AB MOV TEMP,A MOV DPTR,#TABLE1 MOVC A,A+DPTR MOV STH0,A MOV TH0,A INC TEMP MOV A,TEMP MOVC A,A+DPTR MOV ST
15、L0,A MOV TL0,A SETB TR0 DK2A: MOV A,P3 ANL A,#0FH XRL A,#0FH JNZ DK2A CLR TR0 NOKEY2: MOV P3,#0FFH CLR P3.6 MOV A,P3 ANL A,#0FH XRL A,#0FH JZ NOKEY3 LCALL DELY10MS MOV A,P3 ANL A,#0FH XRL A,#0FH JZ NOKEY3 MOV A,P3 ANL A,#0FH CJNE A,#0EH,NK9 MOV KEYBUF,#11 LJMP DK3 NK9: CJNE A,#0DH,NK10 MOV KEYBUF,#1
16、0 LJMP DK3 NK10: CJNE A,#0BH,NK11 MOV KEYBUF,#9 LJMP DK3 NK11: CJNE A,#07H,NK12 MOV KEYBUF,#8 LJMP DK3 NK12: NOP DK3: MOV A,KEYBUF MOV DPTR,#TABLE MOVC A,A+DPTR MOV P0,A MOV A,KEYBUF MOV B,#2 MUL AB MOV TEMP,A MOV DPTR,#TABLE1 MOVC A,A+DPTR MOV STH0,A MOV TH0,A INC TEMP MOV A,TEMP MOVC A,A+DPTR MOV
17、STL0,A MOV TL0,A SETB TR0 DK3A: MOV A,P3 ANL A,#0FH XRL A,#0FH JNZ DK3A CLR TR0 NOKEY3: MOV P3,#0FFH CLR P3.7 MOV A,P3 ANL A,#0FH XRL A,#0FH JZ NOKEY4 LCALL DELY10MS MOV A,P3 ANL A,#0FH XRL A,#0FH JZ NOKEY4 MOV A,P3 ANL A,#0FH CJNE A,#0EH,NK13 MOV KEYBUF,#15 LJMP DK4 NK13: CJNE A,#0DH,NK14 MOV KEYBU
18、F,#14 LJMP DK4 NK14: CJNE A,#0BH,NK15 MOV KEYBUF,#13 LJMP DK4 NK15: CJNE A,#07H,NK16 MOV KEYBUF,#12 LJMP DK4 NK16: NOP DK4: MOV A,KEYBUF MOV DPTR,#TABLE MOVC A,A+DPTR MOV P0,A MOV A,KEYBUF MOV B,#2 MUL AB MOV TEMP,A MOV DPTR,#TABLE1 MOVC A,A+DPTR MOV STH0,A MOV TH0,A INC TEMP MOV A,TEMP MOVC A,A+DPT
19、R MOV STL0,A MOV TL0,A SETB TR0 DK4A: MOV A,P3 ANL A,#0FH XRL A,#0FH JNZ DK4A CLR TR0 NOKEY4: LJMP WAIT DELY10MS: MOV R6,#10 D1: MOV R7,#248 DJNZ R7,$ DJNZ R6,D1 RET INT_T0: MOV TH0,STH0 MOV TL0,STL0 CPL P1.0 RETI TABLE: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H DB 7FH,6FH,77H,7CH,39H,5EH,79H,71H TABLE1: D
20、W 64021,64103,64260,64400 DW 64524,64580,64684,64777 DW 64820,64898,64968,65030 DW 65058,65110,65157,65178 END 7、结论: 本次课程设计制作简易电子琴,虽然花费了我们很多精力,但收获颇丰,一方面,将自己的理论知识与实践相结合起来,进一步巩固了专业基础知识和相关专业课程知识;另一方面,也培养了自己独立自主、综合分析的思维与创新能力,更让我知道了团队的力量是巨大的。 设计的过程不是一帆风顺,遇到过各种各样的问题。特别是设计软件时,一些很细小的问题都可能导致功能性的错误,修改了多次才通过仿真
21、。在设计过程中我发现自己对以前所学过的知识理解得不够深刻,掌握得不够牢固,所以也利用图书馆、网络资源查阅了大量文献资料,也请教了老师和同学。同时在具体的制作过程中我们发现一些书本上的知识与实际的应用存在着一定的差距,书本上的知识很多都是理想化后的结论,忽略了很多实际的因素,或者涉及的不全面,可在实际的应用时这些是不能被忽略的,我们不得不考虑这方面的问题,这也让我更深刻地体会到在今后的学习工作中也要注重理论联系实际。 经过本次课程设计,我们比较好的把理论知识与实践相结合,而我们在也本次设计中收获不少。设计过程中,首先,对于汇编语言多了一层了解,其次,还有硬件的接线,还有8051芯片的引脚方面,都
22、让我们收获不少。加强了自身的动手能力。8、参考文献1陈堂敏、刘焕平主编.单片机原理与应用M .北京:北京理工大学出版社,20072李建忠.单片机原理及应用M. 西安:西安电子科技大学出版社,20023张毅刚.单片机原理及应用M .北京:高等教育出版社,20044周立功等,单片机实验与实践M .北京:北京航空航天大学出版社,2004 5侯玉宝等编著,基于 Proteus 的 51 系列单片机设计与仿真M.北京:电子工业出版社,20086楼然苗等,51 系列单片机设计实例M .北京:北京航空航天出版社,20037周美娟 肖来胜 单片机原理及系统设计清华大学出版社8 谢自美.电子线路设计实验测试华中理工大学出版社,1992