《毕业设计-电子琴设计》由会员分享,可在线阅读,更多相关《毕业设计-电子琴设计(17页珍藏版)》请在金锄头文库上搜索。
1、 摘 要 电子琴是现代电子科技与音乐结合的产物,是一种新型的键盘乐器。该设计主要由键盘、扬声器等模块组成核心主控制模块,在主控模块上设有16个按键和扬声器的简易电子琴。本设计采用AT89S51单片机为核心控制元件,利用定时器,发出不同频率的脉冲,脉冲经喇叭驱动电路放大滤波后,就会发出不同的音调,利用不同的频率的组合,可构成我们想要的音乐。该系统通过调试运行、仿真验证,基本实现了设计目标。 关键词:单片机;按键;电子琴;音阶 目 录 1 课题描述1 2问题分析和任务定义2 2.1问题分析2 2.2任务定义3 3概要设计4 4硬件电路设计5 5 程序设计6 5.1 主程序流程图6 5.2 子程序流
2、程图6 5.3 程序代码7 6电路仿真14 6.1 仿真软件14 6.2仿真电路14 7调试、测试与结果分析15 7.1调试15 7.2测试15 7.3结果分析15 8总结16 参考文献17 1 课题描述 一首音乐是许多不同的音阶组成的,而每个音阶对应着不同的频率,这样我们就可以利用不同的频率的组合,构成我们所想要的音乐了,对于单片机,可以利用定时器,发出不同频率的脉冲,不同频率的脉冲经喇叭驱动电路放大滤波后,就会发出不同的音调,利用不同的频率的组合,从而设计成一个与键盘、扬声器等模块组成核心主控制模块,在主控模块上设有16个按键和扬声器的简易电子琴。 本次设计主要应用AT89C51单片机为核
3、心控制元件,与键盘、扬声器等模块组成核心主控制模块,通过软硬件设计,模式转换按键触发外部中断,中断使程序跳转,实现模式转换,启动电子琴,通过查询电子琴所按下的按键,读取电子琴输入状态,跳转到对应的程序人口,实现用户自编歌曲。 开发环境:DICE-51仿真开发系统,Proteus仿真软件,Keil环境 2问题分析和任务定义 2.1问题分析 本次设计主要通过对AT89C51的基本认识,利用定时器,发出不同频率的脉冲,不同频率的脉冲经喇叭驱动电路放大滤波后,就会发出不同的音调,利用不同的频率的组合,从而设计成一个与键盘、扬声器等模块组成核心主控制模块,在主控模块上设有16个按键和扬声器的简易电子琴。
4、在设计时应用4*4行列式键盘扫描,由P3口实现,其中P3.0-P3.3接C0-C3,P3.4-P3.7接L0-L3。如图2.1所示: 图2.1 4*4行列式键盘扫描 利用AT89S51的内部定时器使其工作在计数器模式下,改变计数值TH0及TL0以产生不同频率的方法产生不同音阶,计数脉冲值与频率的关系式是: Nfi2fr。关系式中N是计数值;fi是机器频率(晶体振荡器为12MHz时,其频率为1MHz);fr是想要产生的频率。其计数初值T的求法如下: T65536N65536fi2fr。单片机12MHZ晶振高、中、低音符与单片机计数T0相关的计数值如表2.2所示: 音符 频率(HZ) 简谱码(T值
5、) 音符 频率(HZ) 简谱码(T值) 低1DO 262 63628 # 4 FA# 740 64860 #1DO# 277 63731 中 5 SO 784 64898 低2RE 294 63835 # 5 SO# 831 64934 #2 RE# 311 63928 中 6 LA 880 64968 低 3 M 330 64021 # 6 932 64994 低 4 FA 349 64103 中 7 SI 988 65030 # 4 FA# 370 64185 高 1 DO 1046 65058 低 5 SO 392 64260 # 1 DO# 1109 65085 # 5 SO# 415
6、 64331 高 2 RE 1175 65110 低 6 LA 440 64400 # 2 RE# 1245 65134 # 6 466 64463 高 3 M 1318 65157 低 7 SI 494 64524 高 4 FA 1397 65178 中 1 DO 523 64580 # 4 FA# 1480 65198 # 1 DO# 554 64633 高 5 SO 1568 65217 中 2 RE 587 64684 # 5 SO# 1661 65235 # 2 RE# 622 64732 高 6 LA 1760 65252 中 3 M 659 64777 # 6 1865 6526
7、8 中 4 FA 698 64820 高 7 SI 1967 65283 下面是为这个音符建的表,可以使单片机通过查表的方式,方便的获得相应的数据,低音019之间,中音在2039之间,高音在4059之间TABLE: DW 0,63628,63835,64021,64103,64260,64400,64524,0,0DW 0,63731,63928,0,64185,64331,64463,0,0,0DW 0,64580,64684,64777,64820,64898,64968,65030,0,0DW 0,64633,64732,0,64860,64934,64994,0,0,0DW 0,650
8、58,65110,65157,65178,65217,65252,65283,0,0DW 0,65085,65134,0,65198,65235,65268,0,0,0DW 0 2.2任务定义 (1)在操作过程中应满足以下要求:电子琴设有16个按键,通过软硬件设计,模式转换按键触发外部中断, 中断使程序跳转,实现模式转换,启动电子琴;利用定时器,可以发出不同频率的脉冲,不同频率的脉冲经喇叭驱动电路放大滤波后,可以发出不同的音调; 使数字键1、2、3、4、5、6、7作为电子琴键,按下数字键发出相应的音调,PB0作为定时器门控信号,OUT1发出音频信号,驱动喇叭。 通过查询电子琴所按下的按键,读取
9、电子琴输入状态,跳转到对应的程序人口,实现用户自编歌曲; (2)该系统在使用过程中,应该实现以下基本功能: 按要求连接电路图,当按下数字键1、2、3、4、5、6、7时可以发出相应的音调; 通过不同的数字键组合,可以自编曲目; 利用protues仿真软件,装载程序,实现对电子琴的仿真。 3概要设计 本次课程设计主要采用AT89C51单片机为核心控制元件,与键盘、扬声器等模块组成核心主控制模块,利用定时器可以发出不同频率的脉冲,不同频率的脉冲经喇叭驱动电路放大滤波后,可以发出不同的音调。在操作过程中,通过选择不同的按键,来发出不同的音调,从而实现用户自编曲目。 设计中主要包含以下几个模块: (1)
10、键盘扫描程序实现 主要采用4*4 行列式键盘进行扫描,选择不同的按键,可以发出不同的音调。实现过程中主要应用下列代码: MOV R4 ,#00H;初值赋给R4 ANL A,#0FH ;屏蔽行信号 XRL A,#0FH;取出列信号 JZ NOKEY2 ;判断有无按键 LCALL DELY10MS ;有按键延时后再扫描 MOV A,P3 ;读取扫描结果 CPL P1.0 ; 找到按键,计算键值 (2)定时器1中断服务程序实现 定时器主要将从码表中取得的高位和低位字节值分别赋给TH0、TH1,然后通过P1.0口实现输出频率。实现过程中主要应用以下代码: MOV DPTR,#TABLE ;从TABLE
11、处取相对高位字节值 MOVC A,A+DPTR ; MOV P0,A MOV A,KEYBUF;*2操作 MOV B,#2 MUL AB MOV TEMP,A MOV DPTR,#TABLE1 ;从TABLE处取相对低位字节值 MOVC A,A+DPTR; MOV STH0,A ;将高位字节值赋给STH0和TH0 MOV TH0,A INC TEMP MOV A,TEMP MOVC A,A+DPTR MOV STL0,A ;将低位字节值赋给STH0和TH0 MOV TL0,A SETB TR0 ;启动TR0 4硬件电路设计 电子琴设计硬件电路图,如图4.1所示: 图4.1 电子琴设计硬件电路图
12、 5 程序设计 5.1 主程序流程图 本次课程设计实现了一个以AT89C51单片机为核心控制元件,与键盘、扬声器等模块组成核心主控制模块,通过按键,实现用户自编曲目的简易电子琴。主程序流程图如图5.1所示: 图5.1电子琴设计主程序流程图 5.2子程序流程图 (1)键盘扫描程序流程图 本次设计采用4*4行列式键盘扫描,通过按下不同按键,产生不同的音调,实现用户编曲。键盘扫描程序流程图如图5.2所示: 图5.2 键盘扫描流程图 (2)音频脉冲产生程序流程图 要产生音频脉冲,只要算出某一音频半周期的时间然后利用T0定时器计时半周期时间,每当计时终止后就将P1.0反相,然后重复计时再反相,就可在P1
13、.0引脚上得到此频率的脉冲。音频脉冲产生程序流程图如图5.3所示: 图5.3音频脉冲产生程序流程图 5.3 程序代码 CODE SEGMENT ;DZQ.ASM ASSUME CS:CODE,DS:CODEKEYBUF EQU 30H STH0 EQU 31H STL0 EQU 32H 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 NOKE
14、Y1 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,#0 LJMP DK1 NK1: CJNE A,#0DH,NK2 MOV KEYBUF,#1 LJMP DK1 NK2: CJNE A,#0BH,NK3 MOV KEYBUF,#2 LJMP DK1 NK3: CJNE A,#07H,NK4 MOV KEYBUF,#3 LJMP DK1 NK4: NOP DK1: MOV A,KEYBUF MOV DPTR,#TABLE MOVC A,
15、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 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 LCA
16、LL DELY10MS MOV A,P3 ANL A,#0FH XRL A,#0FH JZ NOKEY2 MOV A,P3 ANL A,#0FH CJNE A,#0EH,NK5 MOV KEYBUF,#4 LJMP DK2 NK5: CJNE A,#0DH,NK6 MOV KEYBUF,#5 LJMP DK2 NK6: CJNE A,#0BH,NK7 MOV KEYBUF,#6 LJMP DK2 NK7: CJNE A,#07H,NK8 MOV KEYBUF,#7 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 M